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

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

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

我错过了什么吗?

我认为新的语法应该是

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

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

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

看来你正在混合->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] ) 

就个人而言,我会使用’lambda’语法,因为它更加ruby。