scala 枚举
2018-03-28 本文已影响0人
点点渔火
scala没有枚举类型, 标准库定义了一个Enumeration的助手类, 可以用于产出枚举
示例代码:
object CharType extends Enumeration {
type CharType = Value
val TYPE_SPACE = Value // 空白字符
val TYPE_ARABIC = Value // 阿拉伯数字
val TYPE_ENGLISH = Value // 英文字符
val TYPE_CHINESE = Value // 中文字符
val TYPE_ENGLISH_FORM = Value // 英文标点
val TYPE_CHINESE_FORM = Value // 中文标点
val TYPE_USELESS = Value // 无效字符
}
每次调用Value方法都会返回内部类的新实例,该内部类也叫Value
可以传向Value传ID, 名称, 或两个都传;
未定义时, ID默认从0开始, 累计加1, 缺省名称为字段名
val Red = Value(0, "Red")
val Yellow = Value(10)
val Green = Value("Green")
注意枚举成员的类型是CharType.Value 而不是 CharType, 为了引入方便, 可以在CharType中定义一个类型别名:
type CharType = Value
这样当 import CharType._ 就可以用CharType 表示 CharType.TYPE_ARABIC的类型了
for (c <- CharType.values) println(c.id + ":" + c)
通过ID查找Value:
CharType(0) // 如果不存在: java.util.NoSuchElementException:
CharType.withName("TYPE_SPACE")
均返回 CharType.Value类型