Swift 3中带有数组的高阶函数
从函数式编程中汲取灵感,Swift 3推出了高阶函数。
高阶函数(缩写为HOF)是将函数作为输入和/或产生函数作为输出的函数。 Swift 3引入了几个高阶函数。 本文将演示Swift 3高阶函数中的三个函数的一些易于理解的用法。
- 地图
- 降低
- 过滤
值得一提的是,以上所有HOF均可与Array和Dictionary一起使用。
地图
当您要对字典或数组的每个元素执行特定操作时,可以使用Swift的map函数。
在数组中,映射可以用作:
var arrayOfNumbers = [1,2,3,4,5,6,7,8,9,10]
让加工数组= arrayOfNumbers.map {(num)-> Int in
返回num + 1
}
在上面的示例中,我们采用1到10的整数数组。我们的目标是使用map函数将数组中的每个数字加1。 num参数是用于每个元素的标识符,可以用任何有效的Swift标识符替换。 在上面的map方法实现中,我们正在做以下事情
- 我们从arrayOfNumbers中获取每个元素
- 我们将该数字分配给num(在第二行代码中)
- 我们打算为每个元素返回一个整数。 这实质上意味着我们的计算将得出一个整数。 由于我们将每个数字加1,因此结果也将是整数。
- 最后,在块内,我们返回递增的数字。
上面的所有四个步骤将对数组或字典中的所有n个元素进行。 一旦所有元素都被处理,新数组将被存储在processedArray中。
降低
Swift 3中的reduce函数用于将数组或字典的值减少为单个值。 让我们考虑一个示例,在该示例中我们想要获取数组中所有数字的总和。 传统的方法是在元素上循环并在变量中累加和。
var sum = 0
用于arrayOfNumbers中的num {
总和=总和+数字
}
print(“ Sum is \(sum)”)
更好,更清洁的方法是使用reduce函数。
arrayOfNumbers.reduce(0,{$ 0 + $ 1})
在上面的代码行中,0是开头的初始数字。 数字为0或其他任何值都非常主观,并且在每种情况下都会有所不同。 例如,如果要查找数组中数字的乘积,则需要将其替换为1。下一个块仅累加了包含的值。
过滤
顾名思义,过滤器功能用于过滤数组或字典的项目。 例如,假设我们要从数组中找到偶数
对于一个偶数,当除以2时,它应该给出提醒0。对于过滤器,计算块返回一个布尔值。 表示是否满足过滤条件。
var arrayOfNumbers = [1,2,3,4,5,6,7,8,9,10]
让evenNumbers = arrayOfNumbers.filter {(eachNumber)-> Bool in
返回(eachNumber%2)== 0吗? 真假
}
目前为止就这样了。 如果您有任何疑问或建议,请大声喊叫!