gpt4 book ai didi

scala - 具有类型参数限制的 Scala 泛型类的条件方法

转载 作者:行者123 更新时间:2023-12-04 13:51:18 26 4
gpt4 key购买 nike

我相信泛型类可能仅在其类型参数符合一些额外限制的情况下才可以使用其方法之一,例如(当场即兴的语法):

trait Col[T] extends Traversable[T] {
def sum[T<:Int] :T = (0/:this)(_+_)
}

我想我可以使用隐式参数作为证据……这有语言功能吗?

最佳答案

您还可以使用类型参数上的类型绑定(bind),该类型由隐式参数强制执行:

trait Col[T] extends Traversable[T] {
def sum(implicit ev: T <:< Int) :T = (0/:this)(_+_)
}
<:<实际上是一个类,用中缀表示,定义在 Predef.scala并在许多地方进行了解释,包括 here
<:<表示“必须是”的子类型

您也可以使用 =:= '必须等于' 和 X <%< Y '必须被视为'(即从 Y 到 X 的隐式转换)

有关类型约束的更详细说明,请参阅 this SO question .

关于scala - 具有类型参数限制的 Scala 泛型类的条件方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17794873/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com