模式匹配詳解:
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 的。在最後一行指令中的 是乙個萬用字元 它保證了我們可以處理所有的情況。否則當傳進乙個不能被匹配的數字的時候,你將獲得乙個執行時錯誤。我們...