2013-05-02 90 views
2

我有點生氣,爲什麼這樣的:cattr_accessor默認值語法

cattr_accessor :aggregate { true } 

失敗,出現錯誤:

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

,而同樣的事情,與DO /結束,似乎是做正確的做法:

cattr_accessor :aggregate do true end 

(但whhhay太冗長;)

來源:http://api.rubyonrails.org/classes/Class.html#method-i-cattr_writer鑑於我不得不在這方面花費的時間太多了。 想法?

回答

4

這不就是語言綁定優先順序嗎?

  • 底架形式具有更高的優先級並且將結合到最後一個參數 如果調用製成W/O型的括號。
  • do/end表的優先級較低,即使沒有parens, 也會綁定到調用。

如果您不想編寫do end form,則需要在括號內放置括號。

cattr_accessor(:is_admin) { true } 
+0

猜想我需要命中詞法分析器/解析器文檔....這似乎工作,但仍然比我想要的更詳細;) – aabes 2013-05-02 17:16:05