有沒有一種方法可以使參數真正成爲可選參數,因此我知道它是否由調用者設置?如何在Ruby 2.0中傳遞可選的命名參數
使用參數nil
作爲默認值不起作用,因爲無法知道調用者是否通過了nil
或者它是參數的默認值。
命名的參數之前,用Ruby 1.9,使用選項哈希:
def foo(options = {})
# …
bar(options)
end
def bar(options = {})
puts options.fetch(:name, ‘unknown’) # => 'unknown'
end
使用Ruby 2.0命名參數:
def foo(name: nil)
# …
bar(name: name)
end
def bar(name: ‘unknown’)
# …
puts name # => nil, since nil is explicitly passed from `foo`
end
標題和問題似乎不匹配。此外,您的代碼顯示的內容並不清楚。 – sawa 2014-10-27 15:52:40
我想我的觀點是,沒有可選參數這樣的事情,接下來最好的事情是將默認設置爲'nil'。但問題是,顯式傳遞nil作爲參數不會調用默認值。 – Kris 2014-10-27 17:01:01
我冒昧地編輯你的標題以更好地反映你的問題。 – 2014-10-27 19:06:07