2013-05-19 4 views
13

Rubyはラムダ構文を持っているので、私は->記号を使用することができますRubyの新しいラムダ構文を使用するにはどうすればよいですか?

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

これは非常にうまく動作しますが、私はこれを行うにしようとすると:

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

リターンの全て同じ構文エラーを:

$ 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

完全なエラースタックを与えてください。 –

+0

^^^「スタック」はありません。構文エラーです。ただし、構文エラーを表示する行を追加しました。 – CuriousMind

答えて

20

私は、構文は次のようにあるべきだと思う新しい構文が

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

であるべきだと思います。

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

10秒後に:) – lis2

1

あなたがそれがよりrubyishあるとして、私は 'ラムダ' 構文を使用します。->lambda構文

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

そして

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

を混合しているようです。

関連する問題