小编Max*_*Max的帖子

为什么Enumerable#detect需要一个Proc/lambda?

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)

ruby lambda enumerable detect proc

11
推荐指数
1
解决办法
1488
查看次数

标签 统计

detect ×1

enumerable ×1

lambda ×1

proc ×1

ruby ×1