2013-01-06 101 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 }