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 中的利刃函数的主要内容,如果未能解决你的问题,请参考以下文章

Swift 学习笔记 (函数)

swift swift中的压缩函数

Swift 中的高阶函数和函数嵌套

为啥函数调用需要 Swift 中的参数名称?

Swift 中的函数和方法有啥区别?

Appdelegate.swift 中的调用函数