scala.Enumeration 枚舉示例

簡介

在Scala中並無枚舉類型,但在標準類庫中提供了Enumeration類來產出枚舉。擴展Enumeration類後,調用Value方法來初始化枚舉中的可能值。app

內部類Value其實是一個抽象類,真正建立的是Val。由於其實是Val,因此能夠爲Value傳入id和namespa

若是不指定,id就是在前一個枚舉值id上加一,name則是字段名scala

scala枚舉示例

object TrafficLightColor extends Enumeration {
  type TrafficLightColor = Value
  val Red = Value(0, "Stop")
  val Yellow = Value(10)
  val Green = Value("Go")
}

object Margin extends Enumeration {
  type Margin = Value
  val TOP, BOTTOM, LEFT, RIGHT = Value
}

import test.TrafficLightColor._
import test.Margin._
object Driver extends App {
  println(BOTTOM, BOTTOM.id)

  def doWhat(color: TrafficLightColor) = {
    if (color == Red) "stop"
    else if (color == Yellow) "hurry up" else "go"
  }

  //使用match匹配
  def doWhat2(color: TrafficLightColor) = color match {
    case Red    => "stop"
    case Yellow => "hurry up"
    case _      => "go"
  }

  // load Red
  val red = TrafficLightColor(0) // Calls Enumeration.apply 
  println(red, red.id)
  println(doWhat(red))
  println(doWhat2(TrafficLightColor.Yellow))
  
   //打印出全部枚舉
  Margin.values.foreach { v => println(v,v.id)}
}
相關文章
相關標籤/搜索