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]

你可能感兴趣的:(map 和 flatMap)