1.匹配字符串
A => 1 B => 2 C=> 3
//传统方法 def getNum(msg:String):Int={ if(msg=="A") 1 else if (msg=="B") 2 else if (msg=="C") 3 else 4 } //模式匹配方法 def getNum(msg:String):Int={ msg match{ case "A" => 1 case "B" => 2 case "C" => 3 case _ => 4 } } getNum("B")
2.匹配数组
var arr = Array(0,1,4) var info=arr match { case Array(0) => println(0) case Array(x,y) => print(x,y) case Array(0,_*) => print("_","*") //_* 代表多个数字,数目不确定 case _ => println("ANY") }
3.样例类
class Dog //其实这里是略写 Jing8(val age:Int) case class Jing8(age:Int) case class Bage(name:String) extends Dog //apply 在样例类中是创建对象的 //unapply 在样例类当作是是取出属性的方法 //我们不再需要new 一个对象,在调用方法apply() 的时候 def ma(cl :Any): Unit ={ cl match { case Jing8(age) => print(age) case Bage(name) => println(name) case _ => println("Any") } } ma(Jing8(45)) //实际上这里传入的是一个对象的实例,使用了省略的apply方法,apply方法可以不用。出来就用 ma(Bage("Bage"))
//其实这里是略写 Jing8(val age:Int) 看到红线,给age 赋值编译报错
《快学Scala》高清中文PDF+源代码
提取码:an5d