Я что-то упустил в документации по массиву? У меня есть массив, который содержит до одного объекта, удовлетворяющего определенному критерию. Я хотел бы эффективно найти этот объект. Лучшая идея из документации:
candidates = my_array.select { |e| e.satisfies_condition? }
found_it = candidates.first if !candidates.empty?
Но я недоволен по двум причинам:
- Это
select
заставило меня пересечь весь массив, хотя мы могли сойти с дистанции после первого удара. - Мне нужна была строка кода (с условием), чтобы сгладить кандидатов.
Обе операции расточительны с предвидением, что есть 0 или 1 удовлетворяющих объектов.
То, что я хотел бы что-то вроде:
array.find_first(block)
который возвращает nil или первый объект, для которого блок оценивается как true, заканчивая обход этого объекта.
Должен ли я написать это сам? Все эти другие замечательные методы в Array заставляют меня думать, что это там, и я просто не вижу этого.