100Tips - 柯里化(Currying)

2016-10-08  本文已影响0人  FansX

柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。


// 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)
  1. 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)
```


部分开发中相似的流程可以用柯里化的设计思想 模块化,然后一个一个模块拼接

后续会在项目中使用并附上代码, 待更新。。。。。。

上一篇下一篇

猜你喜欢

热点阅读