是否可以在Scala中的同一级别声明一个Enumeration对象和类?
我从这开始,但我不确定注册实例的最佳方式是什么。
object Gender extends Enumeration {
val MALE = new Gender(0)
val FEMALE = new Gender(1)
}
class Gender(val id: Int) extends Gender.Value {
}
这样做的动机是我不想将enum类称为Gender.Gender,而是将Gender引用。
答案 0 :(得分:3)
这有效:
object Gender extends Enumeration {
val male = new Gender
val female = new Gender
class Sneaky extends Val(nextId, null)
}
class Gender extends Gender.Sneaky
> println(Gender.values)
Gender.ValueSet(male, female)
但是我并没有真正感觉良好。我认为它会更好 创建一个类型别名(如果你可以在这个范围内):
object Gender extends Enumeration {
...
}
type Gender = Gender.Value
或import
使用前的类型:
object Gender extends Enumeration {
val male, female = Value
type Gender = Value
}
import Gender._
val x: Value = male
(或者,如果可以,请使用案例类)。