基本概念
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]
网友评论