¿Me falta algo en la documentación de la matriz? Tengo una matriz que contiene hasta un objeto que cumple un cierto criterio. Me gustaría encontrar eficientemente ese objeto. La mejor idea que tengo de los documentos es esta:
candidates = my_array.select { |e| e.satisfies_condition? }
found_it = candidates.first if !candidates.empty?
Pero no estoy satisfecho por dos razones:
- Eso
select
me hizo atravesar todo el conjunto, a pesar de que podríamos habernos rescatado después del primer golpe. - Necesitaba una línea de código (con una condición) para aplanar a los candidatos.
Ambas operaciones son un desperdicio con el conocimiento previo de que hay 0 o 1 objetos satisfactorios.
Lo que me gustaría es algo como:
array.find_first(block)
que devuelve nil o el primer objeto para el cual el bloque se evalúa como verdadero, finalizando el recorrido en ese objeto.
¿Debo escribir esto yo mismo? Todos esos otros excelentes métodos en Array me hacen pensar que está allí y simplemente no lo veo.