我有struct A类型的对象的数组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获取时,如何通过compactMap实现。
答案 0 :(得分:1)
flatMap
被分为自身和compactMap
。 flatMap
用于展平数组,而compactMap
的目的是获取[T?]
数组,并删除构成[T]
数组的所有nil个对象。计数为<=原始计数,具体取决于钉子的数量。