Currying-柯里化[Swift笔记]
2015-11-29 17:17
330 查看
Currying (柯里化)是什么?
把接受多个参数的方法变成接收一个参数的方法,并且返回接受余下的参数而且返回结果的新函数的技术
Currying的概念最早由俄国数学家Moses Schönfinkel引入,之后由数理逻辑学家哈斯格尔·科里(Haskell
Curry)将其丰富和发展
简单例子 - 用法
调用(1)
调用(2)
这种形式有点像OC里得调用方式,alloc -> init,先把参数1穿进去得到一个闭包函数,紧接着再拿它去做后继操作
调用(3)
输出结果 2 - 200
仿着实现一个
利用闭包(Closure),我们也来实现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 } } } }
个人感觉上,有点像把方法组件化使用了,这样得好处就是复用更灵活
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- Apple Swift学习教程
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- 浅析iOS应用开发中线程间的通信与线程安全问题
- Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
- Swift编程中的泛型解析
- Swift中定义二维数组的方法及遍历方法示例
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解