您的位置 首页 java

Scala基础学习九之枚举和Trait了解

Scala 枚举

枚举:Scala不支持enum关键字,通过继承Enumeration类实现枚举

枚举通常用来定义已知数量的常量,比如月份,星期,季节等等

定义一个星期的枚举

并定义一个打印所有值的方法

我们调用运行看一下,直接打印的枚举中的变量值

打印语句可以简化

调用

我们看输出的值

可以直接调用 枚举值

withName也可以直接获取

有一个id 的属性

toString

直接通过下标

如果我们改变Tue的值,查看id的变化,就能发现id的值会改变,后面使用的值id也发生了变化

总结上面说明:

枚举值 说明

Enum.Mon 获取枚举值

Enum.Mon.id 获取枚举值ID

Enum.Mon.toString 获取枚举值名称

Enum.values.values 返回所有的枚举值的集合

Enum(2) 通过 id 获取枚举值(调用Enumeration.apply)

Enum.withName(“2”) 通过名称获取枚举值

有一些简单的用法

检测是否存在此枚举值

def check exists (day:String) = this.values.exists(_.toString==day)

判断是否是工作日

def isWorkingDay(day:WeekDay) = ! ( day==Sat || day == Sun)

调用

注意这种使用

case class

Scala中一种特殊的class,叫做 case class

case class就是class和 object 的一个整合,在编译的过程中会自动的生成class和object的相关代码,并且在object中生成一个和class主 构造函数 同参数列表的apply方法,可以简化写object的过程

case class中默认的属性修饰符为 public val ,但是可以改变的,跟普通函数的定义是一样的,没有区别

case class中的属性最多允许22个,跟元组中是一样的

一般比较常用于模式匹配

用法简单示例

trait(特质)

scala中没有interface的概念,一般情况我们把trait当作 Java 的接口来使用

区别:

1. trait可以包含已经实现的方法或者属性(特质和接口的区别)

2. 和抽象类相比,一个类可以继承或者实现多个trait(特质和抽象类的区别)

scala中的class是单继承的,和Java一样,一个class的父类只有一个但是可以实现多个trait

trait是多继承的

scala中不支持 implements 关键字,使用 extends 和with管理继承/实现的代码逻辑

extends表示继承或者实现

with用于多trait的继承过程中

示例一:

示例二:

示例三:

文章来源:智云一二三科技

文章标题:Scala基础学习九之枚举和Trait了解

文章地址:https://www.zhihuclub.com/195662.shtml

关于作者: 智云科技

热门文章

网站地图