类型匹配的注意事项和细节 | 学习笔记

简介: 快速学习类型匹配的注意事项和细节

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

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


类型匹配的注意事项和细节


1.Map[String,Int]和Map[Int,String]是两种不同的类型,其它类推。

2.在进行类型匹配时,编译器会预先检测是否有可能的匹配,如果没有则报错。

案例:

val obj=10

val result=obj match{

case a:Int=>a

case b:Map[String.Int]=>"Map集合"

case _=>"啥也不是"

}

新建命名为 MatchTypeDetail,放入上方代码直接报错,编译器检测 case b:Map[String.Int]=>"Map集合"没有可能性,没有意义直接报错。

3.一个说明

val result=obj match {

case i:Int=>i

}case i:lnt=>i表示将i=obj(其它类推),然后再判断类型

4.如果 case_出现在match中间,则表示隐藏变量名。即不使用,而不是表示默认匹配。

//类型匹配obj可能有如下的类型

val a=7

val obj=if(a==1)1

else if(a == 2) "2"

else if(a==3)Bigint(3)

else if(a==4)Map("aa"-> 1)

else if(a==5)Map(1 ->"aa")

else if(a==6)Array(1,2,3)

else if(a== 7)Array("aa",1)

else if(a == 8) Array("aa")

val result=obj match{

case a:Int =>a

case k : Bigint => Int.MaxValue //看这里!

case b:Map[String,lnt]=>"对象是一个字符串-数字的Map集合"

case c:Map[Int,String]=>"对象是一个数字字符串的Map集合"

case d:Array[String]=>"对象是一个字符串数组”

case e:Array[Int]=>"对象是一个数字数组"

case _=>"啥也不是"

}

printin(result)

case k : Bigint => Int.MaxValue //看这里!可以直接写成 case _ : Bigint => Int.MaxValue //看这里!即隐藏变量名。

相关文章
|
4月前
|
存储 算法 数据库
【C++ 软件设计思路】学习C++中如何生成唯一标识符:从UUID到自定义规则
【C++ 软件设计思路】学习C++中如何生成唯一标识符:从UUID到自定义规则
291 0
Carve-out 的含义和使用场景介绍
Carve-out 的含义和使用场景介绍
|
2月前
|
并行计算 监控 Serverless
函数计算操作报错合集之出现了设备不匹配的问题,该如何解决
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
前端开发
前端学习案例9-正则-非捕获反向引用
前端学习案例9-正则-非捕获反向引用
59 0
前端学习案例9-正则-非捕获反向引用
|
编译器 Scala 开发者
函数使用注意事项和细节2|学习笔记
快速学习函数使用注意事项和细节2。
|
Scala 开发者
类型匹配的基本介绍和使用 | 学习笔记
快速学习类型匹配的基本介绍和使用
类型匹配的基本介绍和使用 | 学习笔记
|
Scala 开发者
覆写字段注意事项和细节说明2|学习笔记
快速学习覆写字段注意事项和细节说明2。
覆写字段注意事项和细节说明2|学习笔记
|
存储 Go 开发者
字符类型注意事项|学习笔记
快速学习字符类型注意事项。
字符类型注意事项|学习笔记
|
Scala 开发者
对象匹配的应用案例 | 学习笔记
快速学习对象匹配的应用案例
|
Java 编译器 Scala
函数使用注意事项和细节3|学习笔记
快速学习函数使用注意事项和细节3。