模式匹配
scala中有一个非常强大的模式匹配机制,可以应用在很多场景:
- 1.switch语句
- 2.类型查询
- 3.使用模式匹配快速获取数据
简单模式匹配
在Java中,有switch关键字,可以简化if条件判断语句。在scala中,可以使用match表达式替代。
语法格式
变量 match {
case "常量1" => 表达式1
case "常量2" => 表达式2
case "常量3" => 表达式3
case _ => 表达式4 // 默认匹配
}
示例
- 1.从控制台输入一个单词(使用StdIn.readLine方法)
- 2.判断该单词是否能够匹配以下单词,如果能匹配,返回一句话
- 3.打印这句话
单词 | 返回 |
---|---|
hadoop | 大数据分布式存储和计算框架 |
zookeeper | 大数据分布式协调服务框架 |
spark | 大数据分布式内存计算框架 |
未匹配 | 未匹配 |
参考代码
println("请输出一个词:")
// StdIn.readLine表示从控制台读取一行文本
val name = StdIn.readLine()
val result = name match {
case "hadoop" => "大数据分布式存储和计算框架"
case "zookeeper" => "大数据分布式协调服务框架"
case "spark" => "大数据分布式内存计算框架"
case _ => "未匹配"
}
println(result)
匹配类型
除了像Java中的switch匹配数据之外,match表达式还可以进行类型匹配。如果我们要根据不同的数据类型,来执行不同的逻辑,也可以使用match表达式来实现。
语法格式
变量 match {
case 类型1的变量名: 类型1 => 表达式1
case 类型2的变量名: 类型2 => 表达式2
case 类型3的变量名: 类型3 => 表达式3
...
case _ => 表达式4
}
示例
- 定义一个变量为Any类型,然后分别给其赋值为"hadoop"、1、1.0
- 定义模式匹配,然后分别打印类型的名称
参考代码
val a:Any = "hadoop&#