例如,而不是爲什麼我們只在某些時候省略括號?
validates :name, presence: true
validates(:name, presence: true)
但我們一直在括號
@user = User.find(params[:id])
從哈特爾書中抽取。
例如,而不是爲什麼我們只在某些時候省略括號?
validates :name, presence: true
validates(:name, presence: true)
但我們一直在括號
@user = User.find(params[:id])
從哈特爾書中抽取。
這是一種Ruby風格的選擇;你也可以做。大多數人,包括我在內,大多數時候都省略了括號。作爲一種語言,Ruby非常努力地保持自己的方式,給你幾種實現同樣的事情的方法,無論哪種方式在給定時刻都適合。
你可以有選擇地使用它們的清晰度,或最常用於長的代碼行,其中解釋可能絆倒什麼參數與下一條語句等
你的最後一個例子是做工精細沒有括號。
validates
attr_reader
,Sinatra的get
,RSpec的describe
和類似的函數調用可以看作是聲明。在這種情況下,通常會放棄括號。爲了清楚起見,「真正的」函數調用通常用圓括號編寫。
在更流行的Ruby風格指南中的一個的words:
- 省略括號周圍參數對於那些內部DSL(例如耙,導軌,RSpec的)的一部分的方法中,具有方法「關鍵字「狀態(例如attr_reader,puts)和屬性訪問方法。使用括號周圍所有其他方法調用
的論點[...]
- 省略外括號和括號無論對於是內部DSL的部分方法。
在大多數情況下,括號與無括號是一個慣例問題。捨棄括號是完全正確的。
通常當在Ruby中使用DSL(例如validates
)時,您會省略括號。在調用常規實例或類方法時,我經常看到有人包含它們。
在更復雜的示例中,爲了清晰起見,您需要包含括號,並確保您掌握如何執行。