我倾向于在案例类中使用这种冗余命名:
abstract class MyTree
case class MyTreeNode (...)
case class MyTreeLeaf (...)
是否有可能在MyTree的中定义Node和Leaf ? 这里有什么最佳做法?
答案 0 :(得分:4)
由于类,特征和对象名称是包作用域的,为什么不使用该包来提供针对其他节点和叶子的别名的保险,并简单地将它们称为Node
和Leaf
,同时将它们留在任何位置之外其他范围构造(即一个对象)?
答案 1 :(得分:2)
我不建议将case类放在它们的抽象超类中,因为嵌套类在Scala中是路径依赖的。如果有的话,你可以将它们放在一个伴侣对象中。
abstract class MyTree
object MyTree {
case class Node (...) extends MyTree
case class Leaf (...) extends MyTree
}
(注意:我没有测试过这个...)