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

时间:2017-12-30 16:03:50

标签: scala

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

def functionName(parameter: Enum* = defaultValue)

我应该为上面的defaultValue做些什么?

3 个答案:

答案 0 :(得分:1)

正如已经提到的那样,你不能直接这样做,所以你必须要乱搞。这也不是一个理想的解决方案,但你可能比其他选择更喜欢这个hack:

def functionName(): Int = functionName(1, 2, 3)

def functionName(parameter: Int*): Int = parameter.sum

println(functionName())显然会打印6

答案 1 :(得分:0)

你不会:

  

带有“*”参数的参数部分 - 参数不允许有默认参数

答案 2 :(得分:0)

你不能因为传递0参数对varargs参数也有效。但你可以简单地检查方法体。

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