Swift高阶函数介绍(闭包、Map、Filter、Reduce)
Swift语言有很多函数式编程的特性,常见的map,reduce,filter都有,初看和python差不多,下面简单介绍下 闭包介绍:闭包是自包含的功能代码块,可以在代码中使用或者用来作为参数传值。 假设我们需要两个函数,其中一个计算两个数的平方的平均值,另一个计算两个数的立方的平均值,传统的解决方法会是这样:
我们注意到averageSumOfSquares和averageSumOfCubes的唯一不同只是分别调用平方函数或立方函数。如果我能够定义一个通用函数,这个函数以两个数和一个使用这两个数的函数作为参数,来计算平均值而不是重复调用将会非常好,我们可以使用闭包作为函数参数 func averageOfFunction(a:Float,b:Float,f:(Float -> Float)) -> Float { return (f(a) + f(b)) / 2}averageOfFunction(3,4,square)averageOfFunction(3,cube) 在Swift中有很多种定义闭包表达式的方法,这里从最啰嗦的开始展示到最简洁的为止: averageOfFunction(3,{(x: Float) -> Float in return x * x})averageOfFunction(3,{x in return x * x})averageOfFunction(3,{x in x * x})averageOfFunction(3,{$0 * $0}) Map在Swift中Map是Array类的一个方法,我们可以使用它来对数组的每个元素进行转换。 Filterfilter用于选择数组元素中满足某种条件的元素。 Reducereduce方法把数组元素组合计算为一个值。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |