【发布时间】:2013-02-05 02:54:13
【问题描述】:
这是基本示例。我无法让 scala 认识到我希望能够以两种不同的方式初始化我的类:通过现有序列或使用多个参数。
我收到的错误是:
双重定义:方法应用:(参数: Int*)chorle.scala.tests.MultiParam 和方法 apply:(pList:
第 9 行的 Seq[Int])chorle.scala.tests.MultiParam 在之后具有相同的类型 擦除:(参数:Seq)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)
}
【问题讨论】:
标签: scala