Swift中Array高阶函数的使用

2020-09-28  本文已影响0人  LazyLoad

前言

在Swift中,有关于Array的高阶函数。这一点和JavaScript是一样的。也就是说,Swift也是支持函数式编程的。

关于Array有以下几个高阶函数:filter map reduce flatMap compactMap。其中前三个和JavaScript语言是一样的,不同的是语法不同而已。下面我们就来探索一下这5个高阶函数。掌握了这些高阶函数,可以让我们对于一些关于数组处理更加得心应手。

实践

let array = [1, 2, 3, 4]
let newArray = array.filter { (n) -> Bool in
    return n % 2 == 0
}
print(newArray) // [2, 4]

// 利用Swift语言的语法糖 上面的代码还可以进行进一步的简化
let newArray = array.filter { $0 % 2 == 0 }
print(newArray) // [2, 4]
let array = [1, 2, 3, 4]
let newArray = array.map { n in
    return n * 2
}
print(newArray) // [2, 4, 6, 8]

// 简写
let newArray = array.map { $0 * 2 }
print(newArray) // [2, 4, 6, 8]
let array = [1, 2, 3, 4]
let result = array.reduce(0) { (previousResult, n) in
    return previousResult + n
}
print(result) // 10

// 简写
let result = array.reduce(0) { $0 + $1 }
print(result) // 10
let array = [1, 2, 3, 4]
let newArray = array.map { n in
    return Array(repeating: n, count: n)
}
print(newArray) // [[1], [2, 2], [3, 3, 3], [4, 4, 4, 4]]

let newArray2 = array.flatMap { n in
    return Array(repeating: n, count: n)
}
print(newArray2) // [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]

// 简写
let newArray = array.flatMap { Array(repeating: $0, count: $0) }
print(newArray) // [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
let array = ["1", "flutter", "3", "Vue"]

let newArray = array.map { item in
    return Int(item)
}
print(newArray) // [Optional(1), nil, Optional(3), nil]

let newArray2 = array.compactMap { item  in
    return Int(item)
}

print(newArray2) // [1, 3]

// 简写
let newArray = array.compactMap { Int($0) }
print(newArray) // [1, 3]
上一篇 下一篇

猜你喜欢

热点阅读