Czy brakuje mi czegoś w dokumentacji tablicy? Mam tablicę, która zawiera maksymalnie jeden obiekt spełniający określone kryterium. Chciałbym sprawnie znaleźć ten obiekt. Najlepszy pomysł, jaki mam z dokumentów, jest następujący:
candidates = my_array.select { |e| e.satisfies_condition? }
found_it = candidates.first if !candidates.empty?
Ale jestem niezadowolony z dwóch powodów:
- To
select
sprawiło, że przeszedłem przez całą tablicę, mimo że mogliśmy się wycofać po pierwszym trafieniu. - Potrzebowałem linii kodu (z warunkiem), aby spłaszczyć kandydatów.
Obie operacje są marnotrawstwem, ponieważ wiadomo, że istnieje 0 lub 1 zadowalających obiektów.
Chciałbym coś takiego:
array.find_first(block)
co zwraca nil lub pierwszy obiekt, dla którego blok zwraca wartość true, kończąc przemierzanie w tym obiekcie.
Czy muszę sam to napisać? Wszystkie te inne świetne metody w Array sprawiają, że myślę, że tam jest i po prostu tego nie widzę.