闭包的认识:
闭包 (Closures) 是可以在你的代码里传递和使用的,自包含的功能代码块。Swift 里的闭包跟 C 和 Objective-C 里的 block 类似,也就是其他语言里的所谓的 lambda 。
闭包表达式语法的常见形式如下:
{ (参数列表) -> 返回值类型 in
一系列语句
}
闭包表达式可以使用常量参数,变量参数和 inout 参数,但是不允许参数默认值。可变参数仅允许出现在参数列表的末尾。元组 (Tuple) 类型也可以作为参数类型和返回值类型
let names = ["Chris","Alex","Ewa","Barry","Daniella"]
reversed = sort(names,{ (s1: String,s2: String) -> Bool in return s1 > s2 })
闭包的函数体 (body) 是通过 in 关键字开始的,这个关键字表示闭包的参数和返回值类型定义结束,接下来是闭包的函数体。
reversed = sort(names,{ s1,s2 in return s1 > s2 } )
如果将闭包传递给一个函数作为内联闭包,我们总是也许可以推断出它的参数类型和返回值类型,因此,你很少需要以完整的形式来编写内联闭包。
虽然如此,如果你愿意,你还是可以明确地写上类型,我们鼓励这样的方式,这可以让你的代码的阅读者避免歧义。
Swift 自动地为内联闭包提供了参数名的快速记法,可以使用
如果你在闭包表达式里使用参数名速记法,你可以从定义里忽略掉参数列表,从预期的函数类型就可以推断出速记法里的参数的序号数字和类型。in 关键字也可以被忽略,因为闭包表达式完全由它的函数体组成:
reversed = sort(names,{ $0 > $1 } )
这里的
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。