在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使用正規表示式匹配模式的主要物件了。其提供的屬性用於設定那些用...