42
A
答えて
52
これはRuby 1.9の "stabby lambda"演算子です。たとえば、this article from 2008を参照してください。
一言で言えば:
> foo2 = ->(arg) { arg*2 }
> foo2.call "now"
=> nownow
注->
と(arg)
の間のスペースの欠如は、それは意図的なものです。
実際には、 ' - >'と '(arg)'の間のスペースは必要ないとは確信しています。 'ruby 1.9.3p484'を実行している' irb'で試してみました。スペースが以前のビルドで必要だったかどうかは不明です。または、明確にするためのコーディングスタイルとして「意図的」と言っていましたか? – zealoushacker
ああ、おっと、そうです。括弧を使用する場合はスペースが必要ですが、親はそれ自体は必要ありません。したがって、 'foo2 = - > arg {arg * 2}'は有効な構文になります。 – zealoushacker
@zealoushacker正解:-)括弧を外しているIMOはもっと混乱しますが、それは文法的なものではなく技術的な議論ではありません。 –