2

我倾向于在案例类中使用这种冗余命名:

abstract class MyTree
case class MyTreeNode (...)
case class MyTreeLeaf (...)

不能在MyTree中定义 Node 和 Leaf吗?这里有哪些最佳实践?

4

2 回答 2

4

由于类、特征和对象名称是包作用域的,为什么不使用包来防止与其他节点和叶发生别名并简单地调用它们Nodeand Leaf,同时将它们留在任何其他作用域构造(即对象)之外?

于 2010-05-08T23:45:28.957 回答
2

我不建议将案例类放在它们的抽象超类中,因为嵌套类在 Scala 中是路径依赖的。如果有的话,您可以将它们放在伴随对象中。

abstract class MyTree
object MyTree {
  case class Node (...) extends MyTree
  case class Leaf (...) extends MyTree
}

(注意:我还没有测试过这个......)

于 2010-05-08T22:23:27.280 回答