我已经开始使用 Ruby 2.0 中的 Enumerable::Lazy 功能,它看起来非常有用。
我有一个通过远程数据源分页的 Enumerable 集合。正因为如此,我希望它是一个“懒惰”的集合。但是,我不想每次他们想要使用任何 Enumerable 方法时都指示我的班级的每个用户调用 .lazy 。相反,最好包含一个假设的 LazyEnumerable 模块并让所有可枚举的方法默认都是惰性的。
有没有人对实现这一目标的干净方式有任何想法?谢谢!
我已经开始使用 Ruby 2.0 中的 Enumerable::Lazy 功能,它看起来非常有用。
我有一个通过远程数据源分页的 Enumerable 集合。正因为如此,我希望它是一个“懒惰”的集合。但是,我不想每次他们想要使用任何 Enumerable 方法时都指示我的班级的每个用户调用 .lazy 。相反,最好包含一个假设的 LazyEnumerable 模块并让所有可枚举的方法默认都是惰性的。
有没有人对实现这一目标的干净方式有任何想法?谢谢!
我有一个想法,并认为我会尝试一下:
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
很想知道是否有更强大的方法来做到这一点。