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"
  }
}