Actions
Feature #18135
openIntroduce Enumerable#detect_only
Status:
Open
Assignee:
-
Target version:
-
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.
Actions
Like0
Like0Like0Like0Like0Like0Like0