Scala

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类型

上一篇 下一篇

猜你喜欢

热点阅读