Scala 3中枚举的不变默认类型

Scala 3中枚举的不变默认类型,scala,enums,gadt,dotty,scala-3,Scala,Enums,Gadt,Dotty,Scala 3,Scala 3现在有了一种改进的定义ADT的方法。 一种语法糖,它消除了用通常的方法进行这些操作的所有麻烦 所以我将用一个例子来解释我的问题 enum Adt[+A]{ case Option1 case Option2 } 在这种情况下,Option1和Option2属于Adt[Nothing]类型,因为类型参数A是协变的 如果枚举是逆变的,则它们将是Adt[Any]类型 但如果它是不变的呢?在Dotty 0.27.0-RC1中,这是一个错误: scala>枚举Adt[A]{

Scala 3现在有了一种改进的定义ADT的方法。 一种语法糖,它消除了用通常的方法进行这些操作的所有麻烦

所以我将用一个例子来解释我的问题

enum Adt[+A]{
    case Option1
    case Option2
}
在这种情况下,Option1和Option2属于Adt[Nothing]类型,因为类型参数A是协变的

如果枚举是逆变的,则它们将是Adt[Any]类型


但如果它是不变的呢?

在Dotty 0.27.0-RC1中,这是一个错误:

scala>枚举Adt[A]{ |案例选择1 |案例选择2 | } 2 |案例选项1 | ^^^^^^^^^^^^ |无法确定枚举父类Adt的类型参数, |类型参数类型A是非变量 3 |案例选择2 | ^^^^^^^^^^^^ |无法确定枚举父类Adt的类型参数, |类型参数类型A是非变量
在Dotty 0.27.0-RC1中,这是一个错误:

scala>枚举Adt[A]{ |案例选择1 |案例选择2 | } 2 |案例选项1 | ^^^^^^^^^^^^ |无法确定枚举父类Adt的类型参数, |类型参数类型A是非变量 3 |案例选择2 | ^^^^^^^^^^^^ |无法确定枚举父类Adt的类型参数, |类型参数类型A是非变量
你试过了吗?你试过了吗?