Currying-柯里化[Swift笔记]
发布时间:2020-12-14 01:36:29 所属栏目:百科 来源:网络整理
导读:Currying (柯里化)是什么? 把接受多个参数的方法变成接收一个参数的方法, 并且返回接受余下的参数而且返回结果的新函数的技术 Currying的概念最早由俄国数学家 Moses Sch?nfinkel 引入,之后由数理逻辑学家哈斯格尔·科里 (Haskell Curry) 将其丰富和发展 简
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 } } } }
个人感觉上,有点像把方法组件化使用了,这样得好处就是复用更灵活 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |