Scala の列挙サポート
Scala では列挙を言語の構文としてではなく、scala.Enumerationというライブラリとして提供している。Color の列挙を定義するには以下のようにする。
package etc9 object Color extends Enumeration { val Red, Green, Blue = Value }
Enumeration には反復処理のための様々なメソッドが定義されている。例えば全要素を出力するには
Color.foreach(println)
とすると以下の出力が得られる。
etc9.Color(0) etc9.Color(1) etc9.Color(2)
列挙への名前設定
Enumeration には以下のメソッドが定義されている。
def Value(name: String): Value
このValue に名前を渡すことで、列挙へ名前を付けることができる。
package etc9 object Color extends Enumeration { val Red = Value("R") val Green = Value("G") val Blue = Value("B") } for (c <- Color) print(c + " ")
以下の出力となる。
R G B
id を指定するには以下。
val Red = Value(10, "R") val Green = Value(20, "G") val Blue = Value(30, "B")
Enumeration の各種メソッド
scala.Enumeration の定義見た方が早いので、一例だけ。
println(Color.valueOf("G")) //Some(G) println(Color.Blue.id) // 30 println(Color(20)) // G