From: zverok.offline@... Date: 2021-04-09T09:02:34+00:00 Subject: [ruby-core:103338] [Ruby master Bug#17789] Incompatible behavior of Enumarator::Lazy#with_index Issue #17789 has been updated by zverok (Victor Shepelev). It doesn't ignores the block. It is just lazy to perform it :) ```ruby %w(a).lazy.with_index { |s, i| puts "#{s} => #{i}" } # => # %w(a).lazy.with_index { |s, i| puts "#{s} => #{i}" }.force # a => 0 ``` ---------------------------------------- Bug #17789: Incompatible behavior of Enumarator::Lazy#with_index https://bugs.ruby-lang.org/issues/17789#change-91429 * Author: soudai_s (Soudai Sasada) * Status: Open * Priority: Normal * ruby -v: ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [x86_64-darwin20] * Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN ---------------------------------------- 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? -- https://bugs.ruby-lang.org/ Unsubscribe: