我知道应该在不同的情况下使用 Procs 和 lambda(lambda 检查参数的数量等),但它们占用的内存量是否不同?如果是,哪个更有效?
最佳答案
Lambdas 和 Procs 之间存在一些差异。
Lambda 具有所谓的“小返回”。这意味着 Lambda 会将流程返回给调用它的函数,而 Proc 将从调用它的函数返回。
def proc_demo Proc.new { return "return value from Proc" }.call "return value from method" end def lambda_demo lambda { return "return value from lambda" }.call "return value from method" end proc_demo #=> "return value from Proc" lambda_demo #=> "return value from method"
Lambda 会检查传递给它们的参数数量,而 Proc 则不会。例如:
lambda { |a, b| [a, b] }.call(:foo) #=> #<ArgumentError: wrong number of arguments (1 for 2)> Proc.new { |a, b| [a, b] }.call(:foo) #=> [:foo, nil]
关于ruby - Lambda 与 Proc 在内存和效率方面的对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18221562/