2017-03-24 10 views

答えて

1

あなたが言う:

X <: B[T] 

あなたはは、Scalaのコンパイラを混乱型パラメータをていないというタイプからの型パラメータを持っていない新しいタイプのXを定義しています。

B [C]のサブタイプであるタイプX [C <:A]を作成して、パラメータリストのボックスタイプを保持する必要があります。メソッドのパラメータリストでは、Tを直接(Aのサブタイプです)Xに渡すことができ、Scalaコンパイラはそれを把握するのに十分です。

したがって、以下はあなたの例で正常にコンパイル:

def f[T <: A, X[C <: A] <: B[C]](x: X[T])= {} 
+0

ありがとうございました。私は何歳のように見えるのか説明してきました。 – holbech