Enumerable#detect
возвращает первое значение массива, где блок оценивает значение true
. Он имеет необязательный аргумент, который должен отвечать на call
и в этом случае вызывается, возвращая его значение. Таким образом,
(1..10).detect(lambda{ "none" }){|i| i == 11} #=> "none"
Зачем нам нужна лямбда? Почему бы нам просто не передать значение по умолчанию, поскольку (в моих тестах) лямбда не может иметь никаких параметров? Вот так:
(1..10).detect("none"){|i| i == 11} #=> "none"