1
我有一个简单的抽象数据类型树。具有泛型类型的可变长度参数scala
sealed trait Tree[A]
case object EmptyTree extends Tree[Nothing]
case class Leaf[A](value: A) extends Tree[A]
case class Node[A](op: A => A, branches: List[Tree[A]]) extends Tree[A]
我怎样才能使一个Node
持有接受A型的参数可变长度号码的操作?
一种为例:
def printAll(strings: String*) {
strings.foreach(println)
}
printAll
接收可变数目的串。
以同样的方式,我想让我的树持有A* => A
类型的操作op
。
一种可能的方法是让它获得List[A]
,但我想知道是否没有更直接的方法来做到这一点。
的方式可我还反过来branches: List[Tree[A]]
成类似branches: Tree[A]*
。从设计的角度来看,这是否有意义?
去测试它,这是有道理的,不是你的回答 –
顺便说一下,可我也做'branches:List [Tree [A]]''像'branches:Tree [A] *'。 从设计的角度来看,这是否有意义? –
当你想要一个接受n个元素作为参数的函数时,可变参数是有意义的,但是当你声明一个类的字段时它的意义不大。但是它取决于你使用它。 – Mikel