gpt4 book ai didi

Scala 2.11 类型差异更改

转载 作者:行者123 更新时间:2023-12-04 17:48:50 26 4
gpt4 key购买 nike

在 Scala 2.10.4 中编译:

trait Foo[-U,T]{
type Contra = U
}

但在 2.11.0 中同样失败:

contravariant type U occurs in invariant position in type U of type Contra trait Foo[-U,T] {type Contra = U}



有可用的解决方法吗?尝试将 Scala 库移植到 2.11 并且需要逆变类型才能获得编译器拾取的大量隐式定义(即使 U 不变似乎不是一种选择)。

谢谢

最佳答案

我无法想象有可用的解决方法。我说这一切的原因都是为了支持依赖路径的类型:

 def foo[T <: Foo[A,B]](that: T): that.Contra

其中放置了 Contra输入错误的位置。您不能作为操作的结果返回逆变类型。也许这些搜索和验证需要大量工作,以至于编译器作者认为这个小案例造成了太多负担,或者它是您发现的编译器错误。

顺便说一下,这只是我的疯狂猜测。我必须阅读编译器代码才能确定哪种方式。

关于Scala 2.11 类型差异更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23384760/

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