Block不适用于`{}`

时间:2013-01-06 09:18:27

标签: ruby

这个正在运作

[: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

由于使用{ ... }语法而导致错误。为什么呢?

1 个答案:

答案 0 :(得分:8)

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

以这种方式尝试:

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