我需要这样的东西:
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)
答案 0 :(得分:8)
您可以拥有多个参数列表,每个参数列表可能包含(或只是)一个重复参数:
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
我在Scala 2.8 REPL中运行了这个。我不知道它在2.7中不起作用的原因。
答案 1 :(得分:6)
这有效:
class Node (left : Node*) (right : Node*)
斯卡拉很棒!
答案 2 :(得分:1)
我不相信你可以有多个varargs。你可能会做类似
的事情class Node(left: Node*) {
def apply(right: Node*) = ...
然后您可以创建new Node(n1,n2)(n3)