天天看點

Coursera Scala 5-4:List的高階函數

重複出現的lists計算模式

lists的很多函數有相似的結構,重複出現的模式有:

用某個方法轉換每個元素

用某個條件提取元素

用某種方法連結元素

函數式程式設計語言,讓程式員能寫出更通用的計算模式,通過使用高階函數。

将一個list的所有元素,進行轉換。例子:傳回一個新的集合,每個元素乘以factor

上面的模式,可以通過map函數來進行通用性封裝:

(實際上,map的定義更複雜,不僅僅隻支援lists)

使用map,scalelist很容易被實作:

這是另外一個常用的操作。從集合中篩選滿足條件的元素

filter還有其他變種:

xs fileternot p 相當于xs fileter(x=>!p(x))

xs partition p 分區:list(1,0,1,0) partition (>0) // ((1,1),(0,0))

xs takewhile p 用法:1 to 10 takewhile (<5) // (1,2,3,4)

xs dropwhile p 用法:1 to 10 dropwhile (<5) // (5,6,7,8,9,10)

xs span p 用法:1 to 10 span (<5) // ((1,2,3,4),(5,6,7,8)

編寫函數pack滿足:

list("a","a","a","b","b","c","c","a")

=>

list( list("a","a","a"), list("b","b"), list("c","c"),list("a") )

編寫函數encode滿足:

list( list("a",3), list("b",2), list("c",2),list("a",1) )

繼續閱讀