模式匹配:swtich++ , case++
先从一个简单的任务开始说起:
我们今天接到一个开发任务,就是根据身份证号码,输入这个人的籍贯。列如:42 表示湖北,33表示浙江,11表示北京,31表示上海。
def main(args: Array[String]): Unit = {
//身份证
val id="429005202023210042"
// val id="319005202023210042"
// val id="119005202023210042"
// val id="339005202023210042"
//截取前两位
val pre=id.substring(0,2).toInt
pre match {
case 42=>println("湖北")
case 11=>println("北京")
case 31=>println("上海")
case _=>println("其他")
}
// 细节1: case _ 的位置 一定要放在最后
// 细节2: case _ 不写,如果没有正确的匹配项,报错!
//如果是42,输出 湖北
//如果是11,输出 北京
//如果是31,输出 上海
//否则,输出 其他
}
从数据库中获得数据1,2,3,4
要显示给用户的是 一等,二等,三等,四等
def main(args: Array[String]): Unit = {
//从数据库中获得数据1,2,3,4
//要显示给用户的是 一等,二等,三等,四等
val level=1
val levelTxt=level match {
case 1=>"一等"
case 2=>"二等"
case 3=>"三等"
case 4=>"四等"
case _=>"未知"
}
println(s"levelText: ${levelTxt}")
}
match case 匹配元组 能根据元组元素的个数来匹配,不是一一精确的匹配值
def main(args: Array[String]): Unit = {
// val d1=(1,2,3)
val d1=(1,2,3,4)
//val d1=(1,2,3,4,5)
val d: Any =d1 // d的类型是Any
d match {
case (x,y,z)=>println(s"这是一个有三个元素的元组,它的第二个元素是:${y}")
case (x,y,z,k)=>println(s"这是一个有四个元素的元组,它的最后一个元素是:${k}")
case _ =>println("未知类型")
}
标签:case,val,Scala,基础,元组,println,id,模式匹配,d1
From: https://blog.csdn.net/2401_87129058/article/details/144187650