类型匹配的基本介绍和使用 | 学习笔记

简介: 快速学习类型匹配的基本介绍和使用

开发者学堂课程【Scala 核心编程 - 进阶类型匹配的基本介绍和使用学习笔记,与课程紧密连接,让用户快速学习知识。

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


类型匹配的基本介绍和使用


基本介绍

可以匹配对象的任意类型,这样做避免了使用 islnstanceOf 和 asInstanceOf 方法。

应用案例

下列代码命名为 MatchTypeDeme01

image.png

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

val a=7

//说明 obj 实例的值根据 a 的值来返回

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")

如果 a=7返回到 Array,如果 a=3返回到 Bigint。

//说明

//1.根据 obj 的类型来匹配

//返回值

val result =obj match {

case a:Int =>a

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

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

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

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

case f:Bigint=>Int MaxValue

case_=>"啥也不是"

}

printin(result)

如果a=7就是 Array("aa",1) 与 case d:Array[String]=>"对象是一个字符串数组"和 case e:Array[Int]=>"对象是一个数字数组"都匹配失败,直接反馈"啥也不是"

如果传入8就是 Array("aa"),将 case d:Array[String]=>"对象是一个字符串数组"改为 case d:Array[String]=>d//"对象是一个字符串数组",运行结果是一个字符串。

注意:

如果在 case 后面是a:就相当于把 obj 的值赋给了a,如果是 Int 类型就将对象返回。Map[String,Int] 与 Map[Int,String] 不是同一类型。

相关文章
|
6月前
|
C语言
C 语言中布尔值的用法和案例解析
在编程中,您经常需要一种只能有两个值的数据类型,例如: - 是/否 - 开/关 - 真/假 为此,C语言有一个 `bool` 数据类型,称为布尔值。
204 1
|
4月前
ES6 扩展运算符 ...【详解】(含使用场景、实战技巧和范例、实现原理、错误用法)
ES6 扩展运算符 ...【详解】(含使用场景、实战技巧和范例、实现原理、错误用法)
47 5
|
前端开发
前端学习案例4-正则概述-字符组的简写
前端学习案例4-正则概述-字符组的简写
56 0
前端学习案例4-正则概述-字符组的简写
|
SQL Python
Python基础记录下字符串模糊匹配的方式
使用Python的difflib库中get_close_matches方法
261 0
Python基础记录下字符串模糊匹配的方式
正则表达式的通用语法以及用法作用
正则表达式的通用语法以及用法作用
138 0
正则表达式的通用语法以及用法作用
|
存储 Go 开发者
字符类型注意事项|学习笔记
快速学习字符类型注意事项。
字符类型注意事项|学习笔记
|
Scala 开发者
对象匹配基本介绍和快速入门 | 学习笔记
快速学习对象匹配基本介绍和快速入门
|
编译器 Scala 开发者
类型匹配的注意事项和细节 | 学习笔记
快速学习类型匹配的注意事项和细节
|
Scala 开发者
对象匹配的应用案例 | 学习笔记
快速学习对象匹配的应用案例
下一篇
无影云桌面