简介
在scala中没有枚举类型,但在标准类库中提供了Enumeration类来产出枚举。扩展Enumeration类后,调用value方法类初始化枚举中的可能值。
内部类value实际上是一个抽象类,真正创建的是val。因为实际上是Val,所以可以为Value传入id和name。如果不指定,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)} }
原文地址:https://www.cnblogs.com/moonlightml/p/9047101.html
时间: 2024-10-01 00:29:07