Project

General

Profile

Actions

Feature #18135

open

Introduce Enumerable#detect_only

Added by meisel (Michael Eisel) over 2 years ago. Updated over 2 years ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-core:105074]

Description

It can be important to get the only element for which a block returns true, and to assert that this is the only element as such. For example, this can be a very helpful sanity check when one is working with data that's outside of their control and is not perfectly understood. They may have a guess as to how to get a specific element matching some criteria, but if they used Enumerable#detect might be hiding the fact that they have written an incorrect block and that there's in fact more than one element that matches it. It could also be a parameter on Typically, I'd do it like this:

matches = array.select { |elem| some_method(elem) }
raise if matches.size != 0
match = matches.first

Here, it would be shortened to:

match = array.detect_only { |elem| some_method(elem) }

It could also be a parameter on Enumerable#detect instead of a separate method.


Related issues 1 (0 open1 closed)

Related to Ruby master - Feature #13683: Add strict Enumerable#singleFeedbackActions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0