【发布时间】:2019-11-18 21:01:22
【问题描述】:
我想要一个使用类型边界和更高种类的类型的类型投影别名,但它意外失败。在 scala 2.12.8 和 2.13.0 中尝试过
以下作品:
object Testing {
trait One[A] {
trait Two[B <: A]
}
type Test = One[Int]#Two[Int]
}
以下失败:
object Testing {
trait One[A] {
type Two[B <: A] = Altogether[A, B]
}
trait Altogether[A, B <: A]
type Test = One[Int]#Two[Int]
}
有错误
type arguments [Int] do not conform to type Two's type parameter bounds [B <: A]
我希望第二个示例也能编译。
以下作品:
type Test = Altogether[Int, Int]
谁能想出一个替代方案?
【问题讨论】:
-
在 dotty 0.16 中编译:) scastie.scala-lang.org/zSyzQzwwTGO2TOifSHYx8g
-
鉴于错误消息(您应该包括在内),它在我看来肯定是一个错误。如果您从
Altogether(但不是从Two)中删除类型绑定,它也会保留。 -
SO 是一个错误的地方报告错误github.com/scala/bug/issues
-
抱歉,我将更新问题以包含一个实际问题!以及错误信息