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

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

开发者学堂课程【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] 不是同一类型。

相关文章
|
Linux
Centos7使用man查找命令时,报错No manual entry for xxxx
Centos7使用man查找命令时,报错No manual entry for xxxx
325 0
|
测试技术 开发工具 git
Commit Message 规范
Commit Message 规范
233 0
|
7月前
|
存储 消息中间件 弹性计算
阿里云服务器ECS计算型c7和通用算力型u1在适用场景、计算性能、网络与存储性能等方面的对比
阿里云ECS服务器u1和c7实例在适用场景、性能、处理器特性等方面存在显著差异。u1为通用算力型,性价比高,适合中小企业及对性能要求不高的场景;c7为企业级计算型,采用最新Intel处理器,性能稳定且强大,适用于高性能计算需求。u1支持多种CPU内存配比,但性能一致性可能受底层平台影响;c7固定调度模式,确保高性能与稳定性。选择时可根据预算与性能需求决定。
390 23
|
DataWorks 搜索推荐 大数据
聊聊DataWorks——这个一站式智能大数据开发治理平台
聊聊DataWorks——这个一站式智能大数据开发治理平台
745 2
|
9月前
|
分布式计算 关系型数据库 MySQL
Flink CDC 3.3.0 发布公告
Flink CDC 3.3.0 发布公告
407 14
|
设计模式 前端开发 Java
步步深入SpringMvc DispatcherServlet源码掌握springmvc全流程原理
通过对 `DispatcherServlet`源码的深入剖析,我们了解了SpringMVC请求处理的全流程。`DispatcherServlet`作为前端控制器,负责请求的接收和分发,处理器映射和适配负责将请求分派到具体的处理器方法,视图解析器负责生成和渲染视图。理解这些核心组件及其交互原理,有助于开发者更好地使用和扩展SpringMVC框架。
367 4
|
机器学习/深度学习 人工智能 算法
探索软件测试的未来:AI与自动化的融合
【10月更文挑战第15天】在数字化时代的浪潮中,软件测试作为保障软件质量的重要手段,正经历着前所未有的变革。随着人工智能(AI)技术的快速发展和自动化测试工具的不断完善,传统的测试方法正在被重新塑造。本文将深入探讨AI如何赋能软件测试,提升测试效率和准确性,以及自动化测试的未来趋势。我们将通过实际案例,揭示AI与自动化测试相结合的强大潜力,为读者描绘一幅软件测试领域的未来蓝图。
|
编解码
后台管理系统中英文版本切换
后台管理系统中英文版本切换
436 0
|
Java 关系型数据库 MySQL
【Java用法】使用Java导出word文档的解决方案(适用于Windows电脑)
【Java用法】使用Java导出word文档的解决方案(适用于Windows电脑)
866 0