Enumerable#detect
возвращает первое значение массива, где блок оценивается как true
. У него есть необязательный аргумент, который должен отвечать на call
и вызывается в этом случае, возвращая его значение. Так,
(1..10).detect(lambda{ "none" }){|i| i == 11} #=> "none"
Зачем нам лямбда? Почему бы нам просто не передать само значение по умолчанию, поскольку (в моих тестах) лямбда все равно не может иметь никаких параметров? Как это:
(1..10).detect("none"){|i| i == 11} #=> "none"
#call
. Это может быть объектProc
илиMethod
. - person Arup Rakshit   schedule 02.01.2014(1..10).detect { |i| i == 11} || "none"
- person Wayne Conrad   schedule 02.01.2014