Swift 函数式编程: map 和 flatMap的区别

基本概念

map 和 flatMap 这两兄弟转文负责将 “一个数组 转化为 另外一个数组”。

let testArray = ["test1","test1234","","test56"]

map

map函数能够被数组调用,它接受一个闭包作为参数,作用于数组中的每个元素,闭包返回一个变换后的元素,接着将所有这些变换后的元素组成一个新的数组

let anotherArray = testArray.map { (string:String) -> Int? in  
    let length = string.characters.count  

    guard length > 0 

    else { 
      return nil 
    }  

    return string.characters.count} 
print(anotherArray) //[Optional(5), Optional(8), nil, Optional(6)]

flatMap

flatMap很像map函数,但是它摒弃了那些值为nil的元素
另外一个与map函数不同之处在于:倘若元素值不为nil情况下,flapMap能够将可选类型(optional)转换为非可选类型(non-optionals)

let anotherArray2 = testArray.flatMap { (string:String) -> Int? in 
    let length = string.characters.count  
     guard length > 0 

    else { 
      return nil
    }  

    return string.characters.count
} 
print(anotherArray2) //[5, 8, 6]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冯子一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值