Enumerate (枚举)
在Scala
中,没有语言级别的枚举类型,枚举的功能可以通过继承枚举类Enumeration
实现。
继承枚举类
继承枚举类Enumeration
可以在成员中使用无参方法Value
给每个枚举成员赋值。
默认的Value
方法会按变量名生成枚举名和并自动从0
开始生成枚举ID,若需要手动设定枚举名称和枚举ID则可以使用Value
方法的重载Value(id: Int, name: Strig)
。
如下所示:
object Color extends Enumeration {
// 自动赋值枚举成员
val Red, Green, Blue = Value
/*
* 相当于分别初始化:
* val Red = Value
* val Green = Value
* val Blue = Value
*/
// 手动使用 Value(id: Int, name: String) 方法手动进行id和name的设置
// 使用重载有參版本的Value(id: Int, name: String)不能一次性给多个枚举成员赋值,会编译报错(id冲突)
val White = Value(100, "white")
val Black = Value(200, "black")
}
object TestEnumeration extends App {
Color.values foreach { color =>
println(s"ID: ${color.id}, Str: $color")
}
}
输出结果:
ID: 0, Str: Red
ID: 1, Str: Green
ID: 2, Str: Blue
ID: 100, Str: white
ID: 200, Str: black
Enumeration
类的默认构造方法带有一个Int
类型参数,用于指定枚举ID