你怎么称呼->Ruby中的运算符?

  1. 你把下面的->操作符称为什么?

    ->(...) do
    ...
    end
    
  2. Aren't the following snippets equivalent?

    succ = ->(x) {x + 1}
    succ = lambda {|x| x + 1}
    
68223 次浏览

Ruby程序设计语言 ("Methods, Procs, Lambdas, and Closures")中,使用->定义的lambda被称为λ文字

succ = ->(x){ x+1 }
succ.call(2)

代码与下面的代码是等价的。

succ = lambda { |x| x + 1 }
succ.call(2)

非正式地,我听说它被称为怪λ怪文字

__abc0 == __abc1

在哈希映射文字中将键与值分开。


__abc0 == __abc1

在Ruby 1.9中用于定义lambda字面量。X(不带参数)和Ruby 2。X(带参数)。你给出的例子(->(x) { x * 2 } &lambda { |x| x * 2 })实际上是等价的。

->(x) { ... }lambda { |x| ... }相同。它创建了一个。A lambda是proc的一种类型,它确保传递给它的参数数量是正确的。参见Proc::新内核# proc