天天看点

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) )

继续阅读