Arrayドキュメントに何か不足していますか?特定の条件を満たすオブジェクトを1つまで含む配列があります。そのオブジェクトを効率的に見つけたいのですが。ドキュメントから私が持っている最高のアイデアはこれです:
candidates = my_array.select { |e| e.satisfies_condition? }
found_it = candidates.first if !candidates.empty?
しかし、私は2つの理由で満足していません。
select
最初のヒットの後で保釈できたとしても、それでアレイ全体をトラバースできました。- 候補を平坦化するために、(条件付きの)コード行が必要でした。
どちらの操作も、満足のいくオブジェクトが0または1あることを事前に認識しているため、無駄が多くなります。
私が欲しいのは次のようなものです:
array.find_first(block)
これは、nil、またはブロックがtrueと評価された最初のオブジェクトを返し、そのオブジェクトでの走査を終了します。
これを自分で書かなければなりませんか?Arrayの他のすばらしいメソッドはすべて、私はそれがそこにあると考えさせ、私はそれを目にしていません。