我想在Ruby中创建一个惰性计算哈希值:红宝石 - 懒洋洋地评估的哈希
hash = {foo: -> {go_find_foo} }
我不希望来电者知道,他们可能会得到一个proc
回,而不是一个值 - 理想情况下,我希望Hash类能够分别获取值是否为proc
,执行它,将Hash中的值设置为lambda的返回值,最后将值返回给客户端。
理想情况下,我希望能够使用标准语法定义这些散列,如上面的代码示例中所示。这意味着我不能真正使用扩展,因为我需要手动调用构造函数(hash = LazyHash.new
)。如果我猴子补丁,那么我不能委托给原来的执行[]
。
任何想法?是否有任何图书馆已经这样做?有什么方法可以告诉Ruby在解释{}
符号时实例化Hash
的哪个实现?
这看起来不错 –