Я что-то пропустил в документации по Array? У меня есть массив, который содержит до одного объекта, удовлетворяющего определенному критерию. Я бы хотел эффективно найти этот объект. Лучшая идея у меня из документации это:Ruby Array find_first object?
candidates = my_array.select { |e| e.satisfies_condition? }
found_it = candidates.first if !candidates.empty?
Но я неудовлетворен по двум причинам: (1) что выбрать меня пройти весь массив, несмотря на то, что мы могли бы выпрыгнул после первого удара, и (2) Мне нужна строка кода (с условием), чтобы сгладить кандидатов. Обе операции являются расточительными с предвидением того, что существует 0 или 1 удовлетворяющих объектов.
То, что я хотел бы что-то вроде:
array.find_first(block)
-> ответы нулевой или первый объект, для которого блок истинно, окончание обхода на этом объекте.
Должен ли я написать это самостоятельно? Все эти замечательные методы в Array заставляют меня думать, что он есть, и я просто этого не вижу.
Спасибо заранее, Dan
Nope. Думаю, вы это поняли. Спасибо (и другим). Я не видел ни одного из методов Enumerable. Это то, что мне нужно. Извините за беспокойство. – 2010-03-04 17:24:45
Нет проблем, я также часто нахожу раздражающим, что в рубиновой документации не перечислены методы всех унаследованных или включенных классов и модулей. –
Дополнительная информация: '[1,2,3,5,2] .find {| n | ставит n; n == 2} 'iteration останавливается, когда находит первый элемент, который он соответствует. – rajuGT