scala.的Enumeration枚举示例(转)

简介

在scala中没有枚举类型,但在标准类库中提供了Enumeration类来产出枚举。扩展Enumeration类后,调用value方法类初始化枚举中的可能值。

内部类value实际上是一个抽象类,真正创建的是val。因为实际上是Val,所以可以为Value传入id和name。如果不指定,id就是在前一个枚举值id上加一,name则是字段名。

scala枚举示例

scala枚举示例

object TrafficLightColor extends Enumeration {
  type TrafficLightColor = Value
  val Red = Value(0, "Stop")
  val Yellow = Value(10)
  val Green = Value("Go")
}

object Margin extends Enumeration {
  type Margin = Value
  val TOP, BOTTOM, LEFT, RIGHT = Value
}

 

import test.TrafficLightColor._
import test.Margin._
object Driver extends App {
  println(BOTTOM, BOTTOM.id)

  def doWhat(color: TrafficLightColor) = {
    if (color == Red) "stop"
    else if (color == Yellow) "hurry up" else "go"
  }

  //使用match匹配
  def doWhat2(color: TrafficLightColor) = color match {
    case Red    => "stop"
    case Yellow => "hurry up"
    case _      => "go"
  }

  // load Red
  val red = TrafficLightColor(0) // Calls Enumeration.apply
  println(red, red.id)
  println(doWhat(red))
  println(doWhat2(TrafficLightColor.Yellow))

   //打印出所有枚举
  Margin.values.foreach { v => println(v,v.id)}
}

  

 

原文地址:https://www.cnblogs.com/moonlightml/p/9047101.html

时间: 2024-07-31 00:35:11

scala.的Enumeration枚举示例(转)的相关文章

scala.Enumeration 枚举示例

简介 在Scala中并没有枚举类型,但在标准类库中提供了Enumeration类来产出枚举.扩展Enumeration类后,调用Value方法来初始化枚举中的可能值. 内部类Value实际上是一个抽象类,真正创建的是Val.因为实际上是Val,所以可以为Value传入id和name 如果不指定,id就是在前一个枚举值id上加一,name则是字段名 scala枚举示例 object TrafficLightColor extends Enumeration {   type TrafficLigh

Scala学习笔记--枚举

枚举 scala不用关注枚举的特别语法,取而代之的是标准库中的类, scala.Enumeration 想要创建新的枚举,只需呀拓展这个类的对象即可 object Color extends Enumeration{ val Red = Value val Green = Value val Blue = Value }

Scala 定义复杂枚举

通常我们需要枚举参数不止两个,Scala提供的枚举类最多定义两个参数:id:Int与name:String.不能满足我们通常要求. 1 object BaseEntryEnum extends Enumeration { 2 type BaseEntryEnum = Value 3 //item_base类别 4 val ITEM_TYPE_PURCHASE_CENTER = Value(31, "采购中心") 5 val ITEM_TYPE_COMPANY = Value(32, &

Scala:Enumeration

Scala开篇(目录) 先开看一下如何声明一个枚举对象 object EnumTest extends Enumeration{ type EnumTest = Value val One,Two,Three = Value } 这和我们在Java中声明有很大区别,Scala的枚举值有些特殊,它的关键是内部有一个Value类,所谓的枚举值都是通过它产生的. 如果我们不做任何约定的话,枚举值默认从0开始,依次+1 下面看一下Value类是怎么工作的. val One,Two,Three = Val

Golang枚举示例之Day

GOPATH\src\day\day.go package day type Day uint const ( Sunday Day = iota Monday Tuseday Wednesday Thursday Friday Saturday ) func (day Day) String() string { switch day { case Sunday: return "Sunday" case Monday: return "Monday" case

Scala 枚举: Enumeration 概述

Spark Scala 枚举 * Java 中的那套枚举并不能直接使用到 Scala 中* Scala 中的枚举使用轻量级 Enumeration 进行实现* Scala 中的枚举其实是一个伴随对象* Scala 中的枚举没有方法重写功能* Scala 中的枚举其实都是 Enumeration.Value 这个对象 和Java和C++不同,Scala并没有枚举类型.不过,Spark标准类库提供了一个 Enumeration类型,可以用于生成枚举,定义一个枚举类的对象,并以Value方法调用枚举中

scala中枚举

scala没有从语法的角度来支持枚举,而是通过定义了一个接口Enumeration来支持的 object ExecutorState extends Enumeration{ type ExecutorState = Value val LAUNCHING, LOADING, RUNNING, KILLED, FAILED, LOST, EXITED = Value def isFinished(state:ExecutorState):Boolean = { Seq(KILLED, FAILE

已经废弃的枚举Enumeration

package com.runoob.Collection; import java.util.Enumeration; import java.util.Iterator; import java.util.Vector; public class EnumerationDemo { public static void main(String[] args) { /* * Enumeration:枚举 * 具备枚举取出方式的容器只有Vector */ Vector v = new Vecto

Scala 摘要

读<快学Scala >一书的摘要 Scala 运行于JVM之上,拥有海量类库和工具,兼顾函数式编程和面向对象. 在Scala中, 解释器就是我们喜欢的REPL,变量或者函数的类型总是写在变量或函数的后面(与java相反),数值类型的转换通过方法而不是强制类型转换,仅当同一行代码存在多条语句时才需要用分号隔开. scala 允许自定义操作符,注意有分寸地使用,在使用scala.开头的包时,可以省去scala前缀.scala没有静态方法,类似的特性可以用单例对象,一个类对应的companion o