欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Swift-通过 Emoji 来理解 Swift 高阶函数

程序员文章站 2024-03-23 09:01:34
...

如果一个函数接受别的函数作为参数 ,或者一个函数的返回值是函数,那么这样的函数就叫做高阶函数 (higher-order function)


Swift 为我们提供很多高级函数,这也从另一方面说明了swift 比 Objective-C 高级之处

  • map—对集合中的元素进行变换
  • flatMap—如何对元素进行变换,并且可以过滤元素
  • filter—元素是否应该被包含在结果中
  • reduce—如何将元素合并到一个总和的值中

其他函数

  • forEach—对于一个元素,应该执行怎样的操作
  • sort—对数组进行排序,数组内元素可以为数字,也可以为字符串
  • min和max—两个元素中的最小/最大值是哪个

map

map 可以对一个集合类型的所有元素做一次映射操作

Emoji 示意:

Swift-通过 Emoji 来理解 Swift 高阶函数

解释:“牛、土豆、鸡、玉米” –> map –> “汉堡、薯条、鸡腿、爆米花”
数组中的“牛、土豆、鸡、玉米” 经过 map() 函数中的“火”进行变换产生 “汉堡、薯条、鸡腿、爆米花”
所以map的作用是对每一个元素进行变换

map 具体代码演示:

Swift-通过 Emoji 来理解 Swift 高阶函数


flapMap

flapMap拥有map的功能,通过支持更多功能
flapMap 可以过滤掉返回结果为 nil 的元素
flapMap 可以将二维数据转换成一维的

Emoji 示意:

Swift-通过 Emoji 来理解 Swift 高阶函数

参考资料:谈谈 Swift 中的 map 和 flatMap

flatMap 具体代码演示:

Swift-通过 Emoji 来理解 Swift 高阶函数


filter

通过条件对集合中的元素进行过滤

Emoji 示意:

Swift-通过 Emoji 来理解 Swift 高阶函数

解释:数组中的食物经过 filter() 函数中的 “小孩” 条件进行筛选,选择出小孩喜欢的食物

filter 具体代码演示:

Swift-通过 Emoji 来理解 Swift 高阶函数


reduce

把数组元素组合计算为一个值

表达式:

 reduce(initial: U, combine: (U, T) -> U) -> U

Emoji 示意:

Swift-通过 Emoji 来理解 Swift 高阶函数

解释:食物通过 reduce() ,饥饿的表情把每一个食物吃掉,变成开新的表情
reduce()中第一个参数是初始值,返回结果为最终值

Swift-通过 Emoji 来理解 Swift 高阶函数


其他函数

forEach

遍历集合中每一个元素

// forEach 代替 for 循环
var names = ["Mazy","Lucy","Lily","Vivian"]
names.forEach { (name) in
    print(name)
}

sort/sorted

对集合中的元素进行排序,包含数组和字符串

let someNum = [3,6,54,6785,34,697,23,8]
let sortResult = someNum.sorted(by: {$0 < $1})
sortResult // [3, 6, 8, 23, 34, 54, 697, 6785]

let array = ["Mazy","Lucy","Lily","Vivian","Allen","Xxx"]
let sorted = array.sorted(by: {$0 < $1})
sorted // ["Allen", "Lily", "Lucy", "Mazy", "Vivian", "Xxx"]

min/max

获取集合中两个或多个元素的最大值或最小值

let min1 = min(888, 66) // 66
let min2 = min(6, 1, 8, 38) // 1

let max1 = max(8, 6)  // 8
let max2 = max(32,43,57,99) // 99