2009-11-02 55 views
9

我与变量构造函数参数在斯卡拉case类试验,但我无法将它们传递给一个case类的父的构造函数:通可变数目(2.8)的情况下类,父类的构造

​​

以上不编译...是否可以这样做?

+0

当然,没有时间在早些时候看答案。 – p3t0r 2009-11-02 12:13:40

+0

可能的重复[如何将List传递给Int *方法?](http://stackoverflow.com/questions/12436392/how-to-pass-list-to-int-method-in-scala) – 2012-09-15 12:11:40

+0

I已经将一个新的问题标记为*父问题*因为它要求一般情况,不仅仅是案例类 – 2012-09-15 12:12:28

回答

7

这适用于2.7:

abstract case class A(val a: String*) 
case class B(val b: String*) extends A(b:_*) 

应与2.8工作。

+0

实际上,案例类继承是被禁止的。 – 2009-11-03 01:17:58

19

您需要使用:_*语法,这意味着“把这个序列作为序列”!否则,您的n个物品序列将被视为1个物品的序列(这将是您的n个物品序列)。

def funcWhichTakesSeq(seq: Any*) = println(seq.length + ": " + seq) 

val seq = List(1, 2, 3) 
funcWhichTakesSeq(seq)  //1: Array(List(1, 2, 3)) -i.e. a Seq with one entry 
funcWhichTakesSeq(seq: _*) //3: List(1, 2, 3) 
相关问题