Scala中的枚举

与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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,212评论 19 139
  • 读《快学Scala 》一书的摘要 Scala 运行于JVM之上,拥有海量类库和工具,兼顾函数式编程和面向对象。 在...
    abel_cao阅读 5,083评论 0 8
  • 操作符重载? 举个例子[P60]1 + 2 中的 +操作符是一个方法。 首先,在 Scala 中,万物皆对象,包括...
    云之外阅读 3,443评论 0 1
  • 记得那天你问我是否有空 而恰巧我不怎么忙 哈哈 你从西区跑到东区 然后我们俩一起去南湖 你说九点半前要回寝 鉴于时...
    快乐佳佳_阅读 2,750评论 0 0
  • 第六个圣诞夜 没有火鸡和苹果 没有鲜花和巧克力 没有烛光和晚安 昏暗的街角总有脆弱的路人 在独自流泪 欢腾的假日太...
    长亭怨慢阅读 1,589评论 7 11

友情链接更多精彩内容