Swift Optional中的map和flatMap

 var num1: Int? = 10
//三目运算处理
 var num2 = (num1 != null) ? (num1! + 10) : nil
//map
 var num3 = num1.map{ $0 + 10 }
 print(num3)//Optional(20) 如果num1 = nil,结果就会是nil

总结:map能够安全的处理可选类型,无需解包拿到确切的值,可在需要的时候再去处理得到的可选结果值,flatMap 也可以
那么map 和flatMap 的区别呢?

网上的答案是当我们的闭包参数有可能返回 nil 的时候,用flatMap

 func mapAndFlatmap() {
        let arr = [0,nil,1,nil,2]
        let map_arr = arr.map { $0 }
        print(map_arr)//[Optional(0), nil, Optional(1), nil, Optional(2)]
        let flatmap_arr = arr.compactMap { $0 }
        print(flatmap_arr)//[0, 1, 2]
}

参考:
1.Swift --- Optional的map和flatMap
2.Swift 烧脑体操(四) - map 和 flatMap

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容