🔥
[Bug #20623] Enumerator::Lazy#zip に関するバグ報告
[Bug #20623] Unexpected behavior of blocks in Enumerator::Lazy#zip
- 以下のように
lazyをzipしたときの挙動が異なるというバグ報告
# lazy しない場合
pp [1].zip([2]).map { _1 }
# => [[1, 2]]
# Enumerator::Lazy#zip 経由で map した場合
pp [1].lazy.zip([2].lazy).map { _1 }.force
# => [1]
pp [1].lazy.zip([2].lazy).force.map { _1 }
# => [[1, 2]]
-
lazyした後にmapした場合は1になるんですがforceしたあとにmapすると[1, 2]になります - 期待する挙動としては
[1, 2]になりそうですね - この不具合はすでに修正済みで以下のようになります
# Enumerator::Lazy#zip 経由で map した場合
pp [1].lazy.zip([2].lazy).map { _1 }.force
# Ruby 3.3 => [1]
# Ruby 3.4 => [[1, 2]]
- バグ修正なので Ruby 3.3.x の安定版でリリースされるかも?
Discussion