scala-模式匹配(字符串、数组、元组、集合、类、偏函数)

Scala 提供了强大的模式匹配机制,应用也非常广泛。

一个模式匹配包含了一系列备选项,每个都开始于关键字 case。每个备选项都包含了一个模式及一到多个表达式。箭头符号 => 隔开了模式和表达式。

一、字符串模式匹配

package day02.mathdemoimport scala.util.Random/*** 模式匹配(字符串)*    类似于Java中的switch case*/
object MatchStr{def main(args: Array[String]): Unit = {val arr = Array("xm","xh","xl","xzs")val name = arr(Random.nextInt(arr.length))println("name: "+name)name match {case "xm" =>println("小明")case "xh" =>println("小红")case "xl" =>println("小亮")case "xzs" =>println("小竹笋")case _ =>println("Nothing")}}
}

打印结果

二、数组

package day02.mathdemo
//模式匹配
import scala.util.Randomobject MatchType {def main(args: Array[String]): Unit = {val arr = Array("xm", 123, 3.26, true, MatchType)val name = arr(Random.nextInt(arr.length))println("name: " + name)name match {case str: String => println(s"match String $str")case int: Int => println(s"match Int $int")case double: Double => println(s"match Double $double")case boolean: Boolean => println(s"match Boolean $boolean")case matchTest: MatchTest => println(s"match MatchTest $matchTest")case _: Any => println("nothing")}}
}
class MatchTest{}

打印结果:

三、元组、集合

package day02.mathdemo/*** 匹配数组、元组、集合*/
object MatchList {def main(args: Array[String]): Unit = {/**匹配数组*/val arr = Array(1,4,6,8)arr match {case Array(1,x,y,z) =>println(s"case: $x,$y,$z")case Array(_,x,y) => println(s"case: $x,$y")case _ => println("nothing")}/**匹配元组*   注意:元组匹配中的时候,元组内的个数是确定的*/val tup = (1,4,6,8)tup match {case (1,x,y,z) =>println(s"case: $x,$y,$z")case (4,w,s,t) => println(s"case: $w,$s,$t")case _ => println("nothing")}/**匹配集合*   注意: ::表示从右往左list合并;*          NIL表示空的集合;*          case1表示是一个空的list集合+0 就是只有一个0的list集合。*/val list01 = List(0,1,3,5,6)list01 match {case 0 :: Nil =>println("case1:0")case a :: b :: c :: d :: e :: Nil =>println(s"case2 : $a,$b,$c,$d,$e")case 0 :: b :: Nil =>println(s"case3: $b")case List(0,1,3,5,6) => println("这个也可以匹配到")case _ => println("not found")}}}

打印结果:

四、类

package day02.mathdemoimport scala.util.Random/*** 样例类*    注意:在样例类中case中,需要将参数设定好*/
object CaseClassDemo {def main(args: Array[String]): Unit = {val arr = Array(HertBeat(2000L),SubmitTask("1000","提交"),CheckTimeOutTask)arr(Random.nextInt(arr.length)) match {case HertBeat(time) =>println("HertBeat")case SubmitTask(id,task) =>println("submitTask")case CheckTimeOutTask =>println("CheckTimeOutTask")}}
}case class HertBeat(time:Long)
case class SubmitTask(id:String,task: String)
case class CheckTimeOutTask

打印结果:

五、偏函数

package day02.mathdemoimport scala.util.Random/*** 模式匹配-偏函数PartialFunction[A,B]*                              A:参数类型*                              B:返回值类型*     常用:输入模式匹配**/
object PartialFunctionDemo {def m1:PartialFunction[String,Int] = {case "one" => {println("I am one")1}case "two" => {println("I am two")2}}def m2(str:String):Int = str match {case "one" =>{println("I am one one")11}case "two" =>{println("I am two two")2}
}def main(args: Array[String]): Unit = {val str = Array("one","two")m1(str(Random.nextInt(str.length)))m2(str(Random.nextInt(str.length)))}
}

打印结果:

欢迎订阅关注公众号(JAVA和人工智能)

获取更多免费书籍、资源、视频资料

文章超级链接:

 1,分布式系统详解--基础知识(概论)

 2,分布式系统详解--基础知识(线程)

 3,IDEA和Eclipse的比较

 4,IntelliJ IDEA(最新)安装-破解详解--亲测可用

 5,scala-构造器-辅助构造器-伴生对象-单例对象

 6,scala-apply和unapply方法

 7,scala-特质、抽象类、继承、重写、实现

