2013-05-19 10 views
13

Ruby ma składnię lambda, więc mogę używać -> symbol:Jak korzystać z nowej składni lambda w Ruby?

a = 0 
new -> { a < 5 } do 
    puts a 
    a += 1 
end 

To działa bardzo dobrze, ale gdy próbuję to zrobić:

match "/", to: -> { |e| [404, {}, ["Hello! I am micro rack app"]] }, via: [:get] 
match("/", to: -> { |e| [404, {}, ["Hello! I am micro rack app"]] }, via: [:get]) 
match("/", { to: -> { |e| [404, {}, ["Hello! I am micro rack app"]] }, via: [:get] }) 

cały zamian ten sam błąd składni :

$ ruby -c -e 'match("/", to: -> { |e| [404, {}, ["Hello! I am micro rack app"]] }, via: [:get])' 
-e:1: syntax error, unexpected '|' 
match("/", to: -> { |e| [404, {}, ["Hello! I am mi... 

Czy brakuje mi czegoś?

+0

proszę podać cały stos błędów. –

+0

^^^ Nie ma "stosu", jest to błąd składniowy. jednak dodana linia, aby pokazać błąd składni. – CuriousMind

Odpowiedz

20

myślę, że nowa składnia powinna być

match "/", to: ->(e) { [404, {}, ["Hello! I am micro rack app"]] }, via: [:get] 
9

myślę składnia powinna być.

->(e) { [404, {}, ["Hello! I am micro rack app"]] 
+3

10s po tobie :) – lis2

1

Wydaje jesteś mieszanie -> i lambda składnię

match("/", to: lambda { |e| [404, {}, ["Hello! I am micro rack app"]] }, via: [:get]) 

And

match("/", to: -> (e) { [404, {}, ["Hello! I am micro rack app"]] }, via: [:get]) 

Osobiście używam składni 'lambda', ponieważ jest bardziej rubyish.

Powiązane problemy