map 和 flatMap 这两兄弟转文负责将 “一个数组 转化为 另外一个数组”。
let testArray = ["test1","test1234","","test56"]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很像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]