0
点赞
收藏
分享

微信扫一扫

scala快速入门系列【模式匹配】


        本篇作为scala快速入门系列的第二十九篇博客,为大家带来的是关于​模式匹配​的内容。

scala快速入门系列【模式匹配】_java


文章目录

  • ​​模式匹配​​
  • ​​简单模式匹配​​
  • ​​匹配类型​​
  • ​​守卫​​
  • ​​匹配样例类​​
  • ​​匹配集合​​
  • ​​1.匹配数组​​
  • ​​2.匹配列表​​
  • ​​3.匹配元组​​
  • ​​变量声明​​
  • ​​示例1 获取数组中的元素​​
  • ​​示例2 获取List中的数据​​

模式匹配

        scala中有一个非常强大的模式匹配机制,可以应用在很多场景:

  • switch语句
  • 类型查询
  • 使用模式匹配快速获取数据

简单模式匹配

        在Java中,有switch关键字,可以简化if条件判断语句。在scala中,可以使用match表达式替代。

语法

scala快速入门系列【模式匹配】_云计算/大数据_02

示例

  1. 从控制台输入一个单词(使用​StdIn.readLine​方法)
  2. 判断该单词是否能够匹配以下单词,如果能匹配,返回一句话
  3. 打印这句话

scala快速入门系列【模式匹配】_模式匹配_03

参考代码

scala快速入门系列【模式匹配】_java_04

匹配类型

        除了像Java中的switch匹配数据之外,match表达式还可以进行类型匹配。如果我们要根据不同的数据类型,来执行不同的逻辑,也可以使用match表达式来实现。

定义

scala快速入门系列【模式匹配】_scala_05

示例

  • 定义一个变量为Any类型,然后分别给其赋值为"hadoop"、1、1.0
  • 定义模式匹配,然后分别打印类型的名称

参考代码

scala快速入门系列【模式匹配】_模式匹配_06

【Note】

        如果case表达式中无需使用到匹配到的变量,可以使用​​下划线​​代代替。

守卫

        在Java中,只能简单地添加多个case标签。例如:要匹配0-7,就需要写8个case语句出来。例如:

scala快速入门系列【模式匹配】_scala_07

        在scala中,可以使用守卫来简化上述代码——也就是在​case语句中添加if条件判断​。

示例

  • 从控制台读入一个数字a(使用StdIn.readInt)
  • 如果 a >= 0 而且 a <= 3,打印[0-3]
  • 如果 a >= 4 而且 a <= 8,打印[3,8]
  • 否则,打印未匹配

参考代码

scala快速入门系列【模式匹配】_java_08

匹配样例类

        scala可以使用模式匹配来匹配样例类,从而可以快速获取样例类中的成员数据。后续,我们在开发Akka案例时,还会用到。

示例

  • 创建两个样例类Customer、Order
    – Customer 包含姓名,年龄字段
    – Order包含id字段
  • 分别定义两个案例类的对象,并指定为Any类型
  • 使用模式匹配这两个对象,并分别打印它们的成员变量值

参考代码

scala快速入门系列【模式匹配】_scala_09

匹配集合

        scala中的模式匹配,还能用来匹配集合。

1.匹配数组

示例

  • 依次修改代码定义以下三个数组
    scala快速入门系列【模式匹配】_云计算/大数据_10
  • 使用模式匹配上述数组

参考代码

scala快速入门系列【模式匹配】_模式匹配_11

2.匹配列表

示例

  • 依次修改代码定义以下三个列表
    在这里插入图片描述
  • 使用模式匹配上述列表

参考代码

scala快速入门系列【模式匹配】_模式匹配_12[NOTE]

  • Nil 表示空列表,tali表示任意
  • 用 List(x,y) 类似的匹配也可以完成上述的需求

3.匹配元组

示例

  • 依次修改代码定义以下两个元组
    scala快速入门系列【模式匹配】_java_13
  • 使用模式匹配上述元素

参考代码

scala快速入门系列【模式匹配】_java_14

变量声明

        在定义变量的时候,可以使用模式匹配获取数据。

示例1 获取数组中的元素

需求

  • 生成包含0-10数字的数组,使用模式匹配分别获取第二个、第三个、第四个元素

参考代码

scala快速入门系列【模式匹配】_模式匹配_15

示例2 获取List中的数据

需求

  • 生成包含0-10数字的列表,使用模式匹配分别获取第一个、第二个元素

参考代码

scala快速入门系列【模式匹配】_spark_16

        本期的内容分享就到这里了,喜欢的小伙伴们记得点个赞,持续关注哟~下期为大家介绍的是scala中的​Option类型​,敬请期待٩(๑>◡<๑)۶

scala快速入门系列【模式匹配】_spark_17



举报

相关推荐

0 条评论