我想为图形实现一个scala库。该库还应包含不同类型的树。
1类树扩展了类图
2类图具有方法getAllPrecursors(Node n),该方法返回可以到达n的所有Node。
3类树具有方法getParent(Node n),该方法返回Node n的父级(作为选择,不标记根节点)
现在,如果有人为树调用方法“ getAllPrecursors”,我想显示一个警告,例如“树最多具有1个前体,请改用getParent”。
有没有办法做到这一点?有没有更好的方法来构建这个库?树不应该是图的子类吗?
答案 0 :(得分:2)
首先,不要担心性能,除非您可以证明此代码的性能对整体性能至关重要:“过早的优化是万恶之源”
不过,您可以通过重载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))
}
如果您对类型getAllPrecursors
的值使用tree
,而不对类型graph
的值使用tree
(即使该值实际上是{的一个实例),则这将发出弃用警告。 {1}})
就设计而言,最好将getAllPrecursors
和getParent
作为Node
(和TreeNode
)上的方法,而不是图形本身。