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