cattr_accessor默认值语法

时间:2013-05-02 16:44:31

标签: ruby-on-rails class-variables

我有点恼火为什么:

cattr_accessor :aggregate { true }

因错误而失败:

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

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

cattr_accessor :aggregate do true end

(但是太过于冗长;)

来自:http://api.rubyonrails.org/classes/Class.html#method-i-cattr_writer的来源有点过于苛刻,因为我必须花时间在这上面。 想法?

1 个答案:

答案 0 :(得分:4)

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

  • 大括号形式具有更高的优先级,并将绑定到最后一个参数 如果调用不做任何事情。
  • 执行/结束表单的优先级较低 即使没有parens,它也会绑定到调用。

如果您不想写do end表单,则需要在调用周围加上括号。

cattr_accessor(:is_admin) { true }