3

ジェネリックを使用せずに F 境界ポリモーフィズムを達成しようとしています。thisサブタイプとして型付けされることを参照して期待するので、自己型付けも使用する必要があります。

trait MyTrait[T] { self: Self => // Compilation error: cannot reference 'Self'
   type Self <: MyTrait[T]

   def doSomethingWithSubtype() {
      ...
   }
}

型パラメーター (つまり、ジェネリック) を使用してこれを非常に簡単に実現できますが、上記をコンパイルするために何か不足しているかどうかを知りたいです。このように抽象型を使用できますか?

同様の質問:

これらは同様の問題の回避策を提供し、上記は不可能だと思いますか?

パラメータ型の代わりに抽象型を使用した F バウンド ポリモーフィズム?

型パラメーターの代わりに型メンバーを介した F-bounded 数量化?

4

1 に答える 1