scala學習十四 模式匹配

2021-06-23 01:50:52 字數 1421 閱讀 2409

模式匹配詳解:

package matchtest;

class matchtest

}}val matest=new matchtest

matest.mat('1')

}

型別的匹配(並將值賦給case後面的變數)

package matchtest;

class matchtest

} def mat2(ref:any)

}}val matest=new matchtest

matest.mat2("ssss")

}

注意:當要使用模式匹配去匹配特定的map是:map[ int,string ]   別這樣做,應為jvm在執行時會擦出型別資訊,但是做乙個統一的匹配是可以的    case m:map[ _, _ ] =>***x

陣列的匹配和列表的匹配:

def mat3(a: array[any]) 

case array(x, y) =>

case array(x, _*) =>

}} def mat4(a: list[any])

case x :: y :: nil =>

case 0 :: tail =>

case _ =>print("預設匹配")

}}

樣例類的作用(匹配具體的子類,在給出具體的行為):

package matchtest

class account

case class account1(double: double) extends account

case class account2(double: double, double2: double) extends account

case object nothing extends account

class acco

}}

當在使用樣例類進行匹配的時候,可能需要編譯器幫助盤但樣例類是否全面,則需要在基類前加 sealed 關鍵字

package matchtest

sealed class account //加了sealed 在對account的擴充套件只有在本檔案有效

case class account1(double: double) extends account

case class account2(double: double, double2: double) extends account

case object nothing extends account

class acco

}}

scala學習之模式匹配

scala中有乙個灰常強大的東西,叫做模式匹配。可以理解為switch,只是比它更加強大。var sign 1 val ch char 模式匹配 更好用的switch ch match和switch不同的是,沒乙個匹配條件後面,不需要break 想到當年寫switch,忘記break的痛苦經歷 不會...

Scala模式匹配

1.常量匹配 def constantmatch x int string x match def constantmathtest 輸出結果 one many2.列表匹配 def sequencematch x list int string x match def sequencemathtes...

scala模式匹配

這是scala中最有用的部分之一。匹配值val times 1 times match 使用守衛進行匹配 times match 注意我們是怎樣將值賦給變數 i 的。在最後一行指令中的 是乙個萬用字元 它保證了我們可以處理所有的情況。否則當傳進乙個不能被匹配的數字的時候,你將獲得乙個執行時錯誤。我們...