如何在 scala 中设置 varargs 参数的默认值



如果我有一个类型为 Enum 的 varargs 参数,我可以为此参数设置默认值吗?

def functionName(parameter: Enum* = defaultValue)

我应该为上述defaultValue做些什么?

正如已经提到的,你不能直接做到这一点,所以你必须四处走动。这也不是一个理想的解决方案,但您可能比其他选择更喜欢这个黑客:

def functionName(): Int = functionName(1, 2, 3)
def functionName(parameter: Int*): Int = parameter.sum

println(functionName())显然打印6

你不会:

带有"*"参数的参数部分不允许具有默认参数

你不能,

因为传递 0 参数对 varargs 参数也有效。但是,您可以简单地在方法主体中进行检查。

def functionName(parameter: Enum*) = {
  val parameter0 = if (parameter.nonEmpty) parameter else Seq(defaultValue)
  ???
}

最新更新