这是基本示例。我无法让 scala 认识到我希望能够以两种不同的方式初始化我的类:通过现有序列或使用多个参数。
我收到的错误是:
双重定义:第 9 行的方法 apply:(params: Int*)chorle.scala.tests.MultiParam 和方法 apply:(pList:
Seq[Int])chorle.scala.tests.MultiParam 在擦除后具有相同的类型:(params:序列)chorle.scala.tests.MultiParam
好的,我知道这里发生了什么 - 编译后两个函数都会产生相同的标头签名。但是,实际上它们的工作方式不同 - 如果我只有 apply(Seq) 版本,我无法调用:apply(1,2,3) ......而且我无法调用 apply(seq)其他方式。我知道可以修补实际函数调用的各种方法,但是如何正确解决这个问题并且只在课堂上解决一次?谢谢!
class MultiParam protected (pList:Seq[Int])
object MultiParam {
def apply(pList:Seq[Int]): MultiParam = new MultiParam(pList)
def apply(params: Int *): MultiParam = new MultiParam(params)
}