100Tips - 柯里化(Currying)
2016-10-08 本文已影响0人
FansX
- 柯里化的含义
柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。
- Swift中的柯里化
- example1
// num + 1的函数
func addOne(num: Int) -> Int
{
return num + 1
}
// 将 +1 变成自定义 +adder的函数
func addTo(adder: Int) -> Int -> Int {
return { num in
return num + adder
}
}
// 将num+1的需求模块化为两个传单个参数的函数
let addOne(num: Int) = addTo(1)
addOne(2)
// 柯里化
addTo(1)(2)
- example2
class Currying {
func add(a: Int, b: Int, c: Int) -> Int
{
return a + b + c
}
// 手动实现柯里化
func add(a: Int) -> (b: Int) -> (c: Int) -> Int
{
return { (b: Int) -> (c: Int) -> Int in
return { (c: Int) -> Int in
return a + b + c
}
}
}
// 系统自定义柯里化
func addCur(a: Int)(b: Int)(c: Int) -> Int {
return a + b + c
}
}
//
let currying = Currying()
currying.add(1, b: 2, c: 3)
// 一个一个传参的柯里化
currying.addCur(1)(b: 2)(c: 3)
```
- 柯里化的实际应用
部分开发中相似的流程可以用柯里化的设计思想 模块化,然后一个一个模块拼接
后续会在项目中使用并附上代码, 待更新。。。。。。