模式匹配: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).toIntpre 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=1val 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的类型是Anyd match {case (x,y,z)=>println(s"这是一个有三个元素的元组,它的第二个元素是:${y}")case (x,y,z,k)=>println(s"这是一个有四个元素的元组,它的最后一个元素是:${k}")case _ =>println("未知类型")}