Optimize map { ... }.compact calls (#15513)
* Optimize map { ... }.compact using Enumerable#filter_map, supported since Ruby 2.7 * Add poyfill for Enumerable#filter_mapmaster
parent
9395143126
commit
087ed84367
@ -0,0 +1,26 @@ |
|||||||
|
# frozen_string_literal: true |
||||||
|
|
||||||
|
module Enumerable |
||||||
|
# TODO: Remove this once stop to support Ruby 2.6 |
||||||
|
if RUBY_VERSION < '2.7.0' |
||||||
|
def filter_map |
||||||
|
if block_given? |
||||||
|
result = [] |
||||||
|
each do |element| |
||||||
|
res = yield element |
||||||
|
result << res if res |
||||||
|
end |
||||||
|
result |
||||||
|
else |
||||||
|
Enumerator.new do |yielder| |
||||||
|
result = [] |
||||||
|
each do |element| |
||||||
|
res = yielder.yield element |
||||||
|
result << res if res |
||||||
|
end |
||||||
|
result |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
end |
Loading…
Reference in new issue