Sprawdziłem najnowszą wersję Ruby, aby zagrać z ostatnimi zmianami. Pierwszą rzeczą, którą próbowałem zrobić, było wywołanie Ruby lambda/block/proc, tak jak w przypadku wywołania Pythona.Dlaczego wywołanie lambda w Ruby 1.9 nie jest możliwe bez kropki przed nawiasami?
a = lambda {|x| puts x}
a.call(4) # works, and prints 4
a[4] # works and prints 4
a.(4) # same
a(4) # undefined method 'a' for main:Object
Dlaczego nie jest to ostatnie połączenie możliwe? Czy kiedykolwiek tak będzie?
Czy możesz wyjaśnić nieco skrypt lambda? – Geo
ok, przy próbie wywołania metody o nazwie 'blah()' i 'method_missing' jest wyzwalana, sprawdza, czy lambda o nazwie' blah' jest zdefiniowana w odpowiednim kontekście. Jeśli taka lambda jest zdefiniowana, to po prostu wywołuje lambdę przy użyciu zwykłej składni "blah.call", przekazuje również wszystkie parametry, które zostały podane – horseyguy
Myślę, że jest to niesamowity hack. Dziękuję Ci. – Geo