Scala数客联盟

Scala中的枚举

2016-10-16  本文已影响0人  Woople

与java不同,scala并没有提供枚举类型,而是通过Enumeration类的帮助来实现枚举功能的。

object SourceType extends Enumeration{
  //这行是可选的,类型别名,在使用import语句的时候比较方便,建议加上
  type SourceType = Value
  //枚举的定义
  val Kafka, Avro, Custom = Value
}

使用方法


def loadData(sourceType: SourceType){
  sourceType match {
    case Kafka => println ("sourceType is " + sourceType)
    case Avro => println ("sourceType is " + sourceType)
    case Custom => println ("sourceType is " + sourceType)
    case _ => println ("Unknown type")
  }
}

枚举值的id可以通过id方法获取,名称通过toString方法。在定义枚举值的时候也可以自定义id和名称,例如

object SourceType extends Enumeration{
  type SourceType = Value
  val Kafka, Avro = Value
  val Custom = Value(5, "socket")
}

遍历这个枚举

for (s <- SourceType.values) println(s.id + ":" + s)

返回值是

0:Kafka
1:Avro
5:socket

测试用例


val sourceType = SourceType.apply(1)
loadData(sourceType)

以上这段代码的输出为sourceType is Avro

val sourceType = SourceType.withName("Kafka")
loadData(sourceType)

以上这段代码的输出为sourceType is Kafka

上一篇下一篇

猜你喜欢

热点阅读