【问题标题】:cattr_accessor default value syntaxcattr_accessor 默认值语法
【发布时间】:2013-04-26 22:37:25
【问题描述】:

我有点生气,为什么会这样:

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 的来源有点太粗鲁了。 想法?

【问题讨论】:

    标签: ruby-on-rails class-variables


    【解决方案1】:

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

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

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

    cattr_accessor(:is_admin) { true }
    

    【讨论】:

    • 猜我需要点击词法分析器/解析器文档......这似乎有效,但仍然比我想要的更冗长;)
    猜你喜欢
    • 1970-01-01
    • 2017-05-19
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 2016-11-03
    • 2019-01-28
    相关资源
    最近更新 更多