Я ищу что-то похожее на #detect в перечислениях, но не совсем. Вот что делает перечисление:
[1, 2, 3].detect {|i| i > 1 } #=> 2
он возвращает первый экземпляр массива, который соответствует условию. Теперь моя цель - вернуть значение блока. Беспокойство вызывает не совсем условия, а, например, первое, которое не равно нулю. Что-то вроде этого:
[var1, var2, var3].wanted_detect {|var| another_function(var) }
в котором функция вернет первый результат вызова other_function, который не равен нулю.
Сопоставление значений применения метода к переменным, а затем использование обнаружения не является вариантом. В идеале это должно работать в ленивых счетчиках, для которых раннее сопоставление всех возможных значений недопустимо.