gpt4 book ai didi

泛型类型的 Scala 组合

转载 作者:行者123 更新时间:2023-12-03 08:54:22 25 4
gpt4 key购买 nike

我有一个复杂的泛型类型用例,已在下面进行了简化

trait A
class AB extends A{
val v = 10
}

trait X[T<:A]{
def request: T
}

class XY extends X[AB]{
def request = new AB()
}
class Test extends App{

/**
* X[A]
* X[AB]
* XY[A]
* XY[AB]
*/
def test[C<:A, D <: X[C]](t:Int)(input: D): Unit ={
print(input.getClass.getName)
}
implicit val req = new XY()
test(2)(req)

}

测试方法应支持注释部分中定义的类型场景。我收到以下编译错误。

Error:(33, 7) inferred type arguments [XY] do not conform to method test's type parameter bounds [D <: X[Nothing]] test(2)(req)

这在语法上合法吗?提前致谢。

最佳答案

编译器无法推断 C 的类型分两步,定义如下。

因此,要么让编译器一步完成,同时使用 DCinput 的定义中论据:

def test[C <: A, D <: X[C]](t: Int)(input: D with X[C]): Unit

或者有 D <: X[C] 的隐含证据,这将帮助编译器推断 C分两步:

def test[C <: A, D <: X[_]](t: Int)(input: D)(implicit ev: D <:< X[C]): Unit

关于泛型类型的 Scala 组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56790797/

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