話說模式匹配 8 乙個抽取器的例子

2021-09-23 16:10:56 字數 839 閱讀 1200

乙個抽取器的例子

目前list的序列模式(sequence pattern)可以支援對前邊若干元素的匹配,比如:list(1,2,3,_*),如果想要實現list(_*, lastele)這樣的形式,就需要通過自定義乙個抽取器來實現了

// 自定義extractor

// 接受list結構

// 返回tuple2:前邊的若干元素和最後乙個元素

some( (l.init, l.last) )

}}

返回boolean,那麼匹配時 case a() 裡面的true不用寫(也不能寫)

若原本想要返回型別為t,則使用option[t],這樣是為了匹配時能夠判斷是否成功,some[t] 成功,none不成功

若原本想要返回一組t1,…tn,則使用option[(t1,…tn)]

現在看看上面自定義抽取器的使用例子:

okok

上面使用了中綴寫法,也可以寫成普通的構造方式,只是看起來沒有上面的舒服

ok

object :>
這樣對匹配時的表達顯得更簡短一些

scala> (1 to 9).tolist match

ok

另外,以」:「結尾的符號支援從右到左的操作方式,list的子類就採用了「::」這樣的名稱,以方便模式匹配(當然也是因為早期的一些函式式語言裡,如ml裡已經定義了::的形式,scala只是延續而已)。

文章** 併發程式設計網-ifeve.com

乙個builder模式的例子

以組裝電腦為例子,其中電腦由多個部分組成,如cpu,主機板,記憶體等,而組裝電腦這個工作由電腦裝配師完成,裝完後,就形成一件好的商品可以出賣了.而我購買的電腦是實現了電腦這個介面的,我的電腦有我自己喜歡的配置.如下 package builder class commodity class part...

乙個觸發器的例子

create or replace trigger usremhr trg sq rule insert before insert on sq rule base for each row declare temp rule id varchar2 10 temp rul theme id var...

僅僅乙個工廠設計模式的例子

public inte ce iworkfactory public class studentwork implements work public class studentworkfactory implements iworkfactory public class teacherwork ...