代码之家  ›  专栏  ›  技术社区  ›  Łukasz Lew

在scala中命名case类

  •  2
  • Łukasz Lew  · 技术社区  · 16 年前

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

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

    不能定义节点和叶吗 里面 MyTrand? 这里的最佳实践是什么?

    2 回复  |  直到 16 年前
        1
  •  4
  •   Randall Schulz    16 年前

    由于类、特性和对象名是包范围的,为什么不使用包来提供对其他节点和leaf别名的保护,并简单地调用它们呢? Node Leaf ,同时将它们放在任何其他作用域构造(即对象)之外?

        2
  •  2
  •   Ben Lings    16 年前

    我不建议将case类放在抽象超类中,因为嵌套类在scala中依赖于路径。如果有的话,你可以把它们放在一个伴生的物体里。

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

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