模式匹配

一旦一个case匹配上了,就不会再往下匹配

匹配内容

def main(args: Array[String]): Unit = {
  def contentMatch(str: String) = str match {
    case "hello" => println("HELLO")
    case "zs" => println("ZS")
    case _ => println("未匹配上")
  }
  contentMatch("zs")
}

类型的匹配

def typeMatch(ty : Any) = ty match {
  case Int => println(s"$ty")
  case Boolean => println(s"$ty")
  case _ => println(s"$ty"+"类型不合适")
}
typeMatch("张不帅")

数组的匹配

def arrayMatch(array : Any) = array match {
  case Array(0) => println("数组中只有一个0")
  case Array(0,_)=> println("数组中以0开头的只有两个元素")
  case Array(0,_*) =>println("0开头的数组")
  case _ => println("未匹配到")
}

匹配list

    def listMatch(list: Any) = list match {
      case 0 :: Nil => println("只有0的元素的List")
      case 9 :: 8 :: Nil => println("只有 9,8元素的List")
      case x :: y :: z :: Nil => println("只有三个元素的List")
      case m :: n if n.length > 0 => println("有head和tail的list,一个元素的list tail为 ()")
    }

匹配元组

def tupleMatch(tuple : Any) = tuple match {
  case (0,_) => println("一个二元祖,并且第一个元素为0")
  case (x,y,z) => println("一个三元组")
}

匹配样例类

case class heard(name: String, time: Long)
case object CheckTimeOut //注意Object不能放数据
def objectMatch(obj : Any) = obj match {
      case Heard(x,y) => println(s"$x|| $y")
      case CheckTimeOut => println("CheckTimeOut")
    }