代码之家  ›  专栏  ›  技术社区  ›  user2887596

警告在子类中使用更有效的函数

  •  0
  • user2887596  · 技术社区  · 8 年前

    我想实现一个scala图形库。这个库还应该包含不同类型的树。

    1类树扩展类图

    2类图有一个getAllPrecetors(node n)方法,它返回可以到达n的所有节点。

    3类树具有getParent(node n)方法,该方法返回节点n的父节点(作为选项,none标记根节点)

    现在,如果有人调用树的方法“GETALL PROMESTORs”,我想显示一个警告,比如“树最多有1个前体,使用GeDead替代”。

    有办法吗?有没有更好的办法建这个图书馆?树不应该是图的一个子类吗?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Tim    8 年前

    首先,不要担心性能,除非你能证明这段代码的性能对整体性能是重要的:“过早的优化是万恶之源”

    但是你可以通过重载来做你想做的事情 getAllPrecursors 并将其标记为已弃用:

    class graph {
      def getAllPrecursors(n: Node): List[Node] = ...
    }
    
    class tree extends graph {
      def getParent(n: Node) = ...
    
      @deprecated("Use getParent rather that getAllPrecursors", "1.0")
      override def getAllPrecursors(n: Node) = List(getParent(n))
    }
    

    如果你使用的话,这将发出一个警告警告。 获取所有前体 关于类型的值 tree 但不在类型的值上 graph (即使该值实际上是 树 )

    就设计而言,最好是 获取所有前体 和 getParent 作为方法 Node (和 TreeNode )而不是图表本身。