2009-11-02 30 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) 
相關問題