Arrays 用于惰性集合的Swift 4.1 compactMap

Arrays 用于惰性集合的Swift 4.1 compactMap,arrays,swift,lazy-initialization,swift4.1,Arrays,Swift,Lazy Initialization,Swift4.1,在Swift 4.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而不是fl

在Swift 4.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
的引用。

是的,完全相同。他们只是决定消除
flatMap
函数的模糊性,并将其中一个函数重命名为
compactMap
,以免混淆开发人员

建议如下:

我们建议反对Sequence.flatMap方法有争议的版本,并在不同的、可能更具描述性的名称下提供相同的功能