模式匹配
一旦一个case匹配上了,就不会再往下匹配
匹配内容
def main(args: Array[String]): Unit = {
def contentMatch(str: String) = str match {
case "hello" => println("HELLO")
case "zs" => println("ZS")
case _ => println("未匹配上")
}
contentMatch("zs")
}
类型的匹配
def typeMatch(ty : Any) = ty match {
case Int => println(s"$ty")
case Boolean => println(s"$ty")
case _ => println(s"$ty"+"类型不合适")
}
typeMatch("张不帅")
数组的匹配
def arrayMatch(array : Any) = array match {
case Array(0) => println("数组中只有一个0")
case Array(0,_)=> println("数组中以0开头的只有两个元素")
case Array(0,_*) =>println("0开头的数组")
case _ => println("未匹配到")
}
匹配list
def listMatch(list: Any) = list match {
case 0 :: Nil => println("只有0的元素的List")
case 9 :: 8 :: Nil => println("只有 9,8元素的List")
case x :: y :: z :: Nil => println("只有三个元素的List")
case m :: n if n.length > 0 => println("有head和tail的list,一个元素的list tail为 ()")
}
匹配元组
def tupleMatch(tuple : Any) = tuple match {
case (0,_) => println("一个二元祖,并且第一个元素为0")
case (x,y,z) => println("一个三元组")
}
匹配样例类
case class heard(name: String, time: Long)
case object CheckTimeOut //注意Object不能放数据
def objectMatch(obj : Any) = obj match {
case Heard(x,y) => println(s"$x|| $y")
case CheckTimeOut => println("CheckTimeOut")
}