这两个代码片段之间有什么区别?
cellModels.append(contentsOf: [].compactMap { $0.condition ? .init(text: $0.text, backgroundColor: $0.color, action: $0.action) : nil })
cellModels.append(contentsOf: [].compactMap {
if $0.condition {
return .init(text: $0.text, backgroundColor: $0.color, action: $0.action)
} else {
return nil
}
})
更新到Xcode 12.5后,第一个代码不再编译
游乐场的一些代码片段。在Xcode 12.5 中试用
struct SomeStruct {
var str: String
}
var arr1: [SomeStruct] = []
arr1.append(contentsOf: ["123123", "2", "332", "124r132q", "123"].compactMap { $0.count == 3 ? .init(str: $0) : nil })
arr1.append(contentsOf: ["123123", "2", "332", "124r132q", "123"].compactMap {
if $0.count == 3 {
return .init(str: $0)
} else {
return nil
}})
将代码分为两部分有助于
var mappedArray: [SomeStruct] = ["123123", "2", "332", "124r132q", "123"].compactMap { $0.count == 3 ? .init(str: $0) : nil }
arr1.append(contentsOf: mappedArray)