scala模式匹配
代码
import scala.util.Random
//做一个信息的甄别
object Patter2 {
def main(args: Array[String]): Unit = {
abstract class NotFaction
//定义不同信息的样例类
case class Email(send:String,title:String,body:String) extends NotFaction
case class SMS(caller:String,message:String) extends NotFaction
case class VoiceRecording(contactName:String,link:String) extends NotFaction
//信息识别
def showNotFaction(notifiction:NotFaction):String={
notifiction match {
case Email(send, title,_)if(send=="张三")=>"you get a Email message from"+send
case SMS(caller, message)=>"you get a SMS message from"+caller
case VoiceRecording(contactName, link)=>"you get a VoiceRecording message from"+contactName
case _=>"you get a message not important"
}
}
//创建一条信息
val email1=Email("张三","important","some xxixxxx")
val email2=Email("李四","important","some xxixxxx")
println(showNotFaction(email1))
println(showNotFaction(email2))
//类型匹配
val arr=Array("Bob",2,3.4,'d')
//随机取数组元素
val obj=arr(Random.nextInt(4))
println(obj)
obj match{
case x:Int=>println(x)
case s:String=>println(s.toUpperCase())
case d:Double =>println(Int.MaxValue)
case _=>println("fail")
}
}
}
运行结果
you get a Email message from张三
you get a message not important
3.4
2147483647
Process finished with exit code 0
you get a Email message from张三
you get a message not important
d
fail
Process finished with exit code 0