我有一個功能,如:將在此情況下的可選參數工作
def set_blah
self.prop1 = .... if new_record?
end
我希望能夠以強制更新,即使它不是在某些情況下,一個新的記錄,我可以再補充一個可選參數在這裏,所有其他的電話,我已經不會打破?
即
def set_blah (force)
self.prop1 = ... if new_record? || force
end
我有一個功能,如:將在此情況下的可選參數工作
def set_blah
self.prop1 = .... if new_record?
end
我希望能夠以強制更新,即使它不是在某些情況下,一個新的記錄,我可以再補充一個可選參數在這裏,所有其他的電話,我已經不會打破?
即
def set_blah (force)
self.prop1 = ... if new_record? || force
end
是,默認參數在方法簽名只是規定:
def set_blah(force=false)
do_something if new_record? || force
end
您可以嘗試使用選項,使您的調用序列更具可讀性:
def set_blah(options = {:force => false})
do_something if new_record? || options[:force]
end
通過指定它這個明確,你的調用順序是這樣的:
set_blah
或
set_blah(:force => true)
這似乎讓它在調用點什麼@ set_blah @不清晰。另外,你的rdoc將顯示方法的默認參數,所以它是一種自我記錄。
是的,理論上可以使用你的代碼按原樣。當你不想強迫時,只需使用set_blah(nil)。
當然,只是讓force
默認的參數,所以你不需要更改現有調用此方法:
def set_blah(force = false)
self.prop1 = ... if new_record? or force
end
您可能想要寫「force || new_record?」,「輕」表達式總是首先在短路邏輯中。 – tokland 2011-03-20 23:14:46
請記住縮進你的代碼。 – 2011-03-20 23:15:45