この質問は、ジェネリック型の操作と境界の設定に関するものです。私が使用しているライブラリーのために、びっくりしないでください。例として扱ってください。
私はScalalaを使用しており、そのようなタイプを使用してDenseMatrix[V]
いDenseVectorCol[V]
ますDenseVectorRow[V]
。それらの一般的なスーパータイプはですTensor[K,V]
。Tensor
には追加のパラメータがあることに注意してください。K
前述のすべてのクラスDense...
は、このタイプK
を独自に設定します。
そこで、型の上限がである引数を持つメソッドを書きたいと思いTensor
ます。私は自分のメソッドのためにそのようなコードを書きました:
def validate[K,T <: Tensor[K,Double]](tensor : T) : T = ...
そのような意図で-T
はのサブタイプでなければならずTensor
、私は常にsを使用していることを知っているDouble
ので、それをとしましょう。Double
最初の型の引数(K
)については、渡された引数から取得します。
エラーが発生したため、期待どおりに機能しません。
推論された型引数[Nothing、DenseVectorCol [Double]]は、メソッド検証の型パラメーター境界[K、T <:Tensor [K、Double]]に準拠していません
質問K
:渡された引数からこの型を抽出する方法は?