flatMap
flatMap
函数式编程中的map
reduce
filter
算子很好理解。
但是flatMap
一直让我很困惑。
今天阅读《Swift进阶》时,书中的例子让我恍然大悟。
记录如下:
我想提取单个文本文件中的URL,有如下函数原型
func extractLinks(from file: String) -> [URL]
如果我有很多文本文件改如何处理呢?
let fileArray: [String] = ...
let nestedLinks = fileArray.map(extractLinks)
但是此时得到结果是嵌套数据
[["http://","https://"],["smb://"]....,["ftp://"]]
整合成为一个数组,
let links = nestedLinks.joined()
下面轮到flatMap登场:
fileArray.flatMap(extractLinks)
flatMap与上面的map+joined等价。
完