当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby Enumerable.lazy用法及代码示例


本文简要介绍ruby语言中 Enumerable.lazy 的用法。

用法

lazy → lazy_enumerator

返回一个 Enumerator::Lazy ,它重新定义了大多数 Enumerable 方法以推迟枚举并仅在 as-needed 基础上枚举值。

示例

以下程序查找毕达哥拉斯三元组:

def pythagorean_triples
  (1..Float::INFINITY).lazy.flat_map {|z|
    (1..z).flat_map {|x|
      (x..z).select {|y|
        x**2 + y**2 == z**2
      }.map {|y|
        [x, y, z]
      }
    }
  }
end
# show first ten pythagorean triples
p pythagorean_triples.take(10).force # take is lazy, so force is needed
p pythagorean_triples.first(10)      # first is eager
# show pythagorean triples less than 100
p pythagorean_triples.take_while { |*, z| z < 100 }.force

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Enumerable.lazy。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。