有没有一种方法可以使参数真正成为可选参数,因此我知道它是否由调用者设置?如何在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