您如何称呼->运营商,如下所示?
->(...) do
...
end
Run Code Online (Sandbox Code Playgroud)这些片段不是等效的吗?
succ = ->(x) {x + 1}
succ = lambda {|x| x + 1}
Run Code Online (Sandbox Code Playgroud)kia*_*uno 225
在Ruby Programming Language("Methods,Procs,Lambdas,and Closures")中,使用的lambda ->称为lambda literal.
succ = ->(x){ x+1 }
succ.call(2)
Run Code Online (Sandbox Code Playgroud)
代码等同于以下代码.
succ = lambda { |x| x + 1 }
succ.call(2)
Run Code Online (Sandbox Code Playgroud)
非正式地,我听说它被称为stabby lambda或stabby literal.
Yar*_*rin 122
=>== 哈希火箭将键与哈希映射文字中的值分开.
->== 短跑火箭用于在Ruby 1.9.X(不带args)和Ruby 2.X(带args)中定义lambda文字.你给出的例子(->(x) { x * 2 }&lambda { |x| x * 2 })实际上是等价的.
拉姆达火箭
我是从这篇文章中得到的。但首先谷歌搜索 ruby lambda 速记 http://ruby-journal.com/becareful-with-space-in-lambda-hash-rocket-syntax-between-ruby-1-dot-9-and-2-dot -0/
->(x) { ... }是相同的lambda { |x| ... }。它创建了一个 lambda。请参阅Kernel#lambda lambda 是 proc 的一种类型,可确保传递给它的参数数量是正确的。另请参见Proc::new和Kernel#proc。