Swift 3中带有数组的高阶函数

从函数式编程中汲取灵感,Swift 3推出了高阶函数。

高阶函数(缩写为HOF)是将函数作为输入和/或产生函数作为输出的函数。 Swift 3引入了几个高阶函数。 本文将演示Swift 3高阶函数中的三个函数的一些易于理解的用法。

  1. 地图
  2. 降低
  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方法实现中,我们正在做以下事情

  1. 我们从arrayOfNumbers中获取每个元素
  2. 我们将该数字分配给num(在第二行代码中)
  3. 我们打算为每个元​​素返回一个整数。 这实质上意味着我们的计算将得出一个整数。 由于我们将每个数字加1,因此结果也将是整数。
  4. 最后,在块内,我们返回递增的数字。

上面的所有四个步骤将对数组或字典中的所有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吗? 真假 
  } 

目前为止就这样了。 如果您有任何疑问或建议,请大声喊叫!