scala學習之模式匹配

2022-09-10 21:24:15 字數 1822 閱讀 4684

scala中有乙個灰常強大的東西,叫做模式匹配。可以理解為switch,只是比它更加強大。

var sign = -1

val ch:char = '+'

/** * 模式匹配:更好用的switch

*/ch match

和switch不同的是,沒乙個匹配條件後面,不需要break(想到當年寫switch,忘記break的痛苦經歷、、、),不會掉入下乙個分支。

如果想要新增多個case標籤,可以不用從case』0』寫道case』9』,可以向下面這樣做:

ch match
型別模式

//型別模式

var obj : any = 1024

var o = obj match

列表、元組、資料匹配

var sth = arr match 

val lkt = list(0, -3, -5, 7, 8)

var value = lkt match

var pair = (0, 1)

pair match

變數中的模式匹配

val

(q,r) = bigint

(10) /% 3

上面**中,會將商和餘數分別賦值給q,r

for迴圈中的模式匹配

for ((k, v) <- system.getproperties())

println(k + "->" + v)

for ((k, "") <- system.getproperties())

println(k)

for ((k, v) <- system.getproperties() if v=="")

println(k)

第二個和第三個for迴圈只會列印value為空的k鍵

樣例類

abstract

class

amount

val amt:amount = new dollar(11.2)

case

class

dollar

(value: double)

extends

amount

case

class

currency

(value:double,unit: string)

extends

amount

case

object

nothing

extends

amount

var v = amt match

當宣告樣例類時,會有以下幾件事情自動發生

copy方法

val am = currency(29.25,"eur")

val price = am.copy(value = 19.25) //currency(19.25,"eur")

val pr = am.copy(unit = "chf") //currency(29.25,"chf")

偏函式

偏函式,乙個並非對所有輸入值都定義的函式

val f:partialfunction[char,int] =

scala學習十四 模式匹配

模式匹配詳解 package matchtest class matchtest val matest new matchtest matest.mat 1 型別的匹配 並將值賦給case後面的變數 package matchtest class matchtest def mat2 ref any...

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