一、问题导入
根据身份证号码,输出这个人的籍贯。例如:42表示湖北,33表示浙江,11表示北京,31表示上海。
二、分析问题并解决
根据一个值输出另一个与之对应的值,很容易就想到if else
def main(args: Array[String]): Unit = {
val code = "11"
val province = code match {
case "42" => "湖北"
case "11" => "北京"
case _ => "未知"
}
println(s"${code} 对应的省份是:${province}")
}
三、match case的基本格式
// 输入一个1-5的数字,打印它对应的英语单词。
val num = "3"
val Word = num match {
case "1" => "one"
case "2" => "two"
case "3" => "three"
case "4" => "four"
case "5" => "five"
case _ => "输入数字不在1-5范围内"
}
println(s"${num} 对应的英文是:${Word}")
四、高阶匹配之元组元素数量
match case 高阶匹配
前面的匹配都是精准匹配:变量和值是相等的。但是呢,scala中的模式匹配的规则是非常强大的,不一定是精准的匹配值,还可以根据元组的元素的个数来匹配。
匹配元组不同的元素的数量
// 元组
val t1 = (1,2)
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("其他")
}