在阅读并尝试从中获取 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任何详细的解释将不胜感激。