Update: Closures 增加分割线
This commit is contained in:
@ -118,7 +118,7 @@ reversed = sort(names, { (s1: String, s2: String) -> Bool in return s1 > s2 } )
|
|||||||
|
|
||||||
因为排序闭包是作为函数的参数进行传入的,Swift可以推断其参数和返回值的类型。
|
因为排序闭包是作为函数的参数进行传入的,Swift可以推断其参数和返回值的类型。
|
||||||
`sort`期望第二个参数是类型为`(String, String) -> Bool`的函数,因此实际上`String`,`String`和`Bool`类型并不需要作为闭包表达式定义中的一部分。
|
`sort`期望第二个参数是类型为`(String, String) -> Bool`的函数,因此实际上`String`,`String`和`Bool`类型并不需要作为闭包表达式定义中的一部分。
|
||||||
因为所有的类型都可以被正确推断,返回箭头 (->) 和 围绕在参数周围的括号也可以被省略:
|
因为所有的类型都可以被正确推断,返回箭头 (`->`) 和围绕在参数周围的括号也可以被省略:
|
||||||
|
|
||||||
```
|
```
|
||||||
reversed = sort(names, { s1, s2 in return s1 > s2 } )
|
reversed = sort(names, { s1, s2 in return s1 > s2 } )
|
||||||
@ -169,6 +169,8 @@ reversed = sort(names, >)
|
|||||||
<a name="trailing_closures"></a>
|
<a name="trailing_closures"></a>
|
||||||
### Trailing 闭包
|
### Trailing 闭包
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
如果您需要将一个很长的闭包表达式作为最后一个参数传递给函数,可以使用 trailing 闭包来增强函数的可读性。
|
如果您需要将一个很长的闭包表达式作为最后一个参数传递给函数,可以使用 trailing 闭包来增强函数的可读性。
|
||||||
Trailing 闭包是一个书写在函数括号之外(之后)的闭包表达式,函数支持将其作为最后一个参数调用。
|
Trailing 闭包是一个书写在函数括号之外(之后)的闭包表达式,函数支持将其作为最后一个参数调用。
|
||||||
|
|
||||||
@ -264,6 +266,8 @@ let strings = numbers.map {
|
|||||||
<a name="capturing_values"></a>
|
<a name="capturing_values"></a>
|
||||||
### 捕获 (Caputure) 值
|
### 捕获 (Caputure) 值
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
闭包可以在其定义的上下文中捕获常量或变量。
|
闭包可以在其定义的上下文中捕获常量或变量。
|
||||||
即使定义这些常量和变量的原域已经不存在,闭包仍然可以在闭包函数体内引用和修改这些值。
|
即使定义这些常量和变量的原域已经不存在,闭包仍然可以在闭包函数体内引用和修改这些值。
|
||||||
|
|
||||||
@ -355,6 +359,8 @@ incrementByTen()
|
|||||||
<a name="closures_are_reference_types"></a>
|
<a name="closures_are_reference_types"></a>
|
||||||
### 闭包是引用类型
|
### 闭包是引用类型
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
上面的例子中,`incrementBySeven`和`incrementByTen`是常量,但是这些常量指向的闭包仍然可以增加其捕获的变量值。
|
上面的例子中,`incrementBySeven`和`incrementByTen`是常量,但是这些常量指向的闭包仍然可以增加其捕获的变量值。
|
||||||
这是因为函数和闭包都是引用类型。
|
这是因为函数和闭包都是引用类型。
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user