有没有办法制作一个可以接受参数的方法,但也可以在没有参数的情况下调用,在这种情况下,参数被视为nil
,如下所示?
some_func(variable)
some_func
答案 0 :(得分:71)
def some_func(variable = nil)
...
end
答案 1 :(得分:16)
除了使用默认值的更明显的参数选项之外, Sawa 已经显示,在某些情况下使用数组或散列可能很方便。两种解决方案都将 nil 保留为参数。
<强> 1。接收为数组:
def some_func(*args)
puts args.count
end
some_func("x", nil)
# 2
<强> 2。发送和接收哈希:
def some_func(**args)
puts args.count
end
some_func(a: "x", b: nil)
# 2
答案 2 :(得分:5)
您还可以使用哈希作为参数并拥有更多自由:
def print_arg(args = {})
if args.has_key?(:age)
puts args[:age]
end
end
print_arg
# =>
print_arg(age: 35, weight: 90)
# => 35