对Ruby中的procs和lambdas有什么“简单”的解释吗?
答案 0 :(得分:5)
Lambdas(也存在于其他语言中)就像ad hoc函数一样,只是为了简单的使用而创建,而不是执行一些复杂的操作。
当您使用Array#collect
之类的方法在{}
中占用一个块时,您实际上只是为了使用该方法而创建一个lambda / proc / block。
a = [1, 2, 3, 4]
# Using a proc that returns its argument squared
# Array#collect runs the block for each item in the array.
a.collect {|n| n**2 } # => [1, 4, 9, 16]
sq = lambda {|n| n**2 } # Storing the lambda to use it later...
sq.call 4 # => 16
请参阅维基百科上的Anonymous functions,以及lambda
与Proc
的细微差别的other SO questions。