scala-模式匹配(字符串、数组、元组、集合、类、偏函数)相关推荐

  1. scala中打印数组和集合_如何在Scala中打印数组?

    scala中打印数组和集合 Scala中的数组 (Array in Scala) In Scala, Array is a data structure that is a collection of ...

  2. Java字符串数组转集合方法

    数组转集合方法 使用 Arrays.asList(数组) 代码如下: //定义一个字符串String zhuan = "1,2,3,4,5,6,7,8,9";//分割字符串Stri ...

  3. 【数据分析】python基础必修2—字符串/列表/元组/集合/字典

    目录 1.字符串 2.列表 list 2.1list操作练习 3.元组 tuple 4.集合 set 4.1集合间的运算 5.字典 1.字符串 声明一个字符串 # 声明一个字符串# 单引号声明 s = ...

  4. Scala模式匹配:对元组进行匹配

  5. java 类数组_Java常用类-字符串、日期类、算法及数组工具类等

    大家好,乐字节的小乐又和大家见面了.这次要给大家讲述的是Java常用类. 主要有以下知识点: Ø 字符串相关类(String .StringBuffer.StringBuilder) Ø 算法及数组工 ...

  6. Scala模式匹配,case 字符串,case 匹配类型,case 匹配数组,case 匹配List,case 匹配元组,case匹配case class和case object

    一. 模式匹配和样例类 Scala有一个十分强大的模式匹配机制,可以应用到很多场合:如switch语句.类型检查等. 并且Scala还提供了样例类,对模式匹配进行了优化,可以快速进行匹配 1. 匹配字 ...

  7. Scala模式匹配--样例类--密封样例类--偏函数

    Scala模式匹配--样例类--密封样例类--偏函数 模式匹配 等价于java的switch caseval c = '+'c match{case '+' => println(111)cas ...

  8. Scala基础教程(六):字符串、数组、集合

    创建字符串: 最直接的方法来创建一个字符串的编写方法是: var greeting = "Hello world!"; or var greeting:String = " ...

  9. scala 字符串数组_Scala程序创建字符串数组

    scala 字符串数组 Scala array is a collection of elements of the same data type. The data type can be stri ...

  10. spring字符串判空_字符串工具类StringUtils实现字符串是否中文、字符串分割/判空/替换/查找、是否包含乱码及字符串数组合并等常规操作...

    一.前言 关于字符串工具类StringUtils实现字符串是否包含isChinese中文.是否包含isMessyCode乱码.常规数据类型转换.替换/删除/判空.两字符串数组mergeStringAr ...

最新文章

  1. 规范化制度保障安擎高品质产品
  2. asp 去除最后一个逗号为空字符串的代码
  3. 选购四级网络工程师优质辅导书的几点建议
  4. 关于table和ul/ol还有span.
  5. [Issue Fixed]-Ubuntu开发环境下遇到的环境问题梳理
  6. pytorch torch.Tensor.new_ones()(返回一个与size大小相同的用1填充的张量。 默认返回的Tensor具有与此张量相同的torch.dtype和torch.device)
  7. 全国计算机一级考试理论,全国计算机等级考试一级理论汇总(最新版).pptx
  8. MyEclipse10 Tomcat7 JDK1.7 配置
  9. python 格式化输出%和format
  10. Django讲课笔记11:视图函数的请求和响应
  11. EasyUI datebox 设置为按月选择
  12. 腾讯 监控系统服务器数据采集,日均采集1200亿数据点,腾讯千亿级服务器监控数据存储实践...
  13. Vue开源项目库汇总-转
  14. linux脚本回车键是什么,回车是什么意思 回车键功能介绍
  15. 系统内核溢出漏洞提权之Windows Exploit Suggester
  16. 【强化学习】动态规划
  17. 【数据分析】系列-Python分析淘宝4200款Bra(没错,就是文胸)后,发现最好卖的款式居然是。。。
  18. 最近在GitHub 超人气的国人项目和公众号
  19. 多层神经网络 ——小批量梯度下降法
  20. 实战电商后端系统(三)—— 以vue-element-admin为基础的前端项目对接后端接口

热门文章

  1. Eclipse debug 断点调试教程
  2. 技术干货 | 基于 MindSpore 实现图像分割之豪斯多夫距离
  3. pyecharts 渲染图片导出
  4. 批量注册亚马逊买家号怎么弄?
  5. 各种驱动安装方法详细介绍
  6. 无线路由器以防止别人蹭网
  7. R语言实战笔记--第九章 方差分析
  8. 天堂还是地狱!美国大学不是你想象的那样!道翰天琼认知智能API接口平台为您揭秘-1。
  9. Go语言用GoPacket抓包分析
  10. c语言小程序(编程c++和python的区别)