Swift 中的利刃函数
Posted iOS开发
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift 中的利刃函数相关的知识,希望对你有一定的参考价值。
关于闭包的概念,相信有过其他语言开发经验的朋友都不会陌生了。简单来说闭包的语言特性,大大增加了我们的开发效率。而 Swift 更是将闭包运用的游刃有余,仿佛为它而生。下面咱们进入正题。
Swift 中闭包的概念就像是 Objective-C 中的 block。 闭包可以嵌套和作为参数传递。 在 Swift 中,函数也只不过是一种特殊的闭包。
定义函数
Swift 中 可以使用 func 关键字来定义函数。函数可以接收并返回一个或者多个参数和元组。 返回值跟随在 -> 符号后。
func sayHello(firstName: String, lastName: String) -> String {
return "Hello \(lastName) \(firstName)"
}
调用函数
prinln(sayHello("John", "Smith")) //"Hello Smith John"
函数的类型
每个函数都有它自己的函数类型,通过它的参数和返回值来确定。比如这个函数:
func add(left: Int, right:Int) -> Int { return left + right }
它的函数类型为:
(Int, Int) -> (Int)
我们刚刚了解了函数类型的概念,它可以用来作为参数和返回值的类型来使用。
将函数作为参数和返回值传递
下面这个函数的返回值仍然是一个函数,并且作为返回值的这个函数可以赋值给一个变量并调用:
func buildSayHello() -> (String,String) -> String {
func hello(firstName:String, lastName:String) -> String {
return "Hello \(lastName) \(firstName)"
}
return hello
}
let hello = buildSayHello()
hello("John","Smith")
是不是有点奇妙的感觉了? 对,函数本身也是一个对象实例。
带有可变参数的函数
函数还可以接收任意数量的参数,通过 ... 来表示,然后我们就可以在函数体中用数组的形式访问这个函数了:
func todo (tasks:String...) -> () {
for task in tasks {
println("* \(task)")
}
}
todo("exercise","study","sleep")
来自:http://www.swiftcafe.io/2015/02/14/swift-tips-func-closure/
猿圈 (ID: CodePush )(←长按复制)
为程序员提供最优质的博文、最精彩的讨论、最实用的开发资源;提供最新最全的编程学习资料:php、Objective-C、Java、Swift、C/C++函数库、.NET Framework类库、J2SE API等等。并不定期奉送各种福利。
以上是关于Swift 中的利刃函数的主要内容,如果未能解决你的问题,请参考以下文章