0

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

4

2 に答える 2

0

定義では

def connectWith(n: Node) = new Edge(this, n)

thisは typeNodeLikeを持っていますが、 のコンストラクタは、 のサブタイプであるtypeであるEdge必要があります。が必要なタイプの.fromNodeNodeLikethisNode

于 2013-10-08T19:25:33.537 に答える