web-dev-qa-db-ja.com

Rubyで->演算子を何と呼びますか?

  1. 次のように->演算子を何と呼びますか?

    ->(...) do
      ...
    end
    
  2. 次のスニペットは同等ではありませんか?

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

Ruby Programming Language( "Methods、Procs、Lambdas、and Closures")では、->を使用して定義されたラムダはlambda literalと呼ばれます。

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

コードは次のコードと同等です。

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

非公式には、stabby lambdaまたはstabby literalと呼ばれていると聞いています。

220
kiamlaluno

=> == ハッシュロケット

ハッシュマップリテラルのキーを値から分離します。


-> == ダッシュロケット

Ruby 1.9.X(引数なし)およびRuby 2.X(引数あり)でラムダリテラルを定義するために使用されます。あなたが与える例(->(x) { x * 2 }lambda { |x| x * 2 })は実際には同等です。

123
Yarin

ラムダロケット

私はこの記事からそれを得ました。しかし、最初にRubyラムダの短縮形のGoogle検索 http://Ruby-journal.com/becareful-with-space-in-lambda-hash-rocket-syntax-between-Ruby-1 -dot-9-and-2-dot-0 /

4

->(x) { ... }lambda { |x| ... }と同じです。ラムダを作成します。 Kernel#lambda を参照してください。ラムダはprocの一種であり、渡されるパラメータの数が正しいことを保証します。 Proc :: new および Kernel#proc も参照してください。

1
Cary Swoveland