判断字段是否与枚举相同_Scala基础学习九之枚举和Trait了解

d457a65764b610c721146d4a99731a7e.png

scala枚举

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

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

定义一个星期的枚举

0e09fc2268a9351a1a0d6f9d76c17913.png

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

f8f4f4b6e667a38e28102a96f6a0652f.png

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

26e325c837a4e94a6414b42ffc4c6bb2.png

打印语句可以简化

6bb06a1331acb96bf6f5d4d55dd3e244.png

调用

b80632c4b60a36764cf5c20a2d489702.png

我们看输出的值

983ee33101c60c383125a6cbe01d6058.png

可以直接调用枚举值

0cc4315436066d12fb518e4369a3eb12.png

withName也可以直接获取

cd1c3bd579f70c6d120f36772e8c89a7.png

有一个id 的属性

176758880307680ce4b9648cae561f01.png

toString

930ddc0d96f97e80133fd18c70fe3db1.png

直接通过下标

0eb0b663db92b8b045d5441c83ae8c8d.png

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

faef025404efbfc4bb3bf286a37fffac.png

总结上面说明:

枚举值 说明

Enum.Mon 获取枚举值

Enum.Mon.id 获取枚举值ID

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

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

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

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

有一些简单的用法

检测是否存在此枚举值

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

判断是否是工作日

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

fee2926edd130ac18a440061c19b09a7.png

调用

09baabb94a7d3df128316bed9cbffaf4.png

注意这种使用

b702be93ebd78462e935b51d90ff5333.png

case class

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

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

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

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

一般比较常用于模式匹配

用法简单示例

023360319140f5cb1266c2adf8f2e9d7.png

cea5acde7d5acb32bf5a185f5266938c.png

trait(特质)

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

区别:

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

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

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

trait是多继承的

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

extends表示继承或者实现

with用于多trait的继承过程中

示例一:

af943e2565c78fb73a1ce816751246a6.png

981a563120659def1b650830b5b66762.png

8fe37e08c86ff8c3ec955e0a633e7535.png

示例二:

635571ca22f6e843c12584076970ac16.png

27af7695f37c5bdbbe169564e489dd5d.png

示例三:

fe431166528144280f2d450791310214.png

e1d4b770b3dedae33edf9b36bd9293ff.png

0093a889958520b82b6eedb95b70aff4.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值