Scala里面如何使用枚举】的更多相关文章

枚举通常用来定义已知数量的常量,比如月份,星期,季节等等,用过java的人都知道定义枚举的关键字是enum,在scala里面和java有所不同,来看一个完整的例子定义: object EnumTest { /*** * 定义一个星期的枚举 */ object WeekDay extends Enumeration{ type WeekDay = Value //声明枚举对外暴露的变量类型 val Mon = Value(") val Tue = Value(") val Wed = V…
概述 做报表时,有时需要根据不同的业务生成不同的报表.这样,需要能够动态地配置列字段,并根据列字段来输出对应的报表.使用函数接口结合枚举可以比较优雅地实现配置式编程. 问题描述如下: 假设有对象 Student, Teacher ,它们均有属性 Id, Name, Able . 要求:(1) 打印这些 Student, Teacher 的字段 (Id, Name) 的内容 ; (2) 打印这些 Student, Teacher 的字段 (Name, Able) 的内容. Java代码示例 直接上…
类 / 对象 [<快学Scala>笔记] 一.类 1.Scala中的类是公有可见性的,且多个类可以包含在同一个源文件中: class Counter{ private var value = 0 //类成员变量必须初始化,否则报错 def increment(){ //类中的方法默认是公有可见性 value += 1 } def current() = value //对于类中的“取值方法”,在定义时可省略掉括号,直接 def current = value } Scala类的使用: Scal…
object 在scala中没有静态方法和静态字段,所以在scala中可以用object来实现这些功能,直接用对象名调用的方法都是采用这种实现方式,例如Array.toString.对象的构造器在第一次使用的时候会被调用,如果一个对象从未被使用,那么他的构造器也不会被执行:对象本质上拥有类(scala中)的所有特性,除此之外,object还可以一扩展类以及一个或者多个特质:例如, abstract class ClassName(val parameter){} object Test exte…
一,基本概念 1,映射 Map与HashMap与TreeMap,SotredMap等区别: 1.HashMap键无序,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,在Map 中插入.删除和定位元素,HashMap 是最好的选择: 2.LinkedHashMap 是HashMap的一个子类,键保存了插入的顺序,使用Iterator遍历时,得到的也是插入顺序的记录: 3.TreeMap默认按键的升序排序,可以定制. 4.HashTable 线程安全,键不能为nu…
  Scala语法与JAVA有很多相似的地方,两者也可以相互调用.但是整体感觉Scala语法等简洁.灵活.这里记录下Scala有特点的地方,以备以后查找方便.   参考: 使用 import: http://wiki.jikexueyuan.com/project/scala-development-guide/use-import.html Scala教程: http://www.runoob.com/scala/scala-tutorial.html scala class和object,t…
一.初识类和对象 Scala的类与Java的类具有非常多的相似性,示例如下: // 1. 在scala中,类不需要用public声明,所有的类都具有公共的可见性 class Person { // 2. 声明私有变量,用var修饰的变量默认拥有getter/setter属性 private var age = 0 // 3.如果声明的变量不需要进行初始赋值,此时Scala就无法进行类型推断,所以需要显式指明类型 private var name: String = _ // 4. 定义方法,应指…
1."RichString.java".stripSuffix(".java") == "RichString" "http://my.url.com".stripPrefix("http://") == "my.url.com" 2.Scala中,访问修饰符可以通过使用限定词强调.格式为:private[x] 或 protected[x],这里的x指代某个所属的包.类或单例对象.如果写…
一.初识类和对象 Scala 的类与 Java 的类具有非常多的相似性,示例如下: // 1. 在 scala 中,类不需要用 public 声明,所有的类都具有公共的可见性 class Person { // 2. 声明私有变量,用 var 修饰的变量默认拥有 getter/setter 属性 private var age = 0 // 3.如果声明的变量不需要进行初始赋值,此时 Scala 就无法进行类型推断,所以需要显式指明类型 private var name: String = _…
在 Scala 中,是没有 static 这个东西的,但是它也为我们提供了单例模式的实现方法,那就是使用关键字 object. 对象的无参构造器在第一次使用时被调用,且单例对象没有有残构造器. Enumeration类 scala并没有提供枚举类,而是通过对象继承Enumeration类实现枚举类,并且调用Value方法来初始化枚举值. object Test extends Enumeration{ val name = Value(0, "name_0") val sex = Va…
枚举 scala不用关注枚举的特别语法,取而代之的是标准库中的类, scala.Enumeration 想要创建新的枚举,只需要拓展这个类的对象即可 object Color extends Enumeration{ val Red = Value val Green = Value val Blue = Value } object Test3{ def main(args:Array[String]):Unit={ for (dir <- 0 to Direction2.maxId-1){…
本文详细地总结了Scala枚举的几种实现方式,对我们更好地进行函数式编程有很好地指导和帮助. Scala 枚举示例和特性 枚举(Enumerations)是一种语言特性,对于建模有限的实体集来说特别有用.一个经典的例子是将工作日建模为一个枚举:每个七天都有一个值.Scala和许多其他语言一样,提供了一种表示枚举的方法: object Weekday extends Enumeration { val Monday, Tuesday, Wednesday, Thursday, Friday, Sa…
Scala进阶之路-Scala中的枚举用法案例展示 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Scala中的枚举值和Java中的枚举值有点差别,不过使用起来也都差大同小异,我这里分别写了一个Java定义枚举类型和Scala定义枚举类型的案例. 一.Java中定义枚举类型案例展示 /* @author :yinzhengjie Blog:http://www.cnblogs.com/yinzhengjie/tag/Scala%E8%BF%9B%E9%98%B6%E4%B9%…
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…
简介 在scala中没有枚举类型,但在标准类库中提供了Enumeration类来产出枚举.扩展Enumeration类后,调用value方法类初始化枚举中的可能值. 内部类value实际上是一个抽象类,真正创建的是val.因为实际上是Val,所以可以为Value传入id和name.如果不指定,id就是在前一个枚举值id上加一,name则是字段名. scala枚举示例 scala枚举示例 object TrafficLightColor extends Enumeration { type Tra…
package com.test.scala.test /** * 枚举 */ object Enum extends Enumeration { val Red,Yellow,Green=Value } object Test1{ def main(args: Array[String]): Unit = { println(Enum.Green) println(Enum.Yellow) println(Enum.Red) } }…
Scala没有静态方法和静态字段, 你可以用object这个语法结构来达到同样的目的. 对象的构造器只有在第一次被使用时才调用. 伴生对象apply方法: 类和它的伴生对象可以互相访问私有特性,他们必须存在于同一个源文件. 类中要访问类的伴生对象中成员,需要通过类.成员调用. class Account private (val id: Int, initialBalance: Double){ } object Account { def apply(initialBalance: Doubl…
通常我们需要枚举参数不止两个,Scala提供的枚举类最多定义两个参数:id:Int与name:String.不能满足我们通常要求. object BaseEntryEnum extends Enumeration { type BaseEntryEnum = Value //item_base类别 val ITEM_TYPE_PURCHASE_CENTER = Value(31, "采购中心") val ITEM_TYPE_COMPANY = Value(32, "公司&qu…
枚举定义: /** * 场景类型的划分分类:划分出7类 */ object BuildingCalibrateHeightType extends Enumeration { type BuildingCalibrateHeightType = Value val UnKnow = Value("-1") val HeightType1 = Value(") // 0-21 val HeightType2 = Value(") // 21-45 val Height…
object Color extends Enumeration(2){ val Red,Green,Blue = Value val Yellow = Value("YELLOW") } import Color._ println(Red) // Red 类型为 Color.Value,Color是路径,Value是依赖类型,它是全新的类型,与其他所有的类型都不一样. println(Green.id) println(Color(2)) // Red…
基础 1.1 声明值和变量 在Scala中,鼓励使用val; 不需要给出值或变量的类型,这个信息可以从初始化表达式推断出来.在必要的时候,可以指定类型. 在Scala中,仅当同一行代码中存在多条语句时才需要用分号隔开. 1.2 常用类型 Scala 7中数值类型:Byte, Char, Short, Int, Long, Float和Double,以及Boolean类型.跟Java不同的是,这些类型是类.可以对数值执行方法,1.toString() Scala不需要类型包装,类型之间的转换是Sc…
目录[-] 1.   Scala有多cool 1.1.     速度! 1.2.     易用的数据结构 1.3.     OOP+FP 1.4.     动态+静态 1.5.     DSL 1.6.     够复杂 1.7.     够有趣 1.8.     开发社区 2.   lang 2.1.     和Java的异同 2.1.1.  语法 2.1.2.  库 2.2.     变量 2.2.1.  保留字 2.2.2.  变量标识 2.2.3.  变量定义 2.2.3.1     va…
第七步:带类型的参数化数组 Scala里可以使用new实例化对象或类实例.当你在Scala里实例化对象,可以使用值和类型把它参数化:parameterize.参数化的意思是在你创建实例的时候“设置”它.通过把加在括号里的对象传递给实例的构造器的方式来用值参数化实例.例如,下面的Scala代码实例化一个新的java.math.BigInteger并使用值"12345"参数化: val big = ") 通过在方括号里设定一个或更多类型来参数化实例.通过在方括号里设定一个或更多类…
第一步:学习使用Scala解释器 开始Scala最简单的方法是使用Scala解释器,它是一个编写Scala表达式和程序的交互式“shell”.在使用Scala之前需要安装Scala,可以参考 First Steps to Scala 内容. 你可以在命令提示符里输入scala使用它: $ scala Welcome to Scala version 2.9.2. Type in expressions to have them evaluated. Type :help for more inf…
使用类型参数化数组(Array) 创建java.math.BigInteger实例: var big = new java .math.BigInteget("12345678") 对数组进行访问:圆括号形式 val greetingStrings :Array[String] = new Array[String] (3) greetingStrings(0) = "hello" 注:val定义变量,变量不能被重新赋值,单变量内部指向的内部对象仍可以改变. gre…
#映射: 包含一组键值对应元素的集合 val Z=Map(a1->b1,...)  //a1如果是字符,需要用双引号括起来 val Z=Map((a1,b1),...) ##可变映射, 内容可更改 val Y=scala.collection.mutable.Map((a1,b1)...) val X=new scala.collection.mutable.Map[T1,T2] #获取值 val a=Z(an)   //返回值 val b=Z.get(an) #检查 键 val c=Z.con…
#判断 scala> def min(x:Int,y:Int):Int={ var a=x if(x>y) a=y return a } scala> min(1,2)res1: Int = 1 #循环    ##引申:函数式编程里面尽量使用常量,所以尽量避免 while do? 变量? while (A) B do B while A scala> var m=3scala> while (m!=0){ println(m) m-=1 } 321 #枚举 for (i<…
Scala的sealed关键字 缘起 今天在学习Akka的监控策咯过程中看到了下面一段代码: def supervisorStrategy(): SupervisorStrategy = OneForOneStrategy(maxNrOfRetries = 10, withinTimeRange = 10 seconds) { case _: ArithmeticException => Resume case _: IllegalArgumentException => Restart ca…
1 指令式编程&函数式编程 指令式:imperative 风格编程.指令式风格,是你常常使用像 Java,C++和 C 这些语言里用的风格,一次性发出一个指令式的命令,用循环去枚举,并经常改变共享在不同函数之间的状态. 函数式:functional 风格编程. 举例 args.foreach(arg => println(arg)) 这行代码中,你在 args 上调用 foreach 方法,并把它传入函数.此例中,你传入了带有 一个叫做 arg 参数的函数文本:function litera…
1 var 可变,val 不可变 var (a,b) = (10,20) 分别对a,b赋值 a=10, b=20 var a,b = (10,20)则 是a=(10,20) b=(10,20) 2 List List是不可变的,与Java中String类似,操作List返回的是新的List对象. val l = List(1,2,3,4,5) List元素类型一致 3 Map Set (1) 不可变 var jetSet = Set("Boeing", "Airbus&quo…