匹配字符串:
package test01
import scala.util.Random
/**
* 匹配字符串
*/
object test {
def main(args: Array[String]): Unit = {
val arr = Array("zhoudongyu","zhengshuang","guanxiaotong","yanzi")
val name = arr(Random.nextInt(arr.length)) //随机拿到一个值
println(name)
name match {
case "zhoudongyu" => println("周冬雨")
case "zhengshuang" => println("郑爽")
case "guanxiaotong" => println("关晓彤")
case "yangzi" => println("杨紫")
case _ => println("others")
}
}
}
匹配类型:
package test01
import scala.util.Random
/**
* 匹配类型
*/
object test {
def main(args: Array[String]): Unit = {
val arr = Array("abcde",100,true)
val element = arr(Random.nextInt(arr.length))
println(element)
element match{
case str:String => println(s"match String: $str")
case int:Int => println(s"match Int: $int")
case bool:Boolean => println(s"match Boolean: $bool")
case _: Any => println("others")
}
}
}
匹配数组、元组、集合:
package test01
/**
* 匹配数组
*/
object test {
def main(args: Array[String]): Unit = {
//array
val arr = Array(3,2,5,7)
arr match{
//case Array(3,a,b,c) => println(s"case: $a, $b, $c")
case Array(4,a,b,c) => println(s"case: $a, $b, $c")
case Array(_,x,y) => println(s"case: $x, $y")
case _ => println("not matched")
}
}
}
/**
* 匹配元组
*/
object test1 {
def main(args: Array[String]): Unit = {
val tup = (2,3,4)
tup match{
case (_,_,_) => println("lalala")
case _ => println("not matched")
}
}
}
/**
* 匹配集合
*/
object test2 {
def main(args: Array[String]): Unit = {
val l1 = List(1,2,3,4)
l1 match{
case 0 :: Nil => println("case1:0")
case List(a,b,c,d) => println(s"case2: $a,$b,$c,$d")
case _ => println("not matched")
}
}
}
其中,Nil 指空的List,0 :: Nil 代表 List(0)
匹配样例类:
package test01
import scala.util.Random
/**
* 匹配样例类
* 先case创建样例类,然后匹配
*/
case class HeartBeat(time: Long)
case class SubmiTask(id: String, taskName: String)
case object ChecTimeOutTask
object test {
def main(args: Array[String]): Unit = {
val arr= Array(ChecTimeOutTask,SubmiTask("1000","task-00001"),HeartBeat(3000))
arr(Random.nextInt(arr.length)) match{
case ChecTimeOutTask => println("ChecTimeOutTask")
case SubmiTask(port,task) => println("SubmiTask")
case HeartBeat(date) => println("HeartBeat")
}
}
}
匹配偏函数:
package test01
/**
* 匹配偏函数
* 先def一个函数
*/
object test {
def m1: PartialFunction[String, Int] = {
case "one" => {
println("case 1")
1
}
case "two" => {
println("case 2")
2
}
}
def m2(num: String): Int = num match{
case "one" => 1
case "two" => 2
case _ => 0
}
def main(args: Array[String]): Unit = {
println(m1("one"))
println(m2("two"))
}
}
其中,def m1: PartialFunction[String, Int] = {}
代表定义函数m1,与m2相似
PartialFunction[A, B] A是参数类型,B是返回值类型