2

我有点恼火为什么会这样:

cattr_accessor :aggregate { true }

失败并出现错误:

syntax error, unexpected '{', expecting keyword_end
  cattr_accessor :aggregate { true }
                            ^

虽然完全相同,但 do/end 似乎在做正确的事情:

cattr_accessor :aggregate do true end

(但是whhhay太冗长了;)

鉴于我必须花时间在这上面,来源:http : //api.rubyonrails.org/classes/Class.html#method-i-cattr_writer 有点太粗鲁了。想法?

4

1 回答 1

5

这不只是遵循语言绑定优先级吗?

  • 大括号形式具有更高的优先级,如果调用不带括号,则将绑定到最后一个参数。
  • do/end 形式的优先级较低,即使没有括号也会绑定到调用。

如果您不想编写 do 结束形式,则需要在调用周围加上括号。

cattr_accessor(:is_admin) { true }
于 2013-05-02T17:05:18.960 回答