首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Scala中指定泛型类型与泛型类型的绑定?

如何在Scala中指定泛型类型与泛型类型的绑定?
EN

Stack Overflow用户
提问于 2012-09-15 18:07:09
回答 1查看 137关注 0票数 2

这个问题是关于使用泛型类型和设置绑定,所以请不要因为我使用的库而抓狂。把它当作一个例子。

我使用Scalala并使用这样的类型:DenseMatrix[V]DenseVectorCol[V]DenseVectorRow[V]。它们常见的超级类型是Tensor[K,V]。注意,Tensor有附加的参数K --所有提到的类Dense...都自己设置了这个类型的K

因此,我想编写一个带有参数的方法,其上限是Tensor。我为我的方法编写了这样的代码:

代码语言:javascript
复制
def validate[K,T <: Tensor[K,Double]](tensor : T) : T = ...

基于这样的意图-- T必须是Tensor的子类型,而且我知道我一直在使用Double的,所以让它成为Double,对于第一个类型的参数(K),从传递的参数中获得它。

它不像我预期的那样工作,因为我得到了错误:

推断类型参数[Nothing,DenseVectorColDouble]不符合方法验证的类型参数界[K,T <:TensorK,Double]

问题:那么如何从传递的参数中提取这个类型的K呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-15 23:47:50

如果您根本不关心K,可以使用通配符:

代码语言:javascript
复制
def validate[T <: Tensor[_, Double]]: T = ...

注意,在某些情况下,这是行不通的(例如,如果您需要返回一个K或在方法中以其他方式使用它),但是假设这不是其中的一种情况,这是一个非常有效的解决方案,类型推断也会很好。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12439825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档