天天看點

Swift4.1 新特性compactMap函數

關于compactMap函數

蘋果在Swift 4.1中新增compactMap函數,用來代替flatMap函數。

在Swift标準庫中compactMap定義如下

在Swift标準庫中flatMap定義如下

從定義可以看出,經過flatMap後一定變成字元串數組,而compactMap是任意類型的數組。進而compactMap使用更加靈活。

compactMap函數的應用

1.過濾 nil

let nums = [, nil, , nil, ]
let result = nums.compactMap { (item) -> Int? in
    return item
}
print(result) // [, , ]
           

簡潔文法,可這樣使用

let result = nums.compactMap { return $ }
print(result) // [1, 3, 5]
           

2.類型轉換

let nums = [, , , , ]
let result = nums.compactMap { (item) -> String? in

    return "\(item)"
}
print(result) // ["1", "2", "3", "4", "5"]
           

簡潔文法,可這樣使用

let nums = [, , , , ]
let result = nums.compactMap { return "\($0)" }
print(result) // ["1", "2", "3", "4", "5"]
           

3.篩選資料 - 能被4整除的數

let nums = [, , , , ]
let result = nums.compactMap { (item) -> Int? in

    if item% ==  {
        return item
    }
    return nil
}
print(result) // [12, 44]
           
compactMa函數不僅僅以上的使用,本文隻是引進門。