这个问题是关于使用泛型类型和设置边界的,所以请不要因为我使用的库而吓坏了。把它当作一个例子。
我使用 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
必须是 s 的子类型Tensor
,而且我知道我Double
一直在使用 s ,所以让它成为Double
,并且对于第一个类型参数 ( K
) 从传递的参数中获取它。
它没有按我的预期工作,因为我收到错误:
推断的类型参数 [Nothing,DenseVectorCol[Double]] 不符合方法 validate 的类型参数边界 [K,T <: Tensor[K,Double]]
问题:那么如何K
从传递的参数中提取这种类型?