当使用带有 Optional
可选值的数组类型时,可以使用 .compactMap()
方法轻松地过滤掉 nil
元素。
示例一
有一个 [String?]
的可选字符串的数组 optionalArray
,使用 .compactMap()
方法过滤 nil
值得到 resultArray
结果。
func filterOptional() {
let optionalArray: [String?] = ["red", "blue", nil, "white", "black"]
let resultArray: [String] = optionalArray.compactMap { $0 }
print(resultArray)
// 输出 ["red", "blue", "white", "black"]
}
optionalNumbers.compactMap { $0 }
是简写形式的传递闭包,完整写法可以参考示例二。
示例二
筛选出来可选字符串的数组 optionalArray
的阿拉伯数字
func filterNums() -> String {
let optionalArray = ["一", "2", nil, "3", "四"]
let resultArray = optionalArray.compactMap { numStr in
// 先通过 if let 解包排除 nil
if let numStr {
// 再通过 Int.init?(_ description: String) 方法排除非阿拉伯数字的字符
return Int(numStr)
} else {
return nil
}
}
print(resultArray)
}
本文自 https://www.codeun.com 发布,相应代码均自主编写并严格审阅和测试,完整代码中包含丰富的学习笔记和使用方式、实用技巧。
· 如若转载,请注明出处:https://www.codeun.com/archives/1080.html ·