Есть ли идиоматический способ ruby ​​/ rails для возврата первого истинно отображенного значения?

У меня есть массив объектов, некоторые из которых отвечают на: description, и я хочу получить описание первого с правдивым описанием. Я мог бы сделать это:

objects.detect{|o| o.try(:description)}.description

или это:

objects.map{|o| o.try(:description)}.detect{|o| o}

, но первый не является СУХИМ (описание присутствует дважды), а второй выполняет итерацию по всему массиву, прежде чем найти значение. Есть ли что-нибудь в стандартной библиотеке ruby ​​или в ее расширениях Rails, что позволило бы мне сделать что-то вроде этого:

objects.detect_and_return{|o| o.try(:description)}

Я знаю, что могу написать это достаточно легко, но стандартные библиотеки достаточно велики, и мне это может не понадобиться. Есть ли функция, которая работает как моя detect_and_return ?

9
задан Andrew Grimm 14 August 2011 в 23:28
поделиться