这里是一个基本示例...我无法让Scala识别我想要以两种不同的方式初始化我的类:通过现有序列,或使用多个参数。
我收到的错误是:
"double definition: method apply:(params: Int*)chorle.scala.tests.MultiParam and method apply:(pList:
Seq[Int])chorle.scala.tests.MultiParam at line 9 have same type after erasure: (params: Seq)chorle.scala.tests.MultiParam"
好吧,我知道这里发生了什么-在编译后,这两个函数都会产生相同的头签名。然而,在实践中,它们的工作方式并不相同-如果我只有apply(Seq)版本,则无法调用:apply(1,2,3);反之亦然。我知道有各种方法可以修补实际的函数调用,但是如何在类中适当且仅一次地解决此问题?谢谢!
我收到的错误是:
"double definition: method apply:(params: Int*)chorle.scala.tests.MultiParam and method apply:(pList:
Seq[Int])chorle.scala.tests.MultiParam at line 9 have same type after erasure: (params: Seq)chorle.scala.tests.MultiParam"
好吧,我知道这里发生了什么-在编译后,这两个函数都会产生相同的头签名。然而,在实践中,它们的工作方式并不相同-如果我只有apply(Seq)版本,则无法调用:apply(1,2,3);反之亦然。我知道有各种方法可以修补实际的函数调用,但是如何在类中适当且仅一次地解决此问题?谢谢!
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)
}