Apakah saya kehilangan sesuatu dalam dokumentasi Array? Saya memiliki array yang berisi hingga satu objek yang memenuhi kriteria tertentu. Saya ingin menemukan objek itu dengan efisien. Ide terbaik yang saya miliki dari dokumen adalah:
candidates = my_array.select { |e| e.satisfies_condition? }
found_it = candidates.first if !candidates.empty?
Tetapi saya tidak puas karena dua alasan:
- Itu
select
membuat saya melintasi seluruh jajaran, meskipun kami bisa menyelamatkan setelah hit pertama. - Saya membutuhkan sebaris kode (dengan syarat) untuk meratakan kandidat.
Kedua operasi tersebut boros dengan pengetahuan sebelumnya bahwa ada 0 atau 1 objek yang memuaskan.
Yang saya sukai adalah sesuatu seperti:
array.find_first(block)
yang mengembalikan nil atau objek pertama yang bloknya bernilai true, mengakhiri traversal pada objek itu.
Haruskah saya menulis ini sendiri? Semua metode hebat lainnya di Array membuat saya berpikir ada di sana dan saya tidak melihatnya.