这是将“每个”调用转发给哈希本地每种方法的最有效方式。
我应该让@index在外面可见吗?
我有点不确定,因为一个块被调用了。
class TimeSlice
def initialize(list)
# @index is a hash
@index = list.do_some_magic()
end
def each(&block)
@index.each(&block)
end
end
答案 0 :(得分:2)
@index
应该是私密的。无需在类范围之外公开它。
如果您只需要委派each
方法,那么您的示例非常好。
对于更复杂的情况,您可以考虑实施委托设计模式。 Ruby带有Delegate module。
答案 1 :(得分:1)
在效率方面,我不认为它有任何问题。但是,您应该保持@index
私有,否则包装器each
方法的重点就会丢失。