2012-02-18 15 views

Odpowiedz

52

Jest to "lambda" 1,9 "nożem". Na przykład zobacz this article from 2008.

pigułce:

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

Uwaga brak miejsca między -> i (arg), to zamierzone.

+3

Właściwie jestem prawie pewien, że spacja między '->' a '(arg)' nie jest wymagana. Po prostu wypróbowałem to w 'irb' z uruchomieniem' ruby ​​1.9.3p484'. Nie wiem, czy przestrzeń była wymagana we wcześniejszych wersjach. Lub, czy mówisz "intencjonalny" jako styl kodowania dla jasności? – zealoushacker

+2

Ah, oops, rozumiem. Podczas korzystania z parens wymagane jest miejsce, ale rodzice sami nie są potrzebni. Tak więc 'foo2 = -> arg {arg * 2}' będzie prawidłową składnią. – zealoushacker

+2

@zealoushacker Prawidłowe :-) IMO odejście od paren jest bardziej zagmatwane, ale to mniej techniczny argument niż stylistyczny, więc nie zawracam sobie głowy tymi argumentami. –