2013-01-06 95 views
0

这一个是工作块不与工作`{}`

[:dev1, :dev2, :dev3].each do |env| 
    define_method "#{env.to_s}?" do 
    settings.environment == env 
    end 
end 

但这不是

[:dev1, :dev2, :dev3].each do |env| 
    define_method "#{env.to_s}?" { settings.environment == env } 
end 

它会导致因为使用{ ... }语法的错误。为什么?

+0

我想这个应该没有问题工作。你的上下文是在ruby-on-rails上,对吧?我编辑了标签。 –

+0

这不是红宝石在轨道上 – Alexandre

+0

相似的http://stackoverflow.com/questions/5513531/ruby-do-end-vs-braces – asheeshr

回答

8

这可能是因为该方法除了块以外还有其他参数,并且省略了括号。

试试这样说:

define_method("#{env.to_s}?") { settings.environment == env }