Enumerable#detect返回块计算结果的数组的第一个值true.它有一个可选的参数,需要响应call并在这种情况下被调用,返回它的值.所以,
(1..10).detect(lambda{ "none" }){|i| i == 11} #=> "none"
Run Code Online (Sandbox Code Playgroud)
为什么我们需要lambda?为什么我们不直接传递默认值,因为(在我的测试中)lambda无论如何都不能有任何参数?像这样:
(1..10).detect("none"){|i| i == 11} #=> "none"
Run Code Online (Sandbox Code Playgroud)