Swift高阶函数:Map,Filter,Reduce等-Part 1
译者:candeladiao(github地址),欢迎将精彩内容分享到CocoaChina。 Swift一大特性便是使用简洁的头等函数/闭包语法代替了复杂的blocks语法。希望我们在Swift中不再需要像fuckingblocksyntax中所描述的语法。(译者注:头等函数-即可将函数当作参数传递给其他的函数,或从其他的函数里返回出值,并且可以将他们设定为变量,或者将他们存储在数据结构中) 闭包是自包含的blocks,它能在代码中传递和使用。 本文我们将重点介绍匿名定义的闭包(如:定义成内联的且不具名)也称匿名闭包。我们能够将其作为参数传递给其他函数/方法或者将其作为返回值。闭包是极其强大的语言特性,它能够使我们编写程序的时候更快,更容易,更少出错。 Blocks/闭包(同一概念的不同命名)在Cocoa和Cocoa Touch中广泛使用,是iOS框架的核心。 让我们来看一些闭包例子以及它们为什么如此有用: 假设我们需要两个函数,其中一个计算两个数的平方的平均值,另一个计算两个数的立方的平均值,传统的解决方法会是这样:
我们注意到averageSumOfSquares和averageSumOfCubes的唯一不同只是分别调用平方函数或立方函数。如果我能够定义一个通用函数,这个函数以两个数和一个使用这两个数的函数作为参数,来计算平均值而不是重复调用将会非常好,我们可以使用闭包作为函数参数
|