您的位置:首页 > 移动开发 > Swift

Currying-柯里化[Swift笔记]

2015-11-29 17:17 330 查看
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
}
}
}
}


个人感觉上,有点像把方法组件化使用了,这样得好处就是复用更灵活
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  swift IOS Currying