【发布时间】:2009-11-16 08:57:09
【问题描述】:
对于 Ruby 中的 procs 和 lambdas 有什么“简单”的解释吗?
【问题讨论】:
标签: ruby lambda proc-object
对于 Ruby 中的 procs 和 lambdas 有什么“简单”的解释吗?
【问题讨论】:
标签: ruby lambda proc-object
Lambda(也存在于其他语言中)类似于临时函数,仅为简单用途而非执行某些复杂操作而创建。
当您使用像 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
请参阅 Wikipedia 上的 Anonymous functions,以及一些 other SO questions,了解 lambda 与 Proc 的细微差别。
【讨论】:
aa=[]; for i in 0...(a.length); aa<<a[i]**2; end; aa