Actions
Bug #17789
closedIncompatible behavior of Enumarator::Lazy#with_index
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [x86_64-darwin20]
Description
this method ignores the block passed to it, but this behavior looks different from the Enumerator (super class).
$ ruby -e '%w(a).lazy.with_index { |s, i| puts "#{s} => #{i}" }'
a => 0 # Expected, but doesn't actually print anything
After confirmation I found #16414 but this behavior was not fixed and the doc in the modified source code states: "If a block given, iterates the given block for each element".
Is this behavior intended?
Updated by zverok (Victor Shepelev) almost 4 years ago
It doesn't ignores the block. It is just lazy to perform it :)
%w(a).lazy.with_index { |s, i| puts "#{s} => #{i}" }
# => #<Enumerator::Lazy: ...>
%w(a).lazy.with_index { |s, i| puts "#{s} => #{i}" }.force
# a => 0
Updated by soudai_s (Soudai Sasada) almost 4 years ago
It means it's no longer compatible with 2.6 or under, isn't it?
Thank you for quick reply!
Updated by jeremyevans0 (Jeremy Evans) almost 4 years ago
- Status changed from Open to Closed
This is expected. The behavior has changed. All bug fixes are incompatibilities.
Actions
Like0
Like0Like0Like0