Estou faltando alguma coisa na documentação da matriz? Eu tenho uma matriz que contém até um objeto que satisfaz um determinado critério. Eu gostaria de encontrar com eficiência esse objeto. A melhor ideia que tenho dos documentos é a seguinte:
candidates = my_array.select { |e| e.satisfies_condition? }
found_it = candidates.first if !candidates.empty?
Mas estou insatisfeito por duas razões:
- Isso
select
me fez atravessar todo o conjunto, mesmo que pudéssemos ter escapado depois do primeiro golpe. - Eu precisava de uma linha de código (com uma condição) para achatar os candidatos.
Ambas as operações são um desperdício com o conhecimento prévio de que existem 0 ou 1 objetos satisfatórios.
O que eu gostaria é algo como:
array.find_first(block)
que retorna nulo ou o primeiro objeto para o qual o bloco é avaliado como verdadeiro, encerrando a travessia nesse objeto.
Devo escrever isso sozinho? Todos esses outros ótimos métodos em Array me fazem pensar que está lá e eu simplesmente não estou vendo.