Scala,如何设置节点类?

时间:2015-06-16 00:03:28

标签: scala

是否有用于在Scala中设置泛型类的资源?我正在尝试创建一个段树,其中节点类包含一个指向左节点的指针,一个指向右节点的指针,以及总和的值(以及其他一些东西,但我想如果我可以让这个工作,我可以做其余的我自己)。

是否存在“类”类型的规范,因为现在我能想到的就是

sealed trait Tree
case class Node(var left: Tree, var right: Tree, var value: Int) extends Tree
case object EmptyNode extends Tree

但是我不知道这是否封装了类似方法和其他内容的东西,或者我是否需要为构建树之类的东西创建一个“外部”函数。

1 个答案:

答案 0 :(得分:1)

代数数据类型通过公开公开类型的内部表示来打破封装。当您从功能编程的角度考虑您的设计时,可变状态通常不是关注的问题。因此,暴露内部表示并不像在OOP中那样重要。

下面的设计显示了如何实现参数多态:

sealed trait Tree[+A]
case class Leaf[A] (value : A) extends Tree[A]
case class Branch[A](left : Tree[A], right: Tree[A]) extends Tree[A]

object Tree{
  // put your functions that operate on Trees here.
}
相关问题