Ruby 1.9.0 リファレンスマニュアル > ライブラリ一覧 > library _builtin > module Enumerable > detect
find(ifnone = nil) -> Enumerable::Enumeratordetect(ifnone = nil) -> Enumerable::Enumeratorfind(ifnone = nil) {|item| ... } -> objectdetect(ifnone = nil) {|item| ... } -> object要素に対してブロックを評価した値が真になった最初の要素を返します。
真になる要素が見つからず、 ifnone も指定されていないときは nil を返します。 真になる要素が見付からず、ifnone が指定されているときは ifnone を eval または call して実行し、nil を返します。
例:
# 最初の 3 の倍数を探す
p [1, 2, 3, 4, 5].find {|i| i % 3 == 0 } # => 3
p [2, 2, 2, 2, 2].find {|i| i % 3 == 0 } # => nil
# ifnone の使用例
ifnone = proc { raise ArgumentError, "item not found" }
p [1, 2, 3, 4, 5].find(ifnone) {|i| i % 7 == 0 }
# ArgumentError: item not found