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)
4

3 回答 3

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 中不起作用的原因。

于 2010-05-09T01:00:46.673 回答
6

这有效:

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

斯卡拉很棒!

于 2010-05-09T01:00:37.410 回答
1

我不相信你可以有多个可变参数。你也许可以做类似的事情

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

然后你可以创建new Node(n1,n2)(n3)

于 2010-05-09T00:52:18.433 回答