Swift 中的利刃,函数和闭包
2015-02-15 08:54
330 查看
原文:Swift 中的利刃,函数和闭包
关于闭包的概念,相信有过其他语言开发经验的朋友都不会陌生了。简单来说闭包的语言特性,大大增加了我们的开发效率。而 Swift 更是将闭包运用的游刃有余,仿佛为它而生。下面咱们进入正题。
它的函数类型为:
我们刚刚了解了函数类型的概念,它可以用来作为参数和返回值的类型来使用。
是不是有点奇妙的感觉了? 对,函数本身也是一个对象实例。
闭包的定义包含在一对大括号中,其中
比如我们
再有,如果闭包作为参数列表中的最后一个参数,你可以直接忽略它外面的括号,就像这样:
更多文章请访问: www.theswiftworld.com
更多好文,扫码关注微信公众号:
关于闭包的概念,相信有过其他语言开发经验的朋友都不会陌生了。简单来说闭包的语言特性,大大增加了我们的开发效率。而 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")
定义闭包
我们刚说过,函数也是一种特殊的闭包,那么我们再来看下定义闭包的语法:{() -> () in}
闭包的定义包含在一对大括号中,其中
() ->()定义了函数的参数类型和返回值,
->的左边括号中是参数列表,右边是返回值。然后用
in关键字将闭包的头部和主体分隔开来。对闭包定义的一个描述:
{(param) -> returnType in statements }
比如我们
Array的
sort方法接收的就是一个闭包参数:
var numbers:Array<Int> = [3,5,4,2,1,8] numbers.sort { (lhs, rhs) -> Bool in return lhs < rhs }
闭包的便捷操作
闭包还可以用参数的位置的形式来应用参数 ($0,$1,$2),比如还是上面那个数组例子:var numbers:Array<Int> = [3,5,4,2,1,8] numbers.sort({ return $0 < $1 })
再有,如果闭包作为参数列表中的最后一个参数,你可以直接忽略它外面的括号,就像这样:
numbers.sort { return $0 < $1 }
更多文章请访问: www.theswiftworld.com
更多好文,扫码关注微信公众号:
相关文章推荐
- Swift 中的利刃,函数和闭包
- Swift 中的利刃,函数和闭包
- Swift 中的利刃,函数和闭包
- Swift函数和闭包
- Swift 基础语法三--函数和闭包
- Swift语法基础:3 - Swift的函数和闭包
- swift基础语法(四) 函数、闭包(Closures)
- Swift之旅(三)函数与闭包
- Swift中文教程(四)--函数与闭包
- Swift的函数与函数指针、闭包Closure等相关内容介绍
- swift 学习(二)基础知识 (函数,闭包,ARC,柯里化,反射)
- swift中的函数用法,嵌套函数和返回一个函数以及函数作为参数,闭包
- Swift学习笔记-函数和闭包(1)
- swift 函数和闭包
- 苹果新的编程语言 Swift 语言进阶(六)--函数和闭包
- Swift入门篇-闭包和函数
- Swift之函数和闭包
- Swift笔记(五)之函数与闭包(Functions and Closures)
- Swift函数和闭包
- Swift基础语法: 23 - Swift的闭包简介, Sorted函数, 闭包的表达式语法, 根据上下文推断类型, 参数名简写, 运算符函数