今天看到一篇通过一个比较有意思的示例来讲解 reduce 函数使用的文章 reduce all the things,自己也依葫芦画瓢的在 Swift 4.0 下实现了一遍 :)
示例大致是这样的:
如下为美国各个城市的 persons 列表,其中每个 person 的结构包括姓名、所属城市(其中城市名字符串的逗号之后为州名,如 CA 为加利福尼亚州)、平均年龄。请使用 map/flatmap/filter/reduce 等函数来封装一个查询指定州的总人数和平均年龄,其中函数输入参数为州名,persons 列表。
1 | let persons: [[String: Any]] = [ |
这个示例如果是用 map/flatmap/filter 等函数组合起来也是可以实现的,只是比较啰嗦不够优雅,而且在这个 persons 量级上升后,性能也会不那么乐观(主要涉及到对整个 persons 的遍历次数,使用 reduce 只需要对 persons 遍历一次,具体可以参考那篇文章)。