美文网首页
Swift Optional中的map和flatMap

Swift Optional中的map和flatMap

作者: 不辣先生 | 来源:发表于2020-08-17 16:19 被阅读0次
     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

    相关文章

      网友评论

          本文标题:Swift Optional中的map和flatMap

          本文链接:https://www.haomeiwen.com/subject/uhyqjktx.html