Currying-柯里化[Swift笔记]
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 inreturn {(c: Int) -> (d: Int) -> Int inreturn {(d: Int) -> Int in
return a + b + c + d
}
}
}
}
个人感觉上,有点像把方法组件化使用了,这样得好处就是复用更灵活
【Currying-柯里化[Swift笔记]】
推荐阅读
- parallels|parallels desktop 解决网络初始化失败问题
- 第326天
- 牛人进化+|牛人进化+ 按自己的意愿过一生
- MongoDB,Wondows下免安装版|MongoDB,Wondows下免安装版 (简化版操作)
- 松软可口易消化,无需烤箱超简单,新手麻麻也能轻松成功~
- 为什么孩子一定要学会可视化思维!
- 试论化院的学生自组织
- 【变化】我的青椒学习之旅
- 中国MES系统软件随工业化成长
- 私有化轻量级持续集成部署方案--03-部署web服务(下)