話說模式匹配 5 for表示式中的模式匹配

2021-09-23 16:08:51 字數 1360 閱讀 6170

在for表示式中

for(x <- collection)
直覺上以為 x 就是個用於迭代每乙個元素的區域性變數。

我們看一些例子:

scala> for(i <- list(1,2,3) ) 

// 看看語法樹

scala> tb.parse("for(i <- list(1,2,3) ) ")

res2: tb.u.tree = list(1, 2, 3).foreach(((i) => println(i)))

再多一點花樣,變數繫結:

scala> tb.parse("for(i@2 <- list(1,2,3) ) ")

res3: tb.u.tree =

list(1, 2, 3).withfilter(((check$ifrefutable$1) => check$ifrefutable$1: @scala.unchecked match )).foreach(((x$1) => x$1: @scala.unchecked match ))

將i繫結到常量模式2上,list(1,2,3)中只有2能匹配

下乙個例子:

// 過濾出女性的名字

scala> for ((name,"female") <- set("wang"->"male","zhang"->"female") ) print(name)

zhang

會在兩個點做模式匹配,第乙個點是從set中過濾符合條件的元素時,第二個點是對過濾後的集合迭代執行後續邏輯時。

scala> tb.parse("for ((name,\"female\") <- set(\"wang\"->\"male\",\"zhang\"->\"female\") ) print(name)")

res5: tb.u.tree =

set("wang".$minus$greater("male"), "zhang".$minus$greater("female")).withfilter(((check$ifrefutable$2) => check$ifrefutable$2: @scala.unchecked match )).foreach(((x$2) => x$2: @scala.unchecked match ))

同樣,還可以型別模式在從集合過濾時按型別條件。

scala> for((k,v:int) <- list(("a"->2),("b"->"c"))) 

a

文章** 

併發程式設計網-ifeve.com

話說模式匹配 5 for表示式中的模式匹配

在for表示式中 for x collection 直覺上以為 x 就是個用於迭代每乙個元素的區域性變數。我們看一些例子 scala for i list 1,2,3 看看語法樹 scala tb.parse for i list 1,2,3 res2 tb.u.tree list 1,2,3 fo...

使用模式匹配記錄的表示式

當您嘗試匹配遵循某一模式的行時,like運算子可以提供極大的靈活性,因為可以將like與萬用字元一起使用來定義 access 要匹配的模式。例如,星號 萬用字元可與任何型別的字串行匹配,從而可以更加容易地查詢所有以某一字母開頭的名稱。例如,使用表示式like s 可以查詢所有以字母 s 開頭的名稱。...

VB 正規表示式匹配模式

正規表示式匹配模式 引用了microsoft vbscript regular expressions 5.5 後就可以宣告正則相關物件了。主要有三個物件 regexp matchcollection match。1.regexp這是vb使用正規表示式匹配模式的主要物件了。其提供的屬性用於設定那些用...