2013-05-19 14 views
13

Yakut lambda sözdizimi vardır, bu yüzden -> sembolü kullanabilirsiniz:Ruby'nin yeni lambda söz dizimini nasıl kullanırım?

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] }) 

tüm dönüşü aynı sözdizimi error: Bu çok iyi çalışıyor

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

ama bunu yapmaya çalıştıklarında :

$ 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... 

+0

Tam hata kümesini verin lütfen. –

+0

^^^ "Stack" yok, bir sözdizimi hatası. Ancak, sözdizimi hatasını göstermek için satır ekledi. – CuriousMind

cevap

20

yeni sözdizimi

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

Ben sözdizimi şu şekilde olması gerektiğini düşünüyorum olması gerektiğini düşünüyorum.

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

Ondan sonra 10'lar :) – lis2

1

Size daha rubyish olduğu gibi Şahsen ben lamda sözdizimi kullanırsınız -> ve lambda sözdizimini

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

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

Ve

karıştırma gibi görünüyor.