1、基本数据类型模式匹配
java:对一个值进行条件判断,返回针对不同的条件进行不同的处理 switch case
scala:
变量 match {
case value1 => 代码1
case value2 => 代码2
.....
case - => 代码N
}
//加条件进行匹配
case _ if(name=="lisi") =>println(.....) //相当于双重过滤
2、Array模式匹配
def greeting(array:Array[String]):Unit={
array match{
case Array("zhangsan") => println("zhangsan ")
case Array(x,y) => println(x+y)
case Array("zhangsan",_*)=>println("zhangsan and other friedns..")
case _ => println("everybody")
}
}
scala> greeting(Array("zhangsan","lisi"))
zhangsanlisi
scala> greeting(Array("zhangsan","lisi","wangwu"))
zhangsan and other friedns..
3、List模式匹配
//匹配的顺序问题
def greeting(list:List[String]):Unit={
list match{
case "zhangsan"::Nil =>println("zhangsan")
case x::y::Nil => println(x+" "+y)
case "zhangsan"::tail => println("zhangsan and other friedns..")
case _ => println("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")
}
}
4、Scala的异常处理
try{
}catch{
case e:Exception => println("出错啦")
}finally{
//释放资源,一定能执行
}
5、case class模式匹配
def caseclassMatch(person:Person): Unit={
//需要是顶层的数据进来进行匹配,因此继承Person
person match {
case CTO(name, floor) => println(...)
case Employee(name, floor) => println(...)
case _ => println("other");
}
}
class Person
case class CTO(name:String, floor:String) extends Person
case class Employee(name:String, floor:String) extends Person
case class Other(name:String) extends Person
6、Some&None模式匹配
val grades = Map("messi"->"A", "zhangsan"->"C")
def getGrade(name:String):Unit={
val grade = grades.get(name)
grade match{
case Some(grade) => println("your grade is "+ grade)
case None => println("sorry...")
}
}