我开始使用Ruby 2.0中的Enumerable :: Lazy功能,它看起来非常有用。
我有一个可通过远程数据源分页的Enumerable集合。因此,我希望它是一个“懒惰”的集合。但是,我不想指示我的类的每个用户每次想要使用任何Enumerable方法时调用.lazy。相反,最好包含一个假设的LazyEnumerable模块,默认情况下所有可枚举的方法都是惰性的。
有没有人对干净的方法有什么想法来实现这个目标?谢谢!
答案 0 :(得分:2)
我有一个想法,并认为我会抓住这个:
module LazyEnumerable
include Enumerable
def self.make_lazy(*methods)
methods.each do |method|
define_method method do |*args, &block|
lazy.public_send(method, *args, &block)
end
end
end
make_lazy *(Enumerable.public_instance_methods - [:lazy])
end
很想知道是否有更强大的方法来做到这一点。