1. ホーム
  2. ruby

[解決済み] Ruby Array find_first object?

2022-04-28 08:28:41

質問

Arrayのドキュメントで何か見逃しているものがありますか? ある基準を満たすオブジェクトを1つまで含む配列を持っています。 そのオブジェクトを効率的に見つけたいと思います。 ドキュメントから得た最良のアイデアはこれです。

candidates = my_array.select { |e| e.satisfies_condition? }
found_it = candidates.first if !candidates.empty?

しかし、私が不満なのは2つの理由です。

  1. その select 最初のヒットでやめることもできたのに、全アレイをトラバースさせられました。
  2. 候補を平坦化するための(条件付きの)コード行が必要だった。

満足するオブジェクトが0個か1個かを予知している状態では、どちらの操作も無駄が多い。

私が望むのは、次のようなものです。

array.find_first(block)

は、nil またはブロックの評価値が真となる最初のオブジェクトを返し、そのオブジェクトで探索を終了します。

これは自分で書かなければならないのでしょうか? Arrayにある他の素晴らしいメソッドを見ると、それがあるように思えるのですが、ただ見えていないだけなのです。

解決方法は?

あなたの質問を理解していないのか、それとも 列挙可能#find は、あなたが探していたものです。