Project

General

Profile

Feature #17140

Merge Enumerable#grep(_v) with Enumerable#select/reject

Added by baweaver (Brandon Weaver) 6 months ago. Updated 25 days ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:99824]

Description

In recent versions of Ruby we've gotten new behavior of some Enumerable methods like any?, all?, none?, one?, and others to support a single argument pattern that responds to ===. This is very powerful, and very useful.

Currently Enumerable has grep and grep_v which allow this as a way to filter lists.

These names require some understanding of Unix to be familiar with, but naming aside, I feel it may make sense to implement === pattern arguments in Enumerable#select and Enumerable#reject as with the above.

Proposed Syntax:

list_of_numbers.select(1..10)
words.reject({ 'and', 'the', 'of' })

I believe this would help with readability and would simplify syntax options by unifying on this standard.

My concern is that Enumerable#find already takes a single argument, ifnone, and may not be able to implement this behavior. I would be curious to see how many use ifnone but feel this would be more critically breaking to do.

Also available in: Atom PDF