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

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

开发者学堂课程【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 //看这里!即隐藏变量名。

相关文章
|
7月前
|
机器学习/深度学习 算法 编译器
【C++ 泛型编程 中级篇】深度解析C++:类型模板参数与非类型模板参数
【C++ 泛型编程 中级篇】深度解析C++:类型模板参数与非类型模板参数
102 0
|
SQL Python
Python基础记录下字符串模糊匹配的方式
使用Python的difflib库中get_close_matches方法
271 0
Python基础记录下字符串模糊匹配的方式
|
编译器 Scala 开发者
函数使用注意事项和细节2|学习笔记
快速学习函数使用注意事项和细节2。
|
Scala 开发者
覆写字段注意事项和细节说明2|学习笔记
快速学习覆写字段注意事项和细节说明2。
108 0
覆写字段注意事项和细节说明2|学习笔记
|
Scala 开发者
包对象注意事项和细节说明|学习笔记
快速学习包对象注意事项和细节说明。
包对象注意事项和细节说明|学习笔记
|
存储 程序员 Go
切片注意事项和细节(2) | 学习笔记
简介:快速学习切片注意事项和细节(2)
148 0
切片注意事项和细节(2) | 学习笔记
|
Go vr&ar 开发者
切片注意事项和细节(3) | 学习笔记
简介:快速学习切片注意事项和细节(3)
切片注意事项和细节(3) | 学习笔记
|
Go 开发者
切片注意事项和细节(1) | 学习笔记
简介:快速学习切片注意事项和细节(1)
134 0
切片注意事项和细节(1) | 学习笔记
|
JavaScript 网络架构
ES6知识点补充——剩余参数、展开语法
JS查漏补缺系列是我在学习JS高级语法时做的笔记,通过实践费曼学习法进一步加深自己对其的理解,也希望别人能通过我的笔记能学习到相关的知识点。这一次我们来了解剩余参数、展开语法
194 0
|
自然语言处理 Java
如何使用ES更有效率的进行多字段模糊匹配
如何使用ES更有效率的进行多字段模糊匹配