Scala中的枚举

作者: Woople | 来源:发表于2016-10-16 10:34 被阅读0次

与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

相关文章

  • Scala中的枚举

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

  • Scala中的枚举Enumeration

    总览 本文将会对scala中的枚举类型实现进行深入的探讨,并且和其他语言中的枚举做简单的比较。 什么是枚举 现实中...

  • scala 枚举

    scala没有枚举类型, 标准库定义了一个Enumeration的助手类, 可以用于产出枚举 示例代码: 每次调用...

  • Swift与OC的语法简单对比(常用语法二)

    20- 枚举,枚举原始值,枚举相关值,switch提取枚举关联值 Swift枚举: Swift中的枚举比OC中的枚...

  • scala 容器详细解释

    scala 中的所有集合类位于 scala.collection 或 scala.collection.mutab...

  • Scala 简明速学04 集合-Map

    Scala 简明速学04 集合-Map Map Scala中Map提供键值对集合。 Map的初始化 Scala中的...

  • -6- 类型层次结构

    [参考link] Scala类型层次结构 与Java不同,Scala中没有原生类型。Scala中的所有数据类型都是...

  • scala中的静态-scala01

    在scala中没有static关键字,但是scala有自己特殊的实现静态内容的方式,这个方式就是scala中的...

  • 从零开始学习Spark(五)Scala进阶

    Scala进阶 在后面的文章中,会涉及到一些Scala中我们还没有接触到的语法。这篇Scala进阶会在Scala基...

  • 函数式编程理解

    函数式编程理解 1)Scala中函数的地位:一等公民2)Scala中的匿名函数(函数字面量)3)Scala中的高阶...

网友评论

    本文标题:Scala中的枚举

    本文链接:https://www.haomeiwen.com/subject/jfboyttx.html