Tôi có thiếu một cái gì đó trong tài liệu Array không? Tôi có một mảng chứa tối đa một đối tượng thỏa mãn một tiêu chí nhất định. Tôi muốn tìm thấy đối tượng đó một cách hiệu quả. Ý tưởng tốt nhất tôi có từ các tài liệu là thế này:
candidates = my_array.select { |e| e.satisfies_condition? }
found_it = candidates.first if !candidates.empty?
Nhưng tôi không hài lòng vì hai lý do:
- Điều đó
select
khiến tôi đi qua toàn bộ mảng, mặc dù chúng tôi có thể đã bảo lãnh sau cú đánh đầu tiên. - Tôi cần một dòng mã (có điều kiện) để làm phẳng các ứng cử viên.
Cả hai hoạt động đều lãng phí với sự biết trước rằng có 0 hoặc 1 đối tượng thỏa mãn.
Những gì tôi muốn là một cái gì đó như:
array.find_first(block)
trong đó trả về nil hoặc đối tượng đầu tiên mà khối đánh giá là true, kết thúc giao dịch tại đối tượng đó.
Tôi phải tự viết cái này chứ? Tất cả những phương thức tuyệt vời khác trong Array khiến tôi nghĩ rằng nó ở đó và tôi chỉ không thấy nó.