參數我想要定義的方法具有以下特徵:可選性的依賴於其它參數
- 一個。需要
name
。 - b。
all_day
是可選的。 - c。需要
start_time
。 - d。除非
all_day
是true
,否則需要end_time
。 e。
location
是可選的,是一個看起來像哈希:需要location = {name => "Chelsea Piers", address => "10th Avenue", city => "New York"}
爲此
location[:name]
,以及其它按鍵是可選的。
這是我的代碼:
class Event
def initialize(name, all_day=false, start_time, end_time, **location)
@name = name
@all_day = all_day
@start_time = Time.parse(start_time)
@end_time = Time.parse(end_time)
@location = location
end
end
如何實現需求d。?如果all_day
是true
,我沒有location
,是在下面的代碼的語法爲參數:
Event.new(name, true, start_time, location)
是否正確?我可以創建一個新Event
對象是這樣的:
Event.new(name, false, start_time, end_time)
你有沒有考慮將所有可選的東西移動到命名參數?你最終會手動驗證參數並提出自己的'ArgumentError',但所有內容都不會令人困惑,並且更易於閱讀。我發現,如果有更多的位置參數比其中幾個位置變得更難看,那麼當你開始拋出可選參數時就會加倍。 –
不知道命名參數。非常感謝你的信息! –