Swift

Swift高阶函数map、flatMap、CompactMap

2022-03-24  本文已影响0人  十年开发初学者

高阶函数

高阶函数的本质也是函数,有两个特点

Map函数

let nums = [1,2,3,4,5,6,7,8]
var mapNums = nums.map {
    $0 + 1
}
print("mapNums:\(mapNums)")
image.png

flatMap函数

let numFlat = [[1,2,3,4],[8,9,7,6]]
let numsFlatMap = numFlat.flatMap {
 $0
}
print("numsFlatMap:\(numsFlatMap)")

image.png

CompactMap函数

let nums = [1,2,nil,3,4,5,6,7,8,nil,nil]
let compactMapNums = nums.compactMap {
    $0
}
print("compactMapNums:\(compactMapNums)")
image.png

filter函数

let nums = [1,2,3,4,5,6,7,8]
var filterNums = nums.filter {
    $0 < 5
}
print("filterNums:\(filterNums)")

reduce函数

let nums = [1,2,3,4,5,6,7,8]
nums.reduce([Int]()) {
    print("$0:\($0),$1:\($1)")
    return $0
}

image.png
let nums = [1,2,3,4,5,6,7,8]
let reduceNums = nums.reduce([Int]()) {
    [$1] + $0
}
print("reduceNums:\(reduceNums)")

image.png

高阶函数链式调用

求一个数组中偶数的平方和
let nums = [1,2,3,4,5,6,7,8]
let numTemp = nums.filter {
    $0 % 2 == 0
}.map {
    $0 * $0
}.reduce(Int()) {
    $0 + $1
}
print("numTemp:\(numTemp)")
let nums = [1,2,3,4,5,6,7,8]
let numTemp = nums.filter {
    $0 % 2 == 0
}.reduce(Int()) {
    $0 + $1 * $1
}
print("numTemp:\(numTemp)")

let nums = [1,2,3,4,5,6,7,8]
let numTemp = nums.reduce(Int()) {
    $1 % 2 == 0 ? $0 + $1 * $1 : $0
}
print("numTemp:\(numTemp)")

上一篇 下一篇

猜你喜欢

热点阅读