24

質問の作成者 Exching type parameters with abstract types=>は、クラス定義の冒頭にa を書きました。例:

abstract class Thing { t => 
  type A 
  type G <: Group { type A = t.A } 
  val group: G 
} 

とはt =>どういう意味ですか?

これは Google & Co で見つけるのが難しいため、背景情報をもっと教えてくれるか、この言語構​​造に関する詳細情報を見つけることができるリンクを提供してもらえますか?

4

2 に答える 2

16

クラス自体のデフォルトの名前はですthis。で置き換えることができtますt =>

クラスにサブクラスが含まれていて、自己参照を囲むためのアクセスが必要な場合に便利です。

あなたの例がなければt =>、あなたはこのようなものを書くでしょう:

abstract class Thing {
  type G <: Group { type A = this.A }
}

Group { type A = this.A }はサブタイプであるため、Thingthisオブジェクトではなくグループスペシャライゼーション自体を参照します。おそらく、あなたはあなたが得ようとしているものを手に入れません。Thingの自己参照にアクセスする必要がある場合は、自己参照に別の名前を割り当てることで名前の競合を解決する必要があります

abstract class Thing { another_this = >
  type G <: Group { type A = another_this.A}
}
于 2012-06-29T20:54:34.813 に答える