【发布时间】:2014-01-19 22:16:59
【问题描述】:
Enumerable#detect 返回数组的第一个值,其中块的计算结果为true。它有一个可选参数,需要响应call 并在这种情况下被调用,返回它的值。所以,
(1..10).detect(lambda{ "none" }){|i| i == 11} #=> "none"
为什么我们需要 lambda?为什么我们不只传递默认值本身,因为(在我的测试中)lambda 无论如何都不能有任何参数?像这样:
(1..10).detect("none"){|i| i == 11} #=> "none"
【问题讨论】:
-
你必须放一个对象,它应该响应
#call方法。它可以是Proc或Method对象。 -
考虑
(1..10).detect { |i| i == 11} || "none" -
不错的解决方法,韦恩!
标签: ruby lambda detect enumerable proc