模式匹配基础使用教程与常见应用解析
时间:2026-08-15 | 作者:云端旅人 | 阅读:0内容:
1.Scala 中的模式匹配
(一)问题导入
今天接到一个开发需求:要根据身份证号码,判断并输出对应人员的籍贯信息。
说得更直白一点,就是通过身份证前两位代码来识别所属地区。
比如,42对应湖北,33对应浙江,11对应北京,31对应上海。
(二)具体代码
package matchcase
/**
match case
三大结构
1. 顺序结构
2. 选择结构
(1) if, if else if else;
(2) match case
case_ 不能省略,否则,匹配失败会报错
case_ 必需写在最后
3. 循环结构:
(1) for
(2) while, do...while
* */
object case01 {
def main(args: Array[String]): Unit = {
// val code = "11"
// var province = ""
//
// if(code == "42"){
// province = "湖北"
// } else if(code == "11") {
// province = "北京"
// } else {
// province = "未知"
// }
val code = "11"
val province = code match {
case "42" => "湖北"
case "11" => "北京"
case _ => "未知"
}
println(s"${code} 对应的省份是:${province}")
}
}
【运行结果】
(三)match case的基本格式
格式如下:
value match {
case pattern1 => result1
case pattern2 => result2
...
case patternN => resultN
case _ => 其他
}
执行流程是:如果value匹配到了pattern1,就执行结果1。
如果都没有匹配到,就执行 _ 对应的内容。
通过例子来巩固下:
输入一个1~5的数字,打印它对应的英语单词。
package matchcase
object case02 {
def main(args: Array[String]): Unit = {
// 输入一个1~5的数字,打印它对应的英语单词
val num = 2
val word = num match {
case 1 => "One"
case 2 => "Two"
case 3 => "Three"
case 4 => "Four"
case 5 => "Five"
case _ => "Other"
}
println(s"${num} 对应的英文是:${word}")
}
}
【运行结果】
(四)高阶匹配之元组元素数量
前面提到的几种匹配,本质上都属于精准匹配。
也就是说,变量必须和对应的值完全相等。
不过,scala 的模式匹配远不止这么“死板”。
它的规则其实很灵活。 匹配时不一定非要盯着具体的值,还可以按照元组中元素的数量来完成匹配。
package matchcase
/*
* match case 高阶匹配
* 1.匹配元组不同的元素的数量
*
*
* */
object case03 {
def main(args: Array[String]): Unit = {
// 元组
val t1 = (2,3)
t1 match {
case (a,b) => println(s"有二个元素${a},${b}")
case _ => println("未知")
}
val arr1 = Array(10,2)
arr1 match {
case Array(1,x,y) => println("数组,第一个元素是1,长度为3")
case Array(10,x) => println("数组,第一个元素是10,长度为2")
case _ => println("其他")
}
}
}
【运行结果】
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- 迅捷路由器怎么调信号最强,设置时要注意什么?
- 时间:2026-08-27
-
- vivo浏览器怎么卸不掉?原因和解决方法在这里
- 时间:2026-08-27
-
- OPPO R11s黑屏了,怎么强制恢复出厂设置?
- 时间:2026-08-27
-
- 飞利浦显示器包装盒有生产日期和保修期吗?怎么看?
- 时间:2026-08-27
-
- 联想新平板开机必须联网吗?怎么做?
- 时间:2026-08-27
-
- 平板横竖屏切换设置与问题解决
- 时间:2026-08-27
-
- 移动电源容量怎么测?要准备哪些工具?
- 时间:2026-08-27
-
- 荣耀90 Pro防水吗?防水级别多少?怎么用才安全
- 时间:2026-08-27
精选合集
更多大家都在玩
大家都在看
更多-
- 糖尿病完全不能吃糖吗
- 时间:2026-09-15
-
- 蚂蚁庄园小课堂2026年9月16日最新题目答案
- 时间:2026-09-15
-
- 小鸡答题今天的答案是什么2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园每日答题答案2026年9月16日
- 时间:2026-09-15
-
- 以下哪种粮食是酿造绍兴黄酒的主要原料 蚂蚁庄园今日答案9月16日
- 时间:2026-09-15
-
- 劝学名句“及时当勉励,岁月不待人”出自哪位诗人 蚂蚁庄园今日答案9.16
- 时间:2026-09-15
-
- 蚂蚁庄园今天答题答案2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园答题今日答案2026年9月16日
- 时间:2026-09-15