发布于 2014-10-29 09:56:12 | 154 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的Swift教程,程序狗速度看过来!

Swift编程语言

SWIFT,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C*共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序。


本文为大家讲解的是Swift 柯里化(Currying)使用详解,感兴趣的同学可以参考下。

在 计算机科学中,柯里化(英语:Currying),又譯為卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函 数,并且返回接受余下的参数而且返回结果的新函数的技术。这个技术由 Christopher Strachey 以逻辑学家哈斯凱爾·加里命名的,尽管它是 Moses Schönfinkel 和 戈特洛布·弗雷格 发明的。

 

——维基百科

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

只需要传入第一个参数,返回的sumByOne是一个函数,它包含剩余的其他参数,以及刚刚传入进去的那个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)

 



最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务