From: matz@... Date: 2019-07-11T06:04:26+00:00 Subject: [ruby-core:93666] [Ruby master Bug#11808] Different behavior between Enumerable#grep and Array#grep Issue #11808 has been updated by matz (Yukihiro Matsumoto). Backport set to 2.5: UNKNOWN, 2.6: UNKNOWN Tracker changed from Feature to Bug It is a bug. It has been hidden for 10+ years and seems to be very difficult to fix. It should be fixed in the long run. Matz. ---------------------------------------- Bug #11808: Different behavior between Enumerable#grep and Array#grep https://bugs.ruby-lang.org/issues/11808#change-79278 * Author: BenOlive (Ben Olive) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN ---------------------------------------- Regex special global variables are available within the block for `Array#grep`, but are nil within the block for `Enumerable#grep`. Here is an example that explains it better: ~~~ruby class Test include Enumerable def each return enum_for(:each) unless block_given? yield "Hello" yield "World" end end enum = Test.new array = ["Hello", "World"] enum.grep(/^(.)/) {$1} # => [nil, nil] array.grep(/^(.)/) {$1} # => ["H", "W"] ~~~ Tested on 2.0.0, 2.1.5, & 2.2.2 -- https://bugs.ruby-lang.org/ Unsubscribe: