[ruby-core:75367] [Ruby trunk Feature#12350] Introduce Array#find! that raises an error if element not found

From: zverok.offline@...
Date: 2016-05-05 11:35:28 UTC
List: ruby-core #75367
Issue #12350 has been updated by Victor Shepelev.


I'm pretty unhappy that community/style guidelines are banning the straightforward and readable solution:

~~~ruby
prices.find { |p| p.key == size } or fail "Price for #{size} not found"
~~~

----------------------------------------
Feature #12350: Introduce Array#find! that raises an error if element not found
https://bugs.ruby-lang.org/issues/12350#change-58492

* Author: Andrey Koleshko
* Status: Open
* Priority: Normal
* Assignee: 
----------------------------------------
It would be great to have some function (like `Hash#fetch`) for `Array` that raises an exception if element not found by passed block in `find`.

For example:

~~~
[].find! { |el| el == 1 }
=> ElementError: element not found
~~~

I just noticed that there are many cases when it's needed to raise an exception (because this is exceptional situation) if an element not found.


Currently I just define methods like  this one:

~~~
def find_price!(size)
  found_price = prices.find { |p| p.key == size }
  fail "Price for #{size} not found" unless found_price
  found_price
end
~~~




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next