【问题标题】:Make an enumerable object lazy by default默认情况下使可枚举对象变得惰性
【发布时间】:2013-04-09 17:43:03
【问题描述】:

我已经开始使用 Ruby 2.0 中的 Enumerable::Lazy 功能,它看起来非常有用。

我有一个通过远程数据源分页的 Enumerable 集合。正因为如此,我希望它是一个“懒惰”的集合。但是,我不想每次他们想要使用任何 Enumerable 方法时都指示我班级的每个用户调用 .lazy 。相反,最好包含一个假设的 LazyEnumerable 模块并让所有可枚举的方法默认为惰性。

有人对实现此目的的干净方法有任何想法吗?谢谢!

【问题讨论】:

  • 为什么不将类中的枚举保存为惰性枚举?
  • 我希望我的收藏懒惰成为实现细节。

标签: ruby lazy-evaluation ruby-2.0


【解决方案1】:

我有一个想法,并认为我会尝试一下:

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

很想知道是否有更强大的方法来做到这一点。

【讨论】:

  • 问题是您的解决方案有什么问题?我认为这看起来不错,没有比这更简单的了。
猜你喜欢
  • 1970-01-01
  • 2018-09-16
  • 2021-08-08
  • 2016-05-25
  • 2015-10-22
  • 2011-06-29
  • 2016-04-22
  • 2011-10-14
  • 2013-06-11
相关资源
最近更新 更多