Mi manca qualcosa nella documentazione dell'array? Ho un array che contiene fino a un oggetto che soddisfa un determinato criterio. Vorrei trovare quell'oggetto in modo efficiente. L'idea migliore che ho dai documenti è questa:
candidates = my_array.select { |e| e.satisfies_condition? }
found_it = candidates.first if !candidates.empty?
Ma non sono soddisfatto per due motivi:
- Questo
select
mi ha fatto attraversare l'intero array, anche se avremmo potuto salvare dopo il primo colpo. - Avevo bisogno di una riga di codice (con una condizione) per appiattire i candidati.
Entrambe le operazioni sono dispendiose con la consapevolezza che ci sono 0 o 1 oggetti soddisfacenti.
Quello che mi piacerebbe è qualcosa di simile:
array.find_first(block)
che restituisce zero o il primo oggetto per il quale il blocco viene considerato vero, terminando l'attraversamento su quell'oggetto.
Devo scriverlo da solo? Tutti quegli altri grandi metodi in Array mi fanno pensare che sia lì e non lo vedo.