menu
書いてる野郎
orebike@gmail.com
Javaの機能で非常に強力な機能が Enum である。これを Scala でも使いたい。 そして Enum の機能自体は Scala に標準で備わっている・・・のだがこれが使い勝手悪いっぽく、独自実装したほうがよいということで
このように実装する
object Sample { case object S extends Sample(1, "s") case object A extends Sample(2, "a") case object M extends Sample(3, "m") case object P extends Sample(4, "p") case object L extends Sample(5, "l") case object E extends Sample(6, "e") val values = Array(S, A, M, P, L, E) def valueOf(code:Int):Sample = { code match { case S.v => S case A.v => A case M.v => M case P.v => P case L.v => L case E.v => E } } } sealed abstract class Sample(code:Int, name:String) { val c = code; val n = name; }
このように、Java の Enum 同等に使える
var s:Sample = Sample.S println(s.c) // => "1"