我相信泛型类可能仅在假设其类型参数符合一些附加限制的情况下才使其方法之一可用,例如(现场即兴编写的语法):
trait Col[T] extends Traversable[T] {
def sum[T<:Int] :T = (0/:this)(_+_)
}
我想我可以使用隐式参数作为证据......有这方面的语言功能吗?
您还可以使用类型绑定在类型参数上,这是由隐式参数强制执行的:
trait Col[T] extends Traversable[T] {
def sum(implicit ev: T <:< Int) :T = (0/:this)(_+_)
}
<:<
实际上是一个类,以中缀表示法表示,定义于预定义scala并在很多地方进行了解释,包括here
<:<
意思是“必须是……的子类型”
您还可以使用=:=
“必须等于”并且X <%< Y
“必须可视为”(即存在从 Y 到 X 的隐式转换)
有关类型约束的更详细说明,请参阅这个问题.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)