我写了一个类,它接受一个可变参数作为参数,并指定它的默认值,以便用户经常可以在不指定参数的情况下实例化它:
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 参数的默认值。这里的推理或技术原因是什么?(我的猜测是,指定一个空的可变参数需要一些特殊的语法或习惯用法,但我不确定这是否是一个足够的理由。)