我如何使用Ruby的新lambda语法?

Cur*_*ind 13 ruby lambda

Ruby有lambda语法,所以我可以使用->符号:

a = 0
new  -> { a < 5 }  do
   puts a
   a += 1
end
Run Code Online (Sandbox Code Playgroud)

这非常有效,但当我尝试这样做时:

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] })
Run Code Online (Sandbox Code Playgroud)

所有返回相同的语法错误:

$ 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...
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

lis*_*is2 21

我认为新的语法应该是

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


小智 9

我认为语法应该是这样的.

->(e) { [404, {}, ["Hello! I am micro rack app"]]
Run Code Online (Sandbox Code Playgroud)

  • 你以后10s :) (4认同)