このから 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
詳細な説明をいただければ幸いです。