Scala定义枚举类,需要扩展类对象为 scala.Enumeration。
定义
// 1
object DeployMode extends Enumeration {
val LOCAL,TEST,PRODUCTION = Value
}
// 2
object DeployMode extends Enumeration {
val LOCAL = Value
val TEST = Value
val PRODUCTION = Value
}
// 3
object DeployMode extends Enumeration {
val LOCAL = Value("local[4]")
val TEST = Value("yarn-client")
val PRODUCTION = Value("yarn-cluster")
}
获取
object Test{
def main(args:Array[String]):Unit={
DeployMode.LOCAL
println(DeployMode.LOCAL) // 3赋值后 local[4]
// 枚举值id从0开始
for ( id <- 0 to DeployMode.maxId-1){
println(DeployMode(id))
}
// 循环遍历
for ( mode <- DeployMode.values){
println(mode)
}
// 遍历
DeployMode.values foreach println
}
}
另外,可以设置类型别名,将属性全部提取,但是需要导包。
object DeployMode extends Enumeration {
type DeployMode = Value // 设置类型别名
val LOCAL,TEST,PRODUCTION = Value
}
object Test {
import DeployMode._ // 导包
def main(args:Array[String]):Unit={
// 循环遍历
for ( mode <- DeployMode.values){
println(mode + ": " +mode.id)
}
// 遍历
DeployMode.values foreach println
// 遍历
def isMode(mode:DeployMode) = !null
DeployMode.values filter isMode foreach println
}
// 判断并赋值
def getMode(mode:DeployMode) = {
if(mode == "LOCAL") "local[4]"
else if(mode == "TEST") "yarn-client"
else "yarn-cluster"
}
}