gpt4 book ai didi

scala - 混合泛型类型

转载 作者:行者123 更新时间:2023-12-04 23:19:15 25 4
gpt4 key购买 nike

我想在我的 中混合通用类型myTest

case class CC(i:Int, s:String, s2:String)

case class Value[V](value: V)

def myTest[F](values: (CC ⇒ Value[F])*) = Unit

class QF[M](x: M) {
def eqs(v: M) = Value(x)
}

implicit def conversion[V](v: V): QF[V] = new QF(v)

myTest(_.i eqs 1)
myTest(_.s eqs "lol")
myTest(_.s eqs "lol", _.s2 eqs "lol2")

直到那时它都有效,但我认为当我尝试混合类型时会出现协方差错误。

当我做 :
myTest(_.i eqs 1, _.s eqs "lol")

我收到以下错误:
Error:(16, 13) type mismatch;
found : A$A135.this.CC => A$A135.this.Value[Int]
required: A$A135.this.CC => A$A135.this.Value[Any]
myTest(_.i eqs 1, _.s eqs "lol");}
^

最佳答案

对,那是正确的。因为 ValueV 中定义为不变量, 表示 Value[Int]Value[String]不是 Value[Any] 的子类型,但是 AnyInt最接近的普通父类(super class)型和 String ,即 FmyTest .因为 V处于协变位置,您可以简单地修改它:

case class Value[+V](value: V)

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

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