2010-05-09 82 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*) 

斯卡拉是伟大的!