描述枚举的定义方式如下:
object Color extends Enumeration{
type Color = Value
val RED, GREEN, BLUE = Value
}
我不明白的是最后一行的结构。它似乎创建了一堆值并为它们分配了所有相同的值?但是Value是一种类型,所以它是如何工作的。
答案 0 :(得分:2)
是的,那很不幸。如果您咨询source code,您会看到Value
既是类型(第184行为abstract class
),也是重载方法(第128 - 154行)。
在没有参数的情况下调用Value
方法实际上变成了对new Val(i, name)
的调用,因此为每个颜色分配了一个“新的”,即不同的值。
Scala枚举已经历了一些major rethinking,并且在即将发布的版本中可能会发生变化。