概要
lazy
詳細
Enumerable#lazyによって遅延評価が可能になりました。
これによって、普通に処理すると無限ループしてしまうような内容に
対応することが可能になる。
サンプルコード
# encoding: utf-8 require 'prime' # 1から始まる整数の最初の10個の奇数を取得 $><<(1..Float::INFINITY).lazy.select { |v|v.odd? }.take(10).to_a puts # 1から始まる整数の最初の10個の偶数を取得 $><<(1..Float::INFINITY).lazy.select { |v|v.even? }.take(10).to_a puts # 1から始まる整数の最初の10個の素数を取得 $><<(1..Float::INFINITY).lazy.select { |v|v.prime? }.take(10).to_a puts # 1から始まる整数の最初の10個の合成数もしくは単数を取得 $><<(1..Float::INFINITY).lazy.select { |v|!v.prime? }.take(10).to_a
出力
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19] [2, 4, 6, 8, 10, 12, 14, 16, 18, 20] [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] [1, 4, 6, 8, 9, 10, 12, 14, 15, 16]