package hfd //匹配 变量的类型 //匹配 数组: 元组的个数 + 元素的特征 object test34_5 { def main(args: Array[String]): Unit = { val arr1 = Array(1,2,3) val arr2 = Array(0,2,3) val arr3 = Array(1,2,3,4) val arr4 = Array(-1,1,2,3,4) val b:Any =arr1 b match { case Array(1,x,y) => println(s"数组第一个元素是1,一共有3个元素${x},${y}") case Array(1,x,y,z) => println("数组第一个元素是1,一共有4个元素") case Array(_,1,_*) => println("数组第二个元素是1,一共有n个元素") case _ => println("其他") } } }
package hfd object test34_6 { case class Person(name:String) case class Student(name:String, className:String) //match case 能根据 类名和属性的信息,匹配到对应的类 //注意: // 1.匹配的时候。 case class的属性个数要对上 // 2. 属性名不属于一一对应 def main(args: Array[String]): Unit = { val p1 = Person("小花") val s1 = Student("小明","2(3)班") val a:Any = p1 a match { case Person(name) => println("普通人类",name) case Student(name,className) => println(className,"的学生",name) case _ => println("其他") } } }
package hfd object test34_7 { //需求:现在有一个数组Array(1,2,3,4),我希望能定义三个变量,它们的值分别是数组中的第1,2,3个元素的值 def main(args: Array[String]): Unit = { val arr = Array(1,2,3,4,5) // 第1个元素的值: arr(0) // println(arr(0)) // var x = arr(0) // var y = arr(1) // var z = arr(2) // println(x,y,z) //有一个更简单的方式 //模式匹配 var Array(_,x,y,z,_*) = arr println(x) println(y) println(z) } }
package hfd object test34_8 { def main(args: Array[String]): Unit = { val m1 = Map( "阿里巴巴" -> 1964, "腾讯" -> 1971, "百度" -> 1968, "小米" -> 1969, "网易" -> 1971, ) // val t = ("小米",1969) // 元组 // println(t._2) //找出哪些是1971年? // 对于Map, 可以 for 遍历 //模式匹配 for ((k,1971) <- m1){ println(k) } } }