==> Scala有一个强大的模式匹配机制,类似于 switch语句,可以实现对类型的判断以及检查,还提供了样本类,使其可以对样本类的对象进行模式匹配

==> 模式匹配示例

varv1=0varch2="-"ch2match{case"+"=>v1=1case"-"=>v1=-1case_=>v1=0}println(v1)


==>Scala守卫

//Scala守卫匹配某种类型的所有值varv2='6'varch3:Int=-1v2match{case'+'=>println("这是一个+")case'-'=>println("这是一个-")case_ifCharacter.isDigit(v2)=>ch3=Character.digit(ch3,10)case_=>println("其它类型")}println("ch3:"+ch3)


==>模式匹配中的变量

//模式中匹配变量varv3="Hello"v3(1)match{case'+'=>println("这是一个+")case'-'=>println("这是一个-")casech=>println("这是"+ch)}


==>模式匹配中的数组和列表

//匹配数组和列表varmyarray=Array(1,2,3)myarraymatch{caseArray(0)=>println("0")caseArray(x,y)=>println("这是列表,包含两个元素,和是:"+(x+y))caseArray(x,y,z)=>println("包含三个元素,乘积是:"+(x*y*z))caseArray(x,_*)=>println("这是一个数组")}varmylist=List(1,2,3,4)mylistmatch{caseList(0)=>println("0")caseList(x,y)=>println("这是两个元素,乘积是:"+(x+y))caseList(x,y,z)=>println("这是一个三个元素的数组,乘积是:"+(x*y*z))caseList(_*)=>println("这是一个多元素数组")}


==>样本类(CaseClass)在类前面加case关键字,其最大的好处就是支持模式识别

//通过使用样本类判断对象是否属于类varaCar:DemoCaseClass=newBicycle("car")aCarmatch{caseCar(name)=>println("Iamacar")caseBicycle(name)=>println("iamazixingche|")case_=>println("other")}classDemoCaseClasscaseclassCar(name:String)extendsDemoCaseClasscaseclassBicycle(name:String)extendsDemoCaseClass