Currying-柯里化[Swift笔记]
来源:互联网 发布:淘宝网鱼缸 编辑:程序博客网 时间:2024/05/21 09:52
Currying (柯里化)是什么?
把接受多个参数的方法变成接收一个参数的方法,并且返回接受余下的参数而且返回结果的新函数的技术
Currying的概念最早由俄国数学家Moses Schönfinkel引入,之后由数理逻辑学家哈斯格尔·科里(Haskell Curry)将其丰富和发展
简单例子 - 用法
func MulOperation(a: Int)(b: Int) -> Int { return a * b }
调用(1)
let firOpr = self.MulOperation(3) let result = firOpr(b: 10)输出结果是:30
调用(2)
let result = self.MulOperation(2)(b: 3)输出结果是:6
这种形式有点像OC里得调用方式,alloc -> init,先把参数1穿进去得到一个闭包函数,紧接着再拿它去做后继操作
调用(3)
let firOpr = self.MulOperation(2) let lasOpr = 1...100 let results = lasOpr.map(firOpr)
输出结果 2 - 200
仿着实现一个
利用闭包(Closure),我们也来实现Currying
func MulClosure(a: Int) -> (b: Int) -> Int{ return {(b: Int) -> Int in return a * b } }
把最上边调用换一换 实际得到结果一样
func tAddFunction(a: Int) -> (b: Int) -> (c: Int) -> (d: Int) -> Int{ return {(b: Int) -> (c: Int) -> (d: Int) -> Int in return {(c: Int) -> (d: Int) -> Int in return {(d: Int) -> Int in return a + b + c + d } } } }
个人感觉上,有点像把方法组件化使用了,这样得好处就是复用更灵活
0 0
- Currying-柯里化[Swift笔记]
- Swift 柯里化(Currying)
- Swift柯里化(Currying)
- Swift柯里化(Currying)
- Swift 柯里化(Currying)
- Swift柯里化(Currying)
- swift 学习笔记之在柯里化(Currying)
- Swift函数柯里化(Currying)简谈
- 浅谈 Swift 柯里化(Currying)
- Swift 柯里化(currying)和反柯里化(uncurrying)
- 柯里化(Currying)
- 函数柯里化(Currying)
- Scala 函数柯里化(Currying)
- JavaScript中的柯里化(currying)
- 函数柯里化function currying
- Currying
- currying in javascript-js柯里化
- Scala 函数柯里化(Function currying)
- Android内存和进程的关系
- 在C6455上移植NDK
- 内部排序-插入排序-二叉树排序法
- 南阳理工ACM1076--方案数量
- 再谈深度学习文本的表示
- Currying-柯里化[Swift笔记]
- 【C语言】求带环单链表的环长
- C#中的Event的使用
- 黑马程序员——异常的学习笔记和总结
- 基于纹理的特征提取
- messageBox 中显示变量及实现换行
- uva 11584——Partitioning by Palindromes
- Java对象及对象引用变量
- 汉诺塔问题