变量 match {case value1 => 代码1case value2 => 代码2...case _ => 代码 N
}
二、匹配过滤
import scala.util.Random
object MatchApp {
def main(args: Array[String]): Unit ={
val names =Array("P1","P2","P3")
val name =names(Random.nextInt(names.length))//简单匹配
name match {case"P1"=>println("1")case"P2"=>println("2")case _ =>println("3")}//双重条件匹配judgeGrade("zhangsan","A")judgeGrade("lisi","D")// 匹配数组greeting(Array("zhangsan"))greeting(Array("lisi","wangwu"))greeting(Array("zhangsan","lisi","wangwu"))// 匹配listgreeting(List("zhangsan"))greeting(List("zhangsan","lisi"))greeting(List("lisi","zhangsan"))greeting(List("wangwu","lisi","zhangsan"))}//双重条件匹配
def judgeGrade(name:String, grade:String): Unit ={
grade match {case"A"=>println("Excellent... ")case"B"=>println("Good... ")case"C"=>println("Just so so...")case _ if(name =="lisi")=>println(name +", you are a significant improvement.")case _ =>println("You need work harder")}}// 匹配数组
def greeting(array:Array[String]): Unit ={
array match {caseArray("zhangsan")=>println("Hi: zhangsan")caseArray(x, y)=>println("Hi:"+ x +", "+ y)caseArray("zhangsan", _*)=>println("Hi:zhangsan and others...")case _ =>println("Hi: everybody...")}}// 匹配 List
def greeting(list:List[String]): Unit ={
list match {case"zhangsan"::Nil =>println("Hi: zhangsan")case x :: y :: Nil =>println("Hi:"+ x +", "+ y)case"zhangsan"::tail =>println("Hi:zhangsan and others...")case _ =>println("Hi: everybody...")}}// 匹配类型
def matchType(obj:Any): Unit ={
obj match {case x:Int =>println("Int")case s:String =>println("String")case m:Map[_, _]=> m.foreach(println)case _ =>println("Other type")}}}
三、case class 匹配
object MatchApp {
def main(args: Array[String]): Unit ={caseclassMatch(CTO("zhaoliu","22"))caseclassMatch(Employee("sunqi","22"))caseclassMatch(Others("zhouba"))}
def caseclassMatch(person:Person): Unit ={
person match {caseCTO(name, floor)=>println("CTO name is: "+ name +", floor is: "+ floor)caseEmployee(name, floor)=>println("Employee name is: "+ name +", floor is: "+ floor)case _ =>println("Others")}}classPersoncaseclassCTO(name:String, floor:String)extendsPersoncaseclassEmployee(name:String, floor:String)extendsPersoncaseclassOthers(name:String)extendsPerson}
四、异常处理
object ExceptionApp {
def main(args: Array[String]): Unit ={try{
val i =10/0println(i)}catch{case e: ArithmeticException =>println("除数不能为 0")case e: Exception =>println(e.getMessage)}finally{// release sources}}}