Swift的上帝之类的功能:map,filter,reduce,flatmap。
还记得面试官要求您将代码优化为一行的时候吗? 我总是对我有这种感觉。 但是Apple的新语言(已经3年了,但仍然很新)Swift通过引入诸如map,reduce,filter,flatmap higher的高阶函数而获得了支持。
让我一一介绍。
地图
Map用于迭代一个集合,并返回一个数组,其中包含将给定闭包映射到序列元素上的结果。
使用地图,我们可以轻松更改任何元素的值。
假设我们想将美元转换为印度货币,并且有以下数组,
令USD = [10,20,30,40,50]
我真的不想向您展示我们已经遵循多年的常规惯例,您也不是为此而来,不是吗? 让我们开始潜水吧
要将USD转换为INR(印度卢比),我们可以编写一个神奇的代码,例如
令INR:[Float] = USD.map {Float($ 0)* 65.32}
// [653.200012,1306.40002,1959.59998,2612.80005,3266.0]
瞧! 😇
输出将是Float数组,其中包含所有转换为INR(最大成就)的值。
有趣吗?
过滤
另一个可口的方法用于遍历集合并返回仅包含那些与条件匹配的元素的数组。
让我们考虑一下,我们只需要数组中的偶数,
让arrayOfNumbers = [1、2、3、4、5、6、7、8、9]
我们可以通过写得到偶数,
let evenNumbers = arrayOfNumbers.filter {$ 0%2 == 0}
// [2,4,6,8]
降低
Thanos手套的另一块无限石。😍
这将返回一个值,该值是通过合并集合中的所有值得到的。
让我们考虑另一个通用数组,
让itemPrice = [10、20、30、40、50]
减少功能将是
设total = itemPrice.reduce(0,+)
// 150
在这里,括号中的第一个元素是初始值,即0,它将与元素数组求和。
现在是决赛
平面图
这就像目前为止最惊人的方法。
Flatmap可以将2D数组组合为单个数组,这是3至4行编码,使其成为“ 1”。
用简单的话来说,flatmap使集合变得平坦。
让我们看看如何
让aTowDimentionalArray = [[1、2、3],[4、5、6]]
让flattenedArray = aTowDimentionalArray.flatMap {$ 0}
// [1、2、3、4、5、6]
就是所谓的“一行编码器”。😎
我知道这是非常基础的教程,但我想您已经明白了。
这是我在Medium上的第一个博客,因此请忽略错误并喜欢本教程。 和平✌️