在swift中有很多的高阶函数,比如map,sort,reduce,filter等等,这里我会挨个来讲一下原理和使用方法,举的例子都很简单通俗,没有什么难度。
1.map函数
在苹果的sdk中对于map函数介绍:
/// Return an `Array` containing the results of calling
/// `transform(x)` on each element `x` of `self`
大体意思就是说,返回一个包含了调用以x为参数transform函数结果的数组。这是一般的使用情况
在苹果文档中的说的transform函数我个人理解就是x*2了。map函数的本意应该是通过某一个函数来映射一个数组。
我现在各一个最基本的用法,当你用数组map的时候不经过什么结构上面的改动,上面这个进行了一些稍微的改变。对比看一下
2.Sort函数
sort函数的作用大家应该都能理解,感觉再解释就是多此一举了。直接看看例子吧,这并不难
ass = [1,2,3]
3.Reduce函数
这个函数需要好好地介绍一下了,我最开始并没有对这个函数引起多大的注意,直到有人给我说了这个函数的重要之处之后我觉得是应该好好来了解一下它了
我们先来看看结果,然后来看看其中的工作原理
是时候来工作的原理了,
reduce(initial: U) { (U, T) -> U in
code
}
这是该函数的原型。
苹果对于其的介绍:
/// Return the result of repeatedly calling `combine` with an
/// accumulated value initialized to `initial` and each element of
/// `self`, in turn, i.e. return
/// `combine(combine(...combine(combine(initial, self[0]),
/// self[1]),...self[count-2]), self[count-1])`.
我用比较通俗的方法来简要的说明一下这里面大概说明的意思吧:比如我们有个初始的数组 firArray = [1,2,3],我们有个初始值,就是上面苹果文档里面提到的initial=2,我们还需要设定一个combine方式2*x+y(这里面的x,y只是代表两个参数而已,没有实际意义),用result来存最后的值吧,我来罗列一下:
firArray = [1,2,3]
initial=2
combine=2*x+y
result = 0。
在这里会一共会运行firArray.count次(这里就是运行3次)
现在来一步一步的讲解吧:
第一次:
请仔细看,这里的x=initial(这里给个别名叫x1吧),而y=firArray[0](这里叫y1吧)
第二次:
请将事先放大combine了
这里的x=2*x1+y1(这里叫x2吧),y=firArray[1](这里叫y2吧)
第三次:
这里的x=2*x2+y2(这里叫x3吧),y=firArray[2](这里叫y3吧)
所以运行完成之后就得到最开始得到的值27了
4.Filter函数
在苹果的文档中是这么说的:
/// Return an `Array` containing the elements `x` of `self` for which
/// `includeElement(x)` is `true`
对于这个函数原理和功能就比较明显,我对于它的理解是:筛选器。说到筛选就必要要有一个筛选条件,而筛选条件就是这个函数的关键之处。老规矩,给个例子来讲解一下。
filter函数返回为真,而这里面的x%2==0这个便是筛选的条件了,原数组为[1,2,3]满足条件的就为2。x为遍历数组ass里面的每一个元素。
5.Reverse函数
reverse函数则是为了倒序一个数组