【发布时间】:2015-12-25 13:53:50
【问题描述】:
我正在尝试在 Ruby 中创建一个惰性求值的哈希:
hash = {foo: -> {go_find_foo} }
我不希望调用者知道他们可能会得到一个 proc 而不是一个值 - 理想情况下,我希望 Hash 类在每次获取值是否为 proc 时,执行它,设置Hash中的值到lambda的返回值,最后将值返回给客户端。
理想情况下,我希望能够使用标准语法定义这些哈希,如上面的代码示例所示。这意味着我不能真正使用扩展,因为我需要手动调用构造函数 (hash = LazyHash.new)。如果我进行猴子补丁,那么我不能委托给[] 的原始实现。
有什么想法吗?是否有任何图书馆已经这样做了?在解释 {} 符号时,有什么方法可以告诉 Ruby 实例化 Hash 的哪个实现?
【问题讨论】:
标签: ruby hash promise lazy-evaluation