fix all anchor format

This commit is contained in:
Jie Liang
2019-03-27 00:14:08 -05:00
parent cd06ac6f52
commit fc86ccb932
39 changed files with 878 additions and 1511 deletions

View File

@ -10,8 +10,7 @@
想了解更多相关信息,请参见[属性](./10_Properties.md)[方法](./11_Methods.md)[构造过程](./14_Initialization.md)[扩展](./20_Extensions.md)和[协议](./21_Protocols.md)。
<a name="enumeration_syntax"></a>
## 枚举语法
## 枚举语法 {#enumeration_syntax}
使用 `enum` 关键词来创建枚举并且把它们的整个定义放在一对大括号内:
@ -60,8 +59,7 @@ directionToHead = .east
`directionToHead` 的类型已知时,再次为其赋值可以省略枚举类型名。在使用具有显式类型的枚举值时,这种写法让代码具有更好的可读性。
<a name="matching_enumeration_values_with_a_switch_statement"></a>
## 使用 Switch 语句匹配枚举值
## 使用 Switch 语句匹配枚举值 {#matching_enumeration_values_with_a_switch_statement}
你可以使用 `switch` 语句匹配单个枚举值:
@ -101,8 +99,7 @@ default:
// 打印“Mostly harmless”
```
<a name="iterating over enumeration cases"></a>
## 枚举成员的遍历
## 枚举成员的遍历 {#iterating over enumeration cases}
在一些情况下,你会需要得到一个包含枚举所有成员的集合。可以通过如下代码实现:
@ -130,8 +127,7 @@ for beverage in Beverage.allCases {
在前面的例子中,使用的语法表明这个枚举遵循 [CaseIterable](https://developer.apple.com/documentation/swift/caseiterable) 协议。想了解 protocols 相关信息,请参见[协议](./21_Protocols.md)。
<a name="associated_values"></a>
## 关联值
## 关联值 {#associated_values}
枚举语法那一小节的例子演示了如何定义和分类枚举的成员。你可以为 `Planet.earth` 设置一个常量或者变量,并在赋值之后查看这个值。然而,有时候把其他类型的值和成员值一起存储起来会很有用。这额外的信息称为*关联值*,并且你每次在代码中使用该枚举成员时,还可以修改这个关联值。
@ -202,8 +198,7 @@ case let .qrCode(productCode):
// 打印“QR code: ABCDEFGHIJKLMNOP.”
```
<a name="raw_values"></a>
## 原始值
## 原始值 {#raw_values}
在[关联值](#associated_values)小节的条形码例子中,演示了如何声明存储不同类型关联值的枚举成员。作为关联值的替代选择,枚举成员可以被默认值(称为*原始值*)预填充,这些原始值的类型必须相同。
@ -225,8 +220,7 @@ enum ASCIIControlCharacter: Character {
>
> 原始值和关联值是不同的。原始值是在定义枚举时被预先填充的值,像上述三个 ASCII 码。对于一个特定的枚举成员,它的原始值始终不变。关联值是创建一个基于枚举成员的常量或变量时才设置的值,枚举成员的关联值可以变化。
<a name="implicitly_assigned_raw_values"></a>
### 原始值的隐式赋值
### 原始值的隐式赋值 {#implicitly_assigned_raw_values}
在使用原始值为整数或者字符串类型的枚举时不需要显式地为每一个枚举成员设置原始值Swift 将会自动为你赋值。
@ -264,8 +258,7 @@ let sunsetDirection = CompassPoint.west.rawValue
// sunsetDirection 值为 "west"
```
<a name="initializing_from_a_raw_value"></a>
### 使用原始值初始化枚举实例
### 使用原始值初始化枚举实例 {#initializing_from_a_raw_value}
如果在定义枚举类型的时候使用了原始值,那么将会自动获得一个初始化方法,这个方法接收一个叫做 `rawValue` 的参数,参数类型即为原始值类型,返回值则是枚举成员或 `nil`。你可以使用这个初始化方法来创建一个新的枚举实例。
@ -301,8 +294,7 @@ if let somePlanet = Planet(rawValue: positionToFind) {
这个例子使用了可选绑定optional binding试图通过原始值 `11` 来访问一个行星。`if let somePlanet = Planet(rawValue: 11)` 语句创建了一个可选 `Planet`,如果可选 `Planet` 的值存在,就会赋值给 `somePlanet`。在这个例子中,无法检索到位置为 `11` 的行星,所以 `else` 分支被执行。
<a name="recursive_enumerations"></a>
## 递归枚举
## 递归枚举 {#recursive_enumerations}
*递归枚举*是一种枚举类型,它有一个或多个枚举成员使用该枚举类型的实例作为关联值。使用递归枚举时,编译器会插入一个间接层。你可以在枚举成员前加上 `indirect` 来表示该成员可递归。