使用flatMap和compactMap获取不同的结果[复制]

问题描述 投票:2回答:1

这个问题在这里已有答案:

我有类型为struct的对象的Array A.

struct Caste {
    var arr = [1,2]
}

let siri =  [Caste(), Caste(), Caste()]

现在我想要一个单独的数组,其中每个对象数组的所有元素组成如下所示:

let re1 = siri.compactMap { $0.arr }
print("COMPACT: \(re1)")
let re2 = siri.flatMap { $0.arr }
print("FLAT: \(re2)")

结果:

COMPACT: [[1, 2], [1, 2], [1, 2]] FLAT: [1, 2, 1, 2, 1, 2]

由于在Swift 4.1中不推荐使用flatMap,我尝试使用compactMap,但它给出的数组数组不是单个数组。

我如何通过flatMap实现通过flatMap实现。

swift flatmap
1个回答
1
投票

flatMap分裂成自己和compactMapflatMap是扁平阵列,而compactMap的目的是采取一系列[T?]并删除所有nil对象,使[T]阵列。这具有<=原始计数的计数,具体取决于nils的数量。

© www.soinside.com 2019 - 2024. All rights reserved.