Scala模式匹配——高阶用法
(一)scala的模式匹配
(1)常量
(2)变量
(3)构造器
(4)序列
(5)元组
(6)类型
(7)变量绑定
(二)Scala模式匹配的语法格式:
X match{
case1
case2
}
package test7
import scala.io.StdIn
object test7_1 {
//从控制台读入一个数字a,使用(StdiIn.readInt)
//如果a>=0并且 a<= 3,打印[0 - 3]
//如果 a>= 4 并且 a<=8,打印[4 - 8]
//否则:打印未匹配
def main(args: Array[String]): Unit = {
val a = StdIn.readInt()//等待从键盘输入内容
println(s"从键盘输入的数字是:$a")
a match {
case x if x>= 0 && x<=3 => println(s"[0 - 3]")
case y if y>= 4 && y<= 8 => println(s"[4 - 8]")
case _ => println("其他")
}
}
}
package test7
import scala.io.StdIn
object test7_1 {
//从控制台读入一个数字a,使用(StdiIn.readInt)
//如果a>=0并且 a<= 3,打印[0 - 3]
//如果 a>= 4 并且 a<=8,打印[4 - 8]
//否则:打印未匹配
// def main(args: Array[String]): Unit = {
// val a = StdIn.readInt()//等待从键盘输入内容
// println(s"从键盘输入的数字是:$a")
// a match {
// case x if x>= 0 && x<=3 => println(s"[0 - 3]")
// case y if y>= 4 && y<= 8 => println(s"[4 - 8]")
// case _ => println("其他")
// }
// }
// def main(args: Array[String]): Unit = {
// for (i <- 2000 to 2040){
// i match {
// case year if year%4 == 0 && year%100 != 0 || year%400 == 0 =>println(s"${year}是闰年")
// case _ => println(s"${i}不是闰年")
//
// }
// }
// }
// 1. 匹配类型
// def main(args: Array[String]): Unit = {
// val i:Int = 1
// val b: Boolean = false
//
// //Any任意的
// //val x:Any = "abc"
val x:Any = i
//
// val x:Any = b
// x match {
// case _:Int => println(s"$x 是Int类型的") // _:Int 表示变量是Int类型
// case _:Boolean=>println(s"$x 是Boolean类型的")
// case _ => println("其他")
//
// }
// }
// 2. 匹配数组
// def main(args: Array[String]): Unit = {
// var arr1 = Array(1,3,4)//三个元素,且第一个为一
// var arr2 = Array(1,6,7)
// var arr3 = Array(0,1,6,7,3)
//
// var arr = Array(1)
// arr match {
// case Array(0) => println("1个元素,且第一个为0")
// case Array(1,x,y) => println(s"三个元素,且第一个为一,第二个为${x},第三个为${y}")
// case Array(1, _*) => println("n个元素,且第一个为1")
// case _ => println("其他")
// }
// }
// 3. 匹配case class
// def main(args: Array[String]): Unit = {
// case class Stu(name:String)
// case class Teacher(name:String,subject:String)
// val s1 = Stu("小花")
// val t1 = Teacher("小明","体育")
//
// val x:Any = t1
//
// x match {
// case Stu(a) => println(s"学生${a}")
// //属性的个数对应上
// case Teacher(a,b) => println(s"${b}老师 ${a}")
// case _ => println("其他")
// }
//}
//定义变量赋值
//def main(args: Array[String]): Unit = {
// var arr = Array(1,2,3,4,7)
// //任务:定义三个变量,分别保存数组中的第一个,第二个,第三个
var x = arr(0)
var y = arr(1)
var z = arr(2)
// //先要匹配上,然后赋值
// var Array(x,y,_,z,_*) = arr
// println(s"x = $x , y = $y , z = $z")
//}
}