在Scala中並無枚舉類型,但在標準類庫中提供了Enumeration類來產出枚舉。擴展Enumeration類後,調用Value方法來初始化枚舉中的可能值。app
內部類Value其實是一個抽象類,真正建立的是Val。由於其實是Val,因此能夠爲Value傳入id和namespa
若是不指定,id就是在前一個枚舉值id上加一,name則是字段名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)} }