1

我有这个:

def foo(a=3, b=6)
  puts a+b
end

但我这样称呼它:

foo(params[:a], params[:b])

如果参数在那里,这很好,但如果它们不存在,它会被调用:

foo(nil,nil) 

那么默认值 3 和 6 没有设置,它会为 nil 类抛出 undef 方法 '+' 的错误

我的问题是,即使 nil 被传递到方法中,是否有办法为方法设置默认值。因此,如果用户告诉您 nil,您会说“去你的男人!” 还是给他3个。

这不是一个好主意,我意识到,但我只是好奇。

4

1 回答 1

4

与在方法签名中使用默认值不同,您可以使用||=复合赋值运算符仅在布尔上下文中的变量评估为 nil 或 false 时分配值,就像它未设置时一样。例如:

def foo a, b
  a ||= 3
  b ||= 6
  puts a + b
end
于 2013-10-23T14:05:46.567 回答