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

时间:2011-12-12 15:26:09

标签: ruby syntax

  1. 您如何称呼->运算符,如下所示?

    ->(...) do
      ...
    end
    
  2. 以下代码段是否相同?

    succ = ->(x) {x + 1}
    succ = lambda {|x| x + 1}
    

4 个答案:

答案 0 :(得分:210)

Ruby Programming Language (“Methods,Procs,Lambdas and Closures”)中,使用->定义的lambda称为 lambda literal

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

代码等同于以下代码。

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

非正式地,我听说它被称为 stabby lambda stabby literal

答案 1 :(得分:120)

=> == 哈希火箭

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


-> == Dash Rocket

用于在Ruby 1.9.X(不带args)和Ruby 2.X(带args)中定义lambda文字。您提供的示例(->(x) { x * 2 }& lambda { |x| x * 2 })实际上是等效的。

答案 2 :(得分:3)

Lambda火箭

我从这篇文章中得到了这个。 但首先谷歌搜索 红宝石lambda速记 http://ruby-journal.com/becareful-with-space-in-lambda-hash-rocket-syntax-between-ruby-1-dot-9-and-2-dot-0/

答案 3 :(得分:1)

->(x) { ... }lambda { |x| ... }相同。它创建一个lambda。请参见Kernel#lambda lambda是proc的一种类型,可确保传递给它的参数数量正确。另请参见Proc::newKernel#proc