一、什么是闭包:
- 闭包是自包含的函数代码块,可以在代码中被传递和使用。
- Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些编程语言中的匿名函数比较相似。
二、闭包的语法表达式:
{ (parameters/接收的参数) -> (return type/闭包返回值类型) in
statements/保存在闭包中需要执行的代码
}
三、闭包的使用例子:
四、闭包的使用:值捕获
定义:
- Swift 中,可以捕获值的闭包的最简单形式是嵌套函数,也就是定义在其他函数的函数体内的函数。
- 嵌套函数可以捕获其外部函数所有的参数以及定义的常量和变量。
例子:
五、闭包的使用:尾随闭包
定义:
- 如果你需要将一个很长的闭包表达式作为最后一个参数传递给函数,可以使用尾随闭包来增强函数的可读性。
- 尾随闭包是一个书写在函数括号之后的闭包表达式,函数支持将其作为最后一个参数调用。
- 在使用尾随闭包时,你不用写出它的参数标签:
例子:
六、闭包的使用:逃逸闭包
定义:
- 当一个闭包作为参数传到一个函数中,但是这个闭包在函数返回之后才被执行,我们称该闭包从函数中逃逸。
- 当你定义接受闭包作为参数的函数时,你可以在参数名之前标注 @escaping,用来指明这个闭包是允许“逃逸”出这个函数的。
例子:
七、闭包的使用:自动闭包
定义:
- 自动闭包是一种自动创建的闭包,用于包装传递给函数作为参数的表达式。
- 这种闭包不接受任何参数,当它被调用的时候,会返回被包装在其中的表达式的值。
- 这种便利语法让你能够省略闭包的花括号,用一个普通的表达式来代替显式的闭包。
例子:
八、Demo 地址:
https://github.com/arrfu/My-Swift3-Study/tree/master/swift3StudyDemo/JFClosuresDemo