scala 模式匹配

scala的模式匹配與java的switch case相似,但是switch case只能對值進(jìn)行判斷,scala還可以對類型,集合進(jìn)行模式匹配。其中最重要的是對case class 匹配。
其中有多種的匹配的模式:

常量變量匹配

  def bigData(data : String): Unit ={
    data match {

        case "spark" => println("spark")
        case "hadoop" => println("hadoop")
//        case 中實(shí)際上是偏函數(shù)
        case _ if data == "luo" => println("Luo") // 使用守衛(wèi)
        case data_ if data_ == "carey" => println("carey") // 可以把值傳入賦給新的變量  匹配的是if 后面的變量
        case _ => println("something else")


    }
  }

類型模式

  def exception(e : Exception): Unit ={
    e match {
        case fileEx : FileNotFoundException => println("file not fuond",fileEx) // 新定義的變量只是接受賦值 而她的類型才是重要的
        case _ : Exception => println("exception some what",e)

    }

}
```

匹配集合  序列化模式
```
  def match_collec(array : Any): Unit ={
    array match {
        case Array("scala") => println("scala arr")
        case Array("hello","scala","mm") => println("mm")
        case Array(one,two) => println(one,two)  // 對數(shù)組的元素的個(gè)數(shù)進(jìn)行匹配 會(huì)將第一個(gè)值賦給one 第二個(gè)值賦給two  元組模式
        case Array("hello",_*) => println("array start with hello")  // 匹配開始為為hello的數(shù)組  使用_* 通配
        case List(_,"one","owo") => println("match list")  // 使用占位符
        case _ => println("something else")
    }
}
```


 案例類
構(gòu)造器模式
```
//  case class  的參數(shù)會(huì)自動(dòng)用 val修飾 編譯器自動(dòng)生成伴生對象  伴生對象的unapply() 方法 接受參數(shù)執(zhí)行就生成 新實(shí)例
  class Person
  case class Worker(name:String,age:Int) extends Person
  case class Student(name:String,books:Int) extends Person

  def match_construct(p: Person): Unit ={
    p match {
      //構(gòu)造器模式必須將Person類定義為case class,否則需要自己定義伴生對象并實(shí)現(xiàn)unapply方法。
        case Worker(name,age) => println("worker",name,age)
        case Student(name,books) => println(name,"have",books)
        case _ => println("unknown this ")
    }
  }
```



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 模式匹配 要理解模式匹配(pattern-matching),先把這兩個(gè)單詞拆開,先理解什么是模式(pattern...
    JasonDing閱讀 1,439評論 0 1
  • 什么是匹配模式? 模式匹配并不很新,(上世紀(jì))七十年代中期就已經(jīng)有語言采用。據(jù)我所知,第一種語言是ML,但可能也有...
    安靜1337閱讀 1,669評論 0 51
  • 模式匹配是根據(jù)模式檢查值的機(jī)制。一個(gè)成功的匹配可以將值分解成其組成部分。它Java switch語句的一個(gè)更強(qiáng)大的...
    steanxy閱讀 664評論 0 0
  • 1. 模式匹配簡介 模式匹配是 Scala 的重要特性之一,前面兩篇筆記Scala學(xué)習(xí)筆記(六) Scala的偏函...
    fengzhizi715閱讀 3,464評論 0 5
  • 2013年1月13日,我在朋友圈發(fā)出自己的第一條消息。3年之后,我典型的一天中有這樣的片段:早上起床前,我看一下微...
    鋒哥聊人事閱讀 411評論 0 0

友情鏈接更多精彩內(nèi)容