在Scala中命名案例类

时间:2010-05-08 22:03:48

标签: scala scala-2.8 case-class

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

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

是否有可能在MyTree的中定义Node和Leaf ? 这里有什么最佳做法?

2 个答案:

答案 0 :(得分:4)

由于类,特征和对象名称是包作用域的,为什么不使用该包来提供针对其他节点和叶子的别名的保险,并简单地将它们称为NodeLeaf,同时将它们留在任何位置之外其他范围构造(即一个对象)?

答案 1 :(得分:2)

我不建议将case类放在它们的抽象超类中,因为嵌套类在Scala中是路径依赖的。如果有的话,你可以将它们放在一个伴侣对象中。

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

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