【发布时间】:2013-08-20 21:09:26
【问题描述】:
我写了一个类,它接受一个可变参数作为参数,并指定它的默认值,这样用户就可以在不指定参数的情况下经常实例化它:
class MyClass(values: Int* = 42) { }
但是,编译器和 REPL 给我以下错误:
<console>:7: error: type mismatch;
found : Int(42)
required: Int*
class MyClass(values: Int* = 42) { }
^
<console>:7: error: a parameter section with a `*'-parameter is not allowed to have default arguments
class MyClass(values: Int* = 42) { }
作为一种解决方法,我尝试了以下方法,但它也不起作用:(显然它非常模棱两可。)
class MyClass(value: Int = 42, otherValues: Int*) { }
我想知道为什么不允许使用 varargs 参数的默认值。这里的推理或技术原因是什么? (我的猜测是指定一个空的可变参数需要一些特殊的语法或习惯用法,但我不确定这是否足够。)
【问题讨论】:
标签: scala variadic-functions default-parameters