🔥
[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