Swift:map 和 flatMap 基礎入門

daqian 9年前發布 | 8K 次閱讀 Swift Apple Swift開發

借助于 map和flapMap 函數能夠很輕易地將數組轉換成另外一個新數組。

Map

map函數能夠被數組調用,它接受一個閉包作為參數,作用于數組中的每個元素。閉包返回一個變換后的元素,接著將所有這些變換后的元素組成一個新的數組。

這聽起來有些復雜,但它是相當簡單的。想象你擁有一個string類型的數組:

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

map函數的閉包接收一個字符串(類型為string)作為參數,原因在于我們調用函數處理的數組元素類型為String。本例中,我們想要返回一個整型數組,逐個對應字符串元素成員的字符長度。因此閉包的返回類型為Int?.

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的元素。

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函數不同之處在于:倘若元素值不為nil情況下,flapMap函數能夠將可選類型(optional)轉換為非可選類型(non-optionals)。

 

來自:http://swift.gg/2015/11/26/swift-map-and-flatmap/

 本文由用戶 daqian 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!