gpt4 book ai didi

ruby - Ruby 中 lambda 和 def method_name 的区别

转载 作者:数据小太阳 更新时间:2023-10-29 06:52:31 27 4
gpt4 key购买 nike

我正在阅读 Pickaxe 1.9,作者是这样使用 lambda 的:

bo = lambda {|param| puts "You called me with #{param}"}
bo.call 99 => 'You called me with 99'
bo.call "cat" => 'You called me with cat'

我的问题是:这与仅定义一个执行相同操作的方法相比有何更好/更差/不同之处?像这样:

def bo(param)
puts "You called me with #{param}"
end

bo("hello") => 'You called me with hello'

对我来说,lambda 语法似乎更令人困惑,更像意大利面条。

最佳答案

lambda 斯:

  • Procs的变体,
  • 可以转换为/自blocks ,
  • 不要开始新的closure scope (这意味着您可以访问在 lambda 范围之外定义的变量,这与 def 不同),
  • 可以作为变量传递。

我建议查看 this article解释过程、 block 和 lambda。

编辑:此链接已过时。为了将来引用,请尝试 this article

关于ruby - Ruby 中 lambda 和 def method_name 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10217119/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com