Swift 柯里化(Currying)
2016-07-02 11:03
281 查看
转自: http://blog.csdn.net/zhangao0086/article/details/38851759
如有侵犯,请来信oiken@qq.com
Swift支持将方法柯里化,类似于批量创建某个带有固定参数的方法,就像下面这个例子,用Swift做个简单的加法运算:
func sum(a: Int,b: Int) -> Int {
return a + b
}
sum(1, 2) //输出3
创建一个柯里化的方法很容易,虽然看起来似乎和我们以前写的方法不太一样,但大体来说是相似的:
参数列表的每个参数都用单独的圆括号括起来,其他部分都和以前一样,把上面那个简单的Swift标准方法改成柯里化之后就像这样:
func sum(a: Int)(b: Int) -> Int {
return a + b
}
var sumByFirst = sum(1)
sumByFirst(b: 4) //输出5
只需要传入第一个参数,返回的sumByFirst是一个函数,它包含剩余的其他参数,以及刚刚传入进去的那个1,接着以它自己作为方法传入第二个参数b就行了。
如果是三个参数就像这样:
func sum(a: Int)(b: Int)(c: Int) -> Int {
return a + b + c
}
var sumByFirst = sum(1)
var sumBySecond = sumByFirst(b: 4)
sumBySecond(c: 10) //输出15
除了第一个参数以外,其他的参数都要显式地写上参数标签,并且要按参数排列的顺序调用。
一个括号中放两个参数也可以:
func sum(a: Int)(b: Int, c: Int) -> Int {
return a + b + c
}
var sumByFirst = sum(1)
sumByFirst(b: 4,c: 10) //输出15
在某些情况下,你可能会用某个相同的参数重复调用某个方法,那么利用柯里化会使代码更易于维护:
func sum(a: Int)(b: Int) -> Int {
return a + b
}
var sumWithFive = sum(5)
sumWithFive(b: 5)
sumWithFive(b: 10)
sumWithFive(b: 15)
如有侵犯,请来信oiken@qq.com
在计算机科学中,柯里化(英语:Currying),又譯為卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。这个技术由 Christopher Strachey 以逻辑学家哈斯凱爾·加里命名的,尽管它是 Moses Schönfinkel 和 戈特洛布·弗雷格 发明的。 ------维基百科 |
func sum(a: Int,b: Int) -> Int {
return a + b
}
sum(1, 2) //输出3
创建一个柯里化的方法很容易,虽然看起来似乎和我们以前写的方法不太一样,但大体来说是相似的:
参数列表的每个参数都用单独的圆括号括起来,其他部分都和以前一样,把上面那个简单的Swift标准方法改成柯里化之后就像这样:
func sum(a: Int)(b: Int) -> Int {
return a + b
}
var sumByFirst = sum(1)
sumByFirst(b: 4) //输出5
只需要传入第一个参数,返回的sumByFirst是一个函数,它包含剩余的其他参数,以及刚刚传入进去的那个1,接着以它自己作为方法传入第二个参数b就行了。
如果是三个参数就像这样:
func sum(a: Int)(b: Int)(c: Int) -> Int {
return a + b + c
}
var sumByFirst = sum(1)
var sumBySecond = sumByFirst(b: 4)
sumBySecond(c: 10) //输出15
除了第一个参数以外,其他的参数都要显式地写上参数标签,并且要按参数排列的顺序调用。
一个括号中放两个参数也可以:
func sum(a: Int)(b: Int, c: Int) -> Int {
return a + b + c
}
var sumByFirst = sum(1)
sumByFirst(b: 4,c: 10) //输出15
在某些情况下,你可能会用某个相同的参数重复调用某个方法,那么利用柯里化会使代码更易于维护:
func sum(a: Int)(b: Int) -> Int {
return a + b
}
var sumWithFive = sum(5)
sumWithFive(b: 5)
sumWithFive(b: 10)
sumWithFive(b: 15)
相关文章推荐
- 一种swift编码风格指南(供参考,by linkedin)
- 一种swift编码风格指南(供参考,by linkedin)
- Swift - 使用NSURL进行数据的提交和获取(POST与GET)
- GCD学习 - swift GCD使用指南
- Swift 语法
- Swift中的Void类型与空元祖表达式
- 自定义数据类型 --- 类的属性和方法全解(swift2.3)
- 详解Swift面向对象编程中的方法(method)
- Swift中的类class与结构体struct体学习笔记
- 深入解析Swift编程中的构造方法
- Swift ☞ 对比学习Swift构造器
- Swift - 文件,文件夹操作大全
- Swift3.0P1 语法指南——基础
- 纯代码讲解swift的指针
- [Swift 开发] 圆角优化
- swift 学习指南
- Java/Swift 单例模式的多种写法
- Swift - UIPasteboard剪贴板的使用详解(复制、粘贴文字和图片)
- dyld: library not loaded: 错误解决
- openstack成长之旅 - 5 Swift介绍安装及作者的反思