在阅读并尝试从中获取 Scala 中可扩展组件背后的所有概念时,我仍然无法完全理解为什么这个示例应该具有 self 类型:
abstract class Graph {
type Node <: NodeLike
trait NodeLike { // without self: Node => won't compile
def connectWith(n: Node) =
new Edge(this, n)
}
class Edge(from: Node, to: Node)
}
抽象类型Node
是的子类型,NodeLike
并且是 根据给定的上限约束套件this
的类型的对象。NodeLike
任何详细的解释将不胜感激。