2012-02-18 6 views

答えて

52

これはRuby 1.9の "stabby lambda"演算子です。たとえば、this article from 2008を参照してください。

一言で言えば:

> foo2 = ->(arg) { arg*2 } 
> foo2.call "now" 
=> nownow 

->(arg)の間のスペースの欠如は、それは意図的なものです。

+3

実際には、 ' - >'と '(arg)'の間のスペースは必要ないとは確信しています。 'ruby 1.9.3p484'を実行している' irb'で試してみました。スペースが以前のビルドで必要だったかどうかは不明です。または、明確にするためのコーディングスタイルとして「意図的」と言っていましたか? – zealoushacker

+2

ああ、おっと、そうです。括弧を使用する場合はスペースが必要ですが、親はそれ自体は必要ありません。したがって、 'foo2 = - > arg {arg * 2}'は有効な構文になります。 – zealoushacker

+2

@zealoushacker正解:-)括弧を外しているIMOはもっと混乱しますが、それは文法的なものではなく技術的な議論ではありません。 –