Swift相关iOS-Swift学习中的Swift

Swift函数柯里化介绍及使用场景

2016-02-16  本文已影响1657人  没故事的卓同学

函数柯里化是函数式编程里的一个重要概念。swift中的柯里化可能很多人都没有了解过,今天给大家介绍一下柯里化的概念和一些使用场景。

定义

柯里化(Currying)是从数学里借用过来的编程语言技法(基于20世纪Haskell Curry等数学家的研究成果)。柯里化指的是从一个多参数函数变成一连串单参数函数的变换。它描述的是变换的过程,不涉及变换之后对函数的调用。调用者可以决定对多少个参数实施变换,余下的部分将衍生为一个参数数目较少的新函数。这个新的函数接收剩下的参数,其内部则指向原始函数。当提供的参数完整了才会最终执行原始函数。

语法

<pre><code>
//普通函数定义

func mutiply(x:Int,y:Int)->Int{

return x*y

}

//柯里化形式

func mutiply(x:Int)(y:Int)->Int{

return x*y

}
</code></pre>
使用如下:
<pre><code>
let twice=mutiply(2)

let result=twice(y: 5) //result等于10

//如果直接在一行里调用就这样写

let result2=mutiply(2)(y: 6)
</code></pre>
例子里的twice的类型是一个闭包,可以粗暴的理解为mutiply的两个参数第一个参数x已经有了个默认值2,twice的参数就是剩下的另一个参数y。

两个细节

应用场景


要强调的一个思维的转化是,函数式编程思想,思考的单位不再是对象,而是函数。使用上的区别是,在某个方法里,如果需要这样一个函数,只需要一个声明,外面传递进来。至于这个函数在哪个对象上实现的不需要关心。和面向接口编程更配哦。

欢迎关注我的微博:@没故事的卓同学

相关链接:
Swift中的函数柯里化(Function Currying)
Swift之柯里化函数
函数式编程初探

上一篇下一篇

猜你喜欢

热点阅读