4

こんにちは、このコードに出くわしましたが、これを理解できませんでした。紛らわしい場所は「V <: Vector[V]」です。これは、V が Vector[V] のサブタイプであることを意味します。ここで非常に混乱します。

trait Vector[V <: Vector[V]] { this: V =>
  def +(other: V): V
}
4

1 に答える 1

6

これはF-bounded type polymorphismと呼ばれ、

オブジェクト指向言語における抽象化の一般的な問題を誰かが解決しようとしているときに通常試みられます: スーパータイプに関して定義されているにもかかわらず、何らかのサブタイプの値が渡されたときに常に次の値を返すポリモーフィック関数を定義する方法その引数と同じサブタイプ。

( Kris Nuttycombeによる最近のブログ投稿 " F-Bounded Type Polymorphism Considered Tricky " から)

このSOの質問も参照してください: Genericsの「再帰型バインド」とはどういう意味ですか?

于 2012-12-25T06:32:56.080 に答える