在SWIFT4.1之前,我使用flatMap从集合中删除nil值。现在不推荐这个方法了,我需要用compactMap替换它。有时,我使用flatMap和惰性集合来优化代码,如下所示:
let optionalIntegers : [Int?] = [1, 2, nil, 3, 4, nil, nil, 5]
optionalIntegers.lazy.flatMap { $0 }.forEach { print("Item \($0 * 10)") }如果我使用compactMap而不是flatMap,它会有同样的效果吗?在lazy方法的文档中,我只找到了对map和filter的引用。
发布于 2018-04-19 12:18:43
是的,完全一样。他们只是决定消除flatMap函数的模糊性,并将其中一个函数重命名为compactMap,以免使开发人员感到困惑。
以下是建议::)
我们建议放弃有争议的Sequence.flatMap方法版本,并在不同的、可能更具描述性的名称下提供相同的功能。

https://stackoverflow.com/questions/49916730
复制相似问题