我有这个:
def foo(a=3, b=6)
puts a+b
end
但我称之为:
foo(params[:a], params[:b])
如果params在那里这很好但是如果它们不存在并且它被调用:
foo(nil,nil)
然后默认值3和6未设置,并且它为nil类抛出undef方法'+'的错误
我的问题是,即使将nil传递给方法,是否有办法为方法设置默认值。因此,如果用户告诉你没有,你会说'搞砸你!'反正给他3个。
这不是一个好主意,我意识到,但我只是好奇。
答案 0 :(得分:2)
不是在方法签名中使用默认值,而是可以使用||=
复合赋值运算符仅在变量在布尔上下文中求值为nil或false时分配值,就像在取消设置时一样。例如:
def foo a, b
a ||= 3
b ||= 6
puts a + b
end