2010-05-09 86 views
4

我需要的是這樣的:雙變量參數列表

class Node (left : Node*, right : Node*) 

我明白這個簽名的模糊性。

有沒有比它更好的解決方法?

class Node (left : Array[Node, right : Array[Node]) 
val n = new Node (Array(n1, n2), Array(n3)) 

也許某種類似這樣的分離?

val n = new Node (n1, n2, Sep, n3) 

回答

8

你可以有多個參數列表,每一個都可以有(或僅僅是)一個重複-args參數:

scala> def m1(ints: Int*)(strs: String*): Int = ints.length + strs.length 
dm1: (ints: Int*)(strs: String*)Int 

scala> m1(1, 2, 3)("one", "two", "three") 
res0: Int = 6 

我在斯卡拉2.8 REPL跑這個。我不知道2.7的原因,不適用。

+1

@Łukasz盧:我只有9秒落後了! – 2010-05-09 01:01:35

+0

所以我會給你回答的偉大的綠色勾號:) – 2010-05-09 09:14:44

1

我不相信你可以有多個可變參數。你也許可以做類似

class Node(left: Node*) { 
    def apply(right: Node*) = ... 

,然後你可以創建new Node(n1,n2)(n3)

6

這工作:

class Node (left : Node*) (right : Node*) 

斯卡拉是偉大的!