Match 的注意事项和细节 | 学习笔记

简介: 快速学习 Match 的注意事项和细节

开发者学堂课程【Scala 核心编程 - 进阶Match 的注意事项和细节学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/610/detail/9067


Match 的注意事项和细节


1.如果所有 case 都不匹配,那么会执行 case _分支,类似于 Java 中 default 语句

2.如果所有 case 都不匹配,又没有写 case _分支,那么会抛出MatchError

案例:

val oper = '#'

val n1 = 20

val n2 = 10

var res = 0

oper match {

case '+'=> res=n1+n2

case'_'=> res=n1-n2

case '*' => res = n1 * n2

case '/' => res=n1 / n2

//case _ => println("oper error")

}

如果 case_没有写出支行,在val oper = '-'写一个特殊字符#如上方代码,在 case 找不到匹配,也没有写默认匹配,那么运行结果会抛出一个异常 MatchError

注意:

只要是 match 里至少有一个 case _

3.每个 case 中,不用 break 语句,自动中断 case

4.可以在 match 中使用其它类型,而不仅仅是字符                        

案例:

可以在上方代码中加一个匹配

case 1 => println("匹配到1")

还可以写成

case 1.1 => println("匹配到1.1")

val oper = '#'改成val oper = '1'

5.=>等价于 java swtich 的

6.=>后面的代码块到下一个 case,是作为一个整体执行,可以使用{}扩起来,也可以不扩。

案例:

case '+'=>

res =n1+n2

println("ok~~")

println("hello~~")

val oper = '1'改成val oper = '+'

执行,都会被输出,但不利于阅读。如果有 case 更建议用{}扩起来做成一个代码块,更利于阅读。

相关文章
|
SQL XML Java
一文搞懂Mybatis执行原理
一文搞懂Mybatis执行原理
288 1
|
前端开发 应用服务中间件 nginx
nginx中配置不输入端口(指定地址)访问项目的方法
nginx中配置不输入端口(指定地址)访问项目的方法
942 0
|
算法 关系型数据库 MySQL
技术分享:600W QPS高并发ID设计与时钟回拨解决方案
【8月更文挑战第26天】在大型分布式系统中,高并发ID生成和时钟同步是两个至关重要的技术挑战。随着业务量的快速增长,如美团点评的金融、支付、餐饮等业务场景,每秒需要处理数百万级别的请求,这就对ID的生成效率和唯一性提出了极高要求。同时,时钟回拨问题也时常困扰着系统管理员,影响数据一致性和系统稳定性。本文将围绕这两个主题,分享一些工作学习中的技术干货。
365 1
|
Kubernetes 应用服务中间件 调度
k8s--pod 基本配置、镜像拉取策略、启动命令、端口设置、资源配额
k8s--pod 基本配置、镜像拉取策略、启动命令、端口设置、资源配额
k8s--pod 基本配置、镜像拉取策略、启动命令、端口设置、资源配额
|
移动开发 iOS开发 Perl
iOS客户端和h5页面的互相调用,服务器和客户端间通信方式
iOS客户端和h5页面的互相调用,服务器和客户端间通信方式
397 0
|
存储 网络协议 安全
URLDNS反序列化链分析
URLDNS是Java反序列化上最简单的一条链了,按实际效果来说它并不能被称为一条漏洞利用链,因为它不能执行命令,它的参数是一条URL,最终达到的效果是触发一次DNS请求。但是由于这条链没有依赖任何第三方的库,所以特别适合用来探测是否存在反序列化漏洞。
1303 0
|
存储 关系型数据库 MySQL
MySQL存储过程——批量插入数据
MySQL存储过程——批量插入数据
1552 0
MySQL存储过程——批量插入数据
|
算法 C语言 Python
HJ212 CRC16校验(python)
如果你在网上搜CRC16的代码以及使用在线的CRC16算出来的结果和我们HJ212的代码是不一样的,今天来看看 HJ212的python的写法吧。
1084 0
|
监控 算法 搜索推荐
什么是量化交易机器人系统开发丨量化交易机器人系统开发技术逻辑及策略分析
  从本质上说,交易机器人是一种软件程序,它直接与金融交易所进行交互(通常使用API获取和解释相关信息),并根据市场数据的解释发出买卖订单。这些机器人通过监测市场价格走势,并根据一套预先设定和编程的规则做出反应,从而做出这些决定。通常,一个交易机器人会分析市场行为,例如交易量、订单、价格和时间,它们通常可以根据您自己的喜好进行编程。
|
存储 Java 编译器
Smali 语法解析——Hello World
Smali 语法解析——Hello World
Smali 语法解析——Hello World