Ruby 4.1 リファレンスマニュアル

instance method Enumerator::Lazy#tap_each

tap_each {|item| ... } -> Enumerator::LazyRuby 4.1 から[permalink][rdoc][edit]

各要素をブロックに渡して評価しますが、要素そのものを変更したり、以後の列挙に影響を与えたりはしません。

新しい Enumerator::Lazy を返します。

遅延評価の連鎖を崩さずに、デバッグやログ出力のために要素を覗き見たいときに使います。

[EXCEPTION] ArgumentError:
ブロックを指定しなかった場合に発生します。
例
p (1..).lazy.tap_each { |x| puts "got #{x}" }.select(&:even?).first(3)
# => got 1
#    got 2
#    got 3
#    got 4
#    got 5
#    got 6
#    [2, 4, 6]

[SEE_ALSO] Object#tap