次のように->
演算子を何と呼びますか?
->(...) do
...
end
次のスニペットは同等ではありませんか?
succ = ->(x) {x + 1}
succ = lambda {|x| x + 1}
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と呼ばれていると聞いています。
=>
== ハッシュロケットハッシュマップリテラルのキーを値から分離します。
->
== ダッシュロケットRuby 1.9.X(引数なし)およびRuby 2.X(引数あり)でラムダリテラルを定義するために使用されます。あなたが与える例(->(x) { x * 2 }
&lambda { |x| x * 2 }
)は実際には同等です。
ラムダロケット
私はこの記事からそれを得ました。しかし、最初にRubyラムダの短縮形のGoogle検索 http://Ruby-journal.com/becareful-with-space-in-lambda-hash-rocket-syntax-between-Ruby-1 -dot-9-and-2-dot-0 /
->(x) { ... }
はlambda { |x| ... }
と同じです。ラムダを作成します。 Kernel#lambda を参照してください。ラムダはprocの一種であり、渡されるパラメータの数が正しいことを保証します。 Proc :: new および Kernel#proc も参照してください。