case class SendHeartBeat(id: String, time: Long)
case object CheckTimeOutWorker
// 匹配上第一个之后就不再匹配
object ScalaMatchCse {def main(args: Array[String]): Unit = {// 匹配字符串内容def contentMatch(str: String) = str match {case "aaa" => println("a")case "aaa" => println("b")case "aaa" => println("c")case "aaa" => println("d")case _ => println("没有") // _ 任意内容}contentMatch("aaa")contentMatch("bbb")contentMatch("ccc")contentMatch("ddd")// 匹配数据类型def typeMatch(tp: Any) = tp match {case x: Int => println(s"Int $x")case y: Long => println(s"Long $y")case b: Boolean => println(s"boolean $b")case _ => println("没有")}typeMatch(1)typeMatch(10L)typeMatch(true)typeMatch("Scala")// 匹配Arraydef arrayMatch(arr: Any) = arr match {case Array(0) => println("只有一个0元素的数组")case Array(0, _) => println("以0开头的,第二个元素可以是任意值的数组")case Array(1, _, 3) => println("已1开头,3结尾,中间为任意元素的三个元素的数组")case Array(1, _*) => println("已1开头,N个元素的数组") // _*标识0个或者多个任意类型的数据}arrayMatch(Array(0))arrayMatch(Array(0, "1"))arrayMatch(Array(1, true, 3))arrayMatch(Array(8,9,10,100,666))// 匹配Listprintln("----------匹配List--------")def listMatch(list: Any) = list match {case 0 :: Nil => println("只有一个0元素的List")case 1 :: 2 :: Nil => println("只有1和2元素的List")case x :: y :: z :: Nil => println("只有三个元素的List")case m :: n if n.length > 0 => println("------") // 拥有head,和 tail的数组   if n.length > 0  守卫case _ => println("匹配不上")}listMatch(List(0))listMatch(List(1,2))listMatch(List(3,4,446))listMatch(List(123))// 匹配元组def tupleMatch(tuple: Any) = tuple match {case (0, _) => println("元组的第一个元素为0, 第二个元素为任意类型的数据")case (x, m, k) => println("拥有三个元素的元组")case (_, "AK47") => println("AK47")}tupleMatch((0, 1))tupleMatch(("1", 1, true))tupleMatch((ScalaMatchCse, "ff12"))// 匹配对象def objMatch(obj: Any) = obj match {case SendHeartBeat(x, y) => println(s"$x $y")case CheckTimeOutWorker => println("CheckTimeOutWorker")case "registerWorker" => println("registerWorker")}objMatch(SendHeartBeat("appid0000001", System.currentTimeMillis()))objMatch(SendHeartBeat("xx", 100L))objMatch(CheckTimeOutWorker)objMatch("registerWorker")}
}

Scala match相关推荐

  1. 【scala初学】scala 控制 for while match if

    上一章我们共同研究了for循环以及变种.这章我们围绕比较常用的几个其他控制语句学习. 首先,对for进行补充,  For-Comprehensions 格式: for (s ) yield e 举例: ...

  2. scala中的match详解

    Scala中提供了比java,c更加强大的switch语句--match,而且不用担心因为忘记写break语句而发生case穿透 1.更好的switch 与if,类似match也是表达式,如下一个用于 ...

  3. Scala:try match

    Scala:try & match try表达式 match 表达式 try表达式 try表达式的语意与java中try-catch-finally是一样的. 但是try在scala中不是一个 ...

  4. Spark记录-Scala程序例子(函数/List/match/option/泛型/隐式转换)

    object func {def main(args:Array[String]):Unit={//函数赋值给变量时, 必须在函数后面加上空格和下划线.def sayHello(name: Strin ...

  5. scala 模式匹配 match

    文章目录 一.match 基本介绍 二.match 的细节和注意事项 三.模式匹配之条件守卫 四.模式匹配之变量匹配.常量匹配 五.模式匹配之类型匹配 六.模式匹配之数组匹配 七.模式匹配之集合匹配 ...

  6. scala模式匹配match操作

    为什么80%的码农都做不了架构师?>>>    match 转载于:https://my.oschina.net/wii01/blog/893566

  7. Scala中的match(模式匹配)

    2019独角兽企业重金招聘Python工程师标准>>> /** 模式匹配 */ case class Class1(param1: String, param2: String) c ...

  8. scala中的match

    match的细节和注意事项: 1)如果所有case都不匹配,那么会执行case_分支,类似于Java中的default语句 2)如果所有case都不匹配,又没有写case_分支,那么会抛出MatchE ...

  9. 【Scala】9、Trait、Match、CaseClass和偏函数

    抽象类和接口的合体trait 1 /* * 1.trait不可以传参 * 2.类继承多个trait的时候 第一个关键字用extends 第二个用with * */ trait Read{def rea ...

最新文章

  1. 一图理解腾讯本次组织结构重大变革的方向和目的
  2. Dijkstra的算法
  3. putty ubuntu服务器 上传文件,教你如何使用PuTTY上传文件?
  4. Java程序员从笨鸟到菜鸟之(六十七)细谈Spring(一)spring简介
  5. 《Adobe Illustrator CS4中文版经典教程》—第0课0.11节将外观属性存储为图形样式...
  6. 安卓入门系列-02创建一个项目
  7. 用驴子拖宝马——怎样滥用结构体
  8. 40行中的持久性KeyValue Server和一个可悲的事实
  9. 字符串操作之字符串连接
  10. layui登录页面写入数据_layui基本使用(动态获取数据,并把需要的数据传到新打开的窗口)...
  11. [Leetcode][第392题][JAVA][判断子序列][动态规划][双指针]
  12. 一个form 如何做两次提交_如何做一个调酒师
  13. EF安装和更新数据库
  14. ORAN专题系列-20:5G O-RAN 通过TR-069协议实现一体化小基站的自动配置和安装
  15. vld/rdy协议 断言
  16. 颜色的前世今生10·HSB拾色器详解
  17. faiss-3: 基础模块
  18. 【R语言】【可视化】 之 维恩图
  19. 【卷积神经网络】CNN详解以及猫狗识别实例
  20. 浅析去中心化的商业积分体系

热门文章

  1. coreldraw中制作蚊香实例_关于CorelDRAW印前排版规范你知道么?
  2. 从零开始学前端:复习课程 --- 今天你学习了吗?(CSS:Day11)
  3. Module not found: Error: Can‘t resolve ‘sass-loader‘ in...
  4. java的scanner使用步骤
  5. python安装request库_Python——安装requests第三方库
  6. nginx作用_nginx作用及其配置
  7. C++之指针探究(十八):typedef结合结构体指针
  8. android自动化测试录制,(二)屏幕录制在android自动化测试中应用2015.06.29
  9. vbs把excel文件另存为html,VBS实现将Excel表格保存为txt文本
  10. python进阶装饰器_Python进阶: 通过实例详解装饰器(附代码)