From 84da8738465d4e7e4fe80c1f3299464902abf129 Mon Sep 17 00:00:00 2001 From: dzy_PC Date: Thu, 25 Oct 2018 15:01:55 +0800 Subject: [PATCH 001/107] =?UTF-8?q?4.2=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/chapter2/20_Extensions.md | 248 +++++++++++++++---------------- 1 file changed, 117 insertions(+), 131 deletions(-) diff --git a/source/chapter2/20_Extensions.md b/source/chapter2/20_Extensions.md index 51b25f36..8468813f 100644 --- a/source/chapter2/20_Extensions.md +++ b/source/chapter2/20_Extensions.md @@ -1,101 +1,96 @@ # 扩展 -*扩展* 就是为一个已有的类、结构体、枚举类型或者协议类型添加新功能。这包括在没有权限获取原始源代码的情况下扩展类型的能力(即 *逆向建模* )。扩展和 Objective-C 中的分类类似。(与 Objective-C 不同的是,Swift 的扩展没有名字。) +*扩展*可以给一个现有的类,结构体,枚举,还有协议添加新的功能。它还拥有,不需要访问被扩展类型源代码就能完成扩展的能力(即*逆向建模*)。扩展和 Objective-C 的分类很相似。(与 Objective-C 分类不同的是,Swift 扩展是没有名字的。) -Swift 中的扩展可以: +Swift 中的扩展可以: -- 添加计算型属性和计算型类型属性 -- 定义实例方法和类型方法 -- 提供新的构造器 -- 定义下标 -- 定义和使用新的嵌套类型 -- 使一个已有类型符合某个协议 + - 添加计算型实例属性和计算型类属性 + - 定义实例方法和类方法 + - 提供新的构造器 + - 定义下标 + - 定义和使用新的嵌套类型 + - 使已经存在的类型 conform(遵循)一个协议 -在 Swift 中,你甚至可以对协议进行扩展,提供协议要求的实现,或者添加额外的功能,从而可以让符合协议的类型拥有这些功能。你可以从[协议扩展](./21_Protocols.html#protocol_extensions)获取更多的细节。 +在Swift中,你甚至可以扩展协议以提供其需要的实现,或者添加额外功能给遵循的类型所使用。你可以从[协议扩展](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID521)获取更多细节。 -> 注意 +> 注意 > -> 扩展可以为一个类型添加新的功能,但是不能重写已有的功能。 +> 扩展可以给一个类型添加新的功能,但是不能重写已经存在的功能。 - -## 扩展语法 +## 扩展的语法 +使用 **extension** 关键字声明扩展: -使用关键字 `extension` 来声明扩展: - -```swift +``` extension SomeType { - // 为 SomeType 添加的新功能写到这里 + // 在这里给 SomeType 添加新的功能 } +``` + +扩展可以扩充一个现有的类型,给它添加一个或多个协议。协议名称的写法和类或者结构体一样: + ``` - -可以通过扩展来扩展一个已有类型,使其采纳一个或多个协议。在这种情况下,无论是类还是结构体,协议名字的书写方式完全一样: - -```swift -extension SomeType: SomeProtocol, AnotherProctocol { - // 协议实现写到这里 +extension SomeType: SomeProtocol, AnotherProtocol { + // 协议所需要的实现写在这里 } -``` +``` -通过这种方式添加协议一致性的详细描述请参阅[利用扩展添加协议一致性](./21_Protocols.html#adding_protocol_conformance_with_an_extension)。 +通过这种方式遵循协议在[使用扩展遵循协议](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID277)中有描述。 -> 注意 +扩展可以使用在现有范型类型上,就像[扩展范型类型](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID185)中描述的一样。你还可以使用扩展给泛型类型有条件的添加功能,就像[扩展一个带有 Where 字句的范型](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID553)中描述的一样。 + +> 注意 > -> 如果你通过扩展为一个已有类型添加新功能,那么新功能对该类型的所有已有实例都是可用的,即使它们是在这个扩展定义之前创建的。 +> 对一个现有的类型,如果你定义了一个扩展来添加新的功能,那么这个类型的所有实例都可以使用这个新功能,甚至是定义扩展之前就被创建的。 - ## 计算型属性 +扩展可以给现有类型添加计算型实例属性和计算型类属性。这个例子给 Swift 内建的 **Double** 类型添加了五个计算型实例属性,从而提供与距离单位相关工作的基本支持: -扩展可以为已有类型添加计算型实例属性和计算型类型属性。下面的例子为 Swift 的内建 `Double` 类型添加了五个计算型实例属性,从而提供与距离单位协作的基本支持: - -```swift +``` extension Double { var km: Double { return self * 1_000.0 } - var m : Double { return self } + var m: Double { return self } var cm: Double { return self / 100.0 } var mm: Double { return self / 1_000.0 } var ft: Double { return self / 3.28084 } } let oneInch = 25.4.mm print("One inch is \(oneInch) meters") -// 打印 “One inch is 0.0254 meters” +// 打印“一英寸是 0.0254 米” let threeFeet = 3.ft print("Three feet is \(threeFeet) meters") -// 打印 “Three feet is 0.914399970739201 meters” +// 打印“三英尺是 0.914399970739201 米” +``` + +这些计算型属性表示应该将 **Double** 类型的值看作一个长度单位。即使它们被实现为计算型属性,但是这些属性的名称可以通过点语法附加到浮点小数上,作为一种方式来使用文字执行距离转换。 + +在上述例子中,**Double** 类型的 **1.0** 代表的是“一米”。这就是为什么计算型属性 **m** 返回的是 **self** - 表达式 **1.m** 被认为是计算一个 **Double** 类型的 **1.0**。 + +其他单位使用米表示的时候需要进行一些转换。One kilometer(一千米)等于 1,000 meters(米),所以 **km** 计算型属性将值乘以 **1_000.00** 转换成单位为米的值。类似的,一米等于 3.28084 英尺,所以 **ft** 计算型属性将给予的 **Double** 值除以 **3.28084**,用以将英尺转换成米。 + +这些属性都是只读的计算型属性,所以为了简便,他们的表达式里面都不包含 **get** 关键字。它们使用 **Double** 作为返回值类型,并可用于所有接受 **Double** 类型的数学计算中: + ``` - -这些计算型属性表达的含义是把一个 `Double` 值看作是某单位下的长度值。即使它们被实现为计算型属性,但这些属性的名字仍可紧接一个浮点型字面值,从而通过点语法来使用,并以此实现距离转换。 - -在上述例子中,`Double` 值 `1.0` 用来表示“1米”。这就是为什么计算型属性 `m` 返回 `self`,即表达式 `1.m` 被认为是计算 `Double` 值 `1.0`。 - -其它单位则需要一些单位换算。一千米等于 1,000 米,所以计算型属性 `km` 要把值乘以 `1_000.00` 来实现千米到米的单位换算。类似地,一米有 3.28024 英尺,所以计算型属性 `ft` 要把对应的 `Double` 值除以 `3.28024` 来实现英尺到米的单位换算。 - -这些属性是只读的计算型属性,为了更简洁,省略了 `get` 关键字。它们的返回值是 `Double`,而且可以用于所有接受 `Double` 值的数学计算中: - -```swift let aMarathon = 42.km + 195.m print("A marathon is \(aMarathon) meters long") -// 打印 “A marathon is 42195.0 meters long” -``` +// 打印“马拉松赛跑全长 42195.0 米。” +``` -> 注意 -> -> 扩展可以添加新的计算型属性,但是不可以添加存储型属性,也不可以为已有属性添加属性观察器。 +> 注意 +> +> 扩展可以添加新的计算属性,但是它们不能添加存储属性,或向现有的属性添加属性观察者。 - ## 构造器 +扩展可以给现有的类型添加新的构造器。它使你可以把自定义类型作为参数来供其他类型的构造器使用,或者在类型的原始实现上添加额外的构造选项。 -扩展可以为已有类型添加新的构造器。这可以让你扩展其它类型,将你自己的定制类型作为其构造器参数,或者提供该类型的原始实现中未提供的额外初始化选项。 +扩展可以给一个类添加新的便利构造器,但是它们不能给类添加新的指定构造器或者析构器。指定构造器和析构器必须始终由类的原始实现提供。 -扩展能为类添加新的便利构造器,但是它们不能为类添加新的指定构造器或析构器。指定构造器和析构器必须总是由原始的类实现来提供。 +如果你使用扩展给一个值类型添加构造器只是用于给所有的存储属性提供默认值,并且没有定义任何自定义构造器,那么你可以在该值类型扩展的构造器中使用默认构造器和成员构造器。如果你把构造器写到了值类型的原始实现中,就像[值类型的构造器委托](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID215)中描述的这样,那么就不是上面我们所提到的情况。 -> 注意 -> -> 如果你使用扩展为一个值类型添加构造器,同时该值类型的原始实现中未定义任何定制的构造器且所有存储属性提供了默认值,那么我们就可以在扩展中的构造器里调用默认构造器和逐一成员构造器。 -正如在[值类型的构造器代理](./14_Initialization.html#initializer_delegation_for_value_types)中描述的,如果你把定制的构造器写在值类型的原始实现中,上述规则将不再适用。 +如果你使用扩展给另一个模块中定义的结构体添加构造器,那么新的构造器直到定义模块中使用一个构造器之前,不能访问 **self**。 -下面的例子定义了一个用于描述几何矩形的结构体 `Rect`。这个例子同时定义了两个辅助结构体 `Size` 和 `Point`,它们都把 `0.0` 作为所有属性的默认值: +在下面的例子中,自定义了一个的 **Rect** 结构体用来表示一个几何矩形。这个例子中还定义了两个给予支持的结构体 **Size** 和 **Point**,它们都把属性的默认值设置为 **0.0**: -```swift +``` struct Size { var width = 0.0, height = 0.0 } @@ -106,19 +101,19 @@ struct Rect { var origin = Point() var size = Size() } +``` + +因为 **Rect** 结构体给所有的属性都提供了默认值,所以它自动获得了一个默认构造器和一个成员构造器,就像[默认构造器](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID213)中描述的一样。这些构造器可以用来创建新的 **Rect** 实例: + ``` - -因为结构体 `Rect` 未提供定制的构造器,因此它会获得一个逐一成员构造器。又因为它为所有存储型属性提供了默认值,它又会获得一个默认构造器。详情请参阅[默认构造器](./14_Initialization.html#default_initializers)。这些构造器可以用于构造新的 `Rect` 实例: - -```swift let defaultRect = Rect() let memberwiseRect = Rect(origin: Point(x: 2.0, y: 2.0), - size: Size(width: 5.0, height: 5.0)) + size: Size(width: 5.0, height: 5.0)) +``` + +你可以通过扩展 **Rect** 结构体来提供一个允许指定 point 和 size 的构造器: + ``` - -你可以提供一个额外的接受指定中心点和大小的构造器来扩展 `Rect` 结构体: - -```swift extension Rect { init(center: Point, size: Size) { let originX = center.x - (size.width / 2) @@ -128,24 +123,22 @@ extension Rect { } ``` -这个新的构造器首先根据提供的 `center` 和 `size` 的值计算一个合适的原点。然后调用该结构体的逐一成员构造器 `init(origin:size:)`,该构造器将新的原点和大小的值保存到了相应的属性中: +这个新的构造器首先根据提供的 **center** 和 **size** 计算一个适当的原点。然后这个构造器调用结构体自带的成员构造器 **init(origin:size:)**,它会将新的 origin 和 size 值储存在适当的属性中: -```swift -let centerRect = Rect(center: Point(x: 4.0, y: 4.0), - size: Size(width: 3.0, height: 3.0)) -// centerRect 的原点是 (2.5, 2.5),大小是 (3.0, 3.0) ``` +let centerRect = Rect(center: Point(x: 4.0, y: 4.0), + size: Size(width: 3.0, height: 3.0)) +// centerRect 的 origin 是 (2.5, 2.5) 并且它的 size 是 (3.0, 3.0) +``` -> 注意 +> 注意 > -> 如果你使用扩展提供了一个新的构造器,你依旧有责任确保构造过程能够让实例完全初始化。 +> 如果你通过扩展提供一个新的构造器,你有责任确保每个通过该构造器创建的实例都是初始化完整的。 - ## 方法 +扩展可以给现有类型添加新的实例方法和类方法。在下面的例子中,给 **Int** 类型添加了一个新的实例方法叫做 **repetitions**: -扩展可以为已有类型添加新的实例方法和类型方法。下面的例子为 `Int` 类型添加了一个名为 `repetitions` 的实例方法: - -```swift +``` extension Int { func repetitions(task: () -> Void) { for _ in 0.. Void` 类型的单参数,表示没有参数且没有返回值的函数。 +**repetitions(task:)** 方法仅接收一个 **() -> Void** 类型的参数,它表示一个没有参数没有返回值的方法。 -定义该扩展之后,你就可以对任意整数调用 `repetitions(task:)` 方法,将闭包中的任务执行整数对应的次数: - -```swift -3.repetitions({ - print("Hello!") -}) -// Hello! -// Hello! -// Hello! +定义了这个扩展之后,你可以对任意整形数值调用 **repetitions(task:)** 方法,来执行对应次数的任务: ``` +3.repetitions { + print("Hello!") +} +// Hello! +// Hello! +// Hello! +``` - - ### 可变实例方法 +通过扩展添加的实例方法同样也可以修改(或 *mutating(改变)*)实例本身。结构体和枚举的方法,若是可以修改 **self** 或者它自己的属性,则必须将这个实例方法标记为 **mutating**,就像是改变了方法的原始实现。 -通过扩展添加的实例方法也可以修改该实例本身。结构体和枚举类型中修改 `self` 或其属性的方法必须将该实例方法标注为 `mutating`,正如来自原始实现的可变方法一样。 +在下面的例子中,对 Swift 的 **Int** 类型添加了一个新的 mutating 方法,叫做 **square**,它将原始值求平方: -下面的例子为 Swift 的 `Int` 类型添加了一个名为 `square` 的可变方法,用于计算原始值的平方值: - -```swift +``` extension Int { mutating func square() { self = self * self @@ -184,20 +173,17 @@ extension Int { } var someInt = 3 someInt.square() -// someInt 的值现在是 9 -``` +// someInt 现在是 9 +``` - ## 下标 +扩展可以给现有的类型添加新的下标。下面的例子中,对 Swift 的 **Int** 类型添加了一个整数类型的下标。下标 **[n]** 从数字右侧开始,返回小数点后的第 **n** 位: -扩展可以为已有类型添加新下标。这个例子为 Swift 内建类型 `Int` 添加了一个整型下标。该下标 `[n]` 返回十进制数字从右向左数的第 `n` 个数字: +- **123456789[0]** returns **9** +- **123456789[1]** returns **8** -- `123456789[0]` 返回 `9` -- `123456789[1]` 返回 `8` - -……以此类推。 - -```swift +……以此类推: +``` extension Int { subscript(digitIndex: Int) -> Int { var decimalBase = 1 @@ -208,29 +194,27 @@ extension Int { } } 746381295[0] -// 返回 5 +// returns 5 746381295[1] -// 返回 9 +// returns 9 746381295[2] -// 返回 2 +// returns 2 746381295[8] -// 返回 7 +// returns 7 +``` + +如果操作的 **Int** 值没有足够的位数满足所请求的下标,那么下标的现实将返回 **0**,将好像在数字的左边补上了 0: + ``` - -如果该 `Int` 值没有足够的位数,即下标越界,那么上述下标实现会返回 `0`,犹如在数字左边自动补 `0`: - -```swift 746381295[9] -// 返回 0,即等同于: +// 返回 0,就好像你进行了这个请求: 0746381295[9] -``` +``` - ## 嵌套类型 +扩展可以给现有的类,结构体,还有枚举添加新的嵌套类型: -扩展可以为已有的类、结构体和枚举添加新的嵌套类型: - -```swift +``` extension Int { enum Kind { case negative, zero, positive @@ -246,15 +230,15 @@ extension Int { } } } +``` + +这个例子给 **Int** 添加了一个新的嵌套枚举。这个枚举叫做 **Kind**,表示特定整数所代表的数字类型。具体来说,它表示数字是负的、零的还是正的。 + +这个例子同样给 **Int** 添加了一个新的计算型实例属性,叫做 **kind**,它返回被操作整数所对应的 **Kind** 枚举 case 分支。 + +现在,任意 **Int** 的值都可以使用这个嵌套类型: + ``` - -该例子为 `Int` 添加了嵌套枚举。这个名为 `Kind` 的枚举表示特定整数的类型。具体来说,就是表示整数是正数、零或者负数。 - -这个例子还为 `Int` 添加了一个计算型实例属性,即 `kind`,用来根据整数返回适当的 `Kind` 枚举成员。 - -现在,这个嵌套枚举可以和任意 `Int` 值一起使用了: - -```swift func printIntegerKinds(_ numbers: [Int]) { for number in numbers { switch number.kind { @@ -269,11 +253,13 @@ func printIntegerKinds(_ numbers: [Int]) { print("") } printIntegerKinds([3, 19, -27, 0, -6, 0, 7]) -// 打印 “+ + - 0 - 0 + ” +// Prints "+ + - 0 - 0 + " ``` -函数 `printIntegerKinds(_:)` 接受一个 `Int` 数组,然后对该数组进行迭代。在每次迭代过程中,对当前整数的计算型属性 `kind` 的值进行评估,并打印出适当的描述。 +方法 **printIntegerKinds(_:)**,使用一个 **Int** 类型的数组作为输入,然后依次迭代这些值。对于数组中的每一个整数,方法会检查它的 **kind** 计算型属性,然后打印适当的描述。 + +> 注意 +> +> **number.kind** 已经被认为是 **Int.Kind** 类型。所以,在 **switch** 语句中所有的 **Int.Kind** case 分支可以被缩写,就像使用 **.negative** 替代 **Int.Kind.negative.**。 + -> 注意 -> -> 由于已知 `number.kind` 是 `Int.Kind` 类型,因此在 `switch` 语句中,`Int.Kind` 中的所有成员值都可以使用简写形式,例如使用 `.negative` 而不是 `Int.Kind.negative`。 From 1b7b7ed1abbb006c7ace3df74725aa1f47d0acaf Mon Sep 17 00:00:00 2001 From: dzy_PC Date: Wed, 7 Nov 2018 09:59:00 +0800 Subject: [PATCH 002/107] =?UTF-8?q?=E6=A0=A1=E5=AF=B9=E4=B9=8B=E5=90=8E?= =?UTF-8?q?=E7=9A=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/chapter2/20_Extensions.md | 59 ++++++++++++++++---------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/source/chapter2/20_Extensions.md b/source/chapter2/20_Extensions.md index 8468813f..5a8ca127 100644 --- a/source/chapter2/20_Extensions.md +++ b/source/chapter2/20_Extensions.md @@ -1,6 +1,6 @@ # 扩展 -*扩展*可以给一个现有的类,结构体,枚举,还有协议添加新的功能。它还拥有,不需要访问被扩展类型源代码就能完成扩展的能力(即*逆向建模*)。扩展和 Objective-C 的分类很相似。(与 Objective-C 分类不同的是,Swift 扩展是没有名字的。) +*扩展*可以给一个现有的类,结构体,枚举,还有协议添加新的功能。它还拥有不需要访问被扩展类型源代码就能完成扩展的能力(即*逆向建模*)。扩展和 Objective-C 的分类很相似。(与 Objective-C 分类不同的是,Swift 扩展是没有名字的。) Swift 中的扩展可以: @@ -9,9 +9,9 @@ Swift 中的扩展可以: - 提供新的构造器 - 定义下标 - 定义和使用新的嵌套类型 - - 使已经存在的类型 conform(遵循)一个协议 + - 使已经存在的类型遵循(conform)一个协议 -在Swift中,你甚至可以扩展协议以提供其需要的实现,或者添加额外功能给遵循的类型所使用。你可以从[协议扩展](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID521)获取更多细节。 +在 Swift 中,你甚至可以扩展协议以提供其需要的实现,或者添加额外功能给遵循的类型所使用。你可以从 [协议扩展](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID521) 获取更多细节。 > 注意 > @@ -20,32 +20,32 @@ Swift 中的扩展可以: ## 扩展的语法 使用 **extension** 关键字声明扩展: -``` +```swift extension SomeType { - // 在这里给 SomeType 添加新的功能 + // 在这里给 SomeType 添加新的功能 } ``` 扩展可以扩充一个现有的类型,给它添加一个或多个协议。协议名称的写法和类或者结构体一样: -``` +```swift extension SomeType: SomeProtocol, AnotherProtocol { - // 协议所需要的实现写在这里 + // 协议所需要的实现写在这里 } ``` -通过这种方式遵循协议在[使用扩展遵循协议](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID277)中有描述。 +这种遵循协议的方式在 [使用扩展遵循协议](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID277) 中有描述。 -扩展可以使用在现有范型类型上,就像[扩展范型类型](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID185)中描述的一样。你还可以使用扩展给泛型类型有条件的添加功能,就像[扩展一个带有 Where 字句的范型](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID553)中描述的一样。 +扩展可以使用在现有范型类型上,就像 [扩展范型类型](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID185) 中描述的一样。你还可以使用扩展给泛型类型有条件的添加功能,就像 [扩展一个带有 Where 字句的范型](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID553) 中描述的一样。 > 注意 > -> 对一个现有的类型,如果你定义了一个扩展来添加新的功能,那么这个类型的所有实例都可以使用这个新功能,甚至是定义扩展之前就被创建的。 +> 对一个现有的类型,如果你定义了一个扩展来添加新的功能,那么这个类型的所有实例都可以使用这个新功能,包括那些在扩展定义之前就存在的实例。 ## 计算型属性 扩展可以给现有类型添加计算型实例属性和计算型类属性。这个例子给 Swift 内建的 **Double** 类型添加了五个计算型实例属性,从而提供与距离单位相关工作的基本支持: -``` +```swift extension Double { var km: Double { return self * 1_000.0 } var m: Double { return self } @@ -61,15 +61,15 @@ print("Three feet is \(threeFeet) meters") // 打印“三英尺是 0.914399970739201 米” ``` -这些计算型属性表示应该将 **Double** 类型的值看作一个长度单位。即使它们被实现为计算型属性,但是这些属性的名称可以通过点语法附加到浮点小数上,作为一种方式来使用文字执行距离转换。 +这些计算型属性表示的含义是把一个 **Double** 值看作是某单位下的长度值。即使它们被实现为计算型属性,但这些属性的名字仍可紧接一个浮点型字面值,从而通过点语法来使用,并以此实现距离转换。 在上述例子中,**Double** 类型的 **1.0** 代表的是“一米”。这就是为什么计算型属性 **m** 返回的是 **self** - 表达式 **1.m** 被认为是计算一个 **Double** 类型的 **1.0**。 -其他单位使用米表示的时候需要进行一些转换。One kilometer(一千米)等于 1,000 meters(米),所以 **km** 计算型属性将值乘以 **1_000.00** 转换成单位为米的值。类似的,一米等于 3.28084 英尺,所以 **ft** 计算型属性将给予的 **Double** 值除以 **3.28084**,用以将英尺转换成米。 +其它单位则需要一些单位换算。一千米等于 1,000 米,所以计算型属性 **km** 要把值乘以 **1_000.00** 来实现千米到米的单位换算。类似地,一米有 3.28084 英尺,所以计算型属性 **ft** 要把对应的 **Double** 值除以 **3.28084**,来实现英尺到米的单位换算。 -这些属性都是只读的计算型属性,所以为了简便,他们的表达式里面都不包含 **get** 关键字。它们使用 **Double** 作为返回值类型,并可用于所有接受 **Double** 类型的数学计算中: +这些属性都是只读的计算型属性,所以为了简便,它们的表达式里面都不包含 **get** 关键字。它们使用 **Double** 作为返回值类型,并可用于所有接受 **Double** 类型的数学计算中: -``` +```swift let aMarathon = 42.km + 195.m print("A marathon is \(aMarathon) meters long") // 打印“马拉松赛跑全长 42195.0 米。” @@ -84,13 +84,13 @@ print("A marathon is \(aMarathon) meters long") 扩展可以给一个类添加新的便利构造器,但是它们不能给类添加新的指定构造器或者析构器。指定构造器和析构器必须始终由类的原始实现提供。 -如果你使用扩展给一个值类型添加构造器只是用于给所有的存储属性提供默认值,并且没有定义任何自定义构造器,那么你可以在该值类型扩展的构造器中使用默认构造器和成员构造器。如果你把构造器写到了值类型的原始实现中,就像[值类型的构造器委托](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID215)中描述的这样,那么就不是上面我们所提到的情况。 +如果你使用扩展给一个值类型添加构造器只是用于给所有的存储属性提供默认值,并且没有定义任何自定义构造器,那么你可以在该值类型扩展的构造器中使用默认构造器和成员构造器。如果你把构造器写到了值类型的原始实现中,就像 [值类型的构造器委托](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID215) 中所描述的,那么就不属于在扩展中添加构造器。 如果你使用扩展给另一个模块中定义的结构体添加构造器,那么新的构造器直到定义模块中使用一个构造器之前,不能访问 **self**。 在下面的例子中,自定义了一个的 **Rect** 结构体用来表示一个几何矩形。这个例子中还定义了两个给予支持的结构体 **Size** 和 **Point**,它们都把属性的默认值设置为 **0.0**: -``` +```swift struct Size { var width = 0.0, height = 0.0 } @@ -103,9 +103,9 @@ struct Rect { } ``` -因为 **Rect** 结构体给所有的属性都提供了默认值,所以它自动获得了一个默认构造器和一个成员构造器,就像[默认构造器](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID213)中描述的一样。这些构造器可以用来创建新的 **Rect** 实例: +因为 **Rect** 结构体给所有的属性都提供了默认值,所以它自动获得了一个默认构造器和一个成员构造器,就像 [默认构造器](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID213) 中描述的一样。这些构造器可以用来创建新的 **Rect** 实例: -``` +```swift let defaultRect = Rect() let memberwiseRect = Rect(origin: Point(x: 2.0, y: 2.0), size: Size(width: 5.0, height: 5.0)) @@ -113,7 +113,7 @@ let memberwiseRect = Rect(origin: Point(x: 2.0, y: 2.0), 你可以通过扩展 **Rect** 结构体来提供一个允许指定 point 和 size 的构造器: -``` +```swift extension Rect { init(center: Point, size: Size) { let originX = center.x - (size.width / 2) @@ -125,7 +125,7 @@ extension Rect { 这个新的构造器首先根据提供的 **center** 和 **size** 计算一个适当的原点。然后这个构造器调用结构体自带的成员构造器 **init(origin:size:)**,它会将新的 origin 和 size 值储存在适当的属性中: -``` +```swift let centerRect = Rect(center: Point(x: 4.0, y: 4.0), size: Size(width: 3.0, height: 3.0)) // centerRect 的 origin 是 (2.5, 2.5) 并且它的 size 是 (3.0, 3.0) @@ -138,7 +138,7 @@ let centerRect = Rect(center: Point(x: 4.0, y: 4.0), ## 方法 扩展可以给现有类型添加新的实例方法和类方法。在下面的例子中,给 **Int** 类型添加了一个新的实例方法叫做 **repetitions**: -``` +```swift extension Int { func repetitions(task: () -> Void) { for _ in 0.. Void** 类型的参数,它表示一个没有参数没有返回值的方法。 定义了这个扩展之后,你可以对任意整形数值调用 **repetitions(task:)** 方法,来执行对应次数的任务: -``` + +```swift 3.repetitions { print("Hello!") } @@ -165,7 +166,7 @@ extension Int { 在下面的例子中,对 Swift 的 **Int** 类型添加了一个新的 mutating 方法,叫做 **square**,它将原始值求平方: -``` +```swift extension Int { mutating func square() { self = self * self @@ -183,7 +184,7 @@ someInt.square() - **123456789[1]** returns **8** ……以此类推: -``` +```swift extension Int { subscript(digitIndex: Int) -> Int { var decimalBase = 1 @@ -205,7 +206,7 @@ extension Int { 如果操作的 **Int** 值没有足够的位数满足所请求的下标,那么下标的现实将返回 **0**,将好像在数字的左边补上了 0: -``` +```swift 746381295[9] // 返回 0,就好像你进行了这个请求: 0746381295[9] @@ -214,7 +215,7 @@ extension Int { ## 嵌套类型 扩展可以给现有的类,结构体,还有枚举添加新的嵌套类型: -``` +```swift extension Int { enum Kind { case negative, zero, positive @@ -238,7 +239,7 @@ extension Int { 现在,任意 **Int** 的值都可以使用这个嵌套类型: -``` +```swift func printIntegerKinds(_ numbers: [Int]) { for number in numbers { switch number.kind { @@ -253,7 +254,7 @@ func printIntegerKinds(_ numbers: [Int]) { print("") } printIntegerKinds([3, 19, -27, 0, -6, 0, 7]) -// Prints "+ + - 0 - 0 + " +// 打印 "+ + - 0 - 0 + " ``` 方法 **printIntegerKinds(_:)**,使用一个 **Int** 类型的数组作为输入,然后依次迭代这些值。对于数组中的每一个整数,方法会检查它的 **kind** 计算型属性,然后打印适当的描述。 From 18d2cc447c26abb8fe142b89c288b3d612007356 Mon Sep 17 00:00:00 2001 From: Hale Date: Thu, 27 Dec 2018 15:56:23 +0800 Subject: [PATCH 003/107] =?UTF-8?q?Swift=204.2=20=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/chapter2/18_Type_Casting.md | 37 ++++++++++++++++-------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/source/chapter2/18_Type_Casting.md b/source/chapter2/18_Type_Casting.md index 05c2623d..8d43672b 100644 --- a/source/chapter2/18_Type_Casting.md +++ b/source/chapter2/18_Type_Casting.md @@ -2,9 +2,9 @@ *类型转换*可以判断实例的类型,也可以将实例看做是其父类或者子类的实例。 -类型转换在 Swift 中使用 `is` 和 `as` 操作符实现。这两个操作符提供了一种简单达意的方式去检查值的类型或者转换它的类型。 +类型转换在 Swift 中使用 `is` 和 `as` 操作符实现。这两个操作符分别提供了一种简单达意的方式去检查值的类型或者转换它的类型。 -你也可以用它来检查一个类型是否实现了某个协议,就像在[检验协议的一致性](./21_Protocols.html#checking_for_protocol_conformance)部分讲述的一样。 +你也可以用它来检查一个类型是否实现了某个协议,就像在[检验协议的一致性](/21_Protocols.md#checking_for_protocol_conformance)部分讲述的一样。 ## 为类型转换定义类层次 @@ -52,10 +52,10 @@ let library = [ Song(name: "The One And Only", artist: "Chesney Hawkes"), Song(name: "Never Gonna Give You Up", artist: "Rick Astley") ] -// 数组 library 的类型被推断为 [MediaItem] +// the type of "library" is inferred to be [MediaItem] ``` -在幕后 `library` 里存储的媒体项依然是 `Movie` 和 `Song` 类型的。但是,若你迭代它,依次取出的实例会是 `MediaItem` 类型的,而不是 `Movie` 和 `Song` 类型。为了让它们作为原本的类型工作,你需要检查它们的类型或者向下转换它们到其它类型,就像下面描述的一样。 +在幕后 `library` 里存储的媒体项依然是 `Movie` 和 `Song` 类型的。但是,若你迭代它,依次取出的实例会是 `MediaItem` 类型的,而不会转为 `Movie` 和 `Song` 类型。为了让它们作为原本的类型工作,你需要检查它们的类型或者向下转换它们到其它类型,就像下面描述的一样。 ## 检查类型 @@ -77,11 +77,11 @@ for item in library { } print("Media library contains \(movieCount) movies and \(songCount) songs") -// 打印 “Media library contains 2 movies and 3 songs” +// 打印 "Media library contains 2 movies and 3 songs" ``` 示例迭代了数组 `library` 中的所有项。每一次,`for-in` 循环设置 -`item` 为数组中的下一个 `MediaItem`。 +`item` 常量为数组中的下一个 `MediaItem` 实例。 若当前 `MediaItem` 是一个 `Movie` 类型的实例,`item is Movie` 返回 `true`,否则返回 `false`。同样的,`item is Song` 检查 `item` 是否为 `Song` 类型的实例。在循环结束后,`movieCount` 和 `songCount` 的值就是被找到的属于各自类型的实例的数量。 @@ -89,7 +89,7 @@ print("Media library contains \(movieCount) movies and \(songCount) songs") ## 向下转型 -某类型的一个常量或变量可能在幕后实际上属于一个子类。当确定是这种情况时,你可以尝试向下转到它的子类型,用*类型转换操作符*(`as?` 或 `as!`)。 +某类型的一个常量或变量可能在幕后实际上属于一个子类。当确定是这种情况时,你可以尝试用*类型转换操作符*(`as?` 或 `as!`)向下转到它的子类型。 因为向下转型可能会失败,类型转型操作符带有两种不同形式。条件形式 `as?` 返回一个你试图向下转成的类型的可选值。强制形式 `as!` 把试图向下转型和强制解包转换结果结合为一个操作。 @@ -104,17 +104,17 @@ print("Media library contains \(movieCount) movies and \(songCount) songs") ```swift for item in library { if let movie = item as? Movie { - print("Movie: '\(movie.name)', dir. \(movie.director)") + print("Movie: \(movie.name), dir. \(movie.director)") } else if let song = item as? Song { - print("Song: '\(song.name)', by \(song.artist)") + print("Song: \(song.name), by \(song.artist)") } } -// Movie: 'Casablanca', dir. Michael Curtiz -// Song: 'Blue Suede Shoes', by Elvis Presley -// Movie: 'Citizen Kane', dir. Orson Welles -// Song: 'The One And Only', by Chesney Hawkes -// Song: 'Never Gonna Give You Up', by Rick Astley +// Movie: Casablanca, dir. Michael Curtiz +// Song: Blue Suede Shoes, by Elvis Presley +// Movie: Citizen Kane, dir. Orson Welles +// Song: The One And Only, by Chesney Hawkes +// Song: Never Gonna Give You Up, by Rick Astley ``` 示例首先试图将 `item` 下转为 `Movie`。因为 `item` 是一个 `MediaItem` @@ -140,7 +140,7 @@ Swift 为不确定类型提供了两种特殊的类型别名: * `Any` 可以表示任何类型,包括函数类型。 * `AnyObject` 可以表示任何类类型的实例。 -只有当你确实需要它们的行为和功能时才使用 `Any` 和 `AnyObject`。当你期望你的代码可以工作,最好还是要确定类型。 +只有当你确实需要它们的行为和功能时才使用 `Any` 和 `AnyObject`。最好还是在代码中指明需要使用的类型。 这里有个示例,使用 `Any` 类型来和混合的不同类型一起工作,包括函数类型和非类类型。它创建了一个可以存储 `Any` 类型的数组 `things`: @@ -179,7 +179,7 @@ for thing in things { case let (x, y) as (Double, Double): print("an (x, y) point at \(x), \(y)") case let movie as Movie: - print("a movie called '\(movie.name)', dir. \(movie.director)") + print("a movie called \(movie.name), dir. \(movie.director)") case let stringConverter as (String) -> String: print(stringConverter("Michael")) default: @@ -193,7 +193,7 @@ for thing in things { // a positive double value of 3.14159 // a string value of "hello" // an (x, y) point at 3.0, 5.0 -// a movie called 'Ghostbusters', dir. Ivan Reitman +// a movie called Ghostbusters, dir. Ivan Reitman // Hello, Michael ``` @@ -208,3 +208,6 @@ let optionalNumber: Int? = 3 things.append(optionalNumber) // 警告 things.append(optionalNumber as Any) // 没有警告 ``` + + + From 5adeb1c9cc712e78048f22fd00d8167acef89d1c Mon Sep 17 00:00:00 2001 From: Hale Date: Thu, 27 Dec 2018 17:29:48 +0800 Subject: [PATCH 004/107] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/chapter2/18_Type_Casting.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/source/chapter2/18_Type_Casting.md b/source/chapter2/18_Type_Casting.md index 8d43672b..434e3a5a 100644 --- a/source/chapter2/18_Type_Casting.md +++ b/source/chapter2/18_Type_Casting.md @@ -4,7 +4,7 @@ 类型转换在 Swift 中使用 `is` 和 `as` 操作符实现。这两个操作符分别提供了一种简单达意的方式去检查值的类型或者转换它的类型。 -你也可以用它来检查一个类型是否实现了某个协议,就像在[检验协议的一致性](/21_Protocols.md#checking_for_protocol_conformance)部分讲述的一样。 +你也可以用它来检查一个类型是否遵循了某个协议,就像在[检验协议遵循](./21_Protocols.html#checking_for_protocol_conformance)部分讲述的一样。 ## 为类型转换定义类层次 @@ -52,10 +52,10 @@ let library = [ Song(name: "The One And Only", artist: "Chesney Hawkes"), Song(name: "Never Gonna Give You Up", artist: "Rick Astley") ] -// the type of "library" is inferred to be [MediaItem] +// 数组 library 的类型被推断为 [MediaItem] ``` -在幕后 `library` 里存储的媒体项依然是 `Movie` 和 `Song` 类型的。但是,若你迭代它,依次取出的实例会是 `MediaItem` 类型的,而不会转为 `Movie` 和 `Song` 类型。为了让它们作为原本的类型工作,你需要检查它们的类型或者向下转换它们到其它类型,就像下面描述的一样。 +在幕后 `library` 里存储的媒体项依然是 `Movie` 和 `Song` 类型的。但是,若你迭代它,依次取出的实例会是 `MediaItem` 类型的,而不是 `Movie` 和 `Song` 类型。为了让它们作为原本的类型工作,你需要检查它们的类型或者向下转换它们到其它类型,就像下面描述的一样。 ## 检查类型 @@ -209,5 +209,3 @@ things.append(optionalNumber) // 警告 things.append(optionalNumber as Any) // 没有警告 ``` - - From 75495c45c830b602dc3b310d186bf965bfbb3643 Mon Sep 17 00:00:00 2001 From: dzy_PC Date: Mon, 31 Dec 2018 14:10:39 +0800 Subject: [PATCH 005/107] =?UTF-8?q?4.2=20=E5=AF=B9=E5=BA=94=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E7=BB=B4=E6=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/chapter2/26_Advanced_Operators.md | 190 +++++++++++++---------- 1 file changed, 104 insertions(+), 86 deletions(-) diff --git a/source/chapter2/26_Advanced_Operators.md b/source/chapter2/26_Advanced_Operators.md index 3356dcaf..e5aedd73 100644 --- a/source/chapter2/26_Advanced_Operators.md +++ b/source/chapter2/26_Advanced_Operators.md @@ -1,12 +1,12 @@ # 高级运算符 -除了在之前介绍过的[基本运算符](./02_Basic_Operators.html),Swift 中还有许多可以对数值进行复杂运算的高级运算符。这些高级运算符包含了在 C 和 Objective-C 中已经被大家所熟知的位运算符和移位运算符。 +除了之前介绍过的[基本运算符](./02_Basic_Operators.md),Swift 还提供了数种可以对数值进行复杂运算的高级运算符。它们包含了在 C 和 Objective-C 中已经被大家所熟知的位运算符和移位运算符。 与 C 语言中的算术运算符不同,Swift 中的算术运算符默认是不会溢出的。所有溢出行为都会被捕获并报告为错误。如果想让系统允许溢出行为,可以选择使用 Swift 中另一套默认支持溢出的运算符,比如溢出加法运算符(`&+`)。所有的这些溢出运算符都是以 `&` 开头的。 -自定义结构体、类和枚举时,如果也为它们提供标准 Swift 运算符的实现,将会非常有用。在 Swift 中自定义运算符非常简单,运算符也会针对不同类型使用对应实现。 +自定义结构体、类和枚举时,如果也为它们提供标准 Swift 运算符的实现,将会非常有用。在 Swift 中为这些运算符提供自定义的实现非常简单,运算符也会针对不同类型使用对应实现。 -我们不用被预定义的运算符所限制。在 Swift 中可以自由地定义中缀、前缀、后缀和赋值运算符,以及相应的优先级与结合性。这些运算符在代码中可以像预定义的运算符一样使用,我们甚至可以扩展已有的类型以支持自定义的运算符。 +我们不用被预定义的运算符所限制。在 Swift 中可以自由地定义中缀、前缀、后缀和赋值运算符,它们具有自定义的优先级与关联值。这些运算符在代码中可以像预定义的运算符一样使用,你甚至可以扩展已有的类型以支持自定义运算符。 ## 位运算符 @@ -16,31 +16,31 @@ Swift 支持 C 语言中的全部位运算符,接下来会一一介绍。 -### 按位取反运算符 +### Bitwise NOT Operator(按位取反运算符) -*按位取反运算符(`~`)*可以对一个数值的全部比特位进行取反: +*按位取反运算符(`~`)*对一个数值的全部比特位进行取反: -![Art/bitwiseNOT_2x.png](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Art/bitwiseNOT_2x.png) +![Art/bitwiseNOT_2x.png](https://docs.swift.org/swift-book/_images/bitwiseNOT_2x.png) -按位取反运算符是一个前缀运算符,需要直接放在运算的数之前,并且它们之间不能添加任何空格: +按位取反运算符是一个前缀运算符,直接放在运算数之前,并且它们之间不能添加任何空格: ```swift let initialBits: UInt8 = 0b00001111 let invertedBits = ~initialBits // 等于 0b11110000 ``` -`UInt8` 类型的整数有 8 个比特位,可以存储 `0 ~ 255` 之间的任意整数。这个例子初始化了一个 `UInt8` 类型的整数,并赋值为二进制的 `00001111`,它的前 4 位都为 `0`,后 4 位都为 `1`。这个值等价于十进制的 `15`。 +`UInt8` 类型的整数有 8 个比特位,可以存储 `0 ~ 255` 之间的任意整数。这个例子初始化了一个 `UInt8` 类型的整数,并赋值为二进制的 `00001111`,它的前 4 位为 `0`,后 4 位为 `1`。这个值等价于十进制的 `15`。 接着使用按位取反运算符创建了一个名为 `invertedBits` 的常量,这个常量的值与全部位取反后的 `initialBits` 相等。即所有的 `0` 都变成了 `1`,同时所有的 `1` 都变成 `0`。`invertedBits` 的二进制值为 `11110000`,等价于无符号十进制数的 `240`。 -### 按位与运算符 +### Bitwise AND Operator(按位与运算符) -*按位与运算符(`&`)*可以对两个数的比特位进行合并。它返回一个新的数,只有当两个数的对应位都为 `1` 的时候,新数的对应位才为 `1`: +*按位与运算符(`&`)*对两个数的比特位进行合并。它返回一个新的数,只有当两个数的对应位*都*为 `1` 的时候,新数的对应位才为 `1`: -![Art/bitwiseAND_2x.png](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Art/bitwiseAND_2x.png) +![Art/bitwiseAND_2x.png](https://docs.swift.org/swift-book/_images/bitwiseAND_2x.png) -在下面的示例当中,`firstSixBits` 和 `lastSixBits` 中间 4 个位的值都为 `1`。按位与运算符对它们进行了运算,得到二进制数值 `00111100`,等价于无符号十进制数的 `60`: +在下面的示例当中,`firstSixBits` 和 `lastSixBits` 中间 4 个位的值都为 `1`。使用按位与运算符之后,得到二进制数值 `00111100`,等价于无符号十进制数的 `60`: ```swift let firstSixBits: UInt8 = 0b11111100 @@ -49,13 +49,13 @@ let middleFourBits = firstSixBits & lastSixBits // 等于 00111100 ``` -### 按位或运算符 +### Bitwise OR Operator(按位或运算符) -*按位或运算符(`|`)*可以对两个数的比特位进行比较。它返回一个新的数,只要两个数的对应位中有任意一个为 `1` 时,新数的对应位就为 `1`: +*按位或运算符(`|`)*可以对两个数的比特位进行比较。它返回一个新的数,只要两个数的对应位中有*任意一个*为 `1` 时,新数的对应位就为 `1`: -![Art/bitwiseOR_2x.png](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Art/bitwiseOR_2x.png "Art/bitwiseOR_2x.png") +![Art/bitwiseOR_2x.png](https://docs.swift.org/swift-book/_images/bitwiseOR_2x.png) -在下面的示例中,`someBits` 和 `moreBits` 不同的位会被设置为 `1`。接位或运算符对它们进行了运算,得到二进制数值 `11111110`,等价于无符号十进制数的 `254`: +在下面的示例中,`someBits` 和 `moreBits` 存在不同的位被设置为 `1`。使用按位或运算符之后,得到二进制数值 `11111110`,等价于无符号十进制数的 `254`: ```swift let someBits: UInt8 = 0b10110010 @@ -64,13 +64,13 @@ let combinedbits = someBits | moreBits // 等于 11111110 ``` -### 按位异或运算符 +### Bitwise XOR Operator(按位异或运算符) -*按位异或运算符(`^`)*可以对两个数的比特位进行比较。它返回一个新的数,当两个数的对应位不相同时,新数的对应位就为 `1`: +*按位异或运算符*,或称“排外的或运算符”(`^`),可以对两个数的比特位进行比较。它返回一个新的数,当两个数的对应位不相同时,新数的对应位就为 `1`,并且对应位相同时则为 `0`: -![Art/bitwiseXOR_2x.png](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Art/bitwiseXOR_2x.png "Art/bitwiseXOR_2x.png") +![Art/bitwiseXOR_2x.png](https://docs.swift.org/swift-book/_images/bitwiseXOR_2x.png) -在下面的示例当中,`firstBits` 和 `otherBits` 都有一个自己的位为 `1` 而对方的对应位为 `0` 的位。 按位异或运算符将新数的这两个位都设置为 `1`,同时将其它位都设置为 `0`: +在下面的示例当中,`firstBits` 和 `otherBits` 都有一个自己为 `1`,而对方为 `0` 的位。按位异或运算符将新数的这两个位都设置为 `1`。在其余的位上 `firstBits` 和 `otherBits` 是相同的,所以设置为 `0`: ```swift let firstBits: UInt8 = 0b00010100 @@ -79,7 +79,7 @@ let outputBits = firstBits ^ otherBits // 等于 00010001 ``` -### 按位左移、右移运算符 +### Bitwise Left and Right Shift Operators(按位左移、右移运算符) *按位左移运算符(`<<`)*和*按位右移运算符(`>>`)*可以对一个数的所有位进行指定位数的左移和右移,但是需要遵守下面定义的规则。 @@ -90,15 +90,15 @@ let outputBits = firstBits ^ otherBits // 等于 00010001 对无符号整数进行移位的规则如下: -1. 已经存在的位按指定的位数进行左移和右移。 +1. 已存在的位按指定的位数进行左移和右移。 2. 任何因移动而超出整型存储范围的位都会被丢弃。 3. 用 `0` 来填充移位后产生的空白位。 这种方法称为*逻辑移位*。 -以下这张图展示了 `11111111 << 1`(即把 `11111111` 向左移动 `1` 位),和 `11111111 >> 1`(即把 `11111111` 向右移动 `1` 位)的结果。蓝色的部分是被移位的,灰色的部分是被抛弃的,橙色的部分则是被填充进来的: +以下这张图展示了 `11111111 << 1`(即把 `11111111` 向左移动 `1` 位),和 `11111111 >> 1`(即把 `11111111` 向右移动 `1` 位)的结果。蓝色的数字是被移位的,灰色的数字是被抛弃的,橙色的 `0` 则是被填充进来的: -![Art/bitshiftUnsigned_2x.png](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Art/bitshiftUnsigned_2x.png "Art/bitshiftUnsigned_2x.png") +![Art/bitshiftUnsigned_2x.png](https://docs.swift.org/swift-book/_images/bitshiftUnsigned_2x.png) 下面的代码演示了 Swift 中的移位运算: @@ -120,50 +120,48 @@ let greenComponent = (pink & 0x00FF00) >> 8 // greenComponent 是 0x66, 即 10 let blueComponent = pink & 0x0000FF // blueComponent 是 0x99,即 153 ``` -这个示例使用了一个命名为 `pink` 的 `UInt32` 型常量来存储 CSS 中粉色的颜色值。该 CSS 的十六进制颜色值 `#CC6699`,在 Swift 中表示为 `0xCC6699`。然后利用按位与运算符(`&`)和按位右移运算符(`>>`)从这个颜色值中分解出红(`CC`)、绿(`66`)以及蓝(`99`)三个部分。 +这个示例使用了一个命名为 `pink` 的 `UInt32` 型常量来存储 Cascading Style Sheets(CSS)中粉色的颜色值。该 CSS 的颜色值 `#CC6699`,在 Swift 中表示为十六进制的 `0xCC6699`。然后利用按位与运算符(`&`)和按位右移运算符(`>>`)从这个颜色值中分解出红(`CC`)、绿(`66`)以及蓝(`99`)三个部分。 红色部分是通过对 `0xCC6699` 和 `0xFF0000` 进行按位与运算后得到的。`0xFF0000` 中的 `0` 部分“掩盖”了 `OxCC6699` 中的第二、第三个字节,使得数值中的 `6699` 被忽略,只留下 `0xCC0000`。 -然后,再将这个数按向右移动 16 位(`>> 16`)。十六进制中每两个字符表示 8 个比特位,所以移动 16 位后 `0xCC0000` 就变为 `0x0000CC`。这个数和 `0xCC` 是等同的,也就是十进制数值的 `204`。 +然后,将这个数向右移动 16 位(`>> 16`)。十六进制中每两个字符占用 8 个比特位,所以移动 16 位后 `0xCC0000` 就变为 `0x0000CC`。这个数和 `0xCC` 是等同的,也就是十进制数值的 `204`。 同样的,绿色部分通过对 `0xCC6699` 和 `0x00FF00` 进行按位与运算得到 `0x006600`。然后将这个数向右移动 8 位,得到 `0x66`,也就是十进制数值的 `102`。 -最后,蓝色部分通过对 `0xCC6699` 和 `0x0000FF` 进行按位与运算得到 `0x000099`。这里不需要再向右移位,所以结果为 `0x99` ,也就是十进制数值的 `153`。 +最后,蓝色部分通过对 `0xCC6699` 和 `0x0000FF` 进行按位与运算得到 `0x000099`。这里不需要再向右移位,而 `0x000099` 也就是 `0x99` ,也就是十进制数值的 `153`。 #### 有符号整数的移位运算 -对比无符号整数,有符号整数的移位运算相对复杂得多,这种复杂性源于有符号整数的二进制表现形式。(为了简单起见,以下的示例都是基于 8 比特位的有符号整数的,但是其中的原理对任何位数的有符号整数都是通用的。) +对比无符号整数,有符号整数的移位运算相对复杂得多,这种复杂性源于有符号整数的二进制表现形式。(为了简单起见,以下的示例都是基于 8 比特的有符号整数,但是其中的原理对任何位数的有符号整数都是通用的。) -有符号整数使用第 1 个比特位(通常被称为符号位)来表示这个数的正负。符号位为 `0` 代表正数,为 `1` 代表负数。 +有符号整数使用第 1 个比特位(通常被称为*符号位*)来表示这个数的正负。符号位为 `0` 代表正数,为 `1` 代表负数。 -其余的比特位(通常被称为数值位)存储了实际的值。有符号正整数和无符号数的存储方式是一样的,都是从 `0` 开始算起。这是值为 `4` 的 `Int8` 型整数的二进制位表现形式: +其余的比特位(通常被称为*数值位*)存储了实际的值。有符号正整数和无符号数的存储方式是一样的,都是从 `0` 开始算起。这是值为 `4` 的 `Int8` 型整数的二进制位表现形式: -![Art/bitshiftSignedFour_2x.png](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Art/bitshiftSignedFour_2x.png "Art/bitshiftSignedFour_2x.png") +![Art/bitshiftSignedFour_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSignedFour_2x.png) -符号位为 `0`,说明这是一个正数,另外 7 位则代表了十进制数值 `4` 的二进制表示。 +符号位为 `0`(代表这是一个“正数”),另外 7 位则代表了十进制数值 `4` 的二进制表示。 -负数的存储方式略有不同。它存储的值的绝对值等于 `2` 的 `n` 次方减去它的实际值(也就是数值位表示的值),这里的 `n` 为数值位的比特位数。一个 8 比特位的数有 7 个比特位是数值位,所以是 `2` 的 `7` 次方,即 `128`。 +负数的存储方式略有不同。它存储 `2` 的 `n` 次方减去其实际值的绝对值,这里的 `n` 是数值位的位数。一个 8 比特位的数有 7 个比特位是数值位,所以是 `2` 的 `7` 次方,即 `128`。 -这是值为 `-4` 的 `Int8` 型整数的二进制位表现形式: +这是值为 `-4` 的 `Int8` 型整数的二进制表现形式: -![Art/bitshiftSignedMinusFour_2x.png](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Art/bitshiftSignedMinusFour_2x.png "Art/bitshiftSignedMinusFour_2x.png") +![Art/bitshiftSignedMinusFour_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSignedMinusFour_2x.png) 这次的符号位为 `1`,说明这是一个负数,另外 7 个位则代表了数值 `124`(即 `128 - 4`)的二进制表示: -![Art/bitshiftSignedMinusFourValue_2x.png](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Art/bitshiftSignedMinusFourValue_2x.png "Art/bitshiftSignedMinusFourValue_2x.png") +![Art/bitshiftSignedMinusFourValue_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSignedMinusFourValue_2x.png) -负数的表示通常被称为*二进制补码*表示。用这种方法来表示负数乍看起来有点奇怪,但它有几个优点。 +负数的表示通常被称为*二进制补码*。用这种方法来表示负数乍看起来有点奇怪,但它有几个优点。 -首先,如果想对 `-1` 和 `-4` 进行加法运算,我们只需要将这两个数的全部 8 个比特位进行相加,并且将计算结果中超出 8 位的数值丢弃: +首先,如果想对 `-1` 和 `-4` 进行加法运算,我们只需要对这两个数的全部 8 个比特位执行标准的二进制相加(包括符号位),并且将计算结果中超出 8 位的数值丢弃: -![Art/bitshiftSignedAddition_2x.png](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Art/bitshiftSignedAddition_2x.png "Art/bitshiftSignedAddition_2x.png") +![Art/bitshiftSignedAddition_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSignedAddition_2x.png) -其次,使用二进制补码可以使负数的按位左移和右移运算得到跟正数同样的效果,即每向左移一位就将自身的数值乘以 2,每向右一位就将自身的数值除以 2。要达到此目的,对有符号整数的右移有一个额外的规则: +其次,使用二进制补码可以使负数的按位左移和右移运算得到跟正数同样的效果,即每向左移一位就将自身的数值乘以 2,每向右一位就将自身的数值除以 2。要达到此目的,对有符号整数的右移有一个额外的规则:当对有符号整数进行按位右移运算时,遵循与无符号整数相同的规则,但是对于移位产生的空白位使用*符号位*进行填充,而不是用 `0`。 -* 当对整数进行按位右移运算时,遵循与无符号整数相同的规则,但是对于移位产生的空白位使用*符号位*进行填充,而不是用 `0`。 - -![Art/bitshiftSigned_2x.png](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Art/bitshiftSigned_2x.png "Art/bitshiftSigned_2x.png") +![Art/bitshiftSigned_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSigned_2x.png) 这个行为可以确保有符号整数的符号位不会因为右移运算而改变,这通常被称为*算术移位*。 @@ -172,9 +170,9 @@ let blueComponent = pink & 0x0000FF // blueComponent 是 0x99,即 153 ## 溢出运算符 -在默认情况下,当向一个整数赋予超过它容量的值时,Swift 默认会报错,而不是生成一个无效的数。这个行为为我们在运算过大或着过小的数的时候提供了额外的安全性。 +当向一个整数类型的常量或者变量赋予超过它容量的值时,Swift 默认会报错,而不是允许生成一个无效的数。这个行为为我们在运算过大或者过小的数时提供了额外的安全性。 -例如,`Int16` 型整数能容纳的有符号整数范围是 `-32768` 到 `32767`,当为一个 `Int16` 型变量赋的值超过这个范围时,系统就会报错: +例如,`Int16` 型整数能容纳的有符号整数范围是 `-32768` 到 `32767`。当为一个 `Int16` 类型的变量或常量赋予的值超过这个范围时,系统就会报错: ```swift var potentialOverflow = Int16.max @@ -183,9 +181,9 @@ potentialOverflow += 1 // 这里会报错 ``` -为过大或者过小的数值提供错误处理,能让我们在处理边界值时更加灵活。 +在赋值时为过大或者过小的情况提供错误处理,能让我们在处理边界值时更加灵活。 -然而,也可以选择让系统在数值溢出的时候采取截断处理,而非报错。可以使用 Swift 提供的三个溢出运算符来让系统支持整数溢出运算。这些运算符都是以 `&` 开头的: +然而,当你希望的时候也可以选择让系统在数值溢出的时候采取截断处理,而非报错。Swift 提供的三个*溢出运算符*来让系统支持整数溢出运算。这些运算符都是以 `&` 开头的: * 溢出加法 `&+` * 溢出减法 `&-` @@ -205,11 +203,11 @@ unsignedOverflow = unsignedOverflow &+ 1 // 此时 unsignedOverflow 等于 0 ``` -`unsignedOverflow` 被初始化为 `UInt8` 所能容纳的最大整数(`255`,以二进制表示即 `11111111`)。然后使用了溢出加法运算符(`&+`)对其进行加 `1` 运算。这使得它的二进制表示正好超出 `UInt8` 所能容纳的位数,也就导致了数值的溢出,如下图所示。数值溢出后,留在 `UInt8` 边界内的值是 `00000000`,也就是十进制数值的 `0`。 +`unsignedOverflow` 被初始化为 `UInt8` 所能容纳的最大整数(`255`,以二进制表示即 `11111111`)。然后使用溢出加法运算符(`&+`)对其进行加 `1` 运算。这使得它的二进制表示正好超出 `UInt8` 所能容纳的位数,也就导致了数值的溢出,如下图所示。数值溢出后,仍然留在 `UInt8` 边界内的值是 `00000000`,也就是十进制数值的 `0`。 -![Art/overflowAddition_2x.png](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Art/overflowAddition_2x.png "Art/overflowAddition_2x.png") +![Art/overflowAddition_2x.png](https://docs.swift.org/swift-book/_images/overflowAddition_2x.png) -同样地,当我们对一个无符号整数使用溢出减法(`&-`)进行下溢运算时也会产生类似的现象: +当允许对一个无符号整数进行下溢运算时也会产生类似的情况。这里有一个使用溢出减法运算符(`&-`)的例子: ```swift var unsignedOverflow = UInt8.min @@ -220,9 +218,9 @@ unsignedOverflow = unsignedOverflow &- 1 `UInt8` 型整数能容纳的最小值是 `0`,以二进制表示即 `00000000`。当使用溢出减法运算符对其进行减 `1` 运算时,数值会产生下溢并被截断为 `11111111`, 也就是十进制数值的 `255`。 -![Art/overflowUnsignedSubtraction_2x.png](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Art/overflowUnsignedSubtraction_2x.png "Art/overflowAddition_2x.png") +![Art/overflowUnsignedSubtraction_2x.png](https://docs.swift.org/swift-book/_images/overflowUnsignedSubtraction_2x.png) -溢出也会发生在有符号整型数值上。在对有符号整型数值进行溢出加法或溢出减法运算时,符号位也需要参与计算,正如[按位左移、右移运算符](#bitwise_left_and_right_shift_operators)所描述的。 +溢出也会发生在有符号整型上。针对有符号整型的所有溢出加法或者减法运算都是按位运算的方式执行的,符号位也需要参与计算,正如[按位左移、右移运算符](#bitwise_left_and_right_shift_operators)所描述的。 ```swift var signedOverflow = Int8.min @@ -231,27 +229,27 @@ signedOverflow = signedOverflow &- 1 // 此时 signedOverflow 等于 127 ``` -`Int8` 型整数能容纳的最小值是 `-128`,以二进制表示即 `10000000`。当使用溢出减法运算符对其进行减 `1` 运算时,符号位被翻转,得到二进制数值 `01111111`,也就是十进制数值的 `127`,这个值也是 `Int8` 型整数所能容纳的最大值。 +`Int8` 型整数能容纳的最小值是 `-128`,以二进制表示即 `10000000`。当使用溢出减法运算符对其进行减 `1` 运算时,符号位被翻转,得到二进制数值 `01111111`,也就是十进制数值的 `127`,这个值也是 `Int8` 型整所能容纳的最大值。 -![Art/overflowSignedSubtraction_2x.png](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Art/overflowSignedSubtraction_2x.png "Art/overflowSignedSubtraction_2x.png") +![Art/overflowSignedSubtraction_2x.png](https://docs.swift.org/swift-book/_images/overflowSignedSubtraction_2x.png) -对于无符号与有符号整型数值来说,当出现上溢时,它们会从数值所能容纳的最大数变成最小的数。同样地,当发生下溢时,它们会从所能容纳的最小数变成最大的数。 +对于无符号与有符号整型数值来说,当出现上溢时,它们会从数值所能容纳的最大数变成最小数。同样地,当发生下溢时,它们会从所能容纳的最小数变成最大数。 ## 优先级和结合性 -运算符的*优先级*使得一些运算符优先于其他运算符,高优先级的运算符会先被计算。 +运算符的*优先级*使得一些运算符优先于其他运算符;它们会先被执行。 -*结合性*定义了相同优先级的运算符是如何结合的,也就是说,是与左边结合为一组,还是与右边结合为一组。可以将这意思理解为“它们是与左边的表达式结合的”或者“它们是与右边的表达式结合的”。 +*结合性*定义了相同优先级的运算符是如何结合的,也就是说,是与左边结合为一组,还是与右边结合为一组。可以将其理解为“它们是与左边的表达式结合的,”或者“它们是与右边的表达式结合的。” -在复合表达式的运算顺序中,运算符的优先级和结合性是非常重要的。举例来说,运算符优先级解释了为什么下面这个表达式的运算结果会是 `17`。 +当考虑一个复合表达式的计算顺序时,运算符的优先级和结合性是非常重要的。举例来说,运算符优先级解释了为什么下面这个表达式的运算结果会是 `17`。 ```swift 2 + 3 % 4 * 5 // 结果是 17 ``` -如果完全从左到右进行运算,则运算的过程是这样的: +如果你直接从左到右进行运算,你可能认为运算的过程是这样的: - 2 + 3 = 5 - 5 % 4 = 1 @@ -259,7 +257,7 @@ signedOverflow = signedOverflow &- 1 但是正确答案是 `17` 而不是 `5`。优先级高的运算符要先于优先级低的运算符进行计算。与 C 语言类似,在 Swift 中,乘法运算符(`*`)与取余运算符(`%`)的优先级高于加法运算符(`+`)。因此,它们的计算顺序要先于加法运算。 -而乘法与取余的优先级相同。这时为了得到正确的运算顺序,还需要考虑结合性。乘法与取余运算都是左结合的。可以将这考虑成为这两部分表达式都隐式地加上了括号: +而乘法运算与取余运算的优先级*相同*。这时为了得到正确的运算顺序,还需要考虑结合性。乘法运算与取余运算都是左结合的。可以将这考虑成,从它们的左边开始为这两部分表达式都隐式地加上括号: ```swift 2 + ((3 % 4) * 5) @@ -277,22 +275,22 @@ signedOverflow = signedOverflow &- 1 2 + 15 ``` -因此计算结果为 `17`。 +因此计算结果为 `17`。 -如果想查看完整的 Swift 运算符优先级和结合性规则,请参考[表达式](../chapter3/04_Expressions.html)。如果想查看 Swift 标准库提供所有的运算符,请查看 [Swift Standard Library Operators Reference](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Reference/Swift_StandardLibrary_Operators/index.html#//apple_ref/doc/uid/TP40016054)。 +有关 Swift 标准库提供的操作符信息,包括操作符优先级组和结核性设置的完整列表,请参见[操作符声明](https://developer.apple.com/documentation/swift/swift_standard_library/operator_declarations)。 > 注意 > -> 相对 C 语言和 Objective-C 来说,Swift 的运算符优先级和结合性规则更加简洁和可预测。但是,这也意味着它们相较于 C 语言及其衍生语言并不是完全一致的。在对现有的代码进行移植的时候,要注意确保运算符的行为仍然符合你的预期。 +> 相对 C 语言和 Objective-C 来说,Swift 的运算符优先级和结合性规则更加简洁和可预测。但是,这也意味着它们相较于 C 语言及其衍生语言并不是完全一致。在对现有的代码进行移植的时候,要注意确保运算符的行为仍然符合你的预期。 ## 运算符函数 -类和结构体可以为现有的运算符提供自定义的实现,这通常被称为*运算符重载*。 +类和结构体可以为现有的运算符提供自定义的实现。这通常被称为运算符*重载*。 -下面的例子展示了如何为自定义的结构体实现加法运算符(`+`)。算术加法运算符是一个双目运算符,因为它可以对两个值进行运算,同时它还是中缀运算符,因为它出现在两个值中间。 +下面的例子展示了如何让自定义的结构体支持加法运算符(`+`)。算术加法运算符是一个*二元运算符*,因为它是对两个值进行运算,同时它还可以称为*中缀*运算符,因为它出现在两个值中间。 -例子中定义了一个名为 `Vector2D` 的结构体用来表示二维坐标向量 `(x, y)`,紧接着定义了一个可以对两个 `Vector2D` 结构体进行相加的运算符函数: +例子中定义了一个名为 `Vector2D` 的结构体用来表示二维坐标向量 `(x, y)`,紧接着定义了一个可以将两个 `Vector2D` 结构体实例进行相加的*运算符函数*: ```swift struct Vector2D { @@ -306,7 +304,7 @@ extension Vector2D { } ``` -该运算符函数被定义为 `Vector2D` 上的一个类方法,并且函数的名字与它要进行重载的 `+` 名字一致。因为加法运算并不是一个向量必需的功能,所以这个类方法被定义在 `Vector2D` 的一个扩展中,而不是 `Vector2D` 结构体声明内。而算术加法运算符是双目运算符,所以这个运算符函数接收两个类型为 `Vector2D` 的参数,同时有一个 `Vector2D` 类型的返回值。 +该运算符函数被定义为 `Vector2D` 上的一个类方法,并且函数的名字与它要进行重载的 `+` 名字一致。因为加法运算并不是一个向量必需的功能,所以这个类方法被定义在 `Vector2D` 的一个扩展中,而不是 `Vector2D` 结构体声明内。而算术加法运算符是二元运算符,所以这个运算符函数接收两个类型为 `Vector2D` 的参数,同时有一个 `Vector2D` 类型的返回值。 在这个实现中,输入参数分别被命名为 `left` 和 `right`,代表在 `+` 运算符左边和右边的两个 `Vector2D` 实例。函数返回了一个新的 `Vector2D` 实例,这个实例的 `x` 和 `y` 分别等于作为参数的两个实例的 `x` 和 `y` 的值之和。 @@ -321,12 +319,12 @@ let combinedVector = vector + anotherVector 这个例子实现两个向量 `(3.0,1.0)` 和 `(2.0,4.0)` 的相加,并得到新的向量 `(5.0,5.0)`。这个过程如下图示: -![Art/vectorAddition_2x.png](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Art/vectorAddition_2x.png "Art/vectorAddition_2x.png") +![Art/vectorAddition_2x.png](https://docs.swift.org/swift-book/_images/vectorAddition_2x.png) ### 前缀和后缀运算符 -上个例子演示了一个双目中缀运算符的自定义实现。类与结构体也能提供标准*单目运算符*的实现。单目运算符只运算一个值。当运算符出现在值之前时,它就是*前缀*的(例如 `-a`),而当它出现在值之后时,它就是*后缀*的(例如 `b!`)。 +上个例子演示了一个二元中缀运算符的自定义实现。类与结构体也能提供标准*一元运算符*的实现。一元运算符只运算一个值。当运算符出现在值之前时,它就是*前缀*的(例如 `-a`),而当它出现在值之后时,它就是*后缀*的(例如 `b!`)。 要实现前缀或者后缀运算符,需要在声明运算符函数的时候在 `func` 关键字之前指定 `prefix` 或者 `postfix` 修饰符: @@ -338,9 +336,9 @@ extension Vector2D { } ``` -这段代码为 `Vector2D` 类型实现了单目负号运算符。由于该运算符是前缀运算符,所以这个函数需要加上 `prefix` 修饰符。 +这段代码为 `Vector2D` 类型实现了一元运算符(`-a`)。由于该运算符是前缀运算符,所以这个函数需要加上 `prefix` 修饰符。 -对于简单数值,单目负号运算符可以对它们的正负性进行改变。对于 `Vector2D` 来说,该运算将其 `x` 和 `y` 属性的正负性都进行了改变: +对于简单数值,一元负号运算符可以对它们的正负性进行改变。对于 `Vector2D` 来说,该运算将其 `x` 和 `y` 属性的正负性都进行了改变: ```swift let positive = Vector2D(x: 3.0, y: 4.0) @@ -353,7 +351,9 @@ let alsoPositive = -negative ### 复合赋值运算符 -*复合赋值运算符*将赋值运算符(`=`)与其它运算符进行结合。例如,将加法与赋值结合成加法赋值运算符(`+=`)。在实现的时候,需要把运算符的左参数设置成 `inout` 类型,因为这个参数的值会在运算符函数内直接被修改。 +*复合赋值运算符*将赋值运算符(`=`)与其它运算符进行结合。例如,将加法与赋值结合成加法赋值运算符(`+=`)。在实现的时候,需要把运算符的左参数设置成 `inout` 类型,因为这个参数的值会在运算符函数内直接被修改。 + +在下面的例子中,对 `Vector2D` 实例实现了一个加法赋值运算符函数: ```swift extension Vector2D { @@ -374,14 +374,14 @@ original += vectorToAdd > 注意 > -> 不能对默认的赋值运算符(`=`)进行重载。只有组合赋值运算符可以被重载。同样地,也无法对三目条件运算符 (`a ? b : c`) 进行重载。 +> 不能对默认的赋值运算符(`=`)进行重载。只有复合赋值运算符可以被重载。同样地,也无法对三元条件运算符 (`a ? b : c`) 进行重载。 ### 等价运算符 -自定义的类和结构体没有对*等价运算符*进行默认实现,等价运算符通常被称为“相等”运算符(`==`)与“不等”运算符(`!=`)。对于自定义类型,Swift 无法判断其是否“相等”,因为“相等”的含义取决于这些自定义类型在你的代码中所扮演的角色。 +通常情况下,自定义的类和结构体没有对*等价运算符*进行默认实现,等价运算符通常被称为*相等*运算符(`==`)与*不等*运算符(`!=`)。 -为了使用等价运算符能对自定义的类型进行判等运算,需要为其提供自定义实现,实现的方法与其它中缀运算符一样, 并且增加对标准库 `Equatable` 协议的遵循: +为了使用等价运算符对自定义的类型进行判等运算,需要为“相等”运算符提供自定义实现,实现的方法与其它中缀运算符一样, 并且增加对标准库 `Equatable` 协议的遵循: ```swift extension Vector2D: Equatable { @@ -391,7 +391,7 @@ extension Vector2D: Equatable { } ``` -上述代码实现了“相等”运算符(`==`)来判断两个 `Vector2D` 实例是否相等。对于 `Vector2D` 类型来说,“相等”意味着“两个实例的 `x` 属性和 `y` 属性都相等”,这也是代码中用来进行判等的逻辑。示例里同时也实现了“不等”运算符(`!=`),它简单地将“相等”运算符的结果进行取反后返回。 +上述代码实现了“相等”运算符(`==`)来判断两个 `Vector2D` 实例是否相等。对于 `Vector2D` 来说,“相等”意味着“两个实例的 `x` 和 `y` 都相等”,这也是代码中用来进行判等的逻辑。如果你已经实现了“相等”运算符,通常情况下你并不需要自己再去实现“不等”运算符(`!=`)。标准库对于“不等”运算符提供了默认的实现,它简单地将“相等”运算符的结果进行取反后返回。 现在我们可以使用这两个运算符来判断两个 `Vector2D` 实例是否相等: @@ -404,15 +404,15 @@ if twoThree == anotherTwoThree { // 打印 “These two vectors are equivalent.” ``` -Swift 为以下自定义类型提等价运算符供合成实现: +Swift 为以下数种自定义类型提供等价运算符的默认实现: -- 只拥有遵循 `Equatable` 协议存储属性的结构体; -- 只拥有遵循 `Equatable` 协议关联类型的枚举; -- 没有关联类型的枚举。 +- 只拥有存储属性,并且它们全都遵循 `Equatable` 协议的结构体 +- 只拥有关联类型,并且它们全都遵循 `Equatable` 协议的枚举 +- 没有关联类型的枚举 -在类型原本的声明中声明遵循 `Equatable` 来接收这些默认实现。 +在类型原始的声明中声明遵循 `Equatable` 来接收这些默认实现。 -下面为三维位置向量 `(x, y, z)` 定义的 `Vector3D` 结构体,与 `Vector2D` 类似,由于 `x`,`y` 和 `z` 属性都是 `Equatable` 类型,`Vector3D` 就收到默认的等价运算符实现了。 +下面为三维位置向量 `(x, y, z)` 定义的 `Vector3D` 结构体,与 `Vector2D` 类似。由于 `x`,`y` 和 `z` 属性都是 `Equatable` 类型,`Vector3D` 获得了默认的等价运算符实现。 ```swift struct Vector3D: Equatable { @@ -438,7 +438,7 @@ if twoThreeFour == anotherTwoThreeFour { prefix operator +++ ``` -上面的代码定义了一个新的名为 `+++` 的前缀运算符。对于这个运算符,在 Swift 中并没有意义,因此我们针对 `Vector2D` 的实例来定义它的意义。对这个示例来讲,`+++` 被实现为“前缀双自增”运算符。它使用了前面定义的复合加法运算符来让矩阵对自身进行相加,从而让 `Vector2D` 实例的 `x` 属性和 `y` 属性的值翻倍。实现 `+++` 运算符的方式如下: +上面的代码定义了一个新的名为 `+++` 的前缀运算符。对于这个运算符,在 Swift 中并没有已知的意义,因此在针对 `Vector2D` 实例的特定上下文中,给予了它自定义的意义。对这个示例来讲,`+++` 被实现为“前缀双自增”运算符。它使用了前面定义的复合加法运算符来让矩阵与自身进行相加,从而让 `Vector2D` 实例的 `x` 属性和 `y` 属性值翻倍。你可以像下面这样通过对 `Vector2D` 添加一个 `+++` 类方法,来实现 `+++` 运算符: ```swift extension Vector2D { @@ -457,9 +457,9 @@ let afterDoubling = +++toBeDoubled ### 自定义中缀运算符的优先级 -每个自定义中缀运算符都属于某个优先级组。这个优先级组指定了这个运算符和其他中缀运算符的优先级和结合性。[优先级和结合性](#precedence_and_associativity)中详细阐述了这两个特性是如何对中缀运算符的运算产生影响的。 +每个自定义中缀运算符都属于某个优先级组。优先级组指定了这个运算符相对于其他中缀运算符的优先级和结合性。[优先级和结合性](#precedence_and_associativity)中详细阐述了这两个特性是如何对中缀运算符的运算产生影响的。 -而没有明确放入优先级组的自定义中缀运算符会放到一个默认的优先级组内,其优先级高于三元运算符。 +而没有明确放入某个优先级组的自定义中缀运算符将会被放到一个默认的优先级组内,其优先级高于三元运算符。 以下例子定义了一个新的自定义中缀运算符 `+-`,此运算符属于 `AdditionPrecedence` 优先组: @@ -476,8 +476,26 @@ let plusMinusVector = firstVector +- secondVector // plusMinusVector 是一个 Vector2D 实例,并且它的值为 (4.0, -2.0) ``` -这个运算符把两个向量的 `x` 值相加,同时用第一个向量的 `y` 值减去第二个向量的 `y` 值。因为它本质上是属于“相加型”运算符,所以将它放置 `+` 和 `-` 等默认的中缀“相加型”运算符相同的优先级组中。关于 Swift 标准库提供的运算符,以及完整的运算符优先级组和结合性设置,请参考 [Swift Standard Library Operators Reference](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Reference/Swift_StandardLibrary_Operators/index.html#//apple_ref/doc/uid/TP40016054)。而更多关于优先级组以及自定义操作符和优先级组的语法,请参考[运算符声明](#operator_declaration) +这个运算符把两个向量的 `x` 值相加,同时从第一个向量的 `y` 中减去第二个向量的 `y` 。因为它本质上是属于“相加型”运算符,所以将它放置在 `+` 和 `-` 等默认中缀“相加型”运算符相同的优先级组中。关于 Swift 标准库提供的运算符,以及完整的运算符优先级组和结合性设置,请参考 [Operator Declarations](https://developer.apple.com/documentation/swift/swift_standard_library/operator_declarations)。而更多关于优先级组以及自定义操作符和优先级组的语法,请参考[Operator Declaration](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID380) > 注意 > > 当定义前缀与后缀运算符的时候,我们并没有指定优先级。然而,如果对同一个值同时使用前缀与后缀运算符,则后缀运算符会先参与运算。 + + + + + + + + + + + + + + + + + + From ddda95cc6b4a1f7751aeb0808b38e5ea3fbd91d5 Mon Sep 17 00:00:00 2001 From: dzy_PC Date: Mon, 31 Dec 2018 14:13:35 +0800 Subject: [PATCH 006/107] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E7=A9=BA=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/chapter2/26_Advanced_Operators.md | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/source/chapter2/26_Advanced_Operators.md b/source/chapter2/26_Advanced_Operators.md index e5aedd73..9639a98d 100644 --- a/source/chapter2/26_Advanced_Operators.md +++ b/source/chapter2/26_Advanced_Operators.md @@ -480,22 +480,4 @@ let plusMinusVector = firstVector +- secondVector > 注意 > -> 当定义前缀与后缀运算符的时候,我们并没有指定优先级。然而,如果对同一个值同时使用前缀与后缀运算符,则后缀运算符会先参与运算。 - - - - - - - - - - - - - - - - - - +> 当定义前缀与后缀运算符的时候,我们并没有指定优先级。然而,如果对同一个值同时使用前缀与后缀运算符,则后缀运算符会先参与运算。 \ No newline at end of file From a6a14ebcbe14b52d37240c0b99c2e8cc7df2b87f Mon Sep 17 00:00:00 2001 From: BqLin Date: Sat, 5 Jan 2019 00:36:11 +0800 Subject: [PATCH 007/107] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=A0=87=E7=82=B9?= =?UTF-8?q?=E4=B8=8E=E7=A9=BA=E6=A0=BC=E9=94=99=E8=AF=AF=20(#851)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 修正 source/chapter2/04_Collection_Types.md 错误的空格与标点 * 修正 source/chapter2/05_Control_Flow.md 错误的空格与标点使用 * 修正 source/chapter2/06_Functions.md 去除多余空格 --- source/chapter2/04_Collection_Types.md | 18 +++++++++--------- source/chapter2/05_Control_Flow.md | 7 +++---- source/chapter2/06_Functions.md | 2 +- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/source/chapter2/04_Collection_Types.md b/source/chapter2/04_Collection_Types.md index f7d09827..bc9d430a 100755 --- a/source/chapter2/04_Collection_Types.md +++ b/source/chapter2/04_Collection_Types.md @@ -234,7 +234,7 @@ for item in shoppingList { 如果我们同时需要每个数据项的值和索引值,可以使用 `enumerated()` 方法来进行数组遍历。`enumerated()` 返回一个由每一个数据项索引值和数据值组成的元组。我们可以把这个元组分解成临时常量或者变量来进行遍历: ```swift -for (index, value) in shoppingList. enumerated() { +for (index, value) in shoppingList.enumerated() { print("Item \(String(index + 1)): \(value)") } // Item 1: Six eggs @@ -259,9 +259,9 @@ for (index, value) in shoppingList. enumerated() { ### 集合类型的哈希值 -一个类型为了存储在集合中,该类型必须是*可哈希化*的--也就是说,该类型必须提供一个方法来计算它的*哈希值*。一个哈希值是 `Int` 类型的,相等的对象哈希值必须相同,比如 `a==b`,因此必须 `a.hashValue == b.hashValue`。 +一个类型为了存储在集合中,该类型必须是*可哈希化*的——也就是说,该类型必须提供一个方法来计算它的*哈希值*。一个哈希值是 `Int` 类型的,相等的对象哈希值必须相同,比如 `a==b`,因此必须 `a.hashValue == b.hashValue`。 -Swift 的所有基本类型(比如 `String`,`Int`,`Double` 和 `Bool`)默认都是可哈希化的,可以作为集合的值的类型或者字典的键的类型。没有关联值的枚举成员值(在[枚举](./08_Enumerations.html)有讲述)默认也是可哈希化的。 +Swift 的所有基本类型(比如 `String`、`Int`、`Double` 和 `Bool`)默认都是可哈希化的,可以作为集合的值的类型或者字典的键的类型。没有关联值的枚举成员值(在[枚举](./08_Enumerations.html)有讲述)默认也是可哈希化的。 > 注意 > @@ -301,7 +301,7 @@ print("letters is of type Set with \(letters.count) items.") letters.insert("a") // letters 现在含有1个 Character 类型的值 letters = [] -// letters 现在是一个空的 Set, 但是它依然是 Set 类型 +// letters 现在是一个空的 Set,但是它依然是 Set 类型 ``` @@ -417,7 +417,7 @@ for genre in favoriteGenres.sorted() { ### 基本集合操作 -下面的插图描述了两个集合-`a` 和 `b`-以及通过阴影部分的区域显示集合各种操作的结果。 +下面的插图描述了两个集合 `a` 和 `b`,以及通过阴影部分的区域显示集合各种操作的结果。 ![](https://docs.swift.org/swift-book/_images/setVennDiagram_2x.png) @@ -433,18 +433,18 @@ let singleDigitPrimeNumbers: Set = [2, 3, 5, 7] oddDigits.union(evenDigits).sorted() // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] -oddDigits. intersection(evenDigits).sorted() +oddDigits.intersection(evenDigits).sorted() // [] oddDigits.subtracting(singleDigitPrimeNumbers).sorted() // [1, 9] -oddDigits. symmetricDifference(singleDigitPrimeNumbers).sorted() +oddDigits.symmetricDifference(singleDigitPrimeNumbers).sorted() // [1, 2, 9] ``` ### 集合成员关系和相等 -下面的插图描述了三个集合-`a`,`b` 和 `c`,以及通过重叠区域表述集合间共享的元素。集合 `a` 是集合 `b` 的父集合,因为 `a` 包含了 `b` 中所有的元素,相反的,集合 `b` 是集合 `a` 的子集合,因为属于 `b` 的元素也被 `a` 包含。集合 `b` 和集合 `c` 彼此不关联,因为它们之间没有共同的元素。 +下面的插图描述了三个集合 `a`、`b` 和 `c`,以及通过重叠区域表述集合间共享的元素。集合 `a` 是集合 `b` 的父集合,因为 `a` 包含了 `b` 中所有的元素,相反的,集合 `b` 是集合 `a` 的子集合,因为属于 `b` 的元素也被 `a` 包含。集合 `b` 和集合 `c` 彼此不关联,因为它们之间没有共同的元素。 ![](https://docs.swift.org/swift-book/_images/setEulerDiagram_2x.png) @@ -619,7 +619,7 @@ airports["APL"] = nil 此外,`removeValue(forKey:)` 方法也可以用来在字典中移除键值对。这个方法在键值对存在的情况下会移除该键值对并且返回被移除的值或者在没有值的情况下返回 `nil`: ```swift -if let removedValue = airports. removeValue(forKey: "DUB") { +if let removedValue = airports.removeValue(forKey: "DUB") { print("The removed airport's name is \(removedValue).") } else { print("The airports dictionary does not contain a value for DUB.") diff --git a/source/chapter2/05_Control_Flow.md b/source/chapter2/05_Control_Flow.md index 5a7bca08..e356eac0 100755 --- a/source/chapter2/05_Control_Flow.md +++ b/source/chapter2/05_Control_Flow.md @@ -79,7 +79,7 @@ for tickMark in 0.. ## 控制转移语句 @@ -750,7 +749,7 @@ greet(["name": "Jane", "location": "Cupertino"]) 如果 `guard` 语句的条件被满足,则继续执行 `guard` 语句大括号后的代码。将变量或者常量的可选绑定作为 `guard` 语句的条件,都可以保护 `guard` 语句后面的代码。 -如果条件不被满足,在 `else` 分支上的代码就会被执行。这个分支必须转移控制以退出 `guard` 语句出现的代码段。它可以用控制转移语句如 `return`,`break`,`continue` 或者 `throw` 做这件事,或者调用一个不返回的方法或函数,例如 `fatalError()`。 +如果条件不被满足,在 `else` 分支上的代码就会被执行。这个分支必须转移控制以退出 `guard` 语句出现的代码段。它可以用控制转移语句如 `return`、`break`、`continue` 或者 `throw` 做这件事,或者调用一个不返回的方法或函数,例如 `fatalError()`。 相比于可以实现同样功能的 `if` 语句,按需使用 `guard` 语句会提升我们代码的可读性。它可以使你的代码连贯的被执行而不需要将它包在 `else` 块中,它可以使你在紧邻条件判断的地方,处理违规的情况。 diff --git a/source/chapter2/06_Functions.md b/source/chapter2/06_Functions.md index 3e91c02f..115558e5 100755 --- a/source/chapter2/06_Functions.md +++ b/source/chapter2/06_Functions.md @@ -37,7 +37,7 @@ print(greet(person: "Brian")) > 注意 > -> `print(_:separator:terminator:)` 函数的第一个参数并没有设置一个标签,而其他的参数因为已经有了默认值,因此是可选的。关于这些函数语法上的变化详见下方关于 函数参数标签和参数名 以及 默认参数值。 +> `print(_:separator:terminator:)` 函数的第一个参数并没有设置一个标签,而其他的参数因为已经有了默认值,因此是可选的。关于这些函数语法上的变化详见下方关于 函数参数标签和参数名以及默认参数值。 在 `greet(person:)` 的函数体中,先定义了一个新的名为 `greeting` 的 `String` 常量,同时,把对 `personName` 的问候消息赋值给了 `greeting` 。然后用 `return` 关键字把这个问候返回出去。一旦 `return greeting` 被调用,该函数结束它的执行并返回 `greeting` 的当前值。 From 3acf9a1bc477a89c5b17e555dfcd8774b154c245 Mon Sep 17 00:00:00 2001 From: rsenjoyer Date: Sat, 5 Jan 2019 00:41:18 +0800 Subject: [PATCH 008/107] 22-Generics (#849) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update 19 Nested types for Swift 4.2 * Revert "Update 19 Nested types for Swift 4.2" This reverts commit 7e0fbe87ed370b36bd5134e19241e083e5ef8f4c. * Update 16_Optional_Chaining * Update 16_Optional_Chaining * Update 16_Optional_Chaining * 新增部分翻译 * 增加翻译内容 * 完成初步翻译 * 修改部分内容 * 更新翻译 * 删除标题以及原文链接 * 修正相关的链接 --- source/chapter2/16_Optional_Chaining.md | 766 ++++++++++++------------ source/chapter2/22_Generics.md | 303 +++++----- 2 files changed, 545 insertions(+), 524 deletions(-) diff --git a/source/chapter2/16_Optional_Chaining.md b/source/chapter2/16_Optional_Chaining.md index e9e4945c..33535a1d 100755 --- a/source/chapter2/16_Optional_Chaining.md +++ b/source/chapter2/16_Optional_Chaining.md @@ -1,383 +1,383 @@ -# 可选链式调用 - -*可选链式调用*是一种可以在当前值可能为 `nil` 的可选值上请求和调用属性、方法及下标的方法。如果可选值有值,那么调用就会成功;如果可选值是 `nil`,那么调用将返回 `nil`。多个调用可以连接在一起形成一个调用链,如果其中任何一个节点为 `nil`,整个调用链都会失败,即返回 `nil`。 - -> 注意 -> -> Swift 的可选链式调用和 Objective-C 中向 `nil` 发送消息有些相像,但是 Swift 的可选链式调用可以应用于任意类型,并且能检查调用是否成功。 - - -## 使用可选链式调用代替强制展开 - -通过在想调用的属性、方法,或下标的可选值后面放一个问号(`?`),可以定义一个可选链。这一点很像在可选值后面放一个叹号(`!`)来强制展开它的值。它们的主要区别在于当可选值为空时可选链式调用只会调用失败,然而强制展开将会触发运行时错误。 - -为了反映可选链式调用可以在空值(`nil`)上调用的事实,不论这个调用的属性、方法及下标返回的值是不是可选值,它的返回结果都是一个可选值。你可以利用这个返回值来判断你的可选链式调用是否调用成功,如果调用有返回值则说明调用成功,返回 `nil` 则说明调用失败。 - -这里需要特别指出,可选链式调用的返回结果与原本的返回结果具有相同的类型,但是被包装成了一个可选值。例如,使用可选链式调用访问属性,当可选链式调用成功时,如果属性原本的返回结果是 `Int` 类型,则会变为 `Int?` 类型。 - -下面几段代码将解释可选链式调用和强制展开的不同。 - -首先定义两个类 `Person` 和 `Residence`: - -```swift -class Person { - var residence: Residence? -} - -class Residence { - var numberOfRooms = 1 -} -``` - -`Residence` 有一个 `Int` 类型的属性 `numberOfRooms`,其默认值为 `1`。`Person` 具有一个可选的 `residence` 属性,其类型为 `Residence?`。 - -假如你创建了一个新的 `Person` 实例,它的 `residence` 属性由于是可选类型而将被初始化为 `nil`,在下面的代码中,`john` 有一个值为 `nil` 的 `residence` 属性: - -```swift -let john = Person() -``` - -如果使用叹号(`!`)强制展开获得这个 `john` 的 `residence` 属性中的 `numberOfRooms` 值,会触发运行时错误,因为这时 `residence` 没有可以展开的值: - -```swift -let roomCount = john.residence!.numberOfRooms -// 这会引发运行时错误 -``` - -`john.residence` 为非 `nil` 值的时候,上面的调用会成功,并且把 `roomCount` 设置为 `Int` 类型的房间数量。正如上面提到的,当 `residence` 为 `nil` 的时候,上面这段代码会触发运行时错误。 - -可选链式调用提供了另一种访问 `numberOfRooms` 的方式,使用问号(`?`)来替代原来的叹号(`!`): - -```swift -if let roomCount = john.residence?.numberOfRooms { - print("John's residence has \(roomCount) room(s).") -} else { - print("Unable to retrieve the number of rooms.") -} -// 打印 “Unable to retrieve the number of rooms.” -``` - -在 `residence` 后面添加问号之后,Swift 就会在 `residence` 不为 `nil` 的情况下访问 `numberOfRooms`。 - -因为访问 `numberOfRooms` 有可能失败,可选链式调用会返回 `Int?` 类型,或称为“可选的 `Int`”。如上例所示,当 `residence` 为 `nil` 的时候,可选的 `Int` 将会为 `nil`,表明无法访问 `numberOfRooms`。访问成功时,可选的 `Int` 值会通过可选绑定展开,并赋值给非可选类型的 `roomCount` 常量。 - -要注意的是,即使 `numberOfRooms` 是非可选的 `Int` 时,这一点也成立。只要使用可选链式调用就意味着 `numberOfRooms` 会返回一个 `Int?` 而不是 `Int`。 - -可以将一个 `Residence` 的实例赋给 `john.residence`,这样它就不再是 `nil` 了: - -```swift -john.residence = Residence() -``` - -`john.residence` 现在包含一个实际的 `Residence` 实例,而不再是 `nil`。如果你试图使用先前的可选链式调用访问 `numberOfRooms`,它现在将返回值为 `1` 的 `Int?` 类型的值: - -```swift -if let roomCount = john.residence?.numberOfRooms { - print("John's residence has \(roomCount) room(s).") -} else { - print("Unable to retrieve the number of rooms.") -} -// 打印 “John's residence has 1 room(s).” -``` - - -## 为可选链式调用定义模型类 - -通过使用可选链式调用可以调用多层属性、方法和下标。这样可以在复杂的模型中向下访问各种子属性,并且判断能否访问子属性的属性、方法和下标。 - -下面这段代码定义了四个模型类,这些例子包括多层可选链式调用。为了方便说明,在 `Person` 和 `Residence` 的基础上增加了 `Room` 类和 `Address` 类,以及相关的属性、方法以及下标。 - -`Person` 类的定义基本保持不变: - -```swift -class Person { - var residence: Residence? -} -``` - -`Residence` 类比之前复杂些,增加了一个名为 `rooms` 的变量属性,该属性被初始化为 `[Room]` 类型的空数组: - -```swift -class Residence { - var rooms = [Room]() - var numberOfRooms: Int { - return rooms.count - } - subscript(i: Int) -> Room { - get { - return rooms[i] - } - set { - rooms[i] = newValue - } - } - func printNumberOfRooms() { - print("The number of rooms is \(numberOfRooms)") - } - var address: Address? -} -``` - -现在 `Residence` 有了一个存储 `Room` 实例的数组,`numberOfRooms` 属性被实现为计算型属性,而不是存储型属性。`numberOfRooms` 属性简单地返回 `rooms` 数组的 `count` 属性的值。 - -`Residence` 还提供了访问 `rooms` 数组的快捷方式,即提供可读写的下标来访问 `rooms` 数组中指定位置的元素。 - -此外,`Residence` 还提供了 `printNumberOfRooms` 方法,这个方法的作用是打印 `numberOfRooms` 的值。 - -最后,`Residence` 还定义了一个可选属性 `address`,其类型为 `Address?`。`Address` 类的定义在下面会说明。 - -`Room` 类是一个简单类,其实例被存储在 `rooms` 数组中。该类只包含一个属性 `name`,以及一个用于将该属性设置为适当的房间名的初始化函数: - -```swift -class Room { - let name: String - init(name: String) { self.name = name } -} -``` - -最后一个类是 `Address`,这个类有三个 `String?` 类型的可选属性。`buildingName` 以及 `buildingNumber` 属性分别表示大厦的名称和号码,第三个属性 `street` 表示大厦所在街道的名称: - -```swift -class Address { - var buildingName: String? - var buildingNumber: String? - var street: String? - func buildingIdentifier() -> String? { - if buildingName != nil { - return buildingName - } else if let buildingNumber = buildingNumber, let street = street { - return "\(buildingNumber) \(street)" - } else { - return nil - } - } -} -``` - -`Address` 类提供了 `buildingIdentifier()` 方法,返回值为 `String?`。 如果 `buildingName` 有值则返回 `buildingName`。或者,如果 `buildingNumber` 和 `street` 均有值,则返回两者拼接得到的字符串。否则,返回 `nil`。 - - -## 通过可选链式调用访问属性 - -正如[使用可选链式调用代替强制展开](#optional_chaining_as_an_alternative_to_forced_unwrapping)中所述,可以通过可选链式调用在一个可选值上访问它的属性,并判断访问是否成功。 - -使用前面定义过的类,创建一个 `Person` 实例,然后像之前一样,尝试访问 `numberOfRooms` 属性: - -```swift -let john = Person() -if let roomCount = john.residence?.numberOfRooms { - print("John's residence has \(roomCount) room(s).") -} else { - print("Unable to retrieve the number of rooms.") -} -// 打印 “Unable to retrieve the number of rooms.” -``` - -因为 `john.residence` 为 `nil`,所以这个可选链式调用依旧会像先前一样失败。 - -还可以通过可选链式调用来设置属性值: - -```swift -let someAddress = Address() -someAddress.buildingNumber = "29" -someAddress.street = "Acacia Road" -john.residence?.address = someAddress -``` - -在这个例子中,通过 `john.residence` 来设定 `address` 属性也会失败,因为 `john.residence` 当前为 `nil`。 - -上面代码中的赋值过程是可选链式调用的一部分,这意味着可选链式调用失败时,等号右侧的代码不会被执行。对于上面的代码来说,很难验证这一点,因为像这样赋值一个常量没有任何副作用。下面的代码完成了同样的事情,但是它使用一个函数来创建 `Address` 实例,然后将该实例返回用于赋值。该函数会在返回前打印 “Function was called”,这使你能验证等号右侧的代码是否被执行。 - -```swift -func createAddress() -> Address { - print("Function was called.") - - let someAddress = Address() - someAddress.buildingNumber = "29" - someAddress.street = "Acacia Road" - - return someAddress -} -john.residence?.address = createAddress() -``` - -没有任何打印消息,可以看出 `createAddress()` 函数并未被执行。 - - -## 通过可选链式调用来调用方法 - -可以通过可选链式调用来调用方法,并判断是否调用成功,即使这个方法没有返回值。 - -`Residence` 类中的 `printNumberOfRooms()` 方法打印当前的 `numberOfRooms` 值,如下所示: - -```swift -func printNumberOfRooms() { - print("The number of rooms is \(numberOfRooms)") -} -``` - -这个方法没有返回值。然而,没有返回值的方法具有隐式的返回类型 `Void`,如[无返回值函数](./06_Functions.html#functions_without_return_values)中所述。这意味着没有返回值的方法也会返回 `()`,或者说空的元组。 - -如果在可选值上通过可选链式调用来调用这个方法,该方法的返回类型会是 `Void?`,而不是 `Void`,因为通过可选链式调用得到的返回值都是可选的。这样我们就可以使用 `if` 语句来判断能否成功调用 `printNumberOfRooms()` 方法,即使方法本身没有定义返回值。通过判断返回值是否为 `nil` 可以判断调用是否成功: - -```swift -if john.residence?.printNumberOfRooms() != nil { - print("It was possible to print the number of rooms.") -} else { - print("It was not possible to print the number of rooms.") -} -// 打印 “It was not possible to print the number of rooms.” -``` - -同样的,可以据此判断通过可选链式调用为属性赋值是否成功。在上面的[通过可选链式调用访问属性](#accessing_properties_through_optional_chaining)的例子中,我们尝试给 `john.residence` 中的 `address` 属性赋值,即使 `residence` 为 `nil`。通过可选链式调用给属性赋值会返回 `Void?`,通过判断返回值是否为 `nil` 就可以知道赋值是否成功: - -```swift -if (john.residence?.address = someAddress) != nil { - print("It was possible to set the address.") -} else { - print("It was not possible to set the address.") -} -// 打印 “It was not possible to set the address.” -``` - - -## 通过可选链式调用访问下标 - -通过可选链式调用,我们可以在一个可选值上访问下标,并且判断下标调用是否成功。 - -> 注意 -> -> 通过可选链式调用访问可选值的下标时,应该将问号放在下标方括号的前面而不是后面。可选链式调用的问号一般直接跟在可选表达式的后面。 - -下面这个例子用下标访问 `john.residence` 属性存储的 `Residence` 实例的 `rooms` 数组中的第一个房间的名称,因为 `john.residence` 为 `nil`,所以下标调用失败了: - -```swift -if let firstRoomName = john.residence?[0].name { - print("The first room name is \(firstRoomName).") -} else { - print("Unable to retrieve the first room name.") -} -// 打印 “Unable to retrieve the first room name.” -``` - -在这个例子中,问号直接放在 `john.residence` 的后面,并且在方括号的前面,因为 `john.residence` 是可选值。 - -类似的,可以通过下标,用可选链式调用来赋值: - -```swift -john.residence?[0] = Room(name: "Bathroom") -``` - -这次赋值同样会失败,因为 `residence` 目前是 `nil`。 - -如果你创建一个 `Residence` 实例,并为其 `rooms` 数组添加一些 `Room` 实例,然后将 `Residence` 实例赋值给 `john.residence`,那就可以通过可选链和下标来访问数组中的元素: - -```swift -let johnsHouse = Residence() -johnsHouse.rooms.append(Room(name: "Living Room")) -johnsHouse.rooms.append(Room(name: "Kitchen")) -john.residence = johnsHouse - -if let firstRoomName = john.residence?[0].name { - print("The first room name is \(firstRoomName).") -} else { - print("Unable to retrieve the first room name.") -} -// 打印 “The first room name is Living Room.” -``` - - -### 访问可选类型的下标 - -如果下标返回可选类型值,比如 Swift 中 `Dictionary` 类型的键的下标,可以在下标的结尾括号后面放一个问号来在其可选返回值上进行可选链式调用: - -```swift -var testScores = ["Dave": [86, 82, 84], "Bev": [79, 94, 81]] -testScores["Dave"]?[0] = 91 -testScores["Bev"]?[0] += 1 -testScores["Brian"]?[0] = 72 -// "Dave" 数组现在是 [91, 82, 84],"Bev" 数组现在是 [80, 94, 81] -``` - -上面的例子中定义了一个 `testScores` 数组,包含了两个键值对,分别把 `String` 类型的键映射到一个 `Int` 值的数组。这个例子用可选链式调用把 `"Dave"` 数组中第一个元素设为 `91`,把 `"Bev"` 数组的第一个元素 `+1`,然后尝试把 `"Brian"` 数组中的第一个元素设为 `72`。前两个调用成功,因为 `testScores` 字典中包含 `"Dave"` 和 `"Bev"` 这两个键。但是 `testScores` 字典中没有 `"Brian"` 这个键,所以第三个调用失败。 - - -## 连接多层可选链式调用 - -可以通过连接多个可选链式调用在更深的模型层级中访问属性、方法以及下标。然而,多层可选链式调用不会增加返回值的可选层级。 - -也就是说: - -+ 如果你访问的值不是可选的,可选链式调用将会返回可选值。 -+ 如果你访问的值就是可选的,可选链式调用不会让可选返回值变得“更可选”。 - -因此: - -+ 通过可选链式调用访问一个 `Int` 值,将会返回 `Int?`,无论使用了多少层可选链式调用。 -+ 类似的,通过可选链式调用访问 `Int?` 值,依旧会返回 `Int?` 值,并不会返回 `Int??`。 - -下面的例子尝试访问 `john` 中的 `residence` 属性中的 `address` 属性中的 `street` 属性。这里使用了两层可选链式调用,`residence` 以及 `address` 都是可选值: - -```swift -if let johnsStreet = john.residence?.address?.street { - print("John's street name is \(johnsStreet).") -} else { - print("Unable to retrieve the address.") -} -// 打印 “Unable to retrieve the address.” -``` - -`john.residence` 现在包含一个有效的 `Residence` 实例。然而,`john.residence.address` 的值当前为 `nil`。因此,调用 `john.residence?.address?.street` 会失败。 - -需要注意的是,上面的例子中,`street` 的属性为 `String?`。`john.residence?.address?.street` 的返回值也依然是 `String?`,即使已经使用了两层可选链式调用。 - -如果为 `john.residence.address` 赋值一个 `Address` 实例,并且为 `address` 中的 `street` 属性设置一个有效值,我们就能过通过可选链式调用来访问 `street` 属性: - -```swift -let johnsAddress = Address() -johnsAddress.buildingName = "The Larches" -johnsAddress.street = "Laurel Street" -john.residence?.address = johnsAddress - -if let johnsStreet = john.residence?.address?.street { - print("John's street name is \(johnsStreet).") -} else { - print("Unable to retrieve the address.") -} -// 打印 “John's street name is Laurel Street.” -``` - -在上面的例子中,因为 `john.residence` 包含一个有效的 `Address` 实例,所以对 `john.residence` 的 `address` 属性赋值将会成功。 - - -## 在方法的可选返回值上进行可选链式调用 - -上面的例子展示了如何在一个可选值上通过可选链式调用来获取它的属性值。我们还可以在一个可选值上通过可选链式调用来调用方法,并且可以根据需要继续在方法的可选返回值上进行可选链式调用。 - -在下面的例子中,通过可选链式调用来调用 `Address` 的 `buildingIdentifier()` 方法。这个方法返回 `String?` 类型的值。如上所述,通过可选链式调用来调用该方法,最终的返回值依旧会是 `String?` 类型: - -```swift -if let buildingIdentifier = john.residence?.address?.buildingIdentifier() { - print("John's building identifier is \(buildingIdentifier).") -} -// 打印 “John's building identifier is The Larches.” -``` - -如果要在该方法的返回值上进行可选链式调用,在方法的圆括号后面加上问号即可: - -```swift -if let beginsWithThe = - - john.residence?.address?.buildingIdentifier()?.hasPrefix("The") { - if beginsWithThe { - print("John's building identifier begins with \"The\".") - } else { - print("John's building identifier does not begin with \"The\".") - } -} -// 打印 “John's building identifier begins with "The".” -``` - -> 注意 -> -> 在上面的例子中,在方法的圆括号后面加上问号是因为你要在 `buildingIdentifier()` 方法的可选返回值上进行可选链式调用,而不是 `buildingIdentifier()` 方法本身。 +# 可选链式调用 + +*可选链式调用*是一种可以在当前值可能为 `nil` 的可选值上请求和调用属性、方法及下标的方法。如果可选值有值,那么调用就会成功;如果可选值是 `nil`,那么调用将返回 `nil`。多个调用可以连接在一起形成一个调用链,如果其中任何一个节点为 `nil`,整个调用链都会失败,即返回 `nil`。 + +> 注意 +> +> Swift 的可选链式调用和 Objective-C 中向 `nil` 发送消息有些相像,但是 Swift 的可选链式调用可以应用于任意类型,并且能检查调用是否成功。 + + +## 使用可选链式调用代替强制展开 + +通过在想调用的属性、方法,或下标的可选值后面放一个问号(`?`),可以定义一个可选链。这一点很像在可选值后面放一个叹号(`!`)来强制展开它的值。它们的主要区别在于当可选值为空时可选链式调用只会调用失败,然而强制展开将会触发运行时错误。 + +为了反映可选链式调用可以在空值(`nil`)上调用的事实,不论这个调用的属性、方法及下标返回的值是不是可选值,它的返回结果都是一个可选值。你可以利用这个返回值来判断你的可选链式调用是否调用成功,如果调用有返回值则说明调用成功,返回 `nil` 则说明调用失败。 + +这里需要特别指出,可选链式调用的返回结果与原本的返回结果具有相同的类型,但是被包装成了一个可选值。例如,使用可选链式调用访问属性,当可选链式调用成功时,如果属性原本的返回结果是 `Int` 类型,则会变为 `Int?` 类型。 + +下面几段代码将解释可选链式调用和强制展开的不同。 + +首先定义两个类 `Person` 和 `Residence`: + +```swift +class Person { + var residence: Residence? +} + +class Residence { + var numberOfRooms = 1 +} +``` + +`Residence` 有一个 `Int` 类型的属性 `numberOfRooms`,其默认值为 `1`。`Person` 具有一个可选的 `residence` 属性,其类型为 `Residence?`。 + +假如你创建了一个新的 `Person` 实例,它的 `residence` 属性由于是可选类型而将被初始化为 `nil`,在下面的代码中,`john` 有一个值为 `nil` 的 `residence` 属性: + +```swift +let john = Person() +``` + +如果使用叹号(`!`)强制展开获得这个 `john` 的 `residence` 属性中的 `numberOfRooms` 值,会触发运行时错误,因为这时 `residence` 没有可以展开的值: + +```swift +let roomCount = john.residence!.numberOfRooms +// 这会引发运行时错误 +``` + +`john.residence` 为非 `nil` 值的时候,上面的调用会成功,并且把 `roomCount` 设置为 `Int` 类型的房间数量。正如上面提到的,当 `residence` 为 `nil` 的时候,上面这段代码会触发运行时错误。 + +可选链式调用提供了另一种访问 `numberOfRooms` 的方式,使用问号(`?`)来替代原来的叹号(`!`): + +```swift +if let roomCount = john.residence?.numberOfRooms { + print("John's residence has \(roomCount) room(s).") +} else { + print("Unable to retrieve the number of rooms.") +} +// 打印 “Unable to retrieve the number of rooms.” +``` + +在 `residence` 后面添加问号之后,Swift 就会在 `residence` 不为 `nil` 的情况下访问 `numberOfRooms`。 + +因为访问 `numberOfRooms` 有可能失败,可选链式调用会返回 `Int?` 类型,或称为“可选的 `Int`”。如上例所示,当 `residence` 为 `nil` 的时候,可选的 `Int` 将会为 `nil`,表明无法访问 `numberOfRooms`。访问成功时,可选的 `Int` 值会通过可选绑定展开,并赋值给非可选类型的 `roomCount` 常量。 + +要注意的是,即使 `numberOfRooms` 是非可选的 `Int` 时,这一点也成立。只要使用可选链式调用就意味着 `numberOfRooms` 会返回一个 `Int?` 而不是 `Int`。 + +可以将一个 `Residence` 的实例赋给 `john.residence`,这样它就不再是 `nil` 了: + +```swift +john.residence = Residence() +``` + +`john.residence` 现在包含一个实际的 `Residence` 实例,而不再是 `nil`。如果你试图使用先前的可选链式调用访问 `numberOfRooms`,它现在将返回值为 `1` 的 `Int?` 类型的值: + +```swift +if let roomCount = john.residence?.numberOfRooms { + print("John's residence has \(roomCount) room(s).") +} else { + print("Unable to retrieve the number of rooms.") +} +// 打印 “John's residence has 1 room(s).” +``` + + +## 为可选链式调用定义模型类 + +通过使用可选链式调用可以调用多层属性、方法和下标。这样可以在复杂的模型中向下访问各种子属性,并且判断能否访问子属性的属性、方法和下标。 + +下面这段代码定义了四个模型类,这些例子包括多层可选链式调用。为了方便说明,在 `Person` 和 `Residence` 的基础上增加了 `Room` 类和 `Address` 类,以及相关的属性、方法以及下标。 + +`Person` 类的定义基本保持不变: + +```swift +class Person { + var residence: Residence? +} +``` + +`Residence` 类比之前复杂些,增加了一个名为 `rooms` 的变量属性,该属性被初始化为 `[Room]` 类型的空数组: + +```swift +class Residence { + var rooms = [Room]() + var numberOfRooms: Int { + return rooms.count + } + subscript(i: Int) -> Room { + get { + return rooms[i] + } + set { + rooms[i] = newValue + } + } + func printNumberOfRooms() { + print("The number of rooms is \(numberOfRooms)") + } + var address: Address? +} +``` + +现在 `Residence` 有了一个存储 `Room` 实例的数组,`numberOfRooms` 属性被实现为计算型属性,而不是存储型属性。`numberOfRooms` 属性简单地返回 `rooms` 数组的 `count` 属性的值。 + +`Residence` 还提供了访问 `rooms` 数组的快捷方式,即提供可读写的下标来访问 `rooms` 数组中指定位置的元素。 + +此外,`Residence` 还提供了 `printNumberOfRooms` 方法,这个方法的作用是打印 `numberOfRooms` 的值。 + +最后,`Residence` 还定义了一个可选属性 `address`,其类型为 `Address?`。`Address` 类的定义在下面会说明。 + +`Room` 类是一个简单类,其实例被存储在 `rooms` 数组中。该类只包含一个属性 `name`,以及一个用于将该属性设置为适当的房间名的初始化函数: + +```swift +class Room { + let name: String + init(name: String) { self.name = name } +} +``` + +最后一个类是 `Address`,这个类有三个 `String?` 类型的可选属性。`buildingName` 以及 `buildingNumber` 属性分别表示大厦的名称和号码,第三个属性 `street` 表示大厦所在街道的名称: + +```swift +class Address { + var buildingName: String? + var buildingNumber: String? + var street: String? + func buildingIdentifier() -> String? { + if buildingName != nil { + return buildingName + } else if let buildingNumber = buildingNumber, let street = street { + return "\(buildingNumber) \(street)" + } else { + return nil + } + } +} +``` + +`Address` 类提供了 `buildingIdentifier()` 方法,返回值为 `String?`。 如果 `buildingName` 有值则返回 `buildingName`。或者,如果 `buildingNumber` 和 `street` 均有值,则返回两者拼接得到的字符串。否则,返回 `nil`。 + + +## 通过可选链式调用访问属性 + +正如[使用可选链式调用代替强制展开](#optional_chaining_as_an_alternative_to_forced_unwrapping)中所述,可以通过可选链式调用在一个可选值上访问它的属性,并判断访问是否成功。 + +使用前面定义过的类,创建一个 `Person` 实例,然后像之前一样,尝试访问 `numberOfRooms` 属性: + +```swift +let john = Person() +if let roomCount = john.residence?.numberOfRooms { + print("John's residence has \(roomCount) room(s).") +} else { + print("Unable to retrieve the number of rooms.") +} +// 打印 “Unable to retrieve the number of rooms.” +``` + +因为 `john.residence` 为 `nil`,所以这个可选链式调用依旧会像先前一样失败。 + +还可以通过可选链式调用来设置属性值: + +```swift +let someAddress = Address() +someAddress.buildingNumber = "29" +someAddress.street = "Acacia Road" +john.residence?.address = someAddress +``` + +在这个例子中,通过 `john.residence` 来设定 `address` 属性也会失败,因为 `john.residence` 当前为 `nil`。 + +上面代码中的赋值过程是可选链式调用的一部分,这意味着可选链式调用失败时,等号右侧的代码不会被执行。对于上面的代码来说,很难验证这一点,因为像这样赋值一个常量没有任何副作用。下面的代码完成了同样的事情,但是它使用一个函数来创建 `Address` 实例,然后将该实例返回用于赋值。该函数会在返回前打印 “Function was called”,这使你能验证等号右侧的代码是否被执行。 + +```swift +func createAddress() -> Address { + print("Function was called.") + + let someAddress = Address() + someAddress.buildingNumber = "29" + someAddress.street = "Acacia Road" + + return someAddress +} +john.residence?.address = createAddress() +``` + +没有任何打印消息,可以看出 `createAddress()` 函数并未被执行。 + + +## 通过可选链式调用来调用方法 + +可以通过可选链式调用来调用方法,并判断是否调用成功,即使这个方法没有返回值。 + +`Residence` 类中的 `printNumberOfRooms()` 方法打印当前的 `numberOfRooms` 值,如下所示: + +```swift +func printNumberOfRooms() { + print("The number of rooms is \(numberOfRooms)") +} +``` + +这个方法没有返回值。然而,没有返回值的方法具有隐式的返回类型 `Void`,如[无返回值函数](./06_Functions.html#functions_without_return_values)中所述。这意味着没有返回值的方法也会返回 `()`,或者说空的元组。 + +如果在可选值上通过可选链式调用来调用这个方法,该方法的返回类型会是 `Void?`,而不是 `Void`,因为通过可选链式调用得到的返回值都是可选的。这样我们就可以使用 `if` 语句来判断能否成功调用 `printNumberOfRooms()` 方法,即使方法本身没有定义返回值。通过判断返回值是否为 `nil` 可以判断调用是否成功: + +```swift +if john.residence?.printNumberOfRooms() != nil { + print("It was possible to print the number of rooms.") +} else { + print("It was not possible to print the number of rooms.") +} +// 打印 “It was not possible to print the number of rooms.” +``` + +同样的,可以据此判断通过可选链式调用为属性赋值是否成功。在上面的[通过可选链式调用访问属性](#accessing_properties_through_optional_chaining)的例子中,我们尝试给 `john.residence` 中的 `address` 属性赋值,即使 `residence` 为 `nil`。通过可选链式调用给属性赋值会返回 `Void?`,通过判断返回值是否为 `nil` 就可以知道赋值是否成功: + +```swift +if (john.residence?.address = someAddress) != nil { + print("It was possible to set the address.") +} else { + print("It was not possible to set the address.") +} +// 打印 “It was not possible to set the address.” +``` + + +## 通过可选链式调用访问下标 + +通过可选链式调用,我们可以在一个可选值上访问下标,并且判断下标调用是否成功。 + +> 注意 +> +> 通过可选链式调用访问可选值的下标时,应该将问号放在下标方括号的前面而不是后面。可选链式调用的问号一般直接跟在可选表达式的后面。 + +下面这个例子用下标访问 `john.residence` 属性存储的 `Residence` 实例的 `rooms` 数组中的第一个房间的名称,因为 `john.residence` 为 `nil`,所以下标调用失败了: + +```swift +if let firstRoomName = john.residence?[0].name { + print("The first room name is \(firstRoomName).") +} else { + print("Unable to retrieve the first room name.") +} +// 打印 “Unable to retrieve the first room name.” +``` + +在这个例子中,问号直接放在 `john.residence` 的后面,并且在方括号的前面,因为 `john.residence` 是可选值。 + +类似的,可以通过下标,用可选链式调用来赋值: + +```swift +john.residence?[0] = Room(name: "Bathroom") +``` + +这次赋值同样会失败,因为 `residence` 目前是 `nil`。 + +如果你创建一个 `Residence` 实例,并为其 `rooms` 数组添加一些 `Room` 实例,然后将 `Residence` 实例赋值给 `john.residence`,那就可以通过可选链和下标来访问数组中的元素: + +```swift +let johnsHouse = Residence() +johnsHouse.rooms.append(Room(name: "Living Room")) +johnsHouse.rooms.append(Room(name: "Kitchen")) +john.residence = johnsHouse + +if let firstRoomName = john.residence?[0].name { + print("The first room name is \(firstRoomName).") +} else { + print("Unable to retrieve the first room name.") +} +// 打印 “The first room name is Living Room.” +``` + + +### 访问可选类型的下标 + +如果下标返回可选类型值,比如 Swift 中 `Dictionary` 类型的键的下标,可以在下标的结尾括号后面放一个问号来在其可选返回值上进行可选链式调用: + +```swift +var testScores = ["Dave": [86, 82, 84], "Bev": [79, 94, 81]] +testScores["Dave"]?[0] = 91 +testScores["Bev"]?[0] += 1 +testScores["Brian"]?[0] = 72 +// "Dave" 数组现在是 [91, 82, 84],"Bev" 数组现在是 [80, 94, 81] +``` + +上面的例子中定义了一个 `testScores` 数组,包含了两个键值对,分别把 `String` 类型的键映射到一个 `Int` 值的数组。这个例子用可选链式调用把 `"Dave"` 数组中第一个元素设为 `91`,把 `"Bev"` 数组的第一个元素 `+1`,然后尝试把 `"Brian"` 数组中的第一个元素设为 `72`。前两个调用成功,因为 `testScores` 字典中包含 `"Dave"` 和 `"Bev"` 这两个键。但是 `testScores` 字典中没有 `"Brian"` 这个键,所以第三个调用失败。 + + +## 连接多层可选链式调用 + +可以通过连接多个可选链式调用在更深的模型层级中访问属性、方法以及下标。然而,多层可选链式调用不会增加返回值的可选层级。 + +也就是说: + ++ 如果你访问的值不是可选的,可选链式调用将会返回可选值。 ++ 如果你访问的值就是可选的,可选链式调用不会让可选返回值变得“更可选”。 + +因此: + ++ 通过可选链式调用访问一个 `Int` 值,将会返回 `Int?`,无论使用了多少层可选链式调用。 ++ 类似的,通过可选链式调用访问 `Int?` 值,依旧会返回 `Int?` 值,并不会返回 `Int??`。 + +下面的例子尝试访问 `john` 中的 `residence` 属性中的 `address` 属性中的 `street` 属性。这里使用了两层可选链式调用,`residence` 以及 `address` 都是可选值: + +```swift +if let johnsStreet = john.residence?.address?.street { + print("John's street name is \(johnsStreet).") +} else { + print("Unable to retrieve the address.") +} +// 打印 “Unable to retrieve the address.” +``` + +`john.residence` 现在包含一个有效的 `Residence` 实例。然而,`john.residence.address` 的值当前为 `nil`。因此,调用 `john.residence?.address?.street` 会失败。 + +需要注意的是,上面的例子中,`street` 的属性为 `String?`。`john.residence?.address?.street` 的返回值也依然是 `String?`,即使已经使用了两层可选链式调用。 + +如果为 `john.residence.address` 赋值一个 `Address` 实例,并且为 `address` 中的 `street` 属性设置一个有效值,我们就能过通过可选链式调用来访问 `street` 属性: + +```swift +let johnsAddress = Address() +johnsAddress.buildingName = "The Larches" +johnsAddress.street = "Laurel Street" +john.residence?.address = johnsAddress + +if let johnsStreet = john.residence?.address?.street { + print("John's street name is \(johnsStreet).") +} else { + print("Unable to retrieve the address.") +} +// 打印 “John's street name is Laurel Street.” +``` + +在上面的例子中,因为 `john.residence` 包含一个有效的 `Address` 实例,所以对 `john.residence` 的 `address` 属性赋值将会成功。 + + +## 在方法的可选返回值上进行可选链式调用 + +上面的例子展示了如何在一个可选值上通过可选链式调用来获取它的属性值。我们还可以在一个可选值上通过可选链式调用来调用方法,并且可以根据需要继续在方法的可选返回值上进行可选链式调用。 + +在下面的例子中,通过可选链式调用来调用 `Address` 的 `buildingIdentifier()` 方法。这个方法返回 `String?` 类型的值。如上所述,通过可选链式调用来调用该方法,最终的返回值依旧会是 `String?` 类型: + +```swift +if let buildingIdentifier = john.residence?.address?.buildingIdentifier() { + print("John's building identifier is \(buildingIdentifier).") +} +// 打印 “John's building identifier is The Larches.” +``` + +如果要在该方法的返回值上进行可选链式调用,在方法的圆括号后面加上问号即可: + +```swift +if let beginsWithThe = + + john.residence?.address?.buildingIdentifier()?.hasPrefix("The") { + if beginsWithThe { + print("John's building identifier begins with \"The\".") + } else { + print("John's building identifier does not begin with \"The\".") + } +} +// 打印 “John's building identifier begins with "The".” +``` + +> 注意 +> +> 在上面的例子中,在方法的圆括号后面加上问号是因为你要在 `buildingIdentifier()` 方法的可选返回值上进行可选链式调用,而不是 `buildingIdentifier()` 方法本身。 diff --git a/source/chapter2/22_Generics.md b/source/chapter2/22_Generics.md index 526ec35c..a0133abf 100644 --- a/source/chapter2/22_Generics.md +++ b/source/chapter2/22_Generics.md @@ -1,11 +1,51 @@ # 泛型 +------------------- -*泛型代码*让你能够根据自定义的需求,编写出适用于任意类型、灵活可重用的函数及类型。它能让你避免代码的重复,用一种清晰和抽象的方式来表达代码的意图。 +> 1.0 +> 翻译:[takalard](https://github.com/takalard) +> 校对:[lifedim](https://github.com/lifedim) -泛型是 Swift 最强大的特性之一,许多 Swift 标准库是通过泛型代码构建的。事实上,泛型的使用贯穿了整本语言手册,只是你可能没有发现而已。例如,Swift 的 `Array` 和 `Dictionary` 都是泛型集合。你可以创建一个 `Int` 数组,也可创建一个 `String` 数组,甚至可以是任意其他 Swift 类型的数组。同样的,你也可以创建存储任意指定类型的字典。 +> 2.0 +> 翻译+校对: [SergioChan](https://github.com/SergioChan) + +> 2.1 +> 校对:[shanks](http://codebuild.me),2015-11-01 + +> 2.2:翻译+校对:[Lanford](https://github.com/LanfordCai),2016-04-08 [SketchK](https://github.com/SketchK) 2016-05-16 + +> 3.0:翻译+校对:[chenmingjia](https://github.com/chenmingjia),2016-09-12 +> 3.0.1,shanks,2016-11-13 + +> 3.1:翻译:[qhd](https://github.com/qhd),2017-04-10 + +> 4.0 +> 翻译+校对:[kemchenj](https://kemchenj.github.io/) 2017-09-21 + +> 4.1 +> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) + + +本页包含内容: + +- [泛型解决的问题](#the_problem_that_generics_solve) +- [泛型函数](#generic_functions) +- [类型参数](#type_parameters) +- [命名类型参数](#naming_type_parameters) +- [泛型类型](#generic_types) +- [泛型扩展](#extending_a_generic_type) +- [类型约束](#type_constraints) +- [关联类型](#associated_types) +- [泛型 Where 语句](#where_clauses) +- [具有泛型 where 子句的扩展](#extensions_with_a_generic_where_clause) +- [具有泛型 Where 子句的关联类型](#associated_types_with_a_generic_where_clause) +- [泛型下标](#generic_subscripts) + +*泛型代码*让你能根据自定义的需求,编写出适用于任意类型的、灵活可复用的函数及类型。你可避免编写重复的代码,用一种清晰抽象的方式来表达代码的意图。 + +泛型是 Swift 最强大的特性之一,很多 Swift 标准库是基于泛型代码构建的。实际上,即使你没有意识到,你也一直在*语言指南*中使用泛型。例如,Swift 的 `Array` 和 `Dictionary` 都是泛型集合。你可以创建一个 `Int` 类型数组,也可创建一个 `String` 类型数组,甚至可以是任意其他 Swift 类型的数组。同样,你也可以创建一个存储任意指定类型的字典,并对该类型没有限制。 -## 泛型所解决的问题 +## 泛型解决的问题 下面是一个标准的非泛型函数 `swapTwoInts(_:_:)`,用来交换两个 `Int` 值: @@ -16,20 +56,19 @@ func swapTwoInts(_ a: inout Int, _ b: inout Int) { b = temporaryA } ``` +这个函数使用输入输出参数(`inout`)来交换 `a` 和 `b` 的值,具体请参考[输入输出参数](./06_Functions.html#in_out_parameters) -这个函数使用输入输出参数(`inout`)来交换 `a` 和 `b` 的值,请参考[输入输出参数](./06_Functions.html#in_out_parameters)。 - -`swapTwoInts(_:_:)` 函数交换 `b` 的原始值到 `a`,并交换 `a` 的原始值到 `b`。你可以调用这个函数交换两个 `Int` 变量的值: +`swapTwoInts(_:_:)` 函数将 `b` 的原始值换成了 `a`,将 `a` 的原始值换成了 `b`,你可以调用这个函数来交换两个 `Int` 类型变量: ```swift var someInt = 3 var anotherInt = 107 swapTwoInts(&someInt, &anotherInt) print("someInt is now \(someInt), and anotherInt is now \(anotherInt)") -// 打印 “someInt is now 107, and anotherInt is now 3” -``` +// 打印 "someInt is now 107, and anotherInt is now 3" -诚然,`swapTwoInts(_:_:)` 函数挺有用,但是它只能交换 `Int` 值,如果你想要交换两个 `String` 值或者 `Double` 值,就不得不写更多的函数,例如 `swapTwoStrings(_:_:)` 和 `swapTwoDoubles(_:_:)`,如下所示: +``` +`swapTwoInts(_:_:)` 函数很实用,但它只能作用于 `Int` 类型。如果你想交换两个 `String` 类型值,或者 `Double` 类型值,你必须编写对应的函数,类似下面 `swapTwoStrings(_:_:)` 和 `swapTwoDoubles(_:_:)` 函数: ```swift func swapTwoStrings(_ a: inout String, _ b: inout String) { @@ -44,19 +83,17 @@ func swapTwoDoubles(_ a: inout Double, _ b: inout Double) { b = temporaryA } ``` - -你可能注意到 `swapTwoInts(_:_:)`、`swapTwoStrings(_:_:)` 和 `swapTwoDoubles(_:_:)` 的函数功能都是相同的,唯一不同之处就在于传入的变量类型不同,分别是 `Int`、`String` 和 `Double`。 +你可能注意到了,`swapTwoInts(_:_:‘)`、`swapTwoStrings(_:_:)` 和 `swapTwoDoubles(_:_:)` 函数体是一样的,唯一的区别是它们接受的参数类型(`Int`、`String` 和 `Double`)。 在实际应用中,通常需要一个更实用更灵活的函数来交换两个任意类型的值,幸运的是,泛型代码帮你解决了这种问题。(这些函数的泛型版本已经在下面定义好了。) > 注意 -> > 在上面三个函数中,`a` 和 `b` 类型必须相同。如果 `a` 和 `b` 类型不同,那它们俩就不能互换值。Swift 是类型安全的语言,所以它不允许一个 `String` 类型的变量和一个 `Double` 类型的变量互换值。试图这样做将导致编译错误。 ## 泛型函数 -泛型函数可以适用于任何类型,下面的 `swapTwoValues(_:_:)` 函数是上面三个函数的泛型版本: +泛型函数可适用于任意类型,下面是函数 `swapTwoInts(_:_:)` 的泛型版本,命名为 `swapTwoValues(_:_:)`: ```swift func swapTwoValues(_ a: inout T, _ b: inout T) { @@ -65,21 +102,24 @@ func swapTwoValues(_ a: inout T, _ b: inout T) { b = temporaryA } ``` - -`swapTwoValues(_:_:)` 的函数主体和 `swapTwoInts(_:_:)` 函数是一样的,它们只在第一行有点不同,如下所示: +`swapTwoValues(_:_:)` 和 `swapTwoInts(_:_:)` 函数体内容相同,它们只在第一行不同,如下所示: ```swift func swapTwoInts(_ a: inout Int, _ b: inout Int) func swapTwoValues(_ a: inout T, _ b: inout T) ``` -这个函数的泛型版本使用了占位类型名(在这里用字母 `T` 来表示)来代替实际类型名(例如 `Int`、`String` 或 `Double`)。占位类型名没有指明 `T` 必须是什么类型,但是它指明了 `a` 和 `b` 必须是同一类型 `T`,无论 `T` 代表什么类型。只有 `swapTwoValues(_:_:)` 函数在调用时,才会根据所传入的实际类型决定 `T` 所代表的类型。 +----- -泛型函数和非泛型函数的另外一个不同之处,在于这个泛型函数名(`swapTwoValues(_:_:)`)后面跟着占位类型名(`T`),并用尖括号括起来(``)。这个尖括号告诉 Swift 那个 `T` 是 `swapTwoValues(_:_:)` 函数定义内的一个占位类型名,因此 Swift 不会去查找名为 `T` 的实际类型。 -`swapTwoValues(_:_:)` 函数现在可以像 `swapTwoInts(_:_:)` 那样调用,不同的是它能接受两个任意类型的值,条件是这两个值有着相同的类型。`swapTwoValues(_:_:)` 函数被调用时,`T` 所代表的类型都会由传入的值的类型推断出来。 +泛型版本的函数使用`占位符`类型名(这里叫做 `T` ),而不是 *实际*类型名(例如 `Int`、`String` 或 `Double`),`占位符`类型名并不关心 `T` 具体的类型,但它要求 `a` 和` b` 必须是相同的类型,`T` 的实际类型由每次调用 `swapTwoValues(_:_:)` 来决定。 -在下面的两个例子中,`T` 分别代表 `Int` 和 `String`: + +泛型函数和非泛型函数的另外一个不同之处在于这个泛型函数名(`swapTwoValues(_:_:)`)后面跟着占位类型名(`T`),并用尖括号括起来(``)。这个尖括号告诉 Swift 那个 `T` 是 `swapTwoValues(_:_:)` 函数定义内的一个占位类型名,因此 Swift 不会去查找名为 `T `的实际类型。 + +`swapTwoValues(_:_:)` 函数现在可以像 `swapTwoInts(_:_:)` 那样调用,不同的是它能接受两个任意类型的值,条件是这两个值有着相同的类型。`swapTwoValues(_:_:)` 函数被调用时,`T ` 所代表的类型都会由传入的值的类型推断出来。 + +在下面的两个例子中,`T` 分别代表 ` Int` 和 `String`: ```swift var someInt = 3 @@ -91,52 +131,53 @@ var someString = "hello" var anotherString = "world" swapTwoValues(&someString, &anotherString) // someString 现在 "world", and anotherString 现在 "hello" + ``` > 注意 -> > 上面定义的 `swapTwoValues(_:_:)` 函数是受 `swap(_:_:)` 函数启发而实现的。后者存在于 Swift 标准库,你可以在你的应用程序中使用它。如果你在代码中需要类似 `swapTwoValues(_:_:)` 函数的功能,你可以使用已存在的 `swap(_:_:)` 函数。 + ## 类型参数 -在上面的 `swapTwoValues(_:_:)` 例子中,占位类型 `T` 是类型参数的一个例子。类型参数指定并命名一个占位类型,并且紧随在函数名后面,使用一对尖括号括起来(例如 ``)。 +上面 `swapTwoValues(_:_:)` 例子中,占位类型 `T` 是一个类型参数的例子,类型参数指定并命名一个占位类型,并且紧随在函数名后面,使用一对尖括号括起来(例如 ``)。 一旦一个类型参数被指定,你可以用它来定义一个函数的参数类型(例如 `swapTwoValues(_:_:)` 函数中的参数 `a` 和 `b`),或者作为函数的返回类型,还可以用作函数主体中的注释类型。在这些情况下,类型参数会在函数调用时被实际类型所替换。(在上面的 `swapTwoValues(_:_:)` 例子中,当函数第一次被调用时,`T` 被 `Int` 替换,第二次调用时,被 `String` 替换。) 你可提供多个类型参数,将它们都写在尖括号中,用逗号分开。 + ## 命名类型参数 -在大多数情况下,类型参数具有一个描述性名字,例如 `Dictionary` 中的 `Key` 和 `Value`,以及 `Array` 中的 `Element`,这可以告诉阅读代码的人这些类型参数和泛型函数之间的关系。然而,当它们之间没有有意义的关系时,通常使用单个字母来命名,例如 `T`、`U`、`V`,正如上面演示的 `swapTwoValues(_:_:)` 函数中的 `T` 一样。 +大多情况下,类型参数具有描述下的名称,例如字典 `Dictionary` 中的 `Key` 和 `Value` 及数组 `Array` 中的 `Element`,这能告诉阅读代码的人这些参数类型与泛型类型或函数之间的关系。然而,当它们之间没有有意义的关系时,通常使用单个字符来表示,例如 `T`、`U`、`V`,例如上面演示函数 `swapTwoValues(_:_:)` 中的 `T`。 -> 注意 -> +> 注意: > 请始终使用大写字母开头的驼峰命名法(例如 `T` 和 `MyTypeParameter`)来为类型参数命名,以表明它们是占位类型,而不是一个值。 + ## 泛型类型 -除了泛型函数,Swift 还允许你定义*泛型*类型。这些自定义类、结构体和枚举可以适用于*任何*类型,类似于 `Array` 和 `Dictionary`。 +除了泛型函数,Swift 还允许自定义*泛型类型*。这些自定义类、结构体和枚举可以适用于*任意类型*,类似于 `Array` 和 `Dictionary`。 -这部分内容将向你展示如何编写一个名为 `Stack` (栈)的泛型集合类型。栈是一系列值的有序集合,和 `Array` 类似,但它相比 Swift 的 `Array` 类型有更多的操作限制。数组允许在数组的任意位置插入新元素或是删除其中任意位置的元素。而栈只允许在集合的末端添加新的元素(称之为*入*栈)。类似的,栈也只能从末端移除元素(称之为*出*栈)。 +本节将向你展示如何编写一个名为 `Stack`(栈)的泛型集合类型。栈是值的有序集合,和数组类似,但比数组有更严格的操作限制。数组允许在其中任意位置插入或是删除元素。而栈只允许在集合的末端添加新的元素(称之为入栈)。类似的,栈也只能从末端移除元素(称之为出栈)。 > 注意 -> -> 栈的概念已被 `UINavigationController` 类用来构造视图控制器的导航结构。你通过调用 `UINavigationController` 的 `pushViewController(_:animated:)` 方法来添加新的视图控制器到导航栈,通过 `popViewControllerAnimated(_:)` 方法来从导航栈中移除视图控制器。每当你需要一个严格的“后进先出”方式来管理集合,栈都是最实用的模型。 +> 栈的概念已被 `UINavigationController` 类用来构造视图控制器的导航结构。你通过调用 `UINavigationController` 的 `pushViewController(_:animated:)` 方法来添加新的视图控制器到导航栈,通过 `popViewControllerAnimated(_:)` 方法来从导航栈中移除视图控制器。每当你需要一个严格的”后进先出”方式来管理集合,栈都是最实用的模型。 -下图展示了一个栈的入栈(push)和出栈(pop)的行为: +下图展示了入栈(push)和出栈(pop)的行为: -![此处输入图片的描述](https://docs.swift.org/swift-book/_images/stackPushPop_2x.png) +![](https://docs.swift.org/swift-book/_images/stackPushPop_2x.png) 1. 现在有三个值在栈中。 2. 第四个值被压入到栈的顶部。 -3. 现在有四个值在栈中,最近入栈的那个值在顶部。 +3. 现在栈中有四个值,最近入栈的那个值在顶部。 4. 栈中最顶部的那个值被移除出栈。 5. 一个值移除出栈后,现在栈又只有三个值了。 -下面展示了如何编写一个非泛型版本的栈,以 `Int` 型的栈为例: +下面展示如何编写一个非泛型版本的栈,以 `Int` 型的栈为例: ```swift struct IntStack { @@ -150,16 +191,16 @@ struct IntStack { } ``` -这个结构体在栈中使用一个名为 `items` 的 `Array` 属性来存储值。`Stack` 提供了两个方法:`push(_:)` 和 `pop()`,用来向栈中压入值以及从栈中移除值。这些方法被标记为 `mutating`,因为它们需要修改结构体的 `items` 数组。 +这个结构体在栈中使用一个名为 `items` 的数组属性来存储值。栈提供了两个方法:`push(_:)` 和 `pop()`,用来向栈中压入值以及从栈中移除值。这些方法被标记为 `mutating`,因为它们需要修改结构体的 `items` 数组。 -上面的 `IntStack` 结构体只能用于 `Int` 类型。不过,可以定义一个泛型 `Stack` 结构体,从而能够处理*任意*类型的值。 +上面的 `IntStack` 结构体只能用于 `Int` 类型。不过,可以定义一个泛型 `Stack` 结构体,从而能够处理任意类型的值。 下面是相同代码的泛型版本: ```swift struct Stack { var items = [Element]() -    mutating func push(_ item: Element) { + mutating func push(_ item: Element) { items.append(item) } mutating func pop() -> Element { @@ -167,16 +208,15 @@ struct Stack { } } ``` - -注意,`Stack` 基本上和 `IntStack` 相同,只是用占位类型参数 `Element` 代替了实际的 `Int` 类型。这个类型参数包裹在紧随结构体名的一对尖括号里(``)。 +注意,`Stack` 基本上和 `IntStack` 相同,只是用占位类型参数 `Element` 代替了实际的 `Int` 类型。这个类型参数包裹在紧随结构体名的一对尖括号里(<`Element`>)。 `Element` 为待提供的类型定义了一个占位名。这种待提供的类型可以在结构体的定义中通过 `Element` 来引用。在这个例子中,`Element` 在如下三个地方被用作占位符: -- 创建 `items` 属性,使用 `Element` 类型的空数组对其进行初始化。 -- 指定 `push(_:)` 方法的唯一参数 `item` 的类型必须是 `Element` 类型。 -- 指定 `pop()` 方法的返回值类型必须是 `Element` 类型。 ++ 创建 `items` 属性,使用 `Element` 类型的空数组对其进行初始化。 ++ 指定 `push(_:)` 方法的唯一参数 `item` 的类型必须是 `Element` 类型。 ++ 指定 `pop()` 方法的返回值类型必须是 `Element` 类型。 -由于 `Stack` 是泛型类型,因此可以用来创建 Swift 中任意有效类型的栈,就像 `Array` 和 `Dictionary` 那样。 +由于 `Stack` 是泛型类型,因此可以用来创建适用于 Swift 中任意有效类型的栈,就像 `Array` 和 `Dictionary` 那样。 你可以通过在尖括号中写出栈中需要存储的数据类型来创建并初始化一个 `Stack` 实例。例如,要创建一个 `String` 类型的栈,可以写成 `Stack()`: @@ -189,27 +229,27 @@ stackOfStrings.push("cuatro") // 栈中现在有 4 个字符串 ``` -下图展示了 `stackOfStrings` 如何将这四个值入栈: +下图展示了 `stackOfStrings` 如何将这四个值压栈: -![此处输入图片的描述](https://docs.swift.org/swift-book/_images/stackPushedFourStrings_2x.png) +![](https://docs.swift.org/swift-book/_images/stackPushedFourStrings_2x.png) -移除并返回栈顶部的值 `"cuatro"`,即将其出栈: +移除并返回栈顶部的值 "cuatro",即出栈: ```swift let fromTheTop = stackOfStrings.pop() // fromTheTop 的值为 "cuatro",现在栈中还有 3 个字符串 ``` +下图展示了如何将顶部的值出栈: -下图展示了 `stackOfStrings` 如何将顶部的值出栈: - -![此处输入图片的描述](https://docs.swift.org/swift-book/_images/stackPoppedOneString_2x.png) +![](https://docs.swift.org/swift-book/_images/stackPoppedOneString_2x.png) -## 扩展一个泛型类型 -当你扩展一个泛型类型的时候,你并不需要在扩展的定义中提供类型参数列表。*原始*类型定义中声明的类型参数列表在扩展中可以直接使用,并且这些来自原始类型中的参数名称会被用作原始定义中类型参数的引用。 +## 泛型扩展 -下面的例子扩展了泛型类型 `Stack`,为其添加了一个名为 `topItem` 的只读计算型属性,它将会返回当前栈顶端的元素而不会将其从栈中移除: +当对泛型类型进行扩展时,你并不需要提供类型参数列表作为定义的一部分。原始类型定义中声明的类型参数列表在扩展中可以直接使用,并且这些来自原始类型中的参数名称会被用作原始定义中类型参数的引用。 + +下面的例子扩展了泛型类型 `Stack`,为其添加了一个名为 `topItem` 的只读计算型属性,它将会返回当前栈顶元素且不会将其从栈中移除: ```swift extension Stack { @@ -218,10 +258,9 @@ extension Stack { } } ``` +`topItem` 属性会返回 `Element` 类型的可选值。当栈为空的时候,`topItem` 会返回 `nil`;当栈不为空的时候,`topItem` 会返回 `items` 数组中的最后一个元素。 -`topItem` 属性会返回一个 `Element` 类型的可选值。当栈为空的时候,`topItem` 会返回 `nil`;当栈不为空的时候,`topItem` 会返回 `items` 数组中的最后一个元素。 - -注意,这个扩展并没有定义一个类型参数列表。相反的,`Stack` 类型已有的类型参数名称 `Element`,被用在扩展中来表示计算型属性 `topItem` 的可选类型。 +注意:这个扩展并没有定义类型参数列表。相反的,`Stack` 类型已有的类型参数名称 `Element`,被用在扩展中来表示计算型属性 `topItem` 的可选类型。 计算型属性 `topItem` 现在可以用来访问任意 `Stack` 实例的顶端元素且不移除它: @@ -233,33 +272,32 @@ if let topItem = stackOfStrings.topItem { ``` + ## 类型约束 -`swapTwoValues(_:_:)` 函数和 `Stack` 类型可以作用于任何类型。不过,有的时候如果能将使用在泛型函数和泛型类型中的类型添加一个特定的类型约束,将会是非常有用的。类型约束可以指定一个类型参数必须继承自指定类,或者遵循一个特定的协议或协议组合。 +`swapTwoValues(_:_:)` 函数和 `Stack` 适用于任意类型。不过,如果能对泛型函数或泛型类型中添加特定的*类型约束*,这将在某些情况下非常有用。类型约束指定类型参数必须继承自指定类、遵循特定的协议或协议组合。 -例如,Swift 的 `Dictionary` 类型对字典的键的类型做了些限制。在[字典](./04_Collection_Types.html#dictionaries)的描述中,字典的键的类型必须是可哈希(`hashable`)的。也就是说,必须有一种方法能够唯一地表示它。`Dictionary` 的键之所以要是可哈希的,是为了便于检查字典是否已经包含某个特定键的值。若没有这个要求,`Dictionary` 将无法判断是否可以插入或者替换某个指定键的值,也不能查找到已经存储在字典中的指定键的值。 +例如,Swift 的 `Dictionary` 类型对字典的键的类型做了些限制。在 [字典的描述](./04_Collection_Types.html#dictionaries) 中,字典键的类型必须是可哈希(hashable)的。也就是说,必须有一种方法能够唯一地表示它。字典键之所以要是可哈希的,是为了便于检查字典中是否已经包含某个特定键的值。若没有这个要求,字典将无法判断是否可以插入或替换某个指定键的值,也不能查找到已经存储在字典中的指定键的值。 -为了实现这个要求,一个类型约束被强制加到 `Dictionary` 的键类型上,要求其键类型必须遵循 `Hashable` 协议,这是 Swift 标准库中定义的一个特定协议。所有的 Swift 基本类型(例如 `String`、`Int`、`Double` 和 `Bool`)默认都是可哈希的。 +这个要求通过 `Dictionary` 键类型上的类型约束实现,它指明了键必须遵循 Swift 标准库中定义的 `Hashable` 协议。所有 Swift 的基本类型(例如 `String`、`Int`、`Double` 和 `Bool`)默认都是可哈希的。 -当你创建自定义泛型类型时,你可以定义你自己的类型约束,这些约束将提供更为强大的泛型编程能力。抽象概念,例如可哈希的,描述的是类型在概念上的特征,而不是它们的显式类型。 +当自定义泛型类型时,你可以定义你自己的类型约束,这些约束将提供更为强大的泛型编程能力。像 `可哈希(hashable)` 这种抽象概念根据它们的概念特征来描述类型,而不是它们的具体类型。 - ### 类型约束语法 -你可以在一个类型参数名后面放置一个类名或者协议名,并用冒号进行分隔,来定义类型约束,它们将成为类型参数列表的一部分。对泛型函数添加类型约束的基本语法如下所示(作用于泛型类型时的语法与之相同): +在一个类型参数名后面放置一个类名或者协议名,并用冒号进行分隔,来定义类型约束。下面将展示泛型函数约束的基本语法(与泛型类型的语法相同): ```swift func someFunction(someT: T, someU: U) { // 这里是泛型函数的函数体部分 } ``` - -上面这个函数有两个类型参数。第一个类型参数 `T`,有一个要求 `T` 必须是 `SomeClass` 子类的类型约束;第二个类型参数 `U`,有一个要求 `U` 必须遵循 `SomeProtocol` 协议的类型约束。 +上面这个函数有两个类型参数。第一个类型参数 `T` 必须是 `SomeClass` 子类;第二个类型参数 `U` 必须符合 `SomeProtocol` 协议。 ### 类型约束实践 -这里有个名为 `findIndex(ofString:in:)` 的非泛型函数,该函数的功能是在一个 `String` 数组中查找给定 `String` 值的索引。若查找到匹配的字符串,` findIndex(ofString:in:)` 函数返回该字符串在数组中的索引值,否则返回 `nil`: +这里有个名为 `findIndex(ofString:in:)` 的非泛型函数,该函数的功能是在一个 `String` 数组中查找给定 `String` 值的索引。若查找到匹配的字符串,`findIndex(ofString:in:)` 函数返回该字符串在数组中的索引值,否则返回 `nil`: ```swift func findIndex(ofString valueToFind: String, in array: [String]) -> Int? { @@ -271,8 +309,7 @@ func findIndex(ofString valueToFind: String, in array: [String]) -> Int? { return nil } ``` - -`findIndex(ofString:in:)` 函数可以用于查找字符串数组中的某个字符串: +`findIndex(ofString:in:)` 函数可以用于查找字符串数组中的某个字符串值: ```swift let strings = ["cat", "dog", "llama", "parakeet", "terrapin"] @@ -281,10 +318,9 @@ if let foundIndex = findIndex(ofString: "llama", in: strings) { } // 打印 “The index of llama is 2” ``` - 如果只能查找字符串在数组中的索引,用处不是很大。不过,你可以用占位类型 `T` 替换 `String` 类型来写出具有相同功能的泛型函数 `findIndex(_:_:)`。 -下面展示了 `findIndex(ofString:in:)` 函数的泛型版本 `findIndex(ofString:in:)`。请注意这个函数返回值的类型仍然是 `Int?`,这是因为函数返回的是一个可选的索引数,而不是从数组中得到的一个可选值。需要提醒的是,这个函数无法通过编译,原因会在例子后面说明: +下面展示了 `findIndex(ofString:in:)` 函数的泛型版本 `findIndex(of:in:)`。请注意这个函数返回值的类型仍然是 `Int?`,这是因为函数返回的是一个可选的索引数,而不是从数组中得到的一个可选值。需要提醒的是,这个函数无法通过编译,原因将在后面说明: ```swift func findIndex(of valueToFind: T, in array:[T]) -> Int? { @@ -297,11 +333,11 @@ func findIndex(of valueToFind: T, in array:[T]) -> Int? { } ``` -上面所写的函数无法通过编译。问题出在相等性检查上,即 "`if value == valueToFind`"。不是所有的 Swift 类型都可以用等式符(`==`)进行比较。比如说,如果你创建一个自定义的类或结构体来表示一个复杂的数据模型,那么 Swift 无法猜到对于这个类或结构体而言“相等”意味着什么。正因如此,这部分代码无法保证适用于每个可能的类型 `T`,当你试图编译这部分代码时会出现相应的错误。 +上面所写的函数无法通过编译。问题出在相等性检查上,即 "`if value == valueToFind`"。不是所有的 Swift 类型都可以用等式符(`==`)进行比较。例如,如果你自定义类或结构体来描述复杂的数据模型,对于这个类或结构体而言,Swift 无法明确知道“相等”意味着什么。正因如此,这部分代码无法保证适用于任意类型 `T`,当你试图编译这部分代码时就会出现相应的错误。 不过,所有的这些并不会让我们无从下手。Swift 标准库中定义了一个 `Equatable` 协议,该协议要求任何遵循该协议的类型必须实现等式符(`==`)及不等符(`!=`),从而能对该类型的任意两个值进行比较。所有的 Swift 标准类型自动支持 `Equatable` 协议。 -任何 `Equatable` 类型都可以安全地使用在 `findIndex(of:in:)` 函数中,因为其保证支持等式操作符。为了说明这个事实,当你定义一个函数时,你可以定义一个 `Equatable` 类型约束作为类型参数定义的一部分: +遵循 `Equatable` 协议的类型都可以安全地用于 `findIndex(of:in:)` 函数,因为其保证支持等式操作符。为了说明这个事情,当定义一个函数时,你可以定义一个 `Equatable` 类型约束作为类型参数定义的一部分: ```swift func findIndex(of valueToFind: T, in array:[T]) -> Int? { @@ -313,10 +349,9 @@ func findIndex(of valueToFind: T, in array:[T]) -> Int? { return nil } ``` +`findIndex(of:in:)` 类型参数写做 `T: Equatable`,也就意味着“任何符合 `Equatable` 协议的类型 `T`”。 -`findIndex(of:in:)` 唯一的类型参数写做 `T: Equatable`,也就意味着“任何遵循 `Equatable` 协议的类型 `T`”。 - -`findIndex(of:in:)` 函数现在可以成功编译了,并且可以作用于任何遵循 `Equatable` 协议的类型,如 `Double` 或 `String`: +`findIndex(of:in:)` 函数现在可以成功编译了,并且适用于任何符合 `Equatable` 的类型,如 `Double` 或 `String`: ```swift let doubleIndex = findIndex(of: 9.3, in: [3.14159, 0.1, 0.25]) @@ -324,13 +359,12 @@ let doubleIndex = findIndex(of: 9.3, in: [3.14159, 0.1, 0.25]) let stringIndex = findIndex(of: "Andrea", in: ["Mike", "Malcolm", "Andrea"]) // stringIndex 类型为 Int?,其值为 2 ``` - + ## 关联类型 -定义一个协议时,有的时候声明一个或多个关联类型作为协议定义的一部分将会非常有用。*关联类型*为协议中的某个类型提供了一个占位名(或者说别名),其代表的实际类型在协议被遵循时才会被指定。你可以通过 `associatedtype` 关键字来指定关联类型。 +定义一个协议时,声明一个或多个关联类型作为协议定义的一部分将会非常有用。关联类型为协议中的某个类型提供了一个占位符名称,其代表的实际类型在协议被遵循时才会被指定。关联类型通过 `associatedtype` 关键字来指定。 - ### 关联类型实践 下面例子定义了一个 `Container` 协议,该协议定义了一个关联类型 `Item`: @@ -343,22 +377,21 @@ protocol Container { subscript(i: Int) -> Item { get } } ``` +`Container` 协议定义了三个任何遵循该协议的类型(即容器)必须提供的功能: -`Container` 协议定义了三个任何遵循了该协议的类型(即容器)必须提供的功能: ++ 必须可以通过 `append(_:)` 方法添加一个新元素到容器里。 ++ 必须可以通过 `count` 属性获取容器中元素的数量,并返回一个 Int 值。 ++ 必须可以通过索引值类型为 `Int` 的下标检索到容器中的每一个元素。 -- 必须可以通过 `append(_:)` 方法添加一个新元素到容器里。 -- 必须可以通过 `count` 属性获取容器中元素的数量,并返回一个 `Int` 值。 -- 必须可以通过索引值类型为 `Int` 的下标检索到容器中的每一个元素。 +该协议没有指定容器中元素该如何存储以及元素类型。该协议只指定了任何遵从 `Container` 协议的类型必须提供的三个功能。遵从协议的类型在满足这三个条件的情况下,也可以提供其他额外的功能。 -这个协议没有指定容器中元素该如何存储,以及元素必须是何种类型。这个协议只指定了三个任何遵循 `Container` 协议的类型必须提供的功能。遵循协议的类型在满足这三个条件的情况下也可以提供其他额外的功能。 +任何遵从 `Container` 协议的类型必须能够指定其存储的元素的类型。具体来说,它必须确保添加到容器内的元素以及下标返回的元素类型是正确的。 -任何遵循 `Container` 协议的类型必须能够指定其存储的元素的类型,必须保证只有正确类型的元素可以加进容器中,必须明确通过其下标返回的元素的类型。 +为了定义这些条件,`Container` 协议需要在不知道容器中元素的具体类型的情况下引用这种类型。`Container` 协议需要指定任何通过 `append(_:)` 方法添加到容器中的元素和容器内的元素是相同类型,并且通过容器下标返回的元素的类型也是这种类型。 -为了定义这三个条件,`Container` 协议需要在不知道容器中元素的具体类型的情况下引用这种类型。`Container` 协议需要指定任何通过 `append(_:)` 方法添加到容器中的元素和容器中的元素是相同类型,并且通过容器下标返回的元素的类型也是这种类型。 +为此,`Container` 协议声明了一个关联类型 `Item`,写作 `associatedtype Item`。协议没有定义 `Item` 是什么,这个信息留给遵从协议的类型来提供。尽管如此,`Item` 别名提供了一种方式来引用 `Container` 中元素的类型,并将之用于 `append(_:)` 方法和下标,从而保证任何 `Container` 的行为都能如预期。 -为了达到这个目的,`Container` 协议声明了一个关联类型 `Item`,写作 `associatedtype Item`。这个协议无法定义 `Item` 是什么类型的别名,这个信息将留给遵循协议的类型来提供。尽管如此,`Item` 别名提供了一种方式来引用 `Container` 中元素的类型,并将之用于 `append(_:)` 方法和下标,从而保证任何 `Container` 的行为都能够正如预期地被执行。 - -下面是先前的非泛型的 `IntStack` 类型,这一版本遵循了 `Container` 协议: +这是前面非泛型版本 `IntStack` 类型,使其遵循 `Container` 协议: ```swift struct IntStack: Container { @@ -388,7 +421,7 @@ struct IntStack: Container { 此外,`IntStack` 在实现 `Container` 的要求时,指定 `Item` 为 `Int` 类型,即 `typealias Item = Int`,从而将 `Container` 协议中抽象的 `Item` 类型转换为具体的 `Int` 类型。 -由于 Swift 的类型推断,你实际上不用在 `IntStack` 的定义中声明 `Item` 为 `Int`。因为 `IntStack` 遵循 `Container` 协议的所有要求,Swift 只需通过 `append(_:)` 方法的 `item` 参数类型和下标返回值的类型,就可以推断出 `Item` 的具体类型。事实上,如果你在上面的代码中删除了 `typealias Item = Int` 这一行,一切仍旧可以正常工作,因为 Swift 清楚地知道 `Item` 应该是哪种类型。 +由于 Swift 的类型推断,实际上在 `IntStack` 的定义中不需要声明 `Item` 为 `Int`。因为 `IntStack` 符合 `Container` 协议的所有要求,Swift 只需通过 `append(_:)` 方法的 `item` 参数类型和下标返回值的类型,就可以推断出 `Item` 的具体类型。事实上,如果你在上面的代码中删除了 `typealias Item = Int` 这一行,一切也可正常工作,因为 Swift 清楚地知道 `Item` 应该是哪种类型。 你也可以让泛型 `Stack` 结构体遵循 `Container` 协议: @@ -414,26 +447,22 @@ struct Stack: Container { } } ``` - 这一次,占位类型参数 `Element` 被用作 `append(_:)` 方法的 `item` 参数和下标的返回类型。Swift 可以据此推断出 `Element` 的类型即是 `Item` 的类型。 - -### 通过扩展一个存在的类型来指定关联类型 +### 扩展现有类型来指定关联类型 -[通过扩展添加协议遵循](./21_Protocols.html#adding_protocol_conformance_with_an_extension)中描述了如何利用扩展让一个已存在的类型遵循一个协议,这包括使用了关联类型的协议。 +[在扩展添加协议一致性](./21_Protocols.html#adding_protocol_conformance_with_an_extension)中描述了如何利用扩展让一个已存在的类型符合一个协议,这包括使用了关联类型协议。 -Swift 的 `Array` 类型已经提供 `append(_:)` 方法,一个 `count` 属性,以及一个接受 `Int` 类型索引值的下标用以检索其元素。这三个功能都遵循 `Container` 协议的要求,也就意味着你只需简单地声明 `Array` 遵循该协议就可以扩展 `Array`,使其遵循 `Container` 协议。你可以通过一个空扩展来实现这点,正如[通过扩展遵循协议](./21_Protocols.html#declaring_protocol_adoption_with_an_extension)中的描述: +Swift 的 `Array` 类型已经提供 `append(_:)` 方法,`count` 属性,以及带有 `Int` 索引的下标来检索其元素。这三个功能都符合 `Container` 协议的要求,也就意味着你只需声明 `Array` 遵循`Container` 协议,就可以扩展 Array,使其遵从 Container 协议。你可以通过一个空扩展来实现这点,正如通过扩展采纳协议中的描述: ```swift extension Array: Container {} ``` +`Array` 的 `append(_:)` 方法和下标确保了 Swift 可以推断出 `Item` 具体类型。定义了这个扩展后,你可以将任意 `Array` 当作 Container 来使用。 -如同上面的泛型 `Stack` 结构体一样,`Array` 的 `append(_:)` 方法和下标确保了 Swift 可以推断出 `Item` 的类型。定义了这个扩展后,你可以将任意 `Array` 当作 `Container` 来使用。 - - ### 给关联类型添加约束 -你可以给协议里的关联类型添加类型注释,让遵循协议的类型必须遵循这个约束条件。例如,下面的代码定义了一个 `Item` 必须遵循 `Equatable` 的 `Container` 类型: +你可以在协议里给关联类型添加约束来要求遵循的类型满足约束。例如,下面的代码定义了 `Container` 协议, 要求关联类型 `Item` 必须遵循 `Equatable` 协议: ```swift protocol Container { @@ -443,13 +472,12 @@ protocol Container { subscript(i: Int) -> Item { get } } ``` - -为了遵循 `Container` 协议,Item 类型也必须遵循 `Equatable` 协议。 +要遵守 `Container` 协议,`Item` 类型也必须遵守 `Equatable` 协议。 ### 在关联类型约束里使用协议 -协议可以作为它自身的要求出现。例如,有一个协议细化了 `Container` 协议,添加了一个 `suffix(_:)` 方法。`suffix(_:)` 方法返回容器中从后往前给定数量的元素,把它们存储在一个 `Suffix` 类型的实例里。 +协议可以作为它自身的要求出现。例如,有一个协议细化了 `Container` 协议,添加了一个` suffix(_:)` 方法。`suffix(_:)` 方法返回容器中从后往前给定数量的元素,并把它们存储在一个 `Suffix` 类型的实例里。 ```swift protocol SuffixableContainer: Container { @@ -457,10 +485,9 @@ protocol SuffixableContainer: Container { func suffix(_ size: Int) -> Suffix } ``` +在这个协议里,`Suffix` 是一个关联类型,就像上边例子中 `Container` 的 `Item` 类型一样。`Suffix` 拥有两个约束:它必须遵循 `SuffixableContainer` 协议(就是当前定义的协议),以及它的 `Item` 类型必须是和容器里的 `Item` 类型相同。`Item` 的约束是一个 `where` 分句,它在下面带有泛型 `Where` 分句的扩展中有讨论。 -在这个协议里,`Suffix` 是一个关联类型,就像上边例子中 `Container` 的 `Item` 类型一样。`Suffix` 拥有两个约束:它必须遵循 `SuffixableContainer` 协议(就是当前定义的协议),以及它的 `Item` 类型必须是和容器里的 `Item` 类型相同。`Item` 的约束是一个 `wher`e 分句,它在下面[带有泛型 Where 分句的扩展](#extensions_with_a_generic_where_clause)中有讨论。 - -这里有一个来自[闭包的循环强引用](./23_Automatic_Reference_Counting.html#strong_reference_cycles_for_closures)的 Stack 类型的扩展,它添加了对 `SuffixableContainer` 协议的遵循: +这是上面 [强引用循环闭包](./23_Automatic_Reference_Counting.html#strong_reference_cycles_for_closures) 中 `Stack` 类型的扩展,它遵循了 SuffixableContainer 协议: ```swift extension Stack: SuffixableContainer { @@ -480,8 +507,7 @@ stackOfInts.append(30) let suffix = stackOfInts.suffix(2) // suffix contains 20 and 30 ``` - -在上面的例子中,`Suffix` 是 `Stack` 的关联类型,也就是 `Stack` ,所以 `Stack` 的后缀运算返回另一个 `Stack` 。另外,遵循 `SuffixableContainer` 的类型可以拥有一个与它自己不同的 `Suffix` 类型——也就是说后缀运算可以返回不同的类型。比如说,这里有一个非泛型 `IntStack` 类型的扩展,它添加了 `SuffixableContainer` 遵循,使用 `Stack` 作为它的后缀类型而不是 `IntStack`: +在上面的例子中,`Suffix` 是 `Stack` 的关联类型,也是 `Stack` ,所以 `Stack` 的后缀运算返回另一个 `Stack` 。另外,遵循 `SuffixableContainer` 的类型可以拥有一个与它自己不同的 `Suffix` 类型——也就是说后缀运算可以返回不同的类型。比如说,这里有一个非泛型 `IntStack` 类型的扩展,它遵循了 `SuffixableContainer` 协议,使用 `Stack` 作为它的后缀类型而不是 `IntStack`: ```swift extension IntStack: SuffixableContainer { @@ -496,13 +522,13 @@ extension IntStack: SuffixableContainer { } ``` - + ## 泛型 Where 语句 -[类型约束](#type_constraints)让你能够为泛型函数,下标,类型的类型参数定义一些强制要求。 +[类型约束](#type_constraints)让你能够为泛型函数、下标、类型的类型参数定义一些强制要求。 -为关联类型定义约束也是非常有用的。你可以在参数列表中通过 `where` 子句为关联类型定义约束。你能通过 `where` 子句要求一个关联类型遵循某个特定的协议,以及某个特定的类型参数和关联类型必须类型相同。你可以通过将 `where` 关键字紧跟在类型参数列表后面来定义 `where` 子句,`where` 子句后跟一个或者多个针对关联类型的约束,以及一个或多个类型参数和关联类型间的相等关系。你可以在函数体或者类型的大括号之前添加 where 子句。 +对关联类型添加约束通常是非常有用的。你可以通过定义一个泛型 `where` 子句来实现。通过泛型 `where` 子句让关联类型遵从某个特定的协议,以及某个特定的类型参数和关联类型必须类型相同。你可以通过将 `where` 关键字紧跟在类型参数列表后面来定义 `where` 子句,`where` 子句后跟一个或者多个针对关联类型的约束,以及一个或多个类型参数和关联类型间的相等关系。你可以在函数体或者类型的大括号之前添加 `where` 子句。 下面的例子定义了一个名为 `allItemsMatch` 的泛型函数,用来检查两个 `Container` 实例是否包含相同顺序的相同元素。如果所有的元素能够匹配,那么返回 `true`,否则返回 `false`。 @@ -512,53 +538,52 @@ extension IntStack: SuffixableContainer { func allItemsMatch (_ someContainer: C1, _ anotherContainer: C2) -> Bool where C1.Item == C2.Item, C1.Item: Equatable { - + // 检查两个容器含有相同数量的元素 if someContainer.count != anotherContainer.count { return false } - + // 检查每一对元素是否相等 for i in 0..() @@ -575,10 +600,11 @@ if allItemsMatch(stackOfStrings, arrayOfStrings) { } // 打印 “All items match.” ``` +上面的例子创建 `Stack` 实例来存储 `String` 值,然后将三个字符串压栈。这个例子还通过数组字面量创建了一个 `Array` 实例,数组中包含同栈中一样的三个字符串。即使栈和数组是不同的类型,但它们都遵从 `Container` 协议,而且它们都包含相同类型的值。因此你可以用这两个容器作为参数来调用 `allItemsMatch(_:_:)` 函数。在上面的例子中,`allItemsMatch(_:_:)` 函数正确地显示了这两个容器中的所有元素都是相互匹配的。 -上面的例子创建了一个 `Stack` 实例来存储一些 `String` 值,然后将三个字符串压入栈中。这个例子还通过数组字面量创建了一个 `Array` 实例,数组中包含同栈中一样的三个字符串。即使栈和数组是不同的类型,但它们都遵循 `Container` 协议,而且它们都包含相同类型的值。因此你可以用这两个容器作为参数来调用 `allItemsMatch(_:_:)` 函数。在上面的例子中,`allItemsMatch(_:_:)` 函数正确地显示了这两个容器中的所有元素都是相互匹配的。 + ## 具有泛型 Where 子句的扩展 你也可以使用泛型 `where` 子句作为扩展的一部分。基于以前的例子,下面的示例扩展了泛型 `Stack` 结构体,添加一个 `isTop(_:)` 方法。 @@ -594,7 +620,7 @@ extension Stack where Element: Equatable { } ``` -这个新的 `isTop(_:)` 方法首先检查这个栈是不是空的,然后比较给定的元素与栈顶部的元素。如果你尝试不用泛型 `where` 子句,会有一个问题:在 `isTop(_:)` 里面使用了 `==` 运算符,但是 `Stack` 的定义没有要求它的元素是遵循 `Equatable` 协议的,所以使用 `==` 运算符导致编译时错误。使用泛型 `where` 子句可以为扩展添加新的条件,因此只有当栈中的元素遵循 `Equatable` 协议时,扩展才会添加 `isTop(_:)` 方法。 +这个新的 `isTop(_:)` 方法首先检查这个栈是不是空的,然后比较给定的元素与栈顶部的元素。如果你尝试不用泛型 `where` 子句,会有一个问题:在 `isTop(_:)` 里面使用了 `==` 运算符,但是 `Stack` 的定义没有要求它的元素是符合 `Equatable` 协议的,所以使用 `==` 运算符导致编译时错误。使用泛型 `where` 子句可以为扩展添加新的条件,因此只有当栈中的元素符合 `Equatable` 协议时,扩展才会添加 `isTop(_:)` 方法。 以下是 `isTop(_:)` 方法的调用方式: @@ -607,7 +633,7 @@ if stackOfStrings.isTop("tres") { // 打印 "Top element is tres." ``` -如果尝试在其元素未遵循 `Equatable` 协议的栈上调用 `isTop(_:)` 方法,则会收到编译时错误。 +如果尝试在其元素不符合 `Equatable` 协议的栈上调用 `isTop(_:)` 方法,则会收到编译时错误。 ```swift struct NotEquatable { } @@ -616,7 +642,6 @@ let notEquatableValue = NotEquatable() notEquatableStack.push(notEquatableValue) notEquatableStack.isTop(notEquatableValue) // 报错 ``` - 你可以使用泛型 `where` 子句去扩展一个协议。基于以前的示例,下面的示例扩展了 `Container` 协议,添加一个 `startsWith(_:)` 方法。 ```swift @@ -627,7 +652,7 @@ extension Container where Item: Equatable { } ``` -这个 `startsWith(_:)` 方法首先确保容器至少有一个元素,然后检查容器中的第一个元素是否与给定的元素相等。任何遵循 `Container` 协议的类型都可以使用这个新的 `startsWith(_:)` 方法,包括上面使用的栈和数组,只要容器的元素是遵循 `Equatable` 协议的。 +这个 `startsWith(_:)` 方法首先确保容器至少有一个元素,然后检查容器中的第一个元素是否与给定的元素相等。任何符合 `Container` 协议的类型都可以使用这个新的 `startsWith(_:)` 方法,包括上面使用的栈和数组,只要容器的元素是符合 `Equatable` 协议的。 ```swift if [9, 9, 9].startsWith(42) { @@ -653,15 +678,15 @@ extension Container where Item == Double { print([1260.0, 1200.0, 98.6, 37.0].average()) // 打印 "648.9" ``` - 此示例将一个 `average()` 方法添加到 `Item` 类型为 `Double` 的容器中。此方法遍历容器中的元素将其累加,并除以容器的数量计算平均值。它将数量从 `Int` 转换为 `Double` 确保能够进行浮点除法。 就像可以在其他地方写泛型 `where` 子句一样,你可以在一个泛型 `where` 子句中包含多个条件作为扩展的一部分。用逗号分隔列表中的每个条件。 + ## 具有泛型 Where 子句的关联类型 -你可以在关联类型后面加上具有泛型 `where` 的字句。例如,建立一个包含迭代器(Iterator)的容器,就像是标准库中使用的 `Sequence` 协议那样。你应该这么写: +你可以在关联类型后面加上具有泛型 `where` 的字句。例如,建立一个包含迭代器(`Iterator`)的容器,就像是标准库中使用的 `Sequence` 协议那样。你应该这么写: ```swift protocol Container { @@ -669,24 +694,23 @@ protocol Container { mutating func append(_ item: Item) var count: Int { get } subscript(i: Int) -> Item { get } - + associatedtype Iterator: IteratorProtocol where Iterator.Element == Item func makeIterator() -> Iterator } ``` - -迭代器(Iterator)的泛型 `where` 子句要求:无论迭代器是什么类型,迭代器中的元素类型,必须和容器项目的类型保持一致。`makeIterator()` 则提供了容器的迭代器的访问接口。 +迭代器(`Iterator`)的泛型 `where` 子句要求:无论迭代器是什么类型,迭代器中的元素类型,必须和容器项目的类型保持一致。`makeIterator()` 则提供了容器的迭代器的访问接口。 一个协议继承了另一个协议,你通过在协议声明的时候,包含泛型 `where` 子句,来添加了一个约束到被继承协议的关联类型。例如,下面的代码声明了一个 `ComparableContainer` 协议,它要求所有的 `Item` 必须是 `Comparable` 的。 ```swift protocol ComparableContainer: Container where Item: Comparable { } ``` - -##泛型下标 -下标能够是泛型的,他们能够包含泛型 `where` 子句。你可以把占位符类型的名称写在 `subscript` 后面的尖括号里,在下标代码体开始的标志的花括号之前写下泛型 `where` 子句。例如: +## 泛型下标 + +下标可以是泛型,它们能够包含泛型 `where` 子句。你可以在 `subscript` 后用尖括号来写占位符类型,你还可以在下标代码块花括号前写 `where` 子句。例如: ```swift extension Container { @@ -703,11 +727,8 @@ extension Container { 这个 `Container` 协议的扩展添加了一个下标方法,接收一个索引的集合,返回每一个索引所在的值的数组。这个泛型下标的约束如下: -这个 `Container` 协议的扩展添加了一个下标:下标是一个序列的索引,返回的则是索引所在的项目的值所构成的数组。这个泛型下标的约束如下: - -- 在尖括号中的泛型参数 `Indices`,必须是遵循标准库中的 `Sequence` 协议的类型。 -- 下标使用的单一的参数,`indices`,必须是 `Indices` 的实例。 -- 泛型 `where` 子句要求 Sequence(Indices)的迭代器,其所有的元素都是 `Int` 类型。这样就能确保在序列(Sequence)中的索引和容器(Container)里面的索引类型是一致的。 - -综合一下,这些约束意味着,传入到 `indices` 下标,是一个整型的序列。 ++ 在尖括号中的泛型参数 `Indices`,必须是符合标准库中的 `Sequence` 协议的类型。 ++ 下标使用的单一的参数,`indices`,必须是 `Indices` 的实例。 ++ 泛型 `where` 子句要求 `Sequence(Indices)`的迭代器,其所有的元素都是 `Int` 类型。这样就能确保在序列(`Sequence`)中的索引和容器(`Container`)里面的索引类型是一致的。 +综合一下,这些约束意味着,传入到 `indices` 下标,是一个整型的序列。 \ No newline at end of file From 1ec921bb88679ca60aaa7ed51cda57bd321e5d9a Mon Sep 17 00:00:00 2001 From: BqLin Date: Sun, 6 Jan 2019 00:24:40 +0800 Subject: [PATCH 009/107] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=A0=87=E7=82=B9?= =?UTF-8?q?=E9=94=99=E8=AF=AF=20(#852)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/chapter2/11_Methods.md | 2 +- source/chapter2/13_Inheritance.md | 6 +++--- source/chapter2/14_Initialization.md | 12 ++++++------ 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/source/chapter2/11_Methods.md b/source/chapter2/11_Methods.md index f80c1832..9dfca1ef 100755 --- a/source/chapter2/11_Methods.md +++ b/source/chapter2/11_Methods.md @@ -218,7 +218,7 @@ struct LevelTracker { 除了类型属性和类型方法,`LevelTracker` 还监测每个玩家的进度。它用实例属性 `currentLevel` 来监测每个玩家当前的等级。 -为了便于管理 `currentLevel` 属性,`LevelTracker` 定义了实例方法 `advance(to:)`。这个方法会在更新 `currentLevel` 之前检查所请求的新等级是否已经解锁。`advance(to:)` 方法返回布尔值以指示是否能够设置 `currentLevel`。因为允许在调用 `advance(to:)` 时候忽略返回值,不会产生编译警告,所以函数被标注为 `@ discardableResult` 属性,更多关于属性信息,请参考[属性](../chapter3/07_Attributes.html)章节。 +为了便于管理 `currentLevel` 属性,`LevelTracker` 定义了实例方法 `advance(to:)`。这个方法会在更新 `currentLevel` 之前检查所请求的新等级是否已经解锁。`advance(to:)` 方法返回布尔值以指示是否能够设置 `currentLevel`。因为允许在调用 `advance(to:)` 时候忽略返回值,不会产生编译警告,所以函数被标注为 `@discardableResult` 属性,更多关于属性信息,请参考[属性](../chapter3/07_Attributes.html)章节。 下面,`Player` 类使用 `LevelTracker` 来监测和更新每个玩家的发展进度: diff --git a/source/chapter2/13_Inheritance.md b/source/chapter2/13_Inheritance.md index 32d33fd6..73184e7e 100755 --- a/source/chapter2/13_Inheritance.md +++ b/source/chapter2/13_Inheritance.md @@ -26,7 +26,7 @@ class Vehicle { return "traveling at \(currentSpeed) miles per hour" } func makeNoise() { - // 什么也不做-因为车辆不一定会有噪音 + // 什么也不做——因为车辆不一定会有噪音 } } ``` @@ -219,8 +219,8 @@ print("AutomaticCar: \(automatic.description)") ## 防止重写 -你可以通过把方法,属性或下标标记为*`final`*来防止它们被重写,只需要在声明关键字前加上 `final` 修饰符即可(例如:`final var`,`final func`,`final class func`,以及 `final subscript`)。 +你可以通过把方法,属性或下标标记为 *`final`* 来防止它们被重写,只需要在声明关键字前加上 `final` 修饰符即可(例如:`final var`、`final func`、`final class func` 以及 `final subscript`)。 -任何试图对带有 `final` 标记的方法、属性或下标进行重写的代码,都会在编译时会报错。在类扩展中的方法,属性或下标也可以在扩展的定义里标记为 final。 +任何试图对带有 `final` 标记的方法、属性或下标进行重写的代码,都会在编译时会报错。在类扩展中的方法,属性或下标也可以在扩展的定义里标记为 `final`。 可以通过在关键字 `class` 前添加 `final` 修饰符(`final class`)来将整个类标记为 final 。这样的类是不可被继承的,试图继承这样的类会导致编译报错。 diff --git a/source/chapter2/14_Initialization.md b/source/chapter2/14_Initialization.md index c4150025..7088fb02 100755 --- a/source/chapter2/14_Initialization.md +++ b/source/chapter2/14_Initialization.md @@ -166,7 +166,7 @@ let bodyTemperature = Celsius(37.0) ### 可选属性类型 -如果你自定义的类型有一个逻辑上允许值为空的存储型属性——无论是因为它无法在初始化时赋值,还是因为它在之后某个时机可以赋值为空——都需要将它y声明为 `可选类型`。可选类型的属性将自动初始化为 `nil`,表示这个属性是特意在构造过程设置为空。 +如果你自定义的类型有一个逻辑上允许值为空的存储型属性——无论是因为它无法在初始化时赋值,还是因为它在之后某个时机可以赋值为空——都需要将它声明为 `可选类型`。可选类型的属性将自动初始化为 `nil`,表示这个属性是特意在构造过程设置为空。 下面例子中定义了类 `SurveyQuestion`,它包含一个可选 ` String` 属性 `response`: @@ -335,6 +335,7 @@ let centerRect = Rect(center: Point(x: 4.0, y: 4.0), ## 类的继承和构造过程 类里面的所有存储型属性——包括所有继承自父类的属性——都*必须*在构造过程中设置初始值。 + Swift 为类类型提供了两种构造器来确保实例中所有存储型属性都能获得初始值,它们被称为指定构造器和便利构造器。 @@ -500,7 +501,7 @@ Swift 编译器将执行 4 种有效的安全检查,以确保两段式构造 相反,如果你编写了一个和父类便利构造器相匹配的子类构造器,由于子类不能直接调用父类的便利构造器(每个规则都在上文[类的构造器代理规则](#initializer_delegation_for_class_types)有所描述),因此,严格意义上来讲,你的子类并未对一个父类构造器提供重写。最后的结果就是,你在子类中“重写”一个父类便利构造器时,不需要加 `override` 修饰符。 -在下面的例子中定义了一个叫 Vehicle 的基类。基类中声明了一个存储型属性 numberOfWheels,它是默认值为 Int 类型的 0。numberOfWheels 属性用在一个描述车辆特征 String 类型为 descrpiption 的计算型属性中: +在下面的例子中定义了一个叫 `Vehicle` 的基类。基类中声明了一个存储型属性 `numberOfWheels`,它是默认值为 `Int` 类型的 `0`。`numberOfWheels` 属性用在一个描述车辆特征 `String` 类型为 `descrpiption` 的计算型属性中: ```swift class Vehicle { @@ -511,8 +512,7 @@ class Vehicle { } ``` -`Vehicle` 类只为存储型属性提供默认值,也没有提供自定义构造器。因此,它会自动获得一个默认构造器,具体内容请参考[默认构造器](#default_initializers)。默认构造器(如果有的话)总是类中的指定构造器,可以用于创建 `numberOfWheels` 为 `0` 的 `Vehicle` -实例: +`Vehicle` 类只为存储型属性提供默认值,也没有提供自定义构造器。因此,它会自动获得一个默认构造器,具体内容请参考[默认构造器](#default_initializers)。默认构造器(如果有的话)总是类中的指定构造器,可以用于创建 `numberOfWheels` 为 `0` 的 `Vehicle` 实例: ```swift let vehicle = Vehicle() @@ -543,7 +543,7 @@ print("Bicycle: \(bicycle.description)") // 打印 "Bicycle: 2 wheel(s)" ``` -如果父类的构造器没有在阶段 2 过程中做自定义操作,并且父类有一个无参数的自定义构造器。你可以省略 `super.init()` 的调用在所有父类的存储属性赋值之后。 +如果父类的构造器没有在阶段 2 过程中做自定义操作,并且父类有一个无参数的自定义构造器。你可以在所有父类的存储属性赋值之后省略 `super.init()` 的调用。 这个例子定义了另一个 `Vehicle` 的子类 `Hoverboard` ,只设置它的 `color` 属性。这个构造器依赖隐式调用父类的构造器来完成,而不是显示调用 `super.init()`。 @@ -864,7 +864,7 @@ if unknownUnit == nil { ### 构造失败的传递 -类,结构体,枚举的可失败构造器可以横向代理到它们自己其他的可失败构造器。类似的,子类的可失败构造器也能向上代理到父类的可失败构造器。 +类、结构体、枚举的可失败构造器可以横向代理到它们自己其他的可失败构造器。类似的,子类的可失败构造器也能向上代理到父类的可失败构造器。 无论是向上代理还是横向代理,如果你代理到的其他可失败构造器触发构造失败,整个构造过程将立即终止,接下来的任何构造代码不会再被执行。 From 740196487e3c0fea5af9a5773370b0173fbbe6e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=81=B0s?= Date: Mon, 7 Jan 2019 21:34:06 +0800 Subject: [PATCH 010/107] 26_Advanced_Operators (#848) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 4.2更新 * 校对之后的修改 * 4.2 对应更新维护 * 删除多余空格 --- source/chapter2/26_Advanced_Operators.md | 172 +++++++++++------------ 1 file changed, 86 insertions(+), 86 deletions(-) diff --git a/source/chapter2/26_Advanced_Operators.md b/source/chapter2/26_Advanced_Operators.md index 1300d7b9..28eb8ad0 100644 --- a/source/chapter2/26_Advanced_Operators.md +++ b/source/chapter2/26_Advanced_Operators.md @@ -1,12 +1,12 @@ # 高级运算符 -除了在之前介绍过的[基本运算符](./02_Basic_Operators.html),Swift 中还有许多可以对数值进行复杂运算的高级运算符。这些高级运算符包含了在 C 和 Objective-C 中已经被大家所熟知的位运算符和移位运算符。 +除了之前介绍过的[基本运算符](./02_Basic_Operators.md),Swift 还提供了数种可以对数值进行复杂运算的高级运算符。它们包含了在 C 和 Objective-C 中已经被大家所熟知的位运算符和移位运算符。 与 C 语言中的算术运算符不同,Swift 中的算术运算符默认是不会溢出的。所有溢出行为都会被捕获并报告为错误。如果想让系统允许溢出行为,可以选择使用 Swift 中另一套默认支持溢出的运算符,比如溢出加法运算符(`&+`)。所有的这些溢出运算符都是以 `&` 开头的。 -自定义结构体、类和枚举时,如果也为它们提供标准 Swift 运算符的实现,将会非常有用。在 Swift 中自定义运算符非常简单,运算符也会针对不同类型使用对应实现。 +自定义结构体、类和枚举时,如果也为它们提供标准 Swift 运算符的实现,将会非常有用。在 Swift 中为这些运算符提供自定义的实现非常简单,运算符也会针对不同类型使用对应实现。 -我们不用被预定义的运算符所限制。在 Swift 中可以自由地定义中缀、前缀、后缀和赋值运算符,以及相应的优先级与结合性。这些运算符在代码中可以像预定义的运算符一样使用,我们甚至可以扩展已有的类型以支持自定义的运算符。 +我们不用被预定义的运算符所限制。在 Swift 中可以自由地定义中缀、前缀、后缀和赋值运算符,它们具有自定义的优先级与关联值。这些运算符在代码中可以像预定义的运算符一样使用,你甚至可以扩展已有的类型以支持自定义运算符。 ## 位运算符 @@ -16,31 +16,31 @@ Swift 支持 C 语言中的全部位运算符,接下来会一一介绍。 -### 按位取反运算符 +### Bitwise NOT Operator(按位取反运算符) -*按位取反运算符(`~`)*可以对一个数值的全部比特位进行取反: +*按位取反运算符(`~`)*对一个数值的全部比特位进行取反: ![Art/bitwiseNOT_2x.png](https://docs.swift.org/swift-book/_images/bitwiseNOT_2x.png) -按位取反运算符是一个前缀运算符,需要直接放在运算的数之前,并且它们之间不能添加任何空格: +按位取反运算符是一个前缀运算符,直接放在运算数之前,并且它们之间不能添加任何空格: ```swift let initialBits: UInt8 = 0b00001111 let invertedBits = ~initialBits // 等于 0b11110000 ``` -`UInt8` 类型的整数有 8 个比特位,可以存储 `0 ~ 255` 之间的任意整数。这个例子初始化了一个 `UInt8` 类型的整数,并赋值为二进制的 `00001111`,它的前 4 位都为 `0`,后 4 位都为 `1`。这个值等价于十进制的 `15`。 +`UInt8` 类型的整数有 8 个比特位,可以存储 `0 ~ 255` 之间的任意整数。这个例子初始化了一个 `UInt8` 类型的整数,并赋值为二进制的 `00001111`,它的前 4 位为 `0`,后 4 位为 `1`。这个值等价于十进制的 `15`。 接着使用按位取反运算符创建了一个名为 `invertedBits` 的常量,这个常量的值与全部位取反后的 `initialBits` 相等。即所有的 `0` 都变成了 `1`,同时所有的 `1` 都变成 `0`。`invertedBits` 的二进制值为 `11110000`,等价于无符号十进制数的 `240`。 -### 按位与运算符 +### Bitwise AND Operator(按位与运算符) -*按位与运算符(`&`)*可以对两个数的比特位进行合并。它返回一个新的数,只有当两个数的对应位都为 `1` 的时候,新数的对应位才为 `1`: +*按位与运算符(`&`)* 对两个数的比特位进行合并。它返回一个新的数,只有当两个数的对应位*都*为 `1` 的时候,新数的对应位才为 `1`: ![Art/bitwiseAND_2x.png](https://docs.swift.org/swift-book/_images/bitwiseAND_2x.png) -在下面的示例当中,`firstSixBits` 和 `lastSixBits` 中间 4 个位的值都为 `1`。按位与运算符对它们进行了运算,得到二进制数值 `00111100`,等价于无符号十进制数的 `60`: +在下面的示例当中,`firstSixBits` 和 `lastSixBits` 中间 4 个位的值都为 `1`。使用按位与运算符之后,得到二进制数值 `00111100`,等价于无符号十进制数的 `60`: ```swift let firstSixBits: UInt8 = 0b11111100 @@ -49,13 +49,13 @@ let middleFourBits = firstSixBits & lastSixBits // 等于 00111100 ``` -### 按位或运算符 +### Bitwise OR Operator(按位或运算符) -*按位或运算符(`|`)*可以对两个数的比特位进行比较。它返回一个新的数,只要两个数的对应位中有任意一个为 `1` 时,新数的对应位就为 `1`: +*按位或运算符(`|`)* 可以对两个数的比特位进行比较。它返回一个新的数,只要两个数的对应位中有*任意一个*为 `1` 时,新数的对应位就为 `1`: -![Art/bitwiseOR_2x.png](https://docs.swift.org/swift-book/_images/bitwiseOR_2x.png "Art/bitwiseOR_2x.png") +![Art/bitwiseOR_2x.png](https://docs.swift.org/swift-book/_images/bitwiseOR_2x.png) -在下面的示例中,`someBits` 和 `moreBits` 不同的位会被设置为 `1`。接位或运算符对它们进行了运算,得到二进制数值 `11111110`,等价于无符号十进制数的 `254`: +在下面的示例中,`someBits` 和 `moreBits` 存在不同的位被设置为 `1`。使用按位或运算符之后,得到二进制数值 `11111110`,等价于无符号十进制数的 `254`: ```swift let someBits: UInt8 = 0b10110010 @@ -64,13 +64,13 @@ let combinedbits = someBits | moreBits // 等于 11111110 ``` -### 按位异或运算符 +### Bitwise XOR Operator(按位异或运算符) -*按位异或运算符(`^`)*可以对两个数的比特位进行比较。它返回一个新的数,当两个数的对应位不相同时,新数的对应位就为 `1`: +*按位异或运算符*,或称“排外的或运算符”(`^`),可以对两个数的比特位进行比较。它返回一个新的数,当两个数的对应位不相同时,新数的对应位就为 `1`,并且对应位相同时则为 `0`: -![Art/bitwiseXOR_2x.png](https://docs.swift.org/swift-book/_images/bitwiseXOR_2x.png "Art/bitwiseXOR_2x.png") +![Art/bitwiseXOR_2x.png](https://docs.swift.org/swift-book/_images/bitwiseXOR_2x.png) -在下面的示例当中,`firstBits` 和 `otherBits` 都有一个自己的位为 `1` 而对方的对应位为 `0` 的位。 按位异或运算符将新数的这两个位都设置为 `1`,同时将其它位都设置为 `0`: +在下面的示例当中,`firstBits` 和 `otherBits` 都有一个自己为 `1`,而对方为 `0` 的位。按位异或运算符将新数的这两个位都设置为 `1`。在其余的位上 `firstBits` 和 `otherBits` 是相同的,所以设置为 `0`: ```swift let firstBits: UInt8 = 0b00010100 @@ -79,9 +79,9 @@ let outputBits = firstBits ^ otherBits // 等于 00010001 ``` -### 按位左移、右移运算符 +### Bitwise Left and Right Shift Operators(按位左移、右移运算符) -*按位左移运算符(`<<`)*和*按位右移运算符(`>>`)*可以对一个数的所有位进行指定位数的左移和右移,但是需要遵守下面定义的规则。 +*按位左移运算符(`<<`)* 和 *按位右移运算符(`>>`)*可以对一个数的所有位进行指定位数的左移和右移,但是需要遵守下面定义的规则。 对一个数进行按位左移或按位右移,相当于对这个数进行乘以 2 或除以 2 的运算。将一个整数左移一位,等价于将这个数乘以 2,同样地,将一个整数右移一位,等价于将这个数除以 2。 @@ -90,15 +90,15 @@ let outputBits = firstBits ^ otherBits // 等于 00010001 对无符号整数进行移位的规则如下: -1. 已经存在的位按指定的位数进行左移和右移。 +1. 已存在的位按指定的位数进行左移和右移。 2. 任何因移动而超出整型存储范围的位都会被丢弃。 3. 用 `0` 来填充移位后产生的空白位。 这种方法称为*逻辑移位*。 -以下这张图展示了 `11111111 << 1`(即把 `11111111` 向左移动 `1` 位),和 `11111111 >> 1`(即把 `11111111` 向右移动 `1` 位)的结果。蓝色的部分是被移位的,灰色的部分是被抛弃的,橙色的部分则是被填充进来的: +以下这张图展示了 `11111111 << 1`(即把 `11111111` 向左移动 `1` 位),和 `11111111 >> 1`(即把 `11111111` 向右移动 `1` 位)的结果。蓝色的数字是被移位的,灰色的数字是被抛弃的,橙色的 `0` 则是被填充进来的: -![Art/bitshiftUnsigned_2x.png](https://docs.swift.org/swift-book/_images/bitshiftUnsigned_2x.png "Art/bitshiftUnsigned_2x.png") +![Art/bitshiftUnsigned_2x.png](https://docs.swift.org/swift-book/_images/bitshiftUnsigned_2x.png) 下面的代码演示了 Swift 中的移位运算: @@ -120,50 +120,48 @@ let greenComponent = (pink & 0x00FF00) >> 8 // greenComponent 是 0x66, 即 10 let blueComponent = pink & 0x0000FF // blueComponent 是 0x99,即 153 ``` -这个示例使用了一个命名为 `pink` 的 `UInt32` 型常量来存储 CSS 中粉色的颜色值。该 CSS 的十六进制颜色值 `#CC6699`,在 Swift 中表示为 `0xCC6699`。然后利用按位与运算符(`&`)和按位右移运算符(`>>`)从这个颜色值中分解出红(`CC`)、绿(`66`)以及蓝(`99`)三个部分。 +这个示例使用了一个命名为 `pink` 的 `UInt32` 型常量来存储 Cascading Style Sheets(CSS)中粉色的颜色值。该 CSS 的颜色值 `#CC6699`,在 Swift 中表示为十六进制的 `0xCC6699`。然后利用按位与运算符(`&`)和按位右移运算符(`>>`)从这个颜色值中分解出红(`CC`)、绿(`66`)以及蓝(`99`)三个部分。 红色部分是通过对 `0xCC6699` 和 `0xFF0000` 进行按位与运算后得到的。`0xFF0000` 中的 `0` 部分“掩盖”了 `OxCC6699` 中的第二、第三个字节,使得数值中的 `6699` 被忽略,只留下 `0xCC0000`。 -然后,再将这个数按向右移动 16 位(`>> 16`)。十六进制中每两个字符表示 8 个比特位,所以移动 16 位后 `0xCC0000` 就变为 `0x0000CC`。这个数和 `0xCC` 是等同的,也就是十进制数值的 `204`。 +然后,将这个数向右移动 16 位(`>> 16`)。十六进制中每两个字符占用 8 个比特位,所以移动 16 位后 `0xCC0000` 就变为 `0x0000CC`。这个数和 `0xCC` 是等同的,也就是十进制数值的 `204`。 同样的,绿色部分通过对 `0xCC6699` 和 `0x00FF00` 进行按位与运算得到 `0x006600`。然后将这个数向右移动 8 位,得到 `0x66`,也就是十进制数值的 `102`。 -最后,蓝色部分通过对 `0xCC6699` 和 `0x0000FF` 进行按位与运算得到 `0x000099`。这里不需要再向右移位,所以结果为 `0x99` ,也就是十进制数值的 `153`。 +最后,蓝色部分通过对 `0xCC6699` 和 `0x0000FF` 进行按位与运算得到 `0x000099`。这里不需要再向右移位,而 `0x000099` 也就是 `0x99` ,也就是十进制数值的 `153`。 #### 有符号整数的移位运算 -对比无符号整数,有符号整数的移位运算相对复杂得多,这种复杂性源于有符号整数的二进制表现形式。(为了简单起见,以下的示例都是基于 8 比特位的有符号整数的,但是其中的原理对任何位数的有符号整数都是通用的。) +对比无符号整数,有符号整数的移位运算相对复杂得多,这种复杂性源于有符号整数的二进制表现形式。(为了简单起见,以下的示例都是基于 8 比特的有符号整数,但是其中的原理对任何位数的有符号整数都是通用的。) -有符号整数使用第 1 个比特位(通常被称为符号位)来表示这个数的正负。符号位为 `0` 代表正数,为 `1` 代表负数。 +有符号整数使用第 1 个比特位(通常被称为*符号位*)来表示这个数的正负。符号位为 `0` 代表正数,为 `1` 代表负数。 -其余的比特位(通常被称为数值位)存储了实际的值。有符号正整数和无符号数的存储方式是一样的,都是从 `0` 开始算起。这是值为 `4` 的 `Int8` 型整数的二进制位表现形式: +其余的比特位(通常被称为*数值位*)存储了实际的值。有符号正整数和无符号数的存储方式是一样的,都是从 `0` 开始算起。这是值为 `4` 的 `Int8` 型整数的二进制位表现形式: -![Art/bitshiftSignedFour_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSignedFour_2x.png "Art/bitshiftSignedFour_2x.png") +![Art/bitshiftSignedFour_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSignedFour_2x.png) -符号位为 `0`,说明这是一个正数,另外 7 位则代表了十进制数值 `4` 的二进制表示。 +符号位为 `0`(代表这是一个“正数”),另外 7 位则代表了十进制数值 `4` 的二进制表示。 -负数的存储方式略有不同。它存储的值的绝对值等于 `2` 的 `n` 次方减去它的实际值(也就是数值位表示的值),这里的 `n` 为数值位的比特位数。一个 8 比特位的数有 7 个比特位是数值位,所以是 `2` 的 `7` 次方,即 `128`。 +负数的存储方式略有不同。它存储 `2` 的 `n` 次方减去其实际值的绝对值,这里的 `n` 是数值位的位数。一个 8 比特位的数有 7 个比特位是数值位,所以是 `2` 的 `7` 次方,即 `128`。 -这是值为 `-4` 的 `Int8` 型整数的二进制位表现形式: +这是值为 `-4` 的 `Int8` 型整数的二进制表现形式: -![Art/bitshiftSignedMinusFour_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSignedMinusFour_2x.png "Art/bitshiftSignedMinusFour_2x.png") +![Art/bitshiftSignedMinusFour_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSignedMinusFour_2x.png) 这次的符号位为 `1`,说明这是一个负数,另外 7 个位则代表了数值 `124`(即 `128 - 4`)的二进制表示: -![Art/bitshiftSignedMinusFourValue_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSignedMinusFourValue_2x.png "Art/bitshiftSignedMinusFourValue_2x.png") +![Art/bitshiftSignedMinusFourValue_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSignedMinusFourValue_2x.png) -负数的表示通常被称为*二进制补码*表示。用这种方法来表示负数乍看起来有点奇怪,但它有几个优点。 +负数的表示通常被称为*二进制补码*。用这种方法来表示负数乍看起来有点奇怪,但它有几个优点。 -首先,如果想对 `-1` 和 `-4` 进行加法运算,我们只需要将这两个数的全部 8 个比特位进行相加,并且将计算结果中超出 8 位的数值丢弃: +首先,如果想对 `-1` 和 `-4` 进行加法运算,我们只需要对这两个数的全部 8 个比特位执行标准的二进制相加(包括符号位),并且将计算结果中超出 8 位的数值丢弃: -![Art/bitshiftSignedAddition_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSignedAddition_2x.png "Art/bitshiftSignedAddition_2x.png") +![Art/bitshiftSignedAddition_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSignedAddition_2x.png) -其次,使用二进制补码可以使负数的按位左移和右移运算得到跟正数同样的效果,即每向左移一位就将自身的数值乘以 2,每向右一位就将自身的数值除以 2。要达到此目的,对有符号整数的右移有一个额外的规则: +其次,使用二进制补码可以使负数的按位左移和右移运算得到跟正数同样的效果,即每向左移一位就将自身的数值乘以 2,每向右一位就将自身的数值除以 2。要达到此目的,对有符号整数的右移有一个额外的规则:当对有符号整数进行按位右移运算时,遵循与无符号整数相同的规则,但是对于移位产生的空白位使用*符号位*进行填充,而不是用 `0`。 -* 当对整数进行按位右移运算时,遵循与无符号整数相同的规则,但是对于移位产生的空白位使用*符号位*进行填充,而不是用 `0`。 - -![Art/bitshiftSigned_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSigned_2x.png "Art/bitshiftSigned_2x.png") +![Art/bitshiftSigned_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSigned_2x.png) 这个行为可以确保有符号整数的符号位不会因为右移运算而改变,这通常被称为*算术移位*。 @@ -172,9 +170,9 @@ let blueComponent = pink & 0x0000FF // blueComponent 是 0x99,即 153 ## 溢出运算符 -在默认情况下,当向一个整数赋予超过它容量的值时,Swift 默认会报错,而不是生成一个无效的数。这个行为为我们在运算过大或着过小的数的时候提供了额外的安全性。 +当向一个整数类型的常量或者变量赋予超过它容量的值时,Swift 默认会报错,而不是允许生成一个无效的数。这个行为为我们在运算过大或者过小的数时提供了额外的安全性。 -例如,`Int16` 型整数能容纳的有符号整数范围是 `-32768` 到 `32767`,当为一个 `Int16` 型变量赋的值超过这个范围时,系统就会报错: +例如,`Int16` 型整数能容纳的有符号整数范围是 `-32768` 到 `32767`。当为一个 `Int16` 类型的变量或常量赋予的值超过这个范围时,系统就会报错: ```swift var potentialOverflow = Int16.max @@ -183,9 +181,9 @@ potentialOverflow += 1 // 这里会报错 ``` -为过大或者过小的数值提供错误处理,能让我们在处理边界值时更加灵活。 +在赋值时为过大或者过小的情况提供错误处理,能让我们在处理边界值时更加灵活。 -然而,也可以选择让系统在数值溢出的时候采取截断处理,而非报错。可以使用 Swift 提供的三个溢出运算符来让系统支持整数溢出运算。这些运算符都是以 `&` 开头的: +然而,当你希望的时候也可以选择让系统在数值溢出的时候采取截断处理,而非报错。Swift 提供的三个*溢出运算符*来让系统支持整数溢出运算。这些运算符都是以 `&` 开头的: * 溢出加法 `&+` * 溢出减法 `&-` @@ -205,11 +203,11 @@ unsignedOverflow = unsignedOverflow &+ 1 // 此时 unsignedOverflow 等于 0 ``` -`unsignedOverflow` 被初始化为 `UInt8` 所能容纳的最大整数(`255`,以二进制表示即 `11111111`)。然后使用了溢出加法运算符(`&+`)对其进行加 `1` 运算。这使得它的二进制表示正好超出 `UInt8` 所能容纳的位数,也就导致了数值的溢出,如下图所示。数值溢出后,留在 `UInt8` 边界内的值是 `00000000`,也就是十进制数值的 `0`。 +`unsignedOverflow` 被初始化为 `UInt8` 所能容纳的最大整数(`255`,以二进制表示即 `11111111`)。然后使用溢出加法运算符(`&+`)对其进行加 `1` 运算。这使得它的二进制表示正好超出 `UInt8` 所能容纳的位数,也就导致了数值的溢出,如下图所示。数值溢出后,仍然留在 `UInt8` 边界内的值是 `00000000`,也就是十进制数值的 `0`。 -![Art/overflowAddition_2x.png](https://docs.swift.org/swift-book/_images/overflowAddition_2x.png "Art/overflowAddition_2x.png") +![Art/overflowAddition_2x.png](https://docs.swift.org/swift-book/_images/overflowAddition_2x.png) -同样地,当我们对一个无符号整数使用溢出减法(`&-`)进行下溢运算时也会产生类似的现象: +当允许对一个无符号整数进行下溢运算时也会产生类似的情况。这里有一个使用溢出减法运算符(`&-`)的例子: ```swift var unsignedOverflow = UInt8.min @@ -220,9 +218,9 @@ unsignedOverflow = unsignedOverflow &- 1 `UInt8` 型整数能容纳的最小值是 `0`,以二进制表示即 `00000000`。当使用溢出减法运算符对其进行减 `1` 运算时,数值会产生下溢并被截断为 `11111111`, 也就是十进制数值的 `255`。 -![Art/overflowUnsignedSubtraction_2x.png](https://docs.swift.org/swift-book/_images/overflowUnsignedSubtraction_2x.png "Art/overflowAddition_2x.png") +![Art/overflowUnsignedSubtraction_2x.png](https://docs.swift.org/swift-book/_images/overflowUnsignedSubtraction_2x.png) -溢出也会发生在有符号整型数值上。在对有符号整型数值进行溢出加法或溢出减法运算时,符号位也需要参与计算,正如[按位左移、右移运算符](#bitwise_left_and_right_shift_operators)所描述的。 +溢出也会发生在有符号整型上。针对有符号整型的所有溢出加法或者减法运算都是按位运算的方式执行的,符号位也需要参与计算,正如[按位左移、右移运算符](#bitwise_left_and_right_shift_operators)所描述的。 ```swift var signedOverflow = Int8.min @@ -231,27 +229,27 @@ signedOverflow = signedOverflow &- 1 // 此时 signedOverflow 等于 127 ``` -`Int8` 型整数能容纳的最小值是 `-128`,以二进制表示即 `10000000`。当使用溢出减法运算符对其进行减 `1` 运算时,符号位被翻转,得到二进制数值 `01111111`,也就是十进制数值的 `127`,这个值也是 `Int8` 型整数所能容纳的最大值。 +`Int8` 型整数能容纳的最小值是 `-128`,以二进制表示即 `10000000`。当使用溢出减法运算符对其进行减 `1` 运算时,符号位被翻转,得到二进制数值 `01111111`,也就是十进制数值的 `127`,这个值也是 `Int8` 型整所能容纳的最大值。 -![Art/overflowSignedSubtraction_2x.png](https://docs.swift.org/swift-book/_images/overflowSignedSubtraction_2x.png "Art/overflowSignedSubtraction_2x.png") +![Art/overflowSignedSubtraction_2x.png](https://docs.swift.org/swift-book/_images/overflowSignedSubtraction_2x.png) -对于无符号与有符号整型数值来说,当出现上溢时,它们会从数值所能容纳的最大数变成最小的数。同样地,当发生下溢时,它们会从所能容纳的最小数变成最大的数。 +对于无符号与有符号整型数值来说,当出现上溢时,它们会从数值所能容纳的最大数变成最小数。同样地,当发生下溢时,它们会从所能容纳的最小数变成最大数。 ## 优先级和结合性 -运算符的*优先级*使得一些运算符优先于其他运算符,高优先级的运算符会先被计算。 +运算符的*优先级*使得一些运算符优先于其他运算符;它们会先被执行。 -*结合性*定义了相同优先级的运算符是如何结合的,也就是说,是与左边结合为一组,还是与右边结合为一组。可以将这意思理解为“它们是与左边的表达式结合的”或者“它们是与右边的表达式结合的”。 +*结合性*定义了相同优先级的运算符是如何结合的,也就是说,是与左边结合为一组,还是与右边结合为一组。可以将其理解为“它们是与左边的表达式结合的,”或者“它们是与右边的表达式结合的。” -在复合表达式的运算顺序中,运算符的优先级和结合性是非常重要的。举例来说,运算符优先级解释了为什么下面这个表达式的运算结果会是 `17`。 +当考虑一个复合表达式的计算顺序时,运算符的优先级和结合性是非常重要的。举例来说,运算符优先级解释了为什么下面这个表达式的运算结果会是 `17`。 ```swift 2 + 3 % 4 * 5 // 结果是 17 ``` -如果完全从左到右进行运算,则运算的过程是这样的: +如果你直接从左到右进行运算,你可能认为运算的过程是这样的: - 2 + 3 = 5 - 5 % 4 = 1 @@ -259,7 +257,7 @@ signedOverflow = signedOverflow &- 1 但是正确答案是 `17` 而不是 `5`。优先级高的运算符要先于优先级低的运算符进行计算。与 C 语言类似,在 Swift 中,乘法运算符(`*`)与取余运算符(`%`)的优先级高于加法运算符(`+`)。因此,它们的计算顺序要先于加法运算。 -而乘法与取余的优先级相同。这时为了得到正确的运算顺序,还需要考虑结合性。乘法与取余运算都是左结合的。可以将这考虑成为这两部分表达式都隐式地加上了括号: +而乘法运算与取余运算的优先级*相同*。这时为了得到正确的运算顺序,还需要考虑结合性。乘法运算与取余运算都是左结合的。可以将这考虑成,从它们的左边开始为这两部分表达式都隐式地加上括号: ```swift 2 + ((3 % 4) * 5) @@ -277,22 +275,22 @@ signedOverflow = signedOverflow &- 1 2 + 15 ``` -因此计算结果为 `17`。 +因此计算结果为 `17`。 -如果想查看完整的 Swift 运算符优先级和结合性规则,请参考[表达式](../chapter3/04_Expressions.html)。如果想查看 Swift 标准库提供所有的运算符,请查看 [Swift Standard Library Operators Reference](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Reference/Swift_StandardLibrary_Operators/index.html#//apple_ref/doc/uid/TP40016054)。 +有关 Swift 标准库提供的操作符信息,包括操作符优先级组和结核性设置的完整列表,请参见[操作符声明](https://developer.apple.com/documentation/swift/swift_standard_library/operator_declarations)。 > 注意 > -> 相对 C 语言和 Objective-C 来说,Swift 的运算符优先级和结合性规则更加简洁和可预测。但是,这也意味着它们相较于 C 语言及其衍生语言并不是完全一致的。在对现有的代码进行移植的时候,要注意确保运算符的行为仍然符合你的预期。 +> 相对 C 语言和 Objective-C 来说,Swift 的运算符优先级和结合性规则更加简洁和可预测。但是,这也意味着它们相较于 C 语言及其衍生语言并不是完全一致。在对现有的代码进行移植的时候,要注意确保运算符的行为仍然符合你的预期。 ## 运算符函数 -类和结构体可以为现有的运算符提供自定义的实现,这通常被称为*运算符重载*。 +类和结构体可以为现有的运算符提供自定义的实现。这通常被称为运算符*重载*。 -下面的例子展示了如何为自定义的结构体实现加法运算符(`+`)。算术加法运算符是一个双目运算符,因为它可以对两个值进行运算,同时它还是中缀运算符,因为它出现在两个值中间。 +下面的例子展示了如何让自定义的结构体支持加法运算符(`+`)。算术加法运算符是一个*二元运算符*,因为它是对两个值进行运算,同时它还可以称为*中缀*运算符,因为它出现在两个值中间。 -例子中定义了一个名为 `Vector2D` 的结构体用来表示二维坐标向量 `(x, y)`,紧接着定义了一个可以对两个 `Vector2D` 结构体进行相加的运算符函数: +例子中定义了一个名为 `Vector2D` 的结构体用来表示二维坐标向量 `(x, y)`,紧接着定义了一个可以将两个 `Vector2D` 结构体实例进行相加的*运算符函数*: ```swift struct Vector2D { @@ -306,7 +304,7 @@ extension Vector2D { } ``` -该运算符函数被定义为 `Vector2D` 上的一个类方法,并且函数的名字与它要进行重载的 `+` 名字一致。因为加法运算并不是一个向量必需的功能,所以这个类方法被定义在 `Vector2D` 的一个扩展中,而不是 `Vector2D` 结构体声明内。而算术加法运算符是双目运算符,所以这个运算符函数接收两个类型为 `Vector2D` 的参数,同时有一个 `Vector2D` 类型的返回值。 +该运算符函数被定义为 `Vector2D` 上的一个类方法,并且函数的名字与它要进行重载的 `+` 名字一致。因为加法运算并不是一个向量必需的功能,所以这个类方法被定义在 `Vector2D` 的一个扩展中,而不是 `Vector2D` 结构体声明内。而算术加法运算符是二元运算符,所以这个运算符函数接收两个类型为 `Vector2D` 的参数,同时有一个 `Vector2D` 类型的返回值。 在这个实现中,输入参数分别被命名为 `left` 和 `right`,代表在 `+` 运算符左边和右边的两个 `Vector2D` 实例。函数返回了一个新的 `Vector2D` 实例,这个实例的 `x` 和 `y` 分别等于作为参数的两个实例的 `x` 和 `y` 的值之和。 @@ -321,12 +319,12 @@ let combinedVector = vector + anotherVector 这个例子实现两个向量 `(3.0,1.0)` 和 `(2.0,4.0)` 的相加,并得到新的向量 `(5.0,5.0)`。这个过程如下图示: -![Art/vectorAddition_2x.png](https://docs.swift.org/swift-book/_images/vectorAddition_2x.png "Art/vectorAddition_2x.png") +![Art/vectorAddition_2x.png](https://docs.swift.org/swift-book/_images/vectorAddition_2x.png) ### 前缀和后缀运算符 -上个例子演示了一个双目中缀运算符的自定义实现。类与结构体也能提供标准*单目运算符*的实现。单目运算符只运算一个值。当运算符出现在值之前时,它就是*前缀*的(例如 `-a`),而当它出现在值之后时,它就是*后缀*的(例如 `b!`)。 +上个例子演示了一个二元中缀运算符的自定义实现。类与结构体也能提供标准*一元运算符*的实现。一元运算符只运算一个值。当运算符出现在值之前时,它就是*前缀*的(例如 `-a`),而当它出现在值之后时,它就是*后缀*的(例如 `b!`)。 要实现前缀或者后缀运算符,需要在声明运算符函数的时候在 `func` 关键字之前指定 `prefix` 或者 `postfix` 修饰符: @@ -338,9 +336,9 @@ extension Vector2D { } ``` -这段代码为 `Vector2D` 类型实现了单目负号运算符。由于该运算符是前缀运算符,所以这个函数需要加上 `prefix` 修饰符。 +这段代码为 `Vector2D` 类型实现了一元运算符(`-a`)。由于该运算符是前缀运算符,所以这个函数需要加上 `prefix` 修饰符。 -对于简单数值,单目负号运算符可以对它们的正负性进行改变。对于 `Vector2D` 来说,该运算将其 `x` 和 `y` 属性的正负性都进行了改变: +对于简单数值,一元负号运算符可以对它们的正负性进行改变。对于 `Vector2D` 来说,该运算将其 `x` 和 `y` 属性的正负性都进行了改变: ```swift let positive = Vector2D(x: 3.0, y: 4.0) @@ -353,7 +351,9 @@ let alsoPositive = -negative ### 复合赋值运算符 -*复合赋值运算符*将赋值运算符(`=`)与其它运算符进行结合。例如,将加法与赋值结合成加法赋值运算符(`+=`)。在实现的时候,需要把运算符的左参数设置成 `inout` 类型,因为这个参数的值会在运算符函数内直接被修改。 +*复合赋值运算符*将赋值运算符(`=`)与其它运算符进行结合。例如,将加法与赋值结合成加法赋值运算符(`+=`)。在实现的时候,需要把运算符的左参数设置成 `inout` 类型,因为这个参数的值会在运算符函数内直接被修改。 + +在下面的例子中,对 `Vector2D` 实例实现了一个加法赋值运算符函数: ```swift extension Vector2D { @@ -374,14 +374,14 @@ original += vectorToAdd > 注意 > -> 不能对默认的赋值运算符(`=`)进行重载。只有组合赋值运算符可以被重载。同样地,也无法对三目条件运算符 (`a ? b : c`) 进行重载。 +> 不能对默认的赋值运算符(`=`)进行重载。只有复合赋值运算符可以被重载。同样地,也无法对三元条件运算符 (`a ? b : c`) 进行重载。 ### 等价运算符 -自定义的类和结构体没有对*等价运算符*进行默认实现,等价运算符通常被称为“相等”运算符(`==`)与“不等”运算符(`!=`)。对于自定义类型,Swift 无法判断其是否“相等”,因为“相等”的含义取决于这些自定义类型在你的代码中所扮演的角色。 +通常情况下,自定义的类和结构体没有对*等价运算符*进行默认实现,等价运算符通常被称为*相等*运算符(`==`)与*不等*运算符(`!=`)。 -为了使用等价运算符能对自定义的类型进行判等运算,需要为其提供自定义实现,实现的方法与其它中缀运算符一样, 并且增加对标准库 `Equatable` 协议的遵循: +为了使用等价运算符对自定义的类型进行判等运算,需要为“相等”运算符提供自定义实现,实现的方法与其它中缀运算符一样, 并且增加对标准库 `Equatable` 协议的遵循: ```swift extension Vector2D: Equatable { @@ -391,7 +391,7 @@ extension Vector2D: Equatable { } ``` -上述代码实现了“相等”运算符(`==`)来判断两个 `Vector2D` 实例是否相等。对于 `Vector2D` 类型来说,“相等”意味着“两个实例的 `x` 属性和 `y` 属性都相等”,这也是代码中用来进行判等的逻辑。示例里同时也实现了“不等”运算符(`!=`),它简单地将“相等”运算符的结果进行取反后返回。 +上述代码实现了“相等”运算符(`==`)来判断两个 `Vector2D` 实例是否相等。对于 `Vector2D` 来说,“相等”意味着“两个实例的 `x` 和 `y` 都相等”,这也是代码中用来进行判等的逻辑。如果你已经实现了“相等”运算符,通常情况下你并不需要自己再去实现“不等”运算符(`!=`)。标准库对于“不等”运算符提供了默认的实现,它简单地将“相等”运算符的结果进行取反后返回。 现在我们可以使用这两个运算符来判断两个 `Vector2D` 实例是否相等: @@ -404,15 +404,15 @@ if twoThree == anotherTwoThree { // 打印 “These two vectors are equivalent.” ``` -Swift 为以下自定义类型提等价运算符供合成实现: +Swift 为以下数种自定义类型提供等价运算符的默认实现: -- 只拥有遵循 `Equatable` 协议存储属性的结构体; -- 只拥有遵循 `Equatable` 协议关联类型的枚举; -- 没有关联类型的枚举。 +- 只拥有存储属性,并且它们全都遵循 `Equatable` 协议的结构体 +- 只拥有关联类型,并且它们全都遵循 `Equatable` 协议的枚举 +- 没有关联类型的枚举 -在类型原本的声明中声明遵循 `Equatable` 来接收这些默认实现。 +在类型原始的声明中声明遵循 `Equatable` 来接收这些默认实现。 -下面为三维位置向量 `(x, y, z)` 定义的 `Vector3D` 结构体,与 `Vector2D` 类似,由于 `x`,`y` 和 `z` 属性都是 `Equatable` 类型,`Vector3D` 就收到默认的等价运算符实现了。 +下面为三维位置向量 `(x, y, z)` 定义的 `Vector3D` 结构体,与 `Vector2D` 类似。由于 `x`,`y` 和 `z` 属性都是 `Equatable` 类型,`Vector3D` 获得了默认的等价运算符实现。 ```swift struct Vector3D: Equatable { @@ -438,7 +438,7 @@ if twoThreeFour == anotherTwoThreeFour { prefix operator +++ ``` -上面的代码定义了一个新的名为 `+++` 的前缀运算符。对于这个运算符,在 Swift 中并没有意义,因此我们针对 `Vector2D` 的实例来定义它的意义。对这个示例来讲,`+++` 被实现为“前缀双自增”运算符。它使用了前面定义的复合加法运算符来让矩阵对自身进行相加,从而让 `Vector2D` 实例的 `x` 属性和 `y` 属性的值翻倍。实现 `+++` 运算符的方式如下: +上面的代码定义了一个新的名为 `+++` 的前缀运算符。对于这个运算符,在 Swift 中并没有已知的意义,因此在针对 `Vector2D` 实例的特定上下文中,给予了它自定义的意义。对这个示例来讲,`+++` 被实现为“前缀双自增”运算符。它使用了前面定义的复合加法运算符来让矩阵与自身进行相加,从而让 `Vector2D` 实例的 `x` 属性和 `y` 属性值翻倍。你可以像下面这样通过对 `Vector2D` 添加一个 `+++` 类方法,来实现 `+++` 运算符: ```swift extension Vector2D { @@ -457,9 +457,9 @@ let afterDoubling = +++toBeDoubled ### 自定义中缀运算符的优先级 -每个自定义中缀运算符都属于某个优先级组。这个优先级组指定了这个运算符和其他中缀运算符的优先级和结合性。[优先级和结合性](#precedence_and_associativity)中详细阐述了这两个特性是如何对中缀运算符的运算产生影响的。 +每个自定义中缀运算符都属于某个优先级组。优先级组指定了这个运算符相对于其他中缀运算符的优先级和结合性。[优先级和结合性](#precedence_and_associativity)中详细阐述了这两个特性是如何对中缀运算符的运算产生影响的。 -而没有明确放入优先级组的自定义中缀运算符会放到一个默认的优先级组内,其优先级高于三元运算符。 +而没有明确放入某个优先级组的自定义中缀运算符将会被放到一个默认的优先级组内,其优先级高于三元运算符。 以下例子定义了一个新的自定义中缀运算符 `+-`,此运算符属于 `AdditionPrecedence` 优先组: @@ -476,8 +476,8 @@ let plusMinusVector = firstVector +- secondVector // plusMinusVector 是一个 Vector2D 实例,并且它的值为 (4.0, -2.0) ``` -这个运算符把两个向量的 `x` 值相加,同时用第一个向量的 `y` 值减去第二个向量的 `y` 值。因为它本质上是属于“相加型”运算符,所以将它放置 `+` 和 `-` 等默认的中缀“相加型”运算符相同的优先级组中。关于 Swift 标准库提供的运算符,以及完整的运算符优先级组和结合性设置,请参考 [Swift Standard Library Operators Reference](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Reference/Swift_StandardLibrary_Operators/index.html#//apple_ref/doc/uid/TP40016054)。而更多关于优先级组以及自定义操作符和优先级组的语法,请参考[运算符声明](#operator_declaration) +这个运算符把两个向量的 `x` 值相加,同时从第一个向量的 `y` 中减去第二个向量的 `y` 。因为它本质上是属于“相加型”运算符,所以将它放置在 `+` 和 `-` 等默认中缀“相加型”运算符相同的优先级组中。关于 Swift 标准库提供的运算符,以及完整的运算符优先级组和结合性设置,请参考 [运算符声明](https://developer.apple.com/documentation/swift/swift_standard_library/operator_declarations)。而更多关于优先级组以及自定义操作符和优先级组的语法,请参考[运算符声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID380) > 注意 > -> 当定义前缀与后缀运算符的时候,我们并没有指定优先级。然而,如果对同一个值同时使用前缀与后缀运算符,则后缀运算符会先参与运算。 +> 当定义前缀与后缀运算符的时候,我们并没有指定优先级。然而,如果对同一个值同时使用前缀与后缀运算符,则后缀运算符会先参与运算。 \ No newline at end of file From ff3880f81c78d967f94bb91beabe6e719eecfc57 Mon Sep 17 00:00:00 2001 From: bqlin Date: Mon, 14 Jan 2019 09:47:03 +0800 Subject: [PATCH 011/107] =?UTF-8?q?17=5FError=5FHandling=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/chapter2/17_Error_Handling.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/chapter2/17_Error_Handling.md b/source/chapter2/17_Error_Handling.md index eac4ed4e..4efce71f 100755 --- a/source/chapter2/17_Error_Handling.md +++ b/source/chapter2/17_Error_Handling.md @@ -199,7 +199,7 @@ do { ### 将错误转换成可选值 -可以使用 `try?` 通过将错误转换成一个可选值来处理错误。如果在评估 `try?` 表达式时一个错误被抛出,那么表达式的值就是 `nil`。例如,在下面的代码中,`x` 和 `y` 有着相同的数值和等价的含义: +可以使用 `try?` 通过将错误转换成一个可选值来处理错误。如果是在计算 `try?` 表达式时抛出错误,该表达式的结果就为 `nil`。例如,在下面的代码中,`x` 和 `y` 有着相同的数值和等价的含义: ```swift func someThrowingFunction() throws -> Int { From 4081d8d286a46e701cbe28923dd668bc7b10fadc Mon Sep 17 00:00:00 2001 From: bqlin Date: Mon, 14 Jan 2019 09:47:37 +0800 Subject: [PATCH 012/107] =?UTF-8?q?18=5FType=5FCasting=20=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E5=A4=9A=E4=BD=99=E7=A9=BA=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/chapter2/18_Type_Casting.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/source/chapter2/18_Type_Casting.md b/source/chapter2/18_Type_Casting.md index 434e3a5a..6f4210d2 100644 --- a/source/chapter2/18_Type_Casting.md +++ b/source/chapter2/18_Type_Casting.md @@ -200,12 +200,9 @@ for thing in things { > 注意 > > `Any` 类型可以表示所有类型的值,包括可选类型。Swift 会在你用 `Any` 类型来表示一个可选值的时候,给你一个警告。如果你确实想使用 `Any` 类型来承载可选值,你可以使用 `as` 操作符显式转换为 `Any`,如下所示: -> -> ```swift let optionalNumber: Int? = 3 things.append(optionalNumber) // 警告 things.append(optionalNumber as Any) // 没有警告 ``` - From 52a95688adc32eac60d99ea584beeb08fef960ce Mon Sep 17 00:00:00 2001 From: BqLin Date: Mon, 14 Jan 2019 12:43:10 +0800 Subject: [PATCH 013/107] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=E4=B8=AD=E5=BC=95=E5=8F=B7=E7=9A=84=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=20(#854)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 修正代码注释中引号的使用 * 去除中文与引号之间的空格 --- source/chapter1/03_a_swift_tour.md | 2 +- source/chapter2/03_Strings_and_Characters.md | 22 ++++++------ source/chapter2/04_Collection_Types.md | 20 +++++------ source/chapter2/06_Functions.md | 26 +++++++------- source/chapter2/07_Closures.md | 20 +++++------ source/chapter2/08_Enumerations.md | 14 ++++---- source/chapter2/10_Properties.md | 14 ++++---- source/chapter2/11_Methods.md | 8 ++--- source/chapter2/12_Subscripts.md | 2 +- source/chapter2/13_Inheritance.md | 12 +++---- source/chapter2/14_Initialization.md | 34 +++++++++---------- source/chapter2/15_Deinitialization.md | 12 +++---- source/chapter2/16_Optional_Chaining.md | 25 +++++++------- source/chapter2/17_Error_Handling.md | 4 +-- source/chapter2/18_Type_Casting.md | 2 +- source/chapter2/19_Nested_Types.md | 2 +- source/chapter2/20_Extensions.md | 2 +- source/chapter2/21_Protocols.md | 22 ++++++------ source/chapter2/22_Generics.md | 14 ++++---- .../23_Automatic_Reference_Counting.md | 22 ++++++------ source/chapter2/24_Memory_Safety.md | 2 +- source/chapter2/25_Access_Control.md | 2 +- source/chapter2/26_Advanced_Operators.md | 2 +- source/chapter3/03_Types.md | 2 +- source/chapter3/04_Expressions.md | 14 ++++---- source/chapter3/05_Statements.md | 6 ++-- source/chapter3/06_Declarations.md | 6 ++-- source/chapter3/08_Patterns.md | 6 ++-- 28 files changed, 159 insertions(+), 160 deletions(-) diff --git a/source/chapter1/03_a_swift_tour.md b/source/chapter1/03_a_swift_tour.md index 544bca89..f4ad3366 100755 --- a/source/chapter1/03_a_swift_tour.md +++ b/source/chapter1/03_a_swift_tour.md @@ -1,6 +1,6 @@ # Swift 初见 -通常来说,编程语言教程中的第一个程序应该在屏幕上打印 “Hello, world”。在 Swift 中,可以用一行代码实现: +通常来说,编程语言教程中的第一个程序应该在屏幕上打印“Hello, world”。在 Swift 中,可以用一行代码实现: ```swift print("Hello, world!") diff --git a/source/chapter2/03_Strings_and_Characters.md b/source/chapter2/03_Strings_and_Characters.md index 47cc62d4..f5f1d946 100755 --- a/source/chapter2/03_Strings_and_Characters.md +++ b/source/chapter2/03_Strings_and_Characters.md @@ -124,7 +124,7 @@ var anotherEmptyString = String() // 初始化方法 if emptyString.isEmpty { print("Nothing to see here") } -// 打印输出:"Nothing to see here" +// 打印输出:“Nothing to see here” ``` @@ -185,7 +185,7 @@ let exclamationMark: Character = "!" let catCharacters: [Character] = ["C", "a", "t", "!", "🐱"] let catString = String(catCharacters) print(catString) -// 打印输出:"Cat!🐱" +// 打印输出:“Cat!🐱” ``` @@ -326,7 +326,7 @@ let regionalIndicatorForUS: Character = "\u{1F1FA}\u{1F1F8}" ```swift let unusualMenagerie = "Koala 🐨, Snail 🐌, Penguin 🐧, Dromedary 🐪" print("unusualMenagerie has \(unusualMenagerie.count) characters") -// 打印输出 "unusualMenagerie has 40 characters" +// 打印输出“unusualMenagerie has 40 characters” ``` 注意在 Swift 中,使用可拓展的字符群集作为 `Character` 值来连接或改变字符串时,并不一定会更改字符串的字符数量。 @@ -336,12 +336,12 @@ print("unusualMenagerie has \(unusualMenagerie.count) characters") ```swift var word = "cafe" print("the number of characters in \(word) is \(word.count)") -// 打印输出 "the number of characters in cafe is 4" +// 打印输出“the number of characters in cafe is 4” word += "\u{301}" // 拼接一个重音,U+0301 print("the number of characters in \(word) is \(word.count)") -// 打印输出 "the number of characters in café is 4" +// 打印输出“the number of characters in café is 4” ``` > 注意 @@ -394,7 +394,7 @@ greeting.index(after: endIndex) // error for index in greeting.indices { print("\(greeting[index]) ", terminator: "") } -// 打印输出 "G u t e n T a g ! " +// 打印输出“G u t e n T a g ! ” ``` > 注意 @@ -471,7 +471,7 @@ let sameQuotation = "We're a lot alike, you and I." if quotation == sameQuotation { print("These two strings are considered equal") } -// 打印输出 "These two strings are considered equal" +// 打印输出“These two strings are considered equal” ``` 如果两个字符串(或者两个字符)的可扩展的字形群集是标准相等,那就认为它们是相等的。只要可扩展的字形群集有同样的语言意义和外观则认为它们标准相等,即使它们是由不同的 Unicode 标量构成。 @@ -488,7 +488,7 @@ let combinedEAcuteQuestion = "Voulez-vous un caf\u{65}\u{301}?" if eAcuteQuestion == combinedEAcuteQuestion { print("These two strings are considered equal") } -// 打印输出 "These two strings are considered equal" +// 打印输出“These two strings are considered equal” ``` 相反,英语中的 `LATIN CAPITAL LETTER A`(`U+0041`,或者 `A`)不等于俄语中的 `CYRILLIC CAPITAL LETTER A`(`U+0410`,或者 `A`)。两个字符看着是一样的,但却有不同的语言意义: @@ -501,7 +501,7 @@ let cyrillicCapitalLetterA: Character = "\u{0410}" if latinCapitalLetterA != cyrillicCapitalLetterA { print("These two characters are not equivalent") } -// 打印 "These two characters are not equivalent" +// 打印“These two characters are not equivalent” ``` > 注意 @@ -541,7 +541,7 @@ for scene in romeoAndJuliet { } } print("There are \(act1SceneCount) scenes in Act 1") -// 打印输出 "There are 5 scenes in Act 1" +// 打印输出“There are 5 scenes in Act 1” ``` 相似地,你可以用 `hasSuffix(_:)` 方法来计算发生在不同地方的场景数: @@ -557,7 +557,7 @@ for scene in romeoAndJuliet { } } print("\(mansionCount) mansion scenes; \(cellCount) cell scenes") -// 打印输出 "6 mansion scenes; 2 cell scenes" +// 打印输出“6 mansion scenes; 2 cell scenes” ``` > 注意 diff --git a/source/chapter2/04_Collection_Types.md b/source/chapter2/04_Collection_Types.md index bc9d430a..ea685879 100755 --- a/source/chapter2/04_Collection_Types.md +++ b/source/chapter2/04_Collection_Types.md @@ -41,7 +41,7 @@ Swift 语言中的 `Arrays`、`Sets` 和 `Dictionaries` 中存储的数据值类 ```swift var someInts = [Int]() print("someInts is of type [Int] with \(someInts.count) items.") -// 打印 "someInts is of type [Int] with 0 items." +// 打印“someInts is of type [Int] with 0 items.” ``` 注意,通过构造函数的类型,`someInts` 的值类型被推断为 `[Int]`。 @@ -128,7 +128,7 @@ if shoppingList.isEmpty { } else { print("The shopping list is not empty.") } -// 打印 "The shopping list is not empty."(shoppinglist 不是空的) +// 打印“The shopping list is not empty.”(shoppinglist 不是空的) ``` 也可以使用 `append(_:)` 方法在数组后面添加新的数据项: @@ -288,7 +288,7 @@ Swift 中的 `Set` 类型被写为 `Set`,这里的 `Element` 表示 ` ```swift var letters = Set() print("letters is of type Set with \(letters.count) items.") -// 打印 "letters is of type Set with 0 items." +// 打印“letters is of type Set with 0 items.” ``` > 注意 @@ -339,7 +339,7 @@ var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"] ```swift print("I have \(favoriteGenres.count) favorite music genres.") -// 打印 "I have 3 favorite music genres." +// 打印“I have 3 favorite music genres.” ``` 使用布尔属性 `isEmpty` 作为一个缩写形式去检查 `count` 属性是否为 `0`: @@ -350,7 +350,7 @@ if favoriteGenres.isEmpty { } else { print("I have particular music preferences.") } -// 打印 "I have particular music preferences." +// 打印“I have particular music preferences.” ``` 你可以通过调用 `Set` 的 `insert(_:)` 方法来添加一个新元素: @@ -368,7 +368,7 @@ if let removedGenre = favoriteGenres.remove("Rock") { } else { print("I never much cared for that.") } -// 打印 "Rock? I'm over it." +// 打印“Rock? I'm over it.” ``` 使用 `contains(_:)` 方法去检查 `Set` 中是否包含一个特定的值: @@ -379,7 +379,7 @@ if favoriteGenres.contains("Funk") { } else { print("It's too funky in here.") } -// 打印 "It's too funky in here." +// 打印“It's too funky in here.” ``` @@ -555,7 +555,7 @@ var airports = ["YYZ": "Toronto Pearson", "DUB": "Dublin"] ```swift print("The dictionary of airports contains \(airports.count) items.") -// 打印 "The dictionary of airports contains 2 items."(这个字典有两个数据项) +// 打印“The dictionary of airports contains 2 items.”(这个字典有两个数据项) ``` 使用布尔属性 `isEmpty` 作为一个缩写形式去检查 `count` 属性是否为 `0`: @@ -566,7 +566,7 @@ if airports.isEmpty { } else { print("The airports dictionary is not empty.") } -// 打印 "The airports dictionary is not empty." +// 打印“The airports dictionary is not empty.” ``` 我们也可以在字典中使用下标语法来添加新的数据项。可以使用一个恰当类型的键作为下标索引,并且分配恰当类型的新值: @@ -604,7 +604,7 @@ if let airportName = airports["DUB"] { } else { print("That airport is not in the airports dictionary.") } -// 打印 "The name of the airport is Dublin Airport." +// 打印“The name of the airport is Dublin Airport.” ``` 我们还可以使用下标语法来通过给某个键的对应值赋值为 `nil` 来从字典里移除一个键值对: diff --git a/source/chapter2/06_Functions.md b/source/chapter2/06_Functions.md index 115558e5..7e249b73 100755 --- a/source/chapter2/06_Functions.md +++ b/source/chapter2/06_Functions.md @@ -28,9 +28,9 @@ func greet(person: String) -> String { ```swift print(greet(person: "Anna")) -// 打印 "Hello, Anna!" +// 打印“Hello, Anna!” print(greet(person: "Brian")) -// 打印 "Hello, Brian!" +// 打印“Hello, Brian!” ``` 调用 `greet(person:)` 函数时,在圆括号中传给它一个 `String` 类型的实参,例如 `greet(person: "Anna")`。正如上面所示,因为这个函数返回一个 `String` 类型的值,所以 `greet` 可以被包含在 `print(_:separator:terminator:)` 的调用中,用来输出这个函数的返回值。 @@ -50,7 +50,7 @@ func greetAgain(person: String) -> String { return "Hello again, " + person + "!" } print(greetAgain(person: "Anna")) -// 打印 "Hello again, Anna!" +// 打印“Hello again, Anna!” ``` @@ -68,7 +68,7 @@ func sayHelloWorld() -> String { return "hello, world" } print(sayHelloWorld()) -// 打印 "hello, world" +// 打印“hello, world” ``` 尽管这个函数没有参数,但是定义中在函数名后还是需要一对圆括号。当被调用时,也需要在函数名后写一对圆括号。 @@ -89,7 +89,7 @@ func greet(person: String, alreadyGreeted: Bool) -> String { } } print(greet(person: "Tim", alreadyGreeted: true)) -// 打印 "Hello again, Tim!" +// 打印“Hello again, Tim!” ``` 你可以通过在括号内使用逗号分隔来传递一个 `String` 参数值和一个标识为 `alreadyGreeted` 的 `Bool` 值,来调用 `greet(person:alreadyGreeted:)` 函数。注意这个函数和上面 `greet(person:)` 是不同的。虽然它们都有着同样的名字 `greet`,但是 `greet(person:alreadyGreeted:)` 函数需要两个参数,而 `greet(person:)` 只需要一个参数。 @@ -104,7 +104,7 @@ func greet(person: String) { print("Hello, \(person)!") } greet(person: "Dave") -// 打印 "Hello, Dave!" +// 打印“Hello, Dave!” ``` 因为这个函数不需要返回值,所以这个函数的定义中没有返回箭头(->)和返回类型。 @@ -124,9 +124,9 @@ func printWithoutCounting(string: String) { let _ = printAndCount(string: string) } printAndCount(string: "hello, world") -// 打印 "hello, world" 并且返回值 12 +// 打印“hello, world”,并且返回值 12 printWithoutCounting(string: "hello, world") -// 打印 "hello, world" 但是没有返回任何值 +// 打印“hello, world”,但是没有返回任何值 ``` 第一个函数 `printAndCount(string:)`,输出一个字符串并返回 `Int` 类型的字符数。第二个函数 `printWithoutCounting(string:)` 调用了第一个函数,但是忽略了它的返回值。当第二个函数被调用时,消息依然会由第一个函数输出,但是返回值不会被用到。 @@ -166,7 +166,7 @@ func minMax(array: [Int]) -> (min: Int, max: Int) { ```swift let bounds = minMax(array: [8, -6, 2, 109, 3, 71]) print("min is \(bounds.min) and max is \(bounds.max)") -// 打印 "min is -6 and max is 109" +// 打印“min is -6 and max is 109” ``` 需要注意的是,元组的成员不需要在元组从函数中返回时命名,因为它们的名字已经在函数返回类型中指定了。 @@ -206,7 +206,7 @@ func minMax(array: [Int]) -> (min: Int, max: Int)? { if let bounds = minMax(array: [8, -6, 2, 109, 3, 71]) { print("min is \(bounds.min) and max is \(bounds.max)") } -// 打印 "min is -6 and max is 109" +// 打印“min is -6 and max is 109” ``` @@ -241,7 +241,7 @@ func greet(person: String, from hometown: String) -> String { return "Hello \(person)! Glad you could visit from \(hometown)." } print(greet(person: "Bill", from: "Cupertino")) -// 打印 "Hello Bill! Glad you could visit from Cupertino." +// 打印“Hello Bill! Glad you could visit from Cupertino.” ``` 参数标签的使用能够让一个函数在调用时更有表达力,更类似自然语言,并且仍保持了函数内部的可读性以及清晰的意图。 @@ -334,7 +334,7 @@ var someInt = 3 var anotherInt = 107 swapTwoInts(&someInt, &anotherInt) print("someInt is now \(someInt), and anotherInt is now \(anotherInt)") -// 打印 "someInt is now 107, and anotherInt is now 3" +// 打印“someInt is now 107, and anotherInt is now 3” ``` 从上面这个例子中,我们可以看到 `someInt` 和 `anotherInt` 的原始值在 `swapTwoInts(_:_:)` 函数中被修改,尽管它们的定义在函数体外。 @@ -424,7 +424,7 @@ func printMathResult(_ mathFunction: (Int, Int) -> Int, _ a: Int, _ b: Int) { print("Result: \(mathFunction(a, b))") } printMathResult(addTwoInts, 3, 5) -// 打印 "Result: 8" +// 打印“Result: 8” ``` 这个例子定义了 `printMathResult(_:_:_:)` 函数,它有三个参数:第一个参数叫 `mathFunction`,类型是 `(Int, Int) -> Int`,你可以传入任何这种类型的函数;第二个和第三个参数叫 `a` 和 `b`,它们的类型都是 `Int`,这两个值作为已给出的函数的输入值。 diff --git a/source/chapter2/07_Closures.md b/source/chapter2/07_Closures.md index 3c391600..92026e1b 100755 --- a/source/chapter2/07_Closures.md +++ b/source/chapter2/07_Closures.md @@ -351,11 +351,11 @@ class SomeClass { let instance = SomeClass() instance.doSomething() print(instance.x) -// 打印出 "200" +// 打印出“200” completionHandlers.first?() print(instance.x) -// 打印出 "100" +// 打印出“100” ``` @@ -370,16 +370,16 @@ print(instance.x) ```swift var customersInLine = ["Chris", "Alex", "Ewa", "Barry", "Daniella"] print(customersInLine.count) -// 打印出 "5" +// 打印出“5” let customerProvider = { customersInLine.remove(at: 0) } print(customersInLine.count) -// 打印出 "5" +// 打印出“5” print("Now serving \(customerProvider())!") // Prints "Now serving Chris!" print(customersInLine.count) -// 打印出 "4" +// 打印出“4” ``` 尽管在闭包的代码中,`customersInLine` 的第一个元素被移除了,不过在闭包被调用之前,这个元素是不会被移除的。如果这个闭包永远不被调用,那么在闭包里面的表达式将永远不会执行,那意味着列表中的元素永远不会被移除。请注意,`customerProvider` 的类型不是 `String`,而是 `() -> String`,一个没有参数且返回值为 `String` 的函数。 @@ -392,7 +392,7 @@ func serve(customer customerProvider: () -> String) { print("Now serving \(customerProvider())!") } serve(customer: { customersInLine.remove(at: 0) } ) -// 打印出 "Now serving Alex!" +// 打印出“Now serving Alex!” ``` 上面的 `serve(customer:)` 函数接受一个返回顾客名字的显式的闭包。下面这个版本的 `serve(customer:)` 完成了相同的操作,不过它并没有接受一个显式的闭包,而是通过将参数标记为 `@autoclosure` 来接收一个自动闭包。现在你可以将该函数当作接受 `String` 类型参数(而非闭包)的函数来调用。`customerProvider` 参数将自动转化为一个闭包,因为该参数被标记了 `@autoclosure` 特性。 @@ -403,7 +403,7 @@ func serve(customer customerProvider: @autoclosure () -> String) { print("Now serving \(customerProvider())!") } serve(customer: customersInLine.remove(at: 0)) -// 打印 "Now serving Ewa!" +// 打印“Now serving Ewa!” ``` > 注意 @@ -422,12 +422,12 @@ collectCustomerProviders(customersInLine.remove(at: 0)) collectCustomerProviders(customersInLine.remove(at: 0)) print("Collected \(customerProviders.count) closures.") -// 打印 "Collected 2 closures." +// 打印“Collected 2 closures.” for customerProvider in customerProviders { print("Now serving \(customerProvider())!") } -// 打印 "Now serving Barry!" -// 打印 "Now serving Daniella!" +// 打印“Now serving Barry!” +// 打印“Now serving Daniella!” ``` 在上面的代码中,`collectCustomerProviders(_:)` 函数并没有调用传入的 `customerProvider` 闭包,而是将闭包追加到了 `customerProviders` 数组中。这个数组定义在函数作用域范围外,这意味着数组内的闭包能够在函数返回之后被调用。因此,`customerProvider` 参数必须允许“逃逸”出函数作用域。 diff --git a/source/chapter2/08_Enumerations.md b/source/chapter2/08_Enumerations.md index e7b10810..46887b43 100755 --- a/source/chapter2/08_Enumerations.md +++ b/source/chapter2/08_Enumerations.md @@ -77,7 +77,7 @@ case .east: case .west: print("Where the skies are blue") } -// 打印 "Watch out for penguins” +// 打印“Watch out for penguins” ``` 你可以这样理解这段代码: @@ -98,7 +98,7 @@ case .earth: default: print("Not a safe place for humans") } -// 打印 "Mostly harmless” +// 打印“Mostly harmless” ``` @@ -114,7 +114,7 @@ enum Beverage: CaseIterable { } let numberOfChoices = Beverage.allCases.count print("\(numberOfChoices) beverages available") -// 打印 "3 beverages available" +// 打印“3 beverages available” ``` 在前面的例子中,通过 `Beverage.allCases` 可以访问到包含 `Beverage` 枚举所有成员的集合。`allCases` 的使用方法和其它一般集合一样——集合中的元素是枚举类型的实例,所以在上面的情况中,这些元素是 `Beverage` 值。在前面的例子中,统计了总共有多少个枚举成员。而在下面的例子中,则使用 `for` 循环来遍历所有枚举成员。 @@ -187,7 +187,7 @@ case .upc(let numberSystem, let manufacturer, let product, let check): case .qrCode(let productCode): print("QR code: \(productCode).") } -// 打印 "QR code: ABCDEFGHIJKLMNOP." +// 打印“QR code: ABCDEFGHIJKLMNOP.” ``` 如果一个枚举成员的所有关联值都被提取为常量,或者都被提取为变量,为了简洁,你可以只在成员名称前标注一个 `let` 或者 `var`: @@ -199,7 +199,7 @@ case let .upc(numberSystem, manufacturer, product, check): case let .qrCode(productCode): print("QR code: \(productCode).") } -// 打印 "QR code: ABCDEFGHIJKLMNOP." +// 打印“QR code: ABCDEFGHIJKLMNOP.” ``` @@ -296,7 +296,7 @@ if let somePlanet = Planet(rawValue: positionToFind) { } else { print("There isn't a planet at position \(positionToFind)") } -// 打印 "There isn't a planet at position 11" +// 打印“There isn't a planet at position 11” ``` 这个例子使用了可选绑定(optional binding),试图通过原始值 `11` 来访问一个行星。`if let somePlanet = Planet(rawValue: 11)` 语句创建了一个可选 `Planet`,如果可选 `Planet` 的值存在,就会赋值给 `somePlanet`。在这个例子中,无法检索到位置为 `11` 的行星,所以 `else` 分支被执行。 @@ -350,7 +350,7 @@ func evaluate(_ expression: ArithmeticExpression) -> Int { } print(evaluate(product)) -// 打印 "18" +// 打印“18” ``` 该函数如果遇到纯数字,就直接返回该数字的值。如果遇到的是加法或乘法运算,则分别计算左边表达式和右边表达式的值,然后相加或相乘。 diff --git a/source/chapter2/10_Properties.md b/source/chapter2/10_Properties.md index 2de5aee1..18a5bc85 100755 --- a/source/chapter2/10_Properties.md +++ b/source/chapter2/10_Properties.md @@ -138,7 +138,7 @@ var square = Rect(origin: Point(x: 0.0, y: 0.0), let initialSquareCenter = square.center square.center = Point(x: 15.0, y: 15.0) print("square.origin is now at (\(square.origin.x), \(square.origin.y))") -// 打印 "square.origin is now at (10.0, 10.0)” +// 打印“square.origin is now at (10.0, 10.0)” ``` 这个例子定义了 3 个结构体来描述几何形状: @@ -200,7 +200,7 @@ struct Cuboid { } let fourByFiveByTwo = Cuboid(width: 4.0, height: 5.0, depth: 2.0) print("the volume of fourByFiveByTwo is \(fourByFiveByTwo.volume)") -// 打印 "the volume of fourByFiveByTwo is 40.0" +// 打印“the volume of fourByFiveByTwo is 40.0” ``` 这个例子定义了一个名为 `Cuboid` 的结构体,表示三维空间的立方体,包含 `width`、`height` 和 `depth` 属性。结构体还有一个名为 `volume` 的只读计算属性用来返回立方体的体积。为 `volume` 提供 setter 毫无意义,因为无法确定如何修改 `width`、`height` 和 `depth` 三者的值来匹配新的 `volume`。然而,`Cuboid` 提供一个只读计算属性来让外部用户直接获取体积是很有用的。 @@ -264,7 +264,7 @@ stepCounter.totalSteps = 896 > 注意 > -> 如果将属性通过 in-out 方式传入函数,`willSet` 和 `didSet` 也会调用。这是因为 in-out 参数采用了拷入拷出模式:即在函数内部使用的是参数的 copy,函数结束后,又对参数重新赋值。关于 in-out 参数详细的介绍,请参考[输入输出参数](../chapter3/05_Declarations.html#in-out_parameters) +> 如果将属性通过 in-out 方式传入函数,`willSet` 和 `didSet` 也会调用。这是因为 in-out 参数采用了拷入拷出模式:即在函数内部使用的是参数的 copy,函数结束后,又对参数重新赋值。关于 in-out 参数详细的介绍,请参考[输入输出参数](../chapter3/05_Declarations.html#in-out_parameters)。 ## 全局变量和局部变量 @@ -340,14 +340,14 @@ class SomeClass { ```swift print(SomeStructure.storedTypeProperty) -// 打印 "Some value." +// 打印“Some value.” SomeStructure.storedTypeProperty = "Another value." print(SomeStructure.storedTypeProperty) -// 打印 "Another value.” +// 打印“Another value.” print(SomeEnumeration.computedTypeProperty) -// 打印 "6" +// 打印“6” print(SomeClass.computedTypeProperty) -// 打印 "27" +// 打印“27” ``` 下面的例子定义了一个结构体,使用两个存储型类型属性来表示两个声道的音量,每个声道具有 `0` 到 `10` 之间的整数音量。 diff --git a/source/chapter2/11_Methods.md b/source/chapter2/11_Methods.md index 9dfca1ef..c39669e6 100755 --- a/source/chapter2/11_Methods.md +++ b/source/chapter2/11_Methods.md @@ -80,7 +80,7 @@ let somePoint = Point(x: 4.0, y: 5.0) if somePoint.isToTheRightOfX(1.0) { print("This point is to the right of the line where x == 1.0") } -// 打印 "This point is to the right of the line where x == 1.0" +// 打印“This point is to the right of the line where x == 1.0” ``` 如果不使用 `self` 前缀,Swift 就认为两次使用的 `x` 都指的是名称为 `x` 的函数参数。 @@ -105,7 +105,7 @@ struct Point { var somePoint = Point(x: 1.0, y: 1.0) somePoint.moveByX(2.0, y: 3.0) print("The point is now at (\(somePoint.x), \(somePoint.y))") -// 打印 "The point is now at (3.0, 4.0)" +// 打印“The point is now at (3.0, 4.0)” ``` 上面的 `Point` 结构体定义了一个可变方法 `moveByX(_:y:)` 来移动 `Point` 实例到给定的位置。该方法被调用时修改了这个点,而不是返回一个新的点。方法定义时加上了 `mutating` 关键字,从而允许修改属性。 @@ -244,7 +244,7 @@ class Player { var player = Player(name: "Argyrios") player.complete(level: 1) print("highest unlocked level is now \(LevelTracker.highestUnlockedLevel)") -// 打印 "highest unlocked level is now 2" +// 打印“highest unlocked level is now 2” ``` 如果你创建了第二个玩家,并尝试让他开始一个没有被任何玩家解锁的等级,那么试图设置玩家当前等级将会失败: @@ -256,5 +256,5 @@ if player.tracker.advance(to: 6) { } else { print("level 6 has not yet been unlocked") } -// 打印 "level 6 has not yet been unlocked" +// 打印“level 6 has not yet been unlocked” ``` diff --git a/source/chapter2/12_Subscripts.md b/source/chapter2/12_Subscripts.md index 8ba418b7..fc181156 100755 --- a/source/chapter2/12_Subscripts.md +++ b/source/chapter2/12_Subscripts.md @@ -41,7 +41,7 @@ struct TimesTable { } let threeTimesTable = TimesTable(multiplier: 3) print("six times three is \(threeTimesTable[6])") -// 打印 "six times three is 18" +// 打印“six times three is 18” ``` 在上例中,创建了一个 `TimesTable` 实例,用来表示整数 `3` 的乘法表。数值 `3` 被传递给结构体的构造函数,作为实例成员 `multiplier` 的值。 diff --git a/source/chapter2/13_Inheritance.md b/source/chapter2/13_Inheritance.md index 73184e7e..deac0fd8 100755 --- a/source/chapter2/13_Inheritance.md +++ b/source/chapter2/13_Inheritance.md @@ -41,7 +41,7 @@ let someVehicle = Vehicle() ```swift print("Vehicle: \(someVehicle.description)") -// 打印 "Vehicle: traveling at 0.0 miles per hour" +// 打印“Vehicle: traveling at 0.0 miles per hour” ``` `Vehicle` 类定义了一个具有通用特性的车辆类,但实际上对于它本身来说没什么用处。为了让它变得更加有用,还需要进一步完善它,从而能够描述一个具体类型的车辆。 @@ -83,7 +83,7 @@ bicycle.hasBasket = true ```swift bicycle.currentSpeed = 15.0 print("Bicycle: \(bicycle.description)") -// 打印 "Bicycle: traveling at 15.0 miles per hour" +// 打印“Bicycle: traveling at 15.0 miles per hour” ``` 子类还可以继续被其它类继承,下面的示例为 `Bicycle` 创建了一个名为 `Tandem`(双人自行车)的子类: @@ -104,7 +104,7 @@ tandem.hasBasket = true tandem.currentNumberOfPassengers = 2 tandem.currentSpeed = 22.0 print("Tandem: \(tandem.description)") -// 打印:"Tandem: traveling at 22.0 miles per hour" +// 打印:“Tandem: traveling at 22.0 miles per hour” ``` @@ -145,7 +145,7 @@ class Train: Vehicle { ```swift let train = Train() train.makeNoise() -// 打印 "Choo Choo" +// 打印“Choo Choo” ``` ### 重写属性 @@ -182,7 +182,7 @@ let car = Car() car.currentSpeed = 25.0 car.gear = 3 print("Car: \(car.description)") -// 打印 "Car: traveling at 25.0 miles per hour in gear 3" +// 打印“Car: traveling at 25.0 miles per hour in gear 3” ``` @@ -213,7 +213,7 @@ class AutomaticCar: Car { let automatic = AutomaticCar() automatic.currentSpeed = 35.0 print("AutomaticCar: \(automatic.description)") -// 打印 "AutomaticCar: traveling at 35.0 miles per hour in gear 4" +// 打印“AutomaticCar: traveling at 35.0 miles per hour in gear 4” ``` diff --git a/source/chapter2/14_Initialization.md b/source/chapter2/14_Initialization.md index 7088fb02..1c45deec 100755 --- a/source/chapter2/14_Initialization.md +++ b/source/chapter2/14_Initialization.md @@ -40,7 +40,7 @@ struct Fahrenheit { } var f = Fahrenheit() print("The default temperature is \(f.temperature)° Fahrenheit") -// 打印 "The default temperature is 32.0° Fahrenheit" +// 打印“The default temperature is 32.0° Fahrenheit” ``` 这个结构体定义了一个不带形参的构造器 `init`,并在里面将存储型属性 `temperature` 的值初始化为 `32.0`(华氏温度下水的冰点)。 @@ -184,7 +184,7 @@ class SurveyQuestion { let cheeseQuestion = SurveyQuestion(text: "Do you like cheese?") cheeseQuestion.ask() -// 打印 "Do you like cheese?" +// 打印“Do you like cheese?” cheeseQuestion.response = "Yes, I do like cheese." ``` @@ -214,7 +214,7 @@ class SurveyQuestion { } let beetsQuestion = SurveyQuestion(text: "How about beets?") beetsQuestion.ask() -// 打印 "How about beets?" +// 打印“How about beets?” beetsQuestion.response = "I also like beets. (But not with cheese.)" ``` @@ -540,7 +540,7 @@ class Bicycle: Vehicle { ```swift let bicycle = Bicycle() print("Bicycle: \(bicycle.description)") -// 打印 "Bicycle: 2 wheel(s)" +// 打印“Bicycle: 2 wheel(s)” ``` 如果父类的构造器没有在阶段 2 过程中做自定义操作,并且父类有一个无参数的自定义构造器。你可以在所有父类的存储属性赋值之后省略 `super.init()` 的调用。 @@ -742,7 +742,7 @@ let pi = 3.14159 if let valueMaintained = Int(exactly: wholeNumber) { print("\(wholeNumber) conversion to Int maintains value of \(valueMaintained)") } -// 打印 "12345.0 conversion to Int maintains value of 12345" +// 打印“12345.0 conversion to Int maintains value of 12345” let valueChanged = Int(exactly: pi) // valueChanged 是 Int? 类型,不是 Int 类型 @@ -750,7 +750,7 @@ let valueChanged = Int(exactly: pi) if valueChanged == nil { print("\(pi) conversion to Int does not maintain value") } -// 打印 "3.14159 conversion to Int does not maintain value" +// 打印“3.14159 conversion to Int does not maintain value” ``` 下例中,定义了一个名为 `Animal` 的结构体,其中有一个名为 `species` 的 `String` 类型的常量属性。同时该结构体还定义了一个接受一个名为 `species` 的 `String` 类型形参的可失败构造器。这个可失败构造器检查传入的`species` 值是否为一个空字符串。如果为空字符串,则构造失败。否则,`species` 属性被赋值,构造成功。 @@ -776,7 +776,7 @@ let someCreature = Animal(species: "Giraffe") if let giraffe = someCreature { print("An animal was initialized with a species of \(giraffe.species)") } -// 打印 "An animal was initialized with a species of Giraffe" +// 打印“An animal was initialized with a species of Giraffe” ``` 如果你给该可失败构造器传入一个空字符串到形参 `species`,则会导致构造失败: @@ -788,7 +788,7 @@ let anonymousCreature = Animal(species: "") if anonymousCreature == nil { print("The anonymous creature could not be initialized") } -// 打印 "The anonymous creature could not be initialized" +// 打印“The anonymous creature could not be initialized” ``` > 注意 @@ -827,13 +827,13 @@ let fahrenheitUnit = TemperatureUnit(symbol: "F") if fahrenheitUnit != nil { print("This is a defined temperature unit, so initialization succeeded.") } -// 打印 "This is a defined temperature unit, so initialization succeeded." +// 打印“This is a defined temperature unit, so initialization succeeded.” let unknownUnit = TemperatureUnit(symbol: "X") if unknownUnit == nil { print("This is not a defined temperature unit, so initialization failed.") } -// 打印 "This is not a defined temperature unit, so initialization failed." +// 打印“This is not a defined temperature unit, so initialization failed.” ``` @@ -852,13 +852,13 @@ let fahrenheitUnit = TemperatureUnit(rawValue: "F") if fahrenheitUnit != nil { print("This is a defined temperature unit, so initialization succeeded.") } -// 打印 "This is a defined temperature unit, so initialization succeeded." +// 打印“This is a defined temperature unit, so initialization succeeded.” let unknownUnit = TemperatureUnit(rawValue: "X") if unknownUnit == nil { print("This is not a defined temperature unit, so initialization failed.") } -// 打印 "This is not a defined temperature unit, so initialization failed." +// 打印“This is not a defined temperature unit, so initialization failed.” ``` @@ -901,7 +901,7 @@ class CartItem: Product { if let twoSocks = CartItem(name: "sock", quantity: 2) { print("Item: \(twoSocks.name), quantity: \(twoSocks.quantity)") } -// 打印 "Item: sock, quantity: 2" +// 打印“Item: sock, quantity: 2” ``` 倘若你以一个值为 0 的 `quantity` 来创建一个 `CartItem` 实例,那么将导致 `CartItem` 构造器失败: @@ -912,7 +912,7 @@ if let zeroShirts = CartItem(name: "shirt", quantity: 0) { } else { print("Unable to initialize zero shirts") } -// 打印 "Unable to initialize zero shirts" +// 打印“Unable to initialize zero shirts” ``` 同样地,如果你尝试传入一个值为空字符串的 `name` 来创建一个 `CartItem` 实例,那么将导致父类 `Product` 的构造过程失败: @@ -923,7 +923,7 @@ if let oneUnnamed = CartItem(name: "", quantity: 1) { } else { print("Unable to initialize one unnamed product") } -// 打印 "Unable to initialize one unnamed product" +// 打印“Unable to initialize one unnamed product” ``` @@ -1077,7 +1077,7 @@ struct Chessboard { ```swift let board = Chessboard() print(board.squareIsBlackAt(row: 0, column: 1)) -// 打印 "true" +// 打印“true” print(board.squareIsBlackAt(row: 7, column: 7)) -// 打印 "false” +// 打印“false” ``` diff --git a/source/chapter2/15_Deinitialization.md b/source/chapter2/15_Deinitialization.md index 112e6dd6..d54ea0a4 100755 --- a/source/chapter2/15_Deinitialization.md +++ b/source/chapter2/15_Deinitialization.md @@ -68,9 +68,9 @@ class Player { ```swift var playerOne: Player? = Player(coins: 100) print("A new player has joined the game with \(playerOne!.coinsInPurse) coins") -// 打印 "A new player has joined the game with 100 coins" +// 打印“A new player has joined the game with 100 coins” print("There are now \(Bank.coinsInBank) coins left in the bank") -// 打印 "There are now 9900 coins left in the bank" +// 打印“There are now 9900 coins left in the bank” ``` 创建一个 `Player` 实例的时候,会向 `Bank` 对象申请得到 100 个硬币,前提是有足够的硬币可用。这个 `Player` 实例存储在一个名为 `playerOne` 的可选类型的变量中。这里使用了一个可选类型的变量,是因为玩家可以随时离开游戏,设置为可选使你可以追踪玩家当前是否在游戏中。 @@ -80,9 +80,9 @@ print("There are now \(Bank.coinsInBank) coins left in the bank") ```swift playerOne!.win(coins: 2_000) print("PlayerOne won 2000 coins & now has \(playerOne!.coinsInPurse) coins") -// 打印 "PlayerOne won 2000 coins & now has 2100 coins" +// 打印“PlayerOne won 2000 coins & now has 2100 coins” print("The bank now only has \(Bank.coinsInBank) coins left") -// 打印 "The bank now only has 7900 coins left" +// 打印“The bank now only has 7900 coins left” ``` 在这里,玩家已经赢得了 2,000 枚硬币,所以玩家的钱包中现在有 2,100 枚硬币,而 `Bank` 对象只剩余 7,900 枚硬币。 @@ -90,9 +90,9 @@ print("The bank now only has \(Bank.coinsInBank) coins left") ```swift playerOne = nil print("PlayerOne has left the game") -// 打印 "PlayerOne has left the game" +// 打印“PlayerOne has left the game” print("The bank now has \(Bank.coinsInBank) coins") -// 打印 "The bank now has 10000 coins" +// 打印“The bank now has 10000 coins” ``` 玩家现在已经离开了游戏。这通过将可选类型的 `playerOne` 变量设置为 `nil` 来表示,意味着“没有 `Player` 实例”。当这一切发生时,`playerOne` 变量对 `Player` 实例的引用被破坏了。没有其它属性或者变量引用 `Player` 实例,因此该实例会被释放,以便回收内存。在这之前,该实例的析构器被自动调用,玩家的硬币被返还给银行。 diff --git a/source/chapter2/16_Optional_Chaining.md b/source/chapter2/16_Optional_Chaining.md index 33535a1d..bf8c3ac3 100755 --- a/source/chapter2/16_Optional_Chaining.md +++ b/source/chapter2/16_Optional_Chaining.md @@ -54,7 +54,7 @@ if let roomCount = john.residence?.numberOfRooms { } else { print("Unable to retrieve the number of rooms.") } -// 打印 “Unable to retrieve the number of rooms.” +// 打印“Unable to retrieve the number of rooms.” ``` 在 `residence` 后面添加问号之后,Swift 就会在 `residence` 不为 `nil` 的情况下访问 `numberOfRooms`。 @@ -77,7 +77,7 @@ if let roomCount = john.residence?.numberOfRooms { } else { print("Unable to retrieve the number of rooms.") } -// 打印 “John's residence has 1 room(s).” +// 打印“John's residence has 1 room(s).” ``` @@ -170,7 +170,7 @@ if let roomCount = john.residence?.numberOfRooms { } else { print("Unable to retrieve the number of rooms.") } -// 打印 “Unable to retrieve the number of rooms.” +// 打印“Unable to retrieve the number of rooms.” ``` 因为 `john.residence` 为 `nil`,所以这个可选链式调用依旧会像先前一样失败。 @@ -186,7 +186,7 @@ john.residence?.address = someAddress 在这个例子中,通过 `john.residence` 来设定 `address` 属性也会失败,因为 `john.residence` 当前为 `nil`。 -上面代码中的赋值过程是可选链式调用的一部分,这意味着可选链式调用失败时,等号右侧的代码不会被执行。对于上面的代码来说,很难验证这一点,因为像这样赋值一个常量没有任何副作用。下面的代码完成了同样的事情,但是它使用一个函数来创建 `Address` 实例,然后将该实例返回用于赋值。该函数会在返回前打印 “Function was called”,这使你能验证等号右侧的代码是否被执行。 +上面代码中的赋值过程是可选链式调用的一部分,这意味着可选链式调用失败时,等号右侧的代码不会被执行。对于上面的代码来说,很难验证这一点,因为像这样赋值一个常量没有任何副作用。下面的代码完成了同样的事情,但是它使用一个函数来创建 `Address` 实例,然后将该实例返回用于赋值。该函数会在返回前打印“Function was called”,这使你能验证等号右侧的代码是否被执行。 ```swift func createAddress() -> Address { @@ -226,7 +226,7 @@ if john.residence?.printNumberOfRooms() != nil { } else { print("It was not possible to print the number of rooms.") } -// 打印 “It was not possible to print the number of rooms.” +// 打印“It was not possible to print the number of rooms.” ``` 同样的,可以据此判断通过可选链式调用为属性赋值是否成功。在上面的[通过可选链式调用访问属性](#accessing_properties_through_optional_chaining)的例子中,我们尝试给 `john.residence` 中的 `address` 属性赋值,即使 `residence` 为 `nil`。通过可选链式调用给属性赋值会返回 `Void?`,通过判断返回值是否为 `nil` 就可以知道赋值是否成功: @@ -237,7 +237,7 @@ if (john.residence?.address = someAddress) != nil { } else { print("It was not possible to set the address.") } -// 打印 “It was not possible to set the address.” +// 打印“It was not possible to set the address.” ``` @@ -257,7 +257,7 @@ if let firstRoomName = john.residence?[0].name { } else { print("Unable to retrieve the first room name.") } -// 打印 “Unable to retrieve the first room name.” +// 打印“Unable to retrieve the first room name.” ``` 在这个例子中,问号直接放在 `john.residence` 的后面,并且在方括号的前面,因为 `john.residence` 是可选值。 @@ -283,7 +283,7 @@ if let firstRoomName = john.residence?[0].name { } else { print("Unable to retrieve the first room name.") } -// 打印 “The first room name is Living Room.” +// 打印“The first room name is Living Room.” ``` @@ -324,7 +324,7 @@ if let johnsStreet = john.residence?.address?.street { } else { print("Unable to retrieve the address.") } -// 打印 “Unable to retrieve the address.” +// 打印“Unable to retrieve the address.” ``` `john.residence` 现在包含一个有效的 `Residence` 实例。然而,`john.residence.address` 的值当前为 `nil`。因此,调用 `john.residence?.address?.street` 会失败。 @@ -344,7 +344,7 @@ if let johnsStreet = john.residence?.address?.street { } else { print("Unable to retrieve the address.") } -// 打印 “John's street name is Laurel Street.” +// 打印“John's street name is Laurel Street.” ``` 在上面的例子中,因为 `john.residence` 包含一个有效的 `Address` 实例,所以对 `john.residence` 的 `address` 属性赋值将会成功。 @@ -360,14 +360,13 @@ if let johnsStreet = john.residence?.address?.street { if let buildingIdentifier = john.residence?.address?.buildingIdentifier() { print("John's building identifier is \(buildingIdentifier).") } -// 打印 “John's building identifier is The Larches.” +// 打印“John's building identifier is The Larches.” ``` 如果要在该方法的返回值上进行可选链式调用,在方法的圆括号后面加上问号即可: ```swift if let beginsWithThe = - john.residence?.address?.buildingIdentifier()?.hasPrefix("The") { if beginsWithThe { print("John's building identifier begins with \"The\".") @@ -375,7 +374,7 @@ if let beginsWithThe = print("John's building identifier does not begin with \"The\".") } } -// 打印 “John's building identifier begins with "The".” +// 打印“John's building identifier begins with "The".” ``` > 注意 diff --git a/source/chapter2/17_Error_Handling.md b/source/chapter2/17_Error_Handling.md index 4efce71f..00ba3f36 100755 --- a/source/chapter2/17_Error_Handling.md +++ b/source/chapter2/17_Error_Handling.md @@ -169,7 +169,7 @@ do { } catch { print("Unexpected error: \(error).") } -// 打印 “Insufficient funds. Please insert an additional 2 coins.” +// 打印“Insufficient funds. Please insert an additional 2 coins.” ``` 上面的例子中,`buyFavoriteSnack(person:vendingMachine:)` 函数在一个 `try` 表达式中被调用,是因为它能抛出错误。如果错误被抛出,相应的执行会马上转移到 `catch` 子句中,并判断这个错误是否要被继续传递下去。如果错误没有被匹配,它会被最后一个 `catch` 语句捕获,并赋值给一个 `error` 常量。如果没有错误被抛出,`do` 子句中余下的语句就会被执行。 @@ -192,7 +192,7 @@ do { } catch { print("Unexpected non-vending-machine-related error: \(error)") } -// 打印 "Invalid selection, out of stock, or not enough money." +// 打印“Invalid selection, out of stock, or not enough money.” ``` 如果 `vend(itemNamed:)` 抛出的是一个 `VendingMachineError` 类型的错误,`nourish(with:)` 会打印一条消息,否则 `nourish(with:)` 会将错误抛给它的调用方。这个错误之后会被通用的 `catch` 语句捕获。 diff --git a/source/chapter2/18_Type_Casting.md b/source/chapter2/18_Type_Casting.md index 6f4210d2..abf12bed 100644 --- a/source/chapter2/18_Type_Casting.md +++ b/source/chapter2/18_Type_Casting.md @@ -77,7 +77,7 @@ for item in library { } print("Media library contains \(movieCount) movies and \(songCount) songs") -// 打印 "Media library contains 2 movies and 3 songs" +// 打印“Media library contains 2 movies and 3 songs” ``` 示例迭代了数组 `library` 中的所有项。每一次,`for-in` 循环设置 diff --git a/source/chapter2/19_Nested_Types.md b/source/chapter2/19_Nested_Types.md index 4b92f8fe..20c9c8d0 100755 --- a/source/chapter2/19_Nested_Types.md +++ b/source/chapter2/19_Nested_Types.md @@ -69,7 +69,7 @@ struct BlackjackCard { ```swift let theAceOfSpades = BlackjackCard(rank: .ace, suit: .spades) print("theAceOfSpades: \(theAceOfSpades.description)") -// 打印 “theAceOfSpades: suit is ♠, value is 1 or 11” +// 打印“theAceOfSpades: suit is ♠, value is 1 or 11” ``` 尽管 `Rank` 和 `Suit` 嵌套在 `BlackjackCard` 中,但它们的类型仍可从上下文中推断出来,所以在初始化实例时能够单独通过成员名称(`.ace` 和 `.spades`)引用枚举实例。在上面的例子中,`description` 属性正确地反映了黑桃 A 牌具有 `1` 和 `11` 两个值。 diff --git a/source/chapter2/20_Extensions.md b/source/chapter2/20_Extensions.md index 5a8ca127..591f4a97 100644 --- a/source/chapter2/20_Extensions.md +++ b/source/chapter2/20_Extensions.md @@ -254,7 +254,7 @@ func printIntegerKinds(_ numbers: [Int]) { print("") } printIntegerKinds([3, 19, -27, 0, -6, 0, 7]) -// 打印 "+ + - 0 - 0 + " +// 打印“+ + - 0 - 0 + ” ``` 方法 **printIntegerKinds(_:)**,使用一个 **Int** 类型的数组作为输入,然后依次迭代这些值。对于数组中的每一个整数,方法会检查它的 **kind** 计算型属性,然后打印适当的描述。 diff --git a/source/chapter2/21_Protocols.md b/source/chapter2/21_Protocols.md index 3accbc73..83d13b49 100644 --- a/source/chapter2/21_Protocols.md +++ b/source/chapter2/21_Protocols.md @@ -139,9 +139,9 @@ class LinearCongruentialGenerator: RandomNumberGenerator { } let generator = LinearCongruentialGenerator() print("Here's a random number: \(generator.random())") -// 打印 “Here's a random number: 0.37464991998171” +// 打印“Here's a random number: 0.37464991998171” print("And another one: \(generator.random())") -// 打印 “And another one: 0.729023776863283” +// 打印“And another one: 0.729023776863283” ``` @@ -444,7 +444,7 @@ extension Dice: TextRepresentable { ```swift let d12 = Dice(sides: 12, generator: LinearCongruentialGenerator()) print(d12.textualDescription) -// 打印 “A 12-sided dice” +// 打印“A 12-sided dice” ``` 同样,`SnakesAndLadders` 类也可以通过扩展遵循 `TextRepresentable` 协议: @@ -456,7 +456,7 @@ extension SnakesAndLadders: TextRepresentable { } } print(game.textualDescription) -// 打印 “A game of Snakes and Ladders with 25 squares” +// 打印“A game of Snakes and Ladders with 25 squares” ``` @@ -475,7 +475,7 @@ extension Array: TextRepresentable where Element: TextRepresentable { } let myDice = [d6, d12] print(myDice.textualDescription) -// 打印 "[A 6-sided dice, A 12-sided dice]" +// 打印“[A 6-sided dice, A 12-sided dice]” ``` @@ -499,7 +499,7 @@ extension Hamster: TextRepresentable {} let simonTheHamster = Hamster(name: "Simon") let somethingTextRepresentable: TextRepresentable = simonTheHamster print(somethingTextRepresentable.textualDescription) -// 打印 “A hamster named Simon” +// 打印“A hamster named Simon” ``` > 注意 @@ -626,7 +626,7 @@ func wishHappyBirthday(to celebrator: Named & Aged) { } let birthdayPerson = Person(name: "Malcolm", age: 21) wishHappyBirthday(to: birthdayPerson) -// 打印 “Happy birthday Malcolm - you're 21!” +// 打印“Happy birthday Malcolm - you're 21!” ``` `Named` 协议包含 `String` 类型的 `name` 属性。`Aged` 协议包含 `Int` 类型的 `age` 属性。`Person` 结构体遵循了这两个协议。 @@ -871,9 +871,9 @@ extension RandomNumberGenerator { ```swift let generator = LinearCongruentialGenerator() print("Here's a random number: \(generator.random())") -// 打印 “Here's a random number: 0.37464991998171” +// 打印“Here's a random number: 0.37464991998171” print("And here's a random Boolean: \(generator.randomBool())") -// 打印 “And here's a random Boolean: true” +// 打印“And here's a random Boolean: true” ``` @@ -930,9 +930,9 @@ let differentNumbers = [100, 100, 200, 100, 200] ```swift print(equalNumbers.allEqual()) -// 打印 "true" +// 打印“true” print(differentNumbers.allEqual()) -// 打印 "false" +// 打印“false” ``` > 注意 diff --git a/source/chapter2/22_Generics.md b/source/chapter2/22_Generics.md index a0133abf..a7bbbccc 100644 --- a/source/chapter2/22_Generics.md +++ b/source/chapter2/22_Generics.md @@ -65,7 +65,7 @@ var someInt = 3 var anotherInt = 107 swapTwoInts(&someInt, &anotherInt) print("someInt is now \(someInt), and anotherInt is now \(anotherInt)") -// 打印 "someInt is now 107, and anotherInt is now 3" +// 打印“someInt is now 107, and anotherInt is now 3” ``` `swapTwoInts(_:_:)` 函数很实用,但它只能作用于 `Int` 类型。如果你想交换两个 `String` 类型值,或者 `Double` 类型值,你必须编写对应的函数,类似下面 `swapTwoStrings(_:_:)` 和 `swapTwoDoubles(_:_:)` 函数: @@ -268,7 +268,7 @@ extension Stack { if let topItem = stackOfStrings.topItem { print("The top item on the stack is \(topItem).") } -// 打印 “The top item on the stack is tres.” +// 打印“The top item on the stack is tres.” ``` @@ -316,7 +316,7 @@ let strings = ["cat", "dog", "llama", "parakeet", "terrapin"] if let foundIndex = findIndex(ofString: "llama", in: strings) { print("The index of llama is \(foundIndex)") } -// 打印 “The index of llama is 2” +// 打印“The index of llama is 2” ``` 如果只能查找字符串在数组中的索引,用处不是很大。不过,你可以用占位类型 `T` 替换 `String` 类型来写出具有相同功能的泛型函数 `findIndex(_:_:)`。 @@ -598,7 +598,7 @@ if allItemsMatch(stackOfStrings, arrayOfStrings) { } else { print("Not all items match.") } -// 打印 “All items match.” +// 打印“All items match.” ``` 上面的例子创建 `Stack` 实例来存储 `String` 值,然后将三个字符串压栈。这个例子还通过数组字面量创建了一个 `Array` 实例,数组中包含同栈中一样的三个字符串。即使栈和数组是不同的类型,但它们都遵从 `Container` 协议,而且它们都包含相同类型的值。因此你可以用这两个容器作为参数来调用 `allItemsMatch(_:_:)` 函数。在上面的例子中,`allItemsMatch(_:_:)` 函数正确地显示了这两个容器中的所有元素都是相互匹配的。 @@ -630,7 +630,7 @@ if stackOfStrings.isTop("tres") { } else { print("Top element is something else.") } -// 打印 "Top element is tres." +// 打印“Top element is tres.” ``` 如果尝试在其元素不符合 `Equatable` 协议的栈上调用 `isTop(_:)` 方法,则会收到编译时错误。 @@ -660,7 +660,7 @@ if [9, 9, 9].startsWith(42) { } else { print("Starts with something else.") } -// 打印 "Starts with something else." +// 打印“Starts with something else.” ``` 上述示例中的泛型 `where` 子句要求 `Item` 遵循协议,但也可以编写一个泛型 `where` 子句去要求 `Item` 为特定类型。例如: @@ -676,7 +676,7 @@ extension Container where Item == Double { } } print([1260.0, 1200.0, 98.6, 37.0].average()) -// 打印 "648.9" +// 打印“648.9” ``` 此示例将一个 `average()` 方法添加到 `Item` 类型为 `Double` 的容器中。此方法遍历容器中的元素将其累加,并除以容器的数量计算平均值。它将数量从 `Int` 转换为 `Double` 确保能够进行浮点除法。 diff --git a/source/chapter2/23_Automatic_Reference_Counting.md b/source/chapter2/23_Automatic_Reference_Counting.md index 2c7f06c9..7c4192c2 100755 --- a/source/chapter2/23_Automatic_Reference_Counting.md +++ b/source/chapter2/23_Automatic_Reference_Counting.md @@ -54,7 +54,7 @@ var reference3: Person? ```swift reference1 = Person(name: "John Appleseed") -// 打印 "John Appleseed is being initialized" +// 打印“John Appleseed is being initialized” ``` 应当注意到当你调用 `Person` 类的构造器的时候,`"John Appleseed is being initialized"` 会被打印出来。由此可以确定构造器被执行。 @@ -81,7 +81,7 @@ reference2 = nil ```swift reference3 = nil -// 打印 "John Appleseed is being deinitialized" +// 打印“John Appleseed is being deinitialized” ``` @@ -223,7 +223,7 @@ unit4A!.tenant = john ```swift john = nil -// 打印 "John Appleseed is being deinitialized" +// 打印“John Appleseed is being deinitialized” ``` 由于再也没有指向 `Person` 实例的强引用,该实例会被销毁,且 `tenant` 属性会被赋值为 `nil`: @@ -234,7 +234,7 @@ john = nil ```swift unit4A = nil -// 打印 "Apartment 4A is being deinitialized" +// 打印“Apartment 4A is being deinitialized” ``` 由于再也没有指向 `Person` 实例的强引用,该实例会被销毁: @@ -318,8 +318,8 @@ john!.card = CreditCard(number: 1234_5678_9012_3456, customer: john!) ```swift john = nil -// 打印 "John Appleseed is being deinitialized" -// 打印 "Card #1234567890123456 is being deinitialized" +// 打印“John Appleseed is being deinitialized” +// 打印“Card #1234567890123456 is being deinitialized” ``` 最后的代码展示了在 `john` 变量被设为 `nil` 后 `Customer` 实例和 `CreditCard` 实例的析构器都打印出了“销毁”的信息。 @@ -376,7 +376,7 @@ class City { ```swift var country = Country(name: "Canada", capitalName: "Ottawa") print("\(country.name)'s capital city is called \(country.capitalCity.name)") -// 打印 "Canada's capital city is called Ottawa" +// 打印“Canada's capital city is called Ottawa” ``` 在上面的例子中,使用隐式解包可选值值意味着满足了类的构造器的两个构造阶段的要求。`capitalCity` 属性在初始化完成后,能像非可选值一样使用和存取,同时还避免了循环强引用。 @@ -437,7 +437,7 @@ heading.asHTML = { return "<\(heading.name)>\(heading.text ?? defaultText)" } print(heading.asHTML()) -// 打印 "

some default text

" +// 打印“

some default text

” ``` > 注意 @@ -451,7 +451,7 @@ print(heading.asHTML()) ```swift var paragraph: HTMLElement? = HTMLElement(name: "p", text: "hello, world") print(paragraph!.asHTML()) -// 打印 "

hello, world

" +// 打印“

hello, world

” ``` > 注意 @@ -555,7 +555,7 @@ class HTMLElement { ```swift var paragraph: HTMLElement? = HTMLElement(name: "p", text: "hello, world") print(paragraph!.asHTML()) -// 打印 "

hello, world

" +// 打印“

hello, world

” ``` 使用捕获列表后引用关系如下图所示: @@ -566,7 +566,7 @@ print(paragraph!.asHTML()) ```swift paragraph = nil -// 打印 "p is being deinitialized" +// 打印“p is being deinitialized” ``` 你可以查看[捕获列表](../chapter3/04_Expressions.html)章节,获取更多关于捕获列表的信息。 diff --git a/source/chapter2/24_Memory_Safety.md b/source/chapter2/24_Memory_Safety.md index 16c6585e..ef5239ee 100644 --- a/source/chapter2/24_Memory_Safety.md +++ b/source/chapter2/24_Memory_Safety.md @@ -55,7 +55,7 @@ func oneMore(than number: Int) -> Int { var myNumber = 1 myNumber = oneMore(than: myNumber) print(myNumber) -// 打印 "2" +// 打印“2” ``` 然而,有几种被称为长期访问的内存访问方式,会在别的代码执行时持续进行。瞬时访问和长期访问的区别在于别的代码有没有可能在访问期间同时访问,也就是在时间线上的重叠。一个长期访问可以被别的长期访问或瞬时访问重叠。 diff --git a/source/chapter2/25_Access_Control.md b/source/chapter2/25_Access_Control.md index 8bdebb19..8a315725 100644 --- a/source/chapter2/25_Access_Control.md +++ b/source/chapter2/25_Access_Control.md @@ -279,7 +279,7 @@ stringToEdit.value = "This string will be tracked." stringToEdit.value += " This edit will increment numberOfEdits." stringToEdit.value += " So will this one." print("The number of edits is \(stringToEdit.numberOfEdits)") -// 打印 “The number of edits is 3” +// 打印“The number of edits is 3” ``` 虽然你可以在其他的源文件中实例化该结构体并且获取到 `numberOfEdits` 属性的值,但是你不能对其进行赋值。这一限制保护了该记录功能的实现细节,同时还提供了方便的访问方式。 diff --git a/source/chapter2/26_Advanced_Operators.md b/source/chapter2/26_Advanced_Operators.md index 28eb8ad0..4ad80ca0 100644 --- a/source/chapter2/26_Advanced_Operators.md +++ b/source/chapter2/26_Advanced_Operators.md @@ -401,7 +401,7 @@ let anotherTwoThree = Vector2D(x: 2.0, y: 3.0) if twoThree == anotherTwoThree { print("These two vectors are equivalent.") } -// 打印 “These two vectors are equivalent.” +// 打印“These two vectors are equivalent.” ``` Swift 为以下数种自定义类型提供等价运算符的默认实现: diff --git a/source/chapter3/03_Types.md b/source/chapter3/03_Types.md index 90b55a46..0f153b37 100644 --- a/source/chapter3/03_Types.md +++ b/source/chapter3/03_Types.md @@ -388,7 +388,7 @@ let someInstance: SomeBaseClass = SomeSubClass() // someInstance 在编译期是 SomeBaseClass 类型, // 但是在运行期则是 SomeSubClass 类型 type(of: someInstance).printClassName() -// 打印 “SomeSubClass” +// 打印“SomeSubClass” ``` 更多信息可以查看 Swift 标准库里的 `type(of:)`。 diff --git a/source/chapter3/04_Expressions.md b/source/chapter3/04_Expressions.md index f75e31c3..ebd55392 100644 --- a/source/chapter3/04_Expressions.md +++ b/source/chapter3/04_Expressions.md @@ -196,14 +196,14 @@ func f(any: Any) { print("Function for Any") } func f(int: Int) { print("Function for Int") } let x = 10 f(x) -// 打印 “Function for Int” +// 打印“Function for Int” let y: Any = x f(y) -// 打印 “Function for Any” +// 打印“Function for Any” f(x as Any) -// 打印 “Function for Any” +// 打印“Function for Any” ``` 桥接可将 Swift 标准库中的类型(例如 `String`)作为一个与之相关的 Foundation 类型(例如 `NSString`)来使用,而不需要新建一个实例。关于桥接的更多信息,请参阅 [*Using Swift with Cocoa and Objective-C (Swift4.1)*](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/index.html#//apple_ref/doc/uid/TP40014216) 中的 [Working with Cocoa Data Types](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/WorkingWithCocoaDataTypes.html#//apple_ref/doc/uid/TP40014216-CH6)。 @@ -265,7 +265,7 @@ func logFunctionName(string: String = #function) { func myFunction() { logFunctionName() } -myFunction() // 打印 “myFunction()” +myFunction() // 打印“myFunction()” ``` 数组字面量是值的有序集合,形式如下: @@ -441,7 +441,7 @@ let closure = { [a] in a = 10 b = 10 closure() -// 打印 “0 10” +// 打印“0 10” ``` 在示例中,变量 `b` 只有一个,然而,变量 `a` 有两个,一个在闭包外,一个在闭包内。闭包内的变量 `a` 会在闭包创建时用闭包外的变量 `a` 的值来初始化,除此之外它们并无其他联系。这意味着在闭包创建后,改变某个 `a` 的值都不会对另一个 `a` 的值造成任何影响。与此相反,闭包内外都是同一个变量 `b`,因此在闭包外改变其值,闭包内的值也会受影响。 @@ -461,7 +461,7 @@ let closure = { [x] in x.value = 10 y.value = 10 closure() -// 打印 “10 10” +// 打印“10 10” ``` 如果捕获列表中的值是类类型,你可以使用 `weak` 或者 `unowned` 来修饰它,闭包会分别用弱引用和无主引用来捕获该值。 @@ -698,7 +698,7 @@ class SomeSubClass: SomeSuperClass { let initializer: Int -> String = String.init let oneTwoThree = [1, 2, 3].map(initializer).reduce("", combine: +) print(oneTwoThree) -// 打印 “123” +// 打印“123” ``` 如果通过名字来指定某个类型,可以不用构造器表达式而直接使用类型的构造器。在其他情况下,你必须使用构造器表达式。 diff --git a/source/chapter3/05_Statements.md b/source/chapter3/05_Statements.md index 9164a274..b6da572f 100755 --- a/source/chapter3/05_Statements.md +++ b/source/chapter3/05_Statements.md @@ -477,9 +477,9 @@ func f() { defer { print("Third") } } f() -// 打印 “Third” -// 打印 “Second” -// 打印 “First” +// 打印“Third” +// 打印“Second” +// 打印“First” ``` `defer` 语句中的语句无法将控制权转移到 `defer` 语句外部。 diff --git a/source/chapter3/06_Declarations.md b/source/chapter3/06_Declarations.md index 6efcd365..76efd750 100755 --- a/source/chapter3/06_Declarations.md +++ b/source/chapter3/06_Declarations.md @@ -166,9 +166,9 @@ let (firstNumber, secondNumber) = (10, 42) ```swift print("The first number is \(firstNumber).") -// 打印 “The first number is 10.” +// 打印“The first number is 10.” print("The second number is \(secondNumber).") -// 打印 “The second number is 42.” +// 打印“The second number is 42.” ``` 当常量名称的类型(`:` 类型)可以被推断出时,类型标注在常量声明中是可选的,正如 [类型推断](03_Types.html#type_inference) 中所描述的。 @@ -479,7 +479,7 @@ var x = 10 let f = outer(&x) f() print(x) -// 打印 “10” +// 打印“10” ``` 调用嵌套函数 `inner()` 对 `a` 递增后,`x` 的值并未发生改变,因为 `inner()` 在外层函数 `outer()` 返回后才被调用。若要改变 `x` 的值,必须在 `outer()` 返回前调用 `inner()`。 diff --git a/source/chapter3/08_Patterns.md b/source/chapter3/08_Patterns.md index 7eae9596..c2d0a535 100755 --- a/source/chapter3/08_Patterns.md +++ b/source/chapter3/08_Patterns.md @@ -93,7 +93,7 @@ switch point { case let (x, y): print("The point is at (\(x), \(y)).") } -// 打印 “The point is at (3, 2).” +// 打印“The point is at (3, 2).” ``` 在上面这个例子中,`let` 会分配到元组模式 `(x, y)` 中的各个标识符模式。因此,`switch` 语句中 `case let (x, y):` 和 `case (let x, let y):` 的匹配效果是一样的。 @@ -227,7 +227,7 @@ case (-2...2, -2...2): default: print("The point is at (\(point.0), \(point.1)).") } -// 打印 “(1, 2) is near the origin.” +// 打印“(1, 2) is near the origin.” ``` 你可以重载 `~=` 运算符来提供自定义的表达式匹配行为。比如你可以重写上面的例子,将 `point` 表达式与字符串形式表示的点进行比较。 @@ -244,7 +244,7 @@ case ("0", "0"): default: print("The point is at (\(point.0), \(point.1)).") } -// 打印 “The point is at (1, 2).” +// 打印“The point is at (1, 2).” ``` > 表达式模式语法 From 3529a8c94b7351e589ef4482accee73bfa8b0d38 Mon Sep 17 00:00:00 2001 From: langyanduan Date: Tue, 15 Jan 2019 23:18:57 +0800 Subject: [PATCH 014/107] =?UTF-8?q?=E7=BF=BB=E8=AF=91=E9=94=99=E8=AF=AF=20?= =?UTF-8?q?(#855)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/chapter2/03_Strings_and_Characters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/chapter2/03_Strings_and_Characters.md b/source/chapter2/03_Strings_and_Characters.md index f5f1d946..01dff2d7 100755 --- a/source/chapter2/03_Strings_and_Characters.md +++ b/source/chapter2/03_Strings_and_Characters.md @@ -346,7 +346,7 @@ print("the number of characters in \(word) is \(word.count)") > 注意 > -> 可扩展的字符群集可以组成一个或者多个 Unicode 标量。这意味着不同的字符以及相同字符的不同表示方式可能需要不同数量的内存空间来存储。所以 Swift 中的字符在一个字符串中并不一定占用相同的内存空间数量。因此在没有获取字符串的可扩展的字符群的范围时候,就不能计算出字符串的字符数量。如果你正在处理一个长字符串,需要注意 `count` 属性必须遍历全部的 Unicode 标量,来确定字符串的字符数量。 +> 可扩展的字形群可以由多个 Unicode 标量组成。这意味着不同的字符以及相同字符的不同表示方式可能需要不同数量的内存空间来存储。所以 Swift 中的字符在一个字符串中并不一定占用相同的内存空间数量。因此在没有获取字符串的可扩展的字符群的范围时候,就不能计算出字符串的字符数量。如果你正在处理一个长字符串,需要注意 `count` 属性必须遍历全部的 Unicode 标量,来确定字符串的字符数量。 > > 另外需要注意的是通过 `count` 属性返回的字符数量并不总是与包含相同字符的 `NSString` 的 `length` 属性相同。`NSString` 的 `length` 属性是利用 UTF-16 表示的十六位代码单元数字,而不是 Unicode 可扩展的字符群集。 From 85b457b8ca62ef459221447a6cec143308ac8d12 Mon Sep 17 00:00:00 2001 From: Damonwong Date: Fri, 18 Jan 2019 09:45:19 +0800 Subject: [PATCH 015/107] =?UTF-8?q?=E8=B0=83=E6=95=B4=20Properties=20?= =?UTF-8?q?=E7=AB=A0=E8=8A=82=E7=BB=86=E8=8A=82=20(#856)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/chapter2/10_Properties.md | 108 +++++++++++++++---------------- 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/source/chapter2/10_Properties.md b/source/chapter2/10_Properties.md index 18a5bc85..32d7b177 100755 --- a/source/chapter2/10_Properties.md +++ b/source/chapter2/10_Properties.md @@ -1,10 +1,10 @@ # 属性 -*属性*将值跟特定的类、结构或枚举关联。存储属性存储常量或变量作为实例的一部分,而计算属性计算(不是存储)一个值。计算属性可以用于类、结构体和枚举,存储属性只能用于类和结构体。 +*属性*将值与特定的类、结构体或枚举关联。存储属性会将常量和变量存储为实例的一部分,而计算属性则是直接计算(而不是存储)值。计算属性可以用于类、结构体和枚举,而存储属性只能用于类和结构体。 -存储属性和计算属性通常与特定类型的实例关联。但是,属性也可以直接作用于类型本身,这种属性称为类型属性。 +存储属性和计算属性通常与特定类型的实例关联。但是,属性也可以直接与类型本身关联,这种属性称为类型属性。 -另外,还可以定义属性观察器来监控属性值的变化,以此来触发一个自定义的操作。属性观察器可以添加到自己定义的存储属性上,也可以添加到从父类继承的属性上。 +另外,还可以定义属性观察器来监控属性值的变化,以此来触发自定义的操作。属性观察器可以添加到类本身定义的存储属性上,也可以添加到从父类继承的属性上。 ## 存储属性 @@ -13,7 +13,7 @@ 可以在定义存储属性的时候指定默认值,请参考[默认构造器](./14_Initialization.html#default_initializers)一节。也可以在构造过程中设置或修改存储属性的值,甚至修改常量存储属性的值,请参考[构造过程中常量属性的修改](./14_Initialization.html#assigning_constant_properties_during_initialization)一节。 -下面的例子定义了一个名为 `FixedLengthRange` 的结构体,该结构体用于描述整数的范围,且这个范围值在被创建后不能被修改。 +下面的例子定义了一个名为 `FixedLengthRange` 的结构体,该结构体用于描述整数的区间,且这个范围值在被创建后不能被修改。 ```swift struct FixedLengthRange { @@ -26,38 +26,38 @@ rangeOfThreeItems.firstValue = 6 // 该区间现在表示整数6,7,8 ``` -`FixedLengthRange` 的实例包含一个名为 `firstValue` 的变量存储属性和一个名为 `length` 的常量存储属性。在上面的例子中,`length` 在创建实例的时候被初始化,因为它是一个常量存储属性,所以之后无法修改它的值。 +`FixedLengthRange` 的实例包含一个名为 `firstValue` 的变量存储属性和一个名为 `length` 的常量存储属性。在上面的例子中,`length` 在创建实例的时候被初始化,且之后无法修改它的值,因为它是一个常量存储属性。 -### 常量结构体的存储属性 +### 常量结构体实例的存储属性 -如果创建了一个结构体的实例并将其赋值给一个常量,则无法修改该实例的任何属性,即使有属性被声明为变量也不行: +如果创建了一个结构体实例并将其赋值给一个常量,则无法修改该实例的任何属性,即使被声明为可变属性也不行: ```swift let rangeOfFourItems = FixedLengthRange(firstValue: 0, length: 4) // 该区间表示整数0,1,2,3 rangeOfFourItems.firstValue = 6 -// 尽管 firstValue 是个变量属性,这里还是会报错 +// 尽管 firstValue 是个可变属性,但这里还是会报错 ``` -因为 `rangeOfFourItems` 被声明成了常量(用 `let` 关键字),即使 `firstValue` 是一个变量属性,也无法再修改它了。 +因为 `rangeOfFourItems` 被声明成了常量(用 `let` 关键字),所以即使 `firstValue` 是一个可变属性,也无法再修改它了。 -这种行为是由于结构体(struct)属于*值类型*。当值类型的实例被声明为常量的时候,它的所有属性也就成了常量。 +这种行为是由于结构体属于*值类型*。当值类型的实例被声明为常量的时候,它的所有属性也就成了常量。 -属于*引用类型*的类(class)则不一样。把一个引用类型的实例赋给一个常量后,仍然可以修改该实例的变量属性。 +属于*引用类型*的类则不一样。把一个引用类型的实例赋给一个常量后,依然可以修改该实例的可变属性。 -### 延迟存储属性 +### 延时加载存储属性 -*延迟存储属性*是指当第一次被调用的时候才会计算其初始值的属性。在属性声明前使用 `lazy` 来标示一个延迟存储属性。 +*延时加载存储属性*是指当第一次被调用的时候才会计算其初始值的属性。在属性声明前使用 `lazy` 来标示一个延时加载存储属性。 > 注意 > -> 必须将延迟存储属性声明成变量(使用 `var` 关键字),因为属性的初始值可能在实例构造完成之后才会得到。而常量属性在构造过程完成之前必须要有初始值,因此无法声明成延迟属性。 +> 必须将延时加载属性声明成变量(使用 `var` 关键字),因为属性的初始值可能在实例构造完成之后才会得到。而常量属性在构造过程完成之前必须要有初始值,因此无法声明成延时加载。 -延迟属性很有用,当属性的值依赖于在实例的构造过程结束后才会知道影响值的外部因素时,或者当获得属性的初始值需要复杂或大量计算时,可以只在需要的时候计算它。 +当属性的值依赖于一些外部因素且这些外部因素只有在构造过程结束之后才会知道的时候,延时加载属性就会很有用。或者当获得属性的值因为需要复杂或者大量的计算,而需要采用需要的时候再计算的方式,延时加载属性也会很有用。 -下面的例子使用了延迟存储属性来避免复杂类中不必要的初始化。例子中定义了 `DataImporter` 和 `DataManager` 两个类,下面是部分代码: +下面的例子使用了延时加载存储属性来避免复杂类中不必要的初始化工作。例子中定义了 `DataImporter` 和 `DataManager` 两个类,下面是部分代码: ```swift class DataImporter { @@ -81,13 +81,13 @@ manager.data.append("Some more data") // DataImporter 实例的 importer 属性还没有被创建 ``` -`DataManager` 类包含一个名为 `data` 的存储属性,初始值是一个空的字符串(`String`)数组。这里没有给出全部代码,只需知道 `DataManager` 类的目的是管理和提供对这个字符串数组的访问即可。 +`DataManager` 类包含一个名为 `data` 的存储属性,初始值是一个空的字符串数组。这里没有给出全部代码,只需知道 `DataManager` 类的目的是管理和提供对这个字符串数组的访问即可。 -`DataManager` 的一个功能是从文件导入数据。该功能由 `DataImporter` 类提供,`DataImporter` 完成初始化需要消耗不少时间:因为它的实例在初始化时可能要打开文件,还要读取文件内容到内存。 +`DataManager` 的一个功能是从文件中导入数据。这个功能由 `DataImporter` 类提供,`DataImporter` 完成初始化需要消耗不少时间:因为它的实例在初始化时可能需要打开文件并读取文件中的内容到内存中。 `DataManager` 管理数据时也可能不从文件中导入数据。所以当 `DataManager` 的实例被创建时,没必要创建一个 `DataImporter` 的实例,更明智的做法是第一次用到 `DataImporter` 的时候才去创建它。 -由于使用了 `lazy`,`importer` 属性只有在第一次被访问的时候才被创建。比如访问它的属性 `fileName` 时: +由于使用了 `lazy`,`DataImporter` 的实例 `importer` 属性只有在第一次被访问的时候才被创建。比如访问它的属性 `fileName` 时: ```swift print(manager.importer.fileName) @@ -102,9 +102,9 @@ print(manager.importer.fileName) ### 存储属性和实例变量 -如果您有过 Objective-C 经验,应该知道 Objective-C 为类实例存储值和引用提供两种方法。除了属性之外,还可以使用实例变量作为属性值的后端存储。 +如果您有过 Objective-C 经验,应该知道 Objective-C 为类实例存储值和引用提供两种方法。除了属性之外,还可以使用实例变量作为一个备份存储将变量值赋值给属性。 -Swift 编程语言中把这些理论统一用属性来实现。Swift 中的属性没有对应的实例变量,属性的后端存储也无法直接访问。这就避免了不同场景下访问方式的困扰,同时也将属性的定义简化成一个语句。属性的全部信息——包括命名、类型和内存管理特征——作为类型定义的一部分,都定义在一个地方。 +Swift 编程语言中把这些理论统一用属性来实现。Swift 中的属性没有对应的实例变量,属性的备份存储也无法直接访问。这就避免了不同场景下访问方式的困扰,同时也将属性的定义简化成一个语句。属性的全部信息——包括命名、类型和内存管理特征——作为类型定义的一部分,都定义在一个地方。 ## 计算属性 @@ -138,7 +138,7 @@ var square = Rect(origin: Point(x: 0.0, y: 0.0), let initialSquareCenter = square.center square.center = Point(x: 15.0, y: 15.0) print("square.origin is now at (\(square.origin.x), \(square.origin.y))") -// 打印“square.origin is now at (10.0, 10.0)” +// 打印 "square.origin is now at (10.0, 10.0)” ``` 这个例子定义了 3 个结构体来描述几何形状: @@ -147,7 +147,7 @@ print("square.origin is now at (\(square.origin.x), \(square.origin.y))") - `Size` 封装了一个 `width` 和一个 `height` - `Rect` 表示一个有原点和尺寸的矩形 -`Rect` 也提供了一个名为 `center` 的计算属性。一个矩形的中心点可以从原点(`origin`)和大小(`size`)算出,所以不需要将它以显式声明的 `Point` 来保存。`Rect` 的计算属性 `center` 提供了自定义的 getter 和 setter 来获取和设置矩形的中心点,就像它有一个存储属性一样。 +`Rect` 也提供了一个名为 `center` 的计算属性。一个 `Rect` 的中心点可以从 `origin`(原点)和 `size`(大小)算出,所以不需要将中心点以 `Point` 类型的值来保存。`Rect` 的计算属性 `center` 提供了自定义的 getter 和 setter 来获取和设置矩形的中心点,就像它有一个存储属性一样。 上述例子中创建了一个名为 `square` 的 `Rect` 实例,初始值原点是 `(0, 0)`,宽度高度都是 `10`。如下图中蓝色正方形所示。 @@ -183,7 +183,7 @@ struct AlternativeRect { ### 只读计算属性 -只有 getter 没有 setter 的计算属性就是*只读计算属性*。只读计算属性总是返回一个值,可以通过点运算符访问,但不能设置新的值。 +只有 getter 没有 setter 的计算属性叫*只读计算属性*。只读计算属性总是返回一个值,可以通过点运算符访问,但不能设置新的值。 > 注意 > @@ -200,7 +200,7 @@ struct Cuboid { } let fourByFiveByTwo = Cuboid(width: 4.0, height: 5.0, depth: 2.0) print("the volume of fourByFiveByTwo is \(fourByFiveByTwo.volume)") -// 打印“the volume of fourByFiveByTwo is 40.0” +// 打印 "the volume of fourByFiveByTwo is 40.0" ``` 这个例子定义了一个名为 `Cuboid` 的结构体,表示三维空间的立方体,包含 `width`、`height` 和 `depth` 属性。结构体还有一个名为 `volume` 的只读计算属性用来返回立方体的体积。为 `volume` 提供 setter 毫无意义,因为无法确定如何修改 `width`、`height` 和 `depth` 三者的值来匹配新的 `volume`。然而,`Cuboid` 提供一个只读计算属性来让外部用户直接获取体积是很有用的。 @@ -210,22 +210,22 @@ print("the volume of fourByFiveByTwo is \(fourByFiveByTwo.volume)") 属性观察器监控和响应属性值的变化,每次属性被设置值的时候都会调用属性观察器,即使新值和当前值相同的时候也不例外。 -你可以为除了延迟存储属性之外的其他存储属性添加属性观察器,也可以通过重写属性的方式为继承的属性(包括存储属性和计算属性)添加属性观察器。你不必为非重写的计算属性添加属性观察器,因为可以通过它的 setter 直接监控和响应值的变化。 属性重写请参考[重写](./13_Inheritance.html#overriding)。 +你可以为除了延时加载存储属性之外的其他存储属性添加属性观察器,你也可以在子类中通过重写属性的方式为继承的属性(包括存储属性和计算属性)添加属性观察器。你不必为非重写的计算属性添加属性观察器,因为你可以直接通过它的 setter 监控和响应值的变化。属性重写请参考[重写](./13_Inheritance.html#overriding)。 -可以为属性添加如下的一个或全部观察器: +可以为属性添加其中一个或两个观察器: - `willSet` 在新的值被设置之前调用 -- `didSet` 在新的值被设置之后立即调用 +- `didSet` 在新的值被设置之后调用 `willSet` 观察器会将新的属性值作为常量参数传入,在 `willSet` 的实现代码中可以为这个参数指定一个名称,如果不指定则参数仍然可用,这时使用默认名称 `newValue` 表示。 -同样,`didSet` 观察器会将旧的属性值作为参数传入,可以为该参数命名或者使用默认参数名 `oldValue`。如果在 `didSet` 方法中再次对该属性赋值,那么新值会覆盖旧的值。 +同样,`didSet` 观察器会将旧的属性值作为参数传入,可以为该参数指定一个名称或者使用默认参数名 `oldValue`。如果在 `didSet` 方法中再次对该属性赋值,那么新值会覆盖旧的值。 > 注意 +> +> 在父类初始化方法调用之后,在子类构造器中给父类的属性赋值时,会调用父类属性的 `willSet` 和 `didSet` 观察器。而在父类初始化方法调用之前,给子类的属性赋值时不会调用子类属性的观察器。 > -> 父类的属性在子类的构造器中被赋值时,它在父类中的 `willSet` 和 `didSet` 观察器会被调用,随后才会调用子类的观察器。在父类初始化方法调用之前,子类给属性赋值时,观察器不会被调用。 -> -> 有关构造器代理的更多信息,请参考[值类型的构造器代理](./14_Initialization.html#initializer_delegation_for_value_types)和[类的构造器代理规则](./14_Initialization.html#initializer_delegation_for_class_types)。 +> 有关构造器代理的更多信息,请参考[值类型的构造器代理](./14_Initialization.html#initializer_delegation_for_value_types)和[类的构造器代理](./14_Initialization.html#initializer_delegation_for_class_types)。 下面是一个 `willSet` 和 `didSet` 实际运用的例子,其中定义了一个名为 `StepCounter` 的类,用来统计一个人步行时的总步数。这个类可以跟计步器或其他日常锻炼的统计装置的输入数据配合使用。 @@ -233,28 +233,28 @@ print("the volume of fourByFiveByTwo is \(fourByFiveByTwo.volume)") class StepCounter { var totalSteps: Int = 0 { willSet(newTotalSteps) { - print("About to set totalSteps to \(newTotalSteps)") + print("将 totalSteps 的值设置为 \(newTotalSteps)") } didSet { if totalSteps > oldValue { - print("Added \(totalSteps - oldValue) steps") + print("增加了 \(totalSteps - oldValue) 步") } } } } let stepCounter = StepCounter() stepCounter.totalSteps = 200 -// About to set totalSteps to 200 -// Added 200 steps +// 将 totalSteps 的值设置为 200 +// 增加了 200 步 stepCounter.totalSteps = 360 -// About to set totalSteps to 360 -// Added 160 steps +// 将 totalSteps 的值设置为 360 +// 增加了 160 步 stepCounter.totalSteps = 896 -// About to set totalSteps to 896 -// Added 536 steps +// 将 totalSteps 的值设置为 896 +// 增加了 536 步 ``` -`StepCounter` 类定义了一个 `Int` 类型的属性 `totalSteps`,它是一个存储属性,包含 `willSet` 和 `didSet` 观察器。 +`StepCounter` 类定义了一个叫 `totalSteps` 的 `Int` 类型的属性。它是一个存储属性,包含 `willSet` 和 `didSet` 观察器。 当 `totalSteps` 被设置新值的时候,它的 `willSet` 和 `didSet` 观察器都会被调用,即使新值和当前值完全相同时也会被调用。 @@ -264,12 +264,12 @@ stepCounter.totalSteps = 896 > 注意 > -> 如果将属性通过 in-out 方式传入函数,`willSet` 和 `didSet` 也会调用。这是因为 in-out 参数采用了拷入拷出模式:即在函数内部使用的是参数的 copy,函数结束后,又对参数重新赋值。关于 in-out 参数详细的介绍,请参考[输入输出参数](../chapter3/05_Declarations.html#in-out_parameters)。 +> 如果将带有观察器的属性通过 in-out 方式传入函数,`willSet` 和 `didSet` 也会调用。这是因为 in-out 参数采用了拷入拷出内存模式:即在函数内部使用的是参数的 copy,函数结束后,又对参数重新赋值。关于 in-out 参数详细的介绍,请参考[输入输出参数](../chapter3/05_Declarations.html#in-out_parameters) ## 全局变量和局部变量 -计算属性和属性观察器所描述的功能也可以用于*全局变量*和*局部变量*。全局变量是在函数、方法、闭包或任何类型之外定义的变量。局部变量是在函数、方法或闭包内部定义的变量。 +计算属性和观察属性所描述的功能也可以用于*全局变量*和*局部变量*。全局变量是在函数、方法、闭包或任何类型之外定义的变量。局部变量是在函数、方法或闭包内部定义的变量。 前面章节提到的全局或局部变量都属于*存储型变量*,跟存储属性类似,它为特定类型的值提供存储空间,并允许读取和写入。 @@ -277,16 +277,16 @@ stepCounter.totalSteps = 896 > 注意 > -> 全局的常量或变量都是延迟计算的,跟[延迟存储属性](#lazy_stored_properties)相似,不同的地方在于,全局的常量或变量不需要标记 `lazy` 修饰符。 +> 全局的常量或变量都是延迟计算的,跟[延时加载存储属性](#lazy_stored_properties)相似,不同的地方在于,全局的常量或变量不需要标记 `lazy` 修饰符。 > -> 局部范围的常量或变量从不延迟计算。 +> 局部范围的常量和变量从不延迟计算。 ## 类型属性 实例属性属于一个特定类型的实例,每创建一个实例,实例都拥有属于自己的一套属性值,实例之间的属性相互独立。 -也可以为类型本身定义属性,无论创建了多少个该类型的实例,这些属性都只有唯一一份。这种属性就是*类型属性*。 +你也可以为类型本身定义属性,无论创建了多少个该类型的实例,这些属性都只有唯一一份。这种属性就是*类型属性*。 类型属性用于定义某个类型所有实例共享的数据,比如*所有*实例都能用的一个常量(就像 C 语言中的静态常量),或者所有实例都能访问的一个变量(就像 C 语言中的静态变量)。 @@ -301,7 +301,7 @@ stepCounter.totalSteps = 896 ### 类型属性语法 -在 C 或 Objective-C 中,与某个类型关联的静态常量和静态变量,是作为全局(*global*)静态变量定义的。但是在 Swift 中,类型属性是作为类型定义的一部分写在类型最外层的花括号内,因此它的作用范围也就在类型支持的范围内。 +在 C 或 Objective-C 中,与某个类型关联的静态常量和静态变量,是作为 *global*(全局)静态变量定义的。但是在 Swift 中,类型属性是作为类型定义的一部分写在类型最外层的花括号内,因此它的作用范围也就在类型支持的范围内。 使用关键字 `static` 来定义类型属性。在为类定义计算型类型属性时,可以改用关键字 `class` 来支持子类对父类的实现进行重写。下面的例子演示了存储型和计算型类型属性的语法: @@ -336,18 +336,18 @@ class SomeClass { ### 获取和设置类型属性的值 -跟实例属性一样,类型属性也是通过点运算符来访问。但是,类型属性是通过类型本身来访问,而不是通过实例。比如: +跟实例属性一样,类型属性也是通过点运算符来访问。但是,类型属性是通过*类型*本身来访问,而不是通过实例。比如: ```swift print(SomeStructure.storedTypeProperty) -// 打印“Some value.” +// 打印 "Some value." SomeStructure.storedTypeProperty = "Another value." print(SomeStructure.storedTypeProperty) -// 打印“Another value.” +// 打印 "Another value.” print(SomeEnumeration.computedTypeProperty) -// 打印“6” +// 打印 "6" print(SomeClass.computedTypeProperty) -// 打印“27” +// 打印 "27" ``` 下面的例子定义了一个结构体,使用两个存储型类型属性来表示两个声道的音量,每个声道具有 `0` 到 `10` 之间的整数音量。 @@ -377,9 +377,9 @@ struct AudioChannel { } ``` -结构 `AudioChannel` 定义了 2 个存储型类型属性来实现上述功能。第一个是 `thresholdLevel`,表示音量的最大上限阈值,它是一个值为 `10` 的常量,对所有实例都可见,如果音量高于 `10`,则取最大上限值 `10`(见后面描述)。 +`AudioChannel` 结构定义了 2 个存储型类型属性来实现上述功能。第一个是 `thresholdLevel`,表示音量的最大上限阈值,它是一个值为 `10` 的常量,对所有实例都可见,如果音量高于 `10`,则取最大上限值 `10`(见后面描述)。 -第二个类型属性是变量存储型属性 `maxInputLevelForAllChannels`,它用来表示所有 `AudioChannel` 实例的最大音量,初始值是 `0`。 +第二个类型属性是变量存储型属性 `maxInputLevelForAllChannels`,它用来表示所有 `AudioChannel` 实例的最大输入音量,初始值是 `0`。 `AudioChannel` 也定义了一个名为 `currentLevel` 的存储型实例属性,表示当前声道现在的音量,取值为 `0` 到 `10`。 From 1493185ba439e98b8b53b03f05df587eee5521c0 Mon Sep 17 00:00:00 2001 From: BqLin Date: Fri, 18 Jan 2019 22:47:32 +0800 Subject: [PATCH 016/107] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E9=94=99=E8=AF=AF=20(#857)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 19_Nested_Types 去除多余空格 * 清除行末多余空格 * 20_Extensions 标题后添加空行 * 20_Extensions 修正注释翻译 * 20_Extensions 修正行内代码块引用方式 * 21_Protocols 修正编辑中的错误 --- source/chapter2/19_Nested_Types.md | 4 +- source/chapter2/20_Extensions.md | 143 ++++++++++++----------- source/chapter2/21_Protocols.md | 11 +- source/chapter2/26_Advanced_Operators.md | 16 +-- 4 files changed, 89 insertions(+), 85 deletions(-) diff --git a/source/chapter2/19_Nested_Types.md b/source/chapter2/19_Nested_Types.md index 20c9c8d0..27dd8010 100755 --- a/source/chapter2/19_Nested_Types.md +++ b/source/chapter2/19_Nested_Types.md @@ -62,7 +62,7 @@ struct BlackjackCard { `Rank` 还定义了一个计算型属性 `values`,它将会返回一个 `Values` 结构体的实例。这个计算型属性会根据牌的面值,用适当的数值去初始化 `Values` 实例。对于 `J`、`Q`、`K`、`Ace` 这四种牌,会使用特殊数值。对于数字面值的牌,使用枚举实例的 `Int` 类型的原始值。 -`BlackjackCard` 结构体拥有两个属性—— `rank` 与 `suit`。它也同样定义了一个计算型属性 `description`,`description` 属性用 `rank` 和 `suit` 中的内容来构建对扑克牌名字和数值的描述。该属性使用可选绑定来检查可选类型 `second` 是否有值,若有值,则在原有的描述中增加对 `second` 的描述。 +`BlackjackCard` 结构体拥有两个属性——`rank` 与 `suit`。它也同样定义了一个计算型属性 `description`,`description` 属性用 `rank` 和 `suit` 中的内容来构建对扑克牌名字和数值的描述。该属性使用可选绑定来检查可选类型 `second` 是否有值,若有值,则在原有的描述中增加对 `second` 的描述。 因为 `BlackjackCard` 是一个没有自定义构造器的结构体,在[结构体的逐一成员构造器](./14_Initialization.html#memberwise_initializers_for_structure_types)中可知,结构体有默认的成员构造器,所以你可以用默认的构造器去初始化新常量 `theAceOfSpades`: @@ -81,7 +81,7 @@ print("theAceOfSpades: \(theAceOfSpades.description)") ```swift let heartsSymbol = BlackjackCard.Suit.hearts.rawValue -// 红心符号为 “♡” +// 红心符号为“♡” ``` 对于上面这个例子,这样可以使 `Suit`、`Rank` 和 `Values` 的名字尽可能的短,因为它们的名字可以由定义它们的上下文来限定。 diff --git a/source/chapter2/20_Extensions.md b/source/chapter2/20_Extensions.md index 591f4a97..0429ec9c 100644 --- a/source/chapter2/20_Extensions.md +++ b/source/chapter2/20_Extensions.md @@ -1,49 +1,51 @@ # 扩展 -*扩展*可以给一个现有的类,结构体,枚举,还有协议添加新的功能。它还拥有不需要访问被扩展类型源代码就能完成扩展的能力(即*逆向建模*)。扩展和 Objective-C 的分类很相似。(与 Objective-C 分类不同的是,Swift 扩展是没有名字的。) +*扩展*可以给一个现有的类,结构体,枚举,还有协议添加新的功能。它还拥有不需要访问被扩展类型源代码就能完成扩展的能力(即*逆向建模*)。扩展和 Objective-C 的分类很相似。(与 Objective-C 分类不同的是,Swift 扩展是没有名字的。) -Swift 中的扩展可以: +Swift 中的扩展可以: - - 添加计算型实例属性和计算型类属性 - - 定义实例方法和类方法 - - 提供新的构造器 - - 定义下标 - - 定义和使用新的嵌套类型 - - 使已经存在的类型遵循(conform)一个协议 + - 添加计算型实例属性和计算型类属性 + - 定义实例方法和类方法 + - 提供新的构造器 + - 定义下标 + - 定义和使用新的嵌套类型 + - 使已经存在的类型遵循(conform)一个协议 在 Swift 中,你甚至可以扩展协议以提供其需要的实现,或者添加额外功能给遵循的类型所使用。你可以从 [协议扩展](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID521) 获取更多细节。 -> 注意 +> 注意 > -> 扩展可以给一个类型添加新的功能,但是不能重写已经存在的功能。 +> 扩展可以给一个类型添加新的功能,但是不能重写已经存在的功能。 ## 扩展的语法 -使用 **extension** 关键字声明扩展: + +使用 `extension` 关键字声明扩展: ```swift extension SomeType { // 在这里给 SomeType 添加新的功能 } -``` +``` -扩展可以扩充一个现有的类型,给它添加一个或多个协议。协议名称的写法和类或者结构体一样: +扩展可以扩充一个现有的类型,给它添加一个或多个协议。协议名称的写法和类或者结构体一样: ```swift extension SomeType: SomeProtocol, AnotherProtocol { // 协议所需要的实现写在这里 } -``` +``` -这种遵循协议的方式在 [使用扩展遵循协议](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID277) 中有描述。 +这种遵循协议的方式在 [使用扩展遵循协议](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID277) 中有描述。 -扩展可以使用在现有范型类型上,就像 [扩展范型类型](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID185) 中描述的一样。你还可以使用扩展给泛型类型有条件的添加功能,就像 [扩展一个带有 Where 字句的范型](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID553) 中描述的一样。 +扩展可以使用在现有范型类型上,就像 [扩展范型类型](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID185) 中描述的一样。你还可以使用扩展给泛型类型有条件的添加功能,就像 [扩展一个带有 Where 字句的范型](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID553) 中描述的一样。 -> 注意 +> 注意 > > 对一个现有的类型,如果你定义了一个扩展来添加新的功能,那么这个类型的所有实例都可以使用这个新功能,包括那些在扩展定义之前就存在的实例。 ## 计算型属性 -扩展可以给现有类型添加计算型实例属性和计算型类属性。这个例子给 Swift 内建的 **Double** 类型添加了五个计算型实例属性,从而提供与距离单位相关工作的基本支持: + +扩展可以给现有类型添加计算型实例属性和计算型类属性。这个例子给 Swift 内建的 `Double` 类型添加了五个计算型实例属性,从而提供与距离单位相关工作的基本支持: ```swift extension Double { @@ -55,40 +57,41 @@ extension Double { } let oneInch = 25.4.mm print("One inch is \(oneInch) meters") -// 打印“一英寸是 0.0254 米” +// 打印“One inch is 0.0254 meters” let threeFeet = 3.ft print("Three feet is \(threeFeet) meters") -// 打印“三英尺是 0.914399970739201 米” -``` +// 打印“Three feet is 0.914399970739201 meters” +``` -这些计算型属性表示的含义是把一个 **Double** 值看作是某单位下的长度值。即使它们被实现为计算型属性,但这些属性的名字仍可紧接一个浮点型字面值,从而通过点语法来使用,并以此实现距离转换。 +这些计算型属性表示的含义是把一个 `Double` 值看作是某单位下的长度值。即使它们被实现为计算型属性,但这些属性的名字仍可紧接一个浮点型字面值,从而通过点语法来使用,并以此实现距离转换。 -在上述例子中,**Double** 类型的 **1.0** 代表的是“一米”。这就是为什么计算型属性 **m** 返回的是 **self** - 表达式 **1.m** 被认为是计算一个 **Double** 类型的 **1.0**。 +在上述例子中,`Double` 类型的 `1.0` 代表的是“一米”。这就是为什么计算型属性 `m` 返回的是 `self`——表达式 `1.m` 被认为是计算一个 `Double` 类型的 `1.0`。 -其它单位则需要一些单位换算。一千米等于 1,000 米,所以计算型属性 **km** 要把值乘以 **1_000.00** 来实现千米到米的单位换算。类似地,一米有 3.28084 英尺,所以计算型属性 **ft** 要把对应的 **Double** 值除以 **3.28084**,来实现英尺到米的单位换算。 +其它单位则需要一些单位换算。一千米等于 1,000 米,所以计算型属性 `km` 要把值乘以 `1_000.00` 来实现千米到米的单位换算。类似地,一米有 3.28084 英尺,所以计算型属性 `ft` 要把对应的 `Double` 值除以 `3.28084`,来实现英尺到米的单位换算。 -这些属性都是只读的计算型属性,所以为了简便,它们的表达式里面都不包含 **get** 关键字。它们使用 **Double** 作为返回值类型,并可用于所有接受 **Double** 类型的数学计算中: +这些属性都是只读的计算型属性,所以为了简便,它们的表达式里面都不包含 `get` 关键字。它们使用 `Double` 作为返回值类型,并可用于所有接受 `Double` 类型的数学计算中: ```swift let aMarathon = 42.km + 195.m print("A marathon is \(aMarathon) meters long") -// 打印“马拉松赛跑全长 42195.0 米。” -``` +// 打印“A marathon is 42195.0 meters long” +``` -> 注意 +> 注意 > -> 扩展可以添加新的计算属性,但是它们不能添加存储属性,或向现有的属性添加属性观察者。 +> 扩展可以添加新的计算属性,但是它们不能添加存储属性,或向现有的属性添加属性观察者。 ## 构造器 -扩展可以给现有的类型添加新的构造器。它使你可以把自定义类型作为参数来供其他类型的构造器使用,或者在类型的原始实现上添加额外的构造选项。 -扩展可以给一个类添加新的便利构造器,但是它们不能给类添加新的指定构造器或者析构器。指定构造器和析构器必须始终由类的原始实现提供。 +扩展可以给现有的类型添加新的构造器。它使你可以把自定义类型作为参数来供其他类型的构造器使用,或者在类型的原始实现上添加额外的构造选项。 -如果你使用扩展给一个值类型添加构造器只是用于给所有的存储属性提供默认值,并且没有定义任何自定义构造器,那么你可以在该值类型扩展的构造器中使用默认构造器和成员构造器。如果你把构造器写到了值类型的原始实现中,就像 [值类型的构造器委托](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID215) 中所描述的,那么就不属于在扩展中添加构造器。 +扩展可以给一个类添加新的便利构造器,但是它们不能给类添加新的指定构造器或者析构器。指定构造器和析构器必须始终由类的原始实现提供。 -如果你使用扩展给另一个模块中定义的结构体添加构造器,那么新的构造器直到定义模块中使用一个构造器之前,不能访问 **self**。 +如果你使用扩展给一个值类型添加构造器只是用于给所有的存储属性提供默认值,并且没有定义任何自定义构造器,那么你可以在该值类型扩展的构造器中使用默认构造器和成员构造器。如果你把构造器写到了值类型的原始实现中,就像 [值类型的构造器委托](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID215) 中所描述的,那么就不属于在扩展中添加构造器。 -在下面的例子中,自定义了一个的 **Rect** 结构体用来表示一个几何矩形。这个例子中还定义了两个给予支持的结构体 **Size** 和 **Point**,它们都把属性的默认值设置为 **0.0**: +如果你使用扩展给另一个模块中定义的结构体添加构造器,那么新的构造器直到定义模块中使用一个构造器之前,不能访问 `self`。 + +在下面的例子中,自定义了一个的 `Rect` 结构体用来表示一个几何矩形。这个例子中还定义了两个给予支持的结构体 `Size` 和 `Point`,它们都把属性的默认值设置为 `0.0`: ```swift struct Size { @@ -101,17 +104,17 @@ struct Rect { var origin = Point() var size = Size() } -``` +``` -因为 **Rect** 结构体给所有的属性都提供了默认值,所以它自动获得了一个默认构造器和一个成员构造器,就像 [默认构造器](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID213) 中描述的一样。这些构造器可以用来创建新的 **Rect** 实例: +因为 `Rect` 结构体给所有的属性都提供了默认值,所以它自动获得了一个默认构造器和一个成员构造器,就像 [默认构造器](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID213) 中描述的一样。这些构造器可以用来创建新的 `Rect` 实例: ```swift let defaultRect = Rect() let memberwiseRect = Rect(origin: Point(x: 2.0, y: 2.0), size: Size(width: 5.0, height: 5.0)) -``` +``` -你可以通过扩展 **Rect** 结构体来提供一个允许指定 point 和 size 的构造器: +你可以通过扩展 `Rect` 结构体来提供一个允许指定 point 和 size 的构造器: ```swift extension Rect { @@ -123,20 +126,21 @@ extension Rect { } ``` -这个新的构造器首先根据提供的 **center** 和 **size** 计算一个适当的原点。然后这个构造器调用结构体自带的成员构造器 **init(origin:size:)**,它会将新的 origin 和 size 值储存在适当的属性中: +这个新的构造器首先根据提供的 `center` 和 `size` 计算一个适当的原点。然后这个构造器调用结构体自带的成员构造器 `init(origin:size:)`,它会将新的 origin 和 size 值储存在适当的属性中: ```swift let centerRect = Rect(center: Point(x: 4.0, y: 4.0), size: Size(width: 3.0, height: 3.0)) // centerRect 的 origin 是 (2.5, 2.5) 并且它的 size 是 (3.0, 3.0) -``` +``` -> 注意 +> 注意 > > 如果你通过扩展提供一个新的构造器,你有责任确保每个通过该构造器创建的实例都是初始化完整的。 ## 方法 -扩展可以给现有类型添加新的实例方法和类方法。在下面的例子中,给 **Int** 类型添加了一个新的实例方法叫做 **repetitions**: + +扩展可以给现有类型添加新的实例方法和类方法。在下面的例子中,给 `Int` 类型添加了一个新的实例方法叫做 `repetitions`: ```swift extension Int { @@ -148,9 +152,9 @@ extension Int { } ``` -**repetitions(task:)** 方法仅接收一个 **() -> Void** 类型的参数,它表示一个没有参数没有返回值的方法。 +`repetitions(task:)` 方法仅接收一个 `() -> Void` 类型的参数,它表示一个没有参数没有返回值的方法。 -定义了这个扩展之后,你可以对任意整形数值调用 **repetitions(task:)** 方法,来执行对应次数的任务: +定义了这个扩展之后,你可以对任意整形数值调用 `repetitions(task:)` 方法,来执行对应次数的任务: ```swift 3.repetitions { @@ -159,12 +163,13 @@ extension Int { // Hello! // Hello! // Hello! -``` +``` ### 可变实例方法 -通过扩展添加的实例方法同样也可以修改(或 *mutating(改变)*)实例本身。结构体和枚举的方法,若是可以修改 **self** 或者它自己的属性,则必须将这个实例方法标记为 **mutating**,就像是改变了方法的原始实现。 -在下面的例子中,对 Swift 的 **Int** 类型添加了一个新的 mutating 方法,叫做 **square**,它将原始值求平方: +通过扩展添加的实例方法同样也可以修改(或 *mutating(改变)*)实例本身。结构体和枚举的方法,若是可以修改 `self` 或者它自己的属性,则必须将这个实例方法标记为 `mutating`,就像是改变了方法的原始实现。 + +在下面的例子中,对 Swift 的 `Int` 类型添加了一个新的 mutating 方法,叫做 `square`,它将原始值求平方: ```swift extension Int { @@ -175,15 +180,16 @@ extension Int { var someInt = 3 someInt.square() // someInt 现在是 9 -``` +``` ## 下标 -扩展可以给现有的类型添加新的下标。下面的例子中,对 Swift 的 **Int** 类型添加了一个整数类型的下标。下标 **[n]** 从数字右侧开始,返回小数点后的第 **n** 位: -- **123456789[0]** returns **9** -- **123456789[1]** returns **8** +扩展可以给现有的类型添加新的下标。下面的例子中,对 Swift 的 `Int` 类型添加了一个整数类型的下标。下标 `[n]` 从数字右侧开始,返回小数点后的第 `n` 位: -……以此类推: +- `123456789[0]` 返回 `9` +- `123456789[1]` 返回 `8` + +……以此类推: ```swift extension Int { subscript(digitIndex: Int) -> Int { @@ -195,25 +201,26 @@ extension Int { } } 746381295[0] -// returns 5 +// 返回 5 746381295[1] -// returns 9 +// 返回 9 746381295[2] -// returns 2 +// 返回 2 746381295[8] -// returns 7 -``` +// 返回 7 +``` -如果操作的 **Int** 值没有足够的位数满足所请求的下标,那么下标的现实将返回 **0**,将好像在数字的左边补上了 0: +如果操作的 `Int` 值没有足够的位数满足所请求的下标,那么下标的现实将返回 `0`,将好像在数字的左边补上了 0: ```swift 746381295[9] // 返回 0,就好像你进行了这个请求: 0746381295[9] -``` +``` ## 嵌套类型 -扩展可以给现有的类,结构体,还有枚举添加新的嵌套类型: + +扩展可以给现有的类,结构体,还有枚举添加新的嵌套类型: ```swift extension Int { @@ -231,13 +238,13 @@ extension Int { } } } -``` +``` -这个例子给 **Int** 添加了一个新的嵌套枚举。这个枚举叫做 **Kind**,表示特定整数所代表的数字类型。具体来说,它表示数字是负的、零的还是正的。 +这个例子给 `Int` 添加了一个新的嵌套枚举。这个枚举叫做 `Kind`,表示特定整数所代表的数字类型。具体来说,它表示数字是负的、零的还是正的。 -这个例子同样给 **Int** 添加了一个新的计算型实例属性,叫做 **kind**,它返回被操作整数所对应的 **Kind** 枚举 case 分支。 +这个例子同样给 `Int` 添加了一个新的计算型实例属性,叫做 `kind`,它返回被操作整数所对应的 `Kind` 枚举 case 分支。 -现在,任意 **Int** 的值都可以使用这个嵌套类型: +现在,任意 `Int` 的值都可以使用这个嵌套类型: ```swift func printIntegerKinds(_ numbers: [Int]) { @@ -257,10 +264,8 @@ printIntegerKinds([3, 19, -27, 0, -6, 0, 7]) // 打印“+ + - 0 - 0 + ” ``` -方法 **printIntegerKinds(_:)**,使用一个 **Int** 类型的数组作为输入,然后依次迭代这些值。对于数组中的每一个整数,方法会检查它的 **kind** 计算型属性,然后打印适当的描述。 +方法 `printIntegerKinds(_:)`,使用一个 `Int` 类型的数组作为输入,然后依次迭代这些值。对于数组中的每一个整数,方法会检查它的 `kind` 计算型属性,然后打印适当的描述。 -> 注意 +> 注意 > -> **number.kind** 已经被认为是 **Int.Kind** 类型。所以,在 **switch** 语句中所有的 **Int.Kind** case 分支可以被缩写,就像使用 **.negative** 替代 **Int.Kind.negative.**。 - - +> `number.kind` 已经被认为是 `Int.Kind` 类型。所以,在 `switch` 语句中所有的 `Int.Kind` case 分支可以被缩写,就像使用 `.negative` 替代 `Int.Kind.negative.`。 diff --git a/source/chapter2/21_Protocols.md b/source/chapter2/21_Protocols.md index 83d13b49..b1f8a6e7 100644 --- a/source/chapter2/21_Protocols.md +++ b/source/chapter2/21_Protocols.md @@ -72,7 +72,7 @@ struct Person: FullyNamed { var fullName: String } let john = Person(fullName: "John Appleseed") -// john.fullName 为 "John Appleseed" +// john.fullName 为“John Appleseed” ``` 这个例子中定义了一个叫做 `Person` 的结构体,用来表示一个具有名字的人。从第一行代码可以看出,它遵循了 `FullyNamed` 协议。 @@ -94,7 +94,7 @@ class Starship: FullyNamed { } } var ncc1701 = Starship(name: "Enterprise", prefix: "USS") -// ncc1701.fullName 是 "USS Enterprise" +// ncc1701.fullName 是“USS Enterprise” ``` `Starship` 类把 `fullName` 属性实现为只读的计算型属性。每一个 `Starship` 类的实例都有一个名为 `name` 的非可选属性和一个名为 `prefix` 的可选属性。 当 `prefix` 存在时,计算型属性 `fullName` 会将 `prefix` 插入到 `name` 之前,从而为星际飞船构建一个全名。 @@ -659,7 +659,7 @@ func beginConcert(in location: Location & Named) { let seattle = City(name: "Seattle", latitude: 47.6, longitude: -122.3) beginConcert(in: seattle) -// Prints "Hello, Seattle!" +// 打印“Hello, Seattle!” ``` `beginConcert(in:)` 方法接受一个类型为 `Location & Named` 的参数,这意味着“任何 Location 的子类,并且遵循 Named 协议”。例如,City 就满足这样的条件。 @@ -753,7 +753,7 @@ for object in objects { ```swift @objc protocol CounterDataSource { - @objc optional func incrementForCount(count: Int) -> Int + @objc optional func increment(forCount count: Int) -> Int @objc optional var fixedIncrement: Int { get } } ``` @@ -771,7 +771,7 @@ class Counter { var count = 0 var dataSource: CounterDataSource? func increment() { - if let amount = dataSource?.incrementForCount?(count) { + if let amount = dataSource?.increment?(forCount: count) { count += amount } else if let amount = dataSource?.fixedIncrement { count += amount @@ -917,7 +917,6 @@ extension Collection where Element: Equatable { 如果集合中的所有元素都一致,`allEqual()` 方法才返回 `true`。 - 看看两个整数数组,一个数组的所有元素都是一样的,另一个不一样: ```swift diff --git a/source/chapter2/26_Advanced_Operators.md b/source/chapter2/26_Advanced_Operators.md index 4ad80ca0..7c54f6ce 100644 --- a/source/chapter2/26_Advanced_Operators.md +++ b/source/chapter2/26_Advanced_Operators.md @@ -70,7 +70,7 @@ let combinedbits = someBits | moreBits // 等于 11111110 ![Art/bitwiseXOR_2x.png](https://docs.swift.org/swift-book/_images/bitwiseXOR_2x.png) -在下面的示例当中,`firstBits` 和 `otherBits` 都有一个自己为 `1`,而对方为 `0` 的位。按位异或运算符将新数的这两个位都设置为 `1`。在其余的位上 `firstBits` 和 `otherBits` 是相同的,所以设置为 `0`: +在下面的示例当中,`firstBits` 和 `otherBits` 都有一个自己为 `1`,而对方为 `0` 的位。按位异或运算符将新数的这两个位都设置为 `1`。在其余的位上 `firstBits` 和 `otherBits` 是相同的,所以设置为 `0`: ```swift let firstBits: UInt8 = 0b00010100 @@ -207,7 +207,7 @@ unsignedOverflow = unsignedOverflow &+ 1 ![Art/overflowAddition_2x.png](https://docs.swift.org/swift-book/_images/overflowAddition_2x.png) -当允许对一个无符号整数进行下溢运算时也会产生类似的情况。这里有一个使用溢出减法运算符(`&-`)的例子: +当允许对一个无符号整数进行下溢运算时也会产生类似的情况。这里有一个使用溢出减法运算符(`&-`)的例子: ```swift var unsignedOverflow = UInt8.min @@ -257,7 +257,7 @@ signedOverflow = signedOverflow &- 1 但是正确答案是 `17` 而不是 `5`。优先级高的运算符要先于优先级低的运算符进行计算。与 C 语言类似,在 Swift 中,乘法运算符(`*`)与取余运算符(`%`)的优先级高于加法运算符(`+`)。因此,它们的计算顺序要先于加法运算。 -而乘法运算与取余运算的优先级*相同*。这时为了得到正确的运算顺序,还需要考虑结合性。乘法运算与取余运算都是左结合的。可以将这考虑成,从它们的左边开始为这两部分表达式都隐式地加上括号: +而乘法运算与取余运算的优先级*相同*。这时为了得到正确的运算顺序,还需要考虑结合性。乘法运算与取余运算都是左结合的。可以将这考虑成,从它们的左边开始为这两部分表达式都隐式地加上括号: ```swift 2 + ((3 % 4) * 5) @@ -275,9 +275,9 @@ signedOverflow = signedOverflow &- 1 2 + 15 ``` -因此计算结果为 `17`。 +因此计算结果为 `17`。 -有关 Swift 标准库提供的操作符信息,包括操作符优先级组和结核性设置的完整列表,请参见[操作符声明](https://developer.apple.com/documentation/swift/swift_standard_library/operator_declarations)。 +有关 Swift 标准库提供的操作符信息,包括操作符优先级组和结核性设置的完整列表,请参见[操作符声明](https://developer.apple.com/documentation/swift/swift_standard_library/operator_declarations)。 > 注意 > @@ -351,9 +351,9 @@ let alsoPositive = -negative ### 复合赋值运算符 -*复合赋值运算符*将赋值运算符(`=`)与其它运算符进行结合。例如,将加法与赋值结合成加法赋值运算符(`+=`)。在实现的时候,需要把运算符的左参数设置成 `inout` 类型,因为这个参数的值会在运算符函数内直接被修改。 +*复合赋值运算符*将赋值运算符(`=`)与其它运算符进行结合。例如,将加法与赋值结合成加法赋值运算符(`+=`)。在实现的时候,需要把运算符的左参数设置成 `inout` 类型,因为这个参数的值会在运算符函数内直接被修改。 -在下面的例子中,对 `Vector2D` 实例实现了一个加法赋值运算符函数: +在下面的例子中,对 `Vector2D` 实例实现了一个加法赋值运算符函数: ```swift extension Vector2D { @@ -391,7 +391,7 @@ extension Vector2D: Equatable { } ``` -上述代码实现了“相等”运算符(`==`)来判断两个 `Vector2D` 实例是否相等。对于 `Vector2D` 来说,“相等”意味着“两个实例的 `x` 和 `y` 都相等”,这也是代码中用来进行判等的逻辑。如果你已经实现了“相等”运算符,通常情况下你并不需要自己再去实现“不等”运算符(`!=`)。标准库对于“不等”运算符提供了默认的实现,它简单地将“相等”运算符的结果进行取反后返回。 +上述代码实现了“相等”运算符(`==`)来判断两个 `Vector2D` 实例是否相等。对于 `Vector2D` 来说,“相等”意味着“两个实例的 `x` 和 `y` 都相等”,这也是代码中用来进行判等的逻辑。如果你已经实现了“相等”运算符,通常情况下你并不需要自己再去实现“不等”运算符(`!=`)。标准库对于“不等”运算符提供了默认的实现,它简单地将“相等”运算符的结果进行取反后返回。 现在我们可以使用这两个运算符来判断两个 `Vector2D` 实例是否相等: From 13437499211b08c92dc69607e0231ad6b126306c Mon Sep 17 00:00:00 2001 From: BqLin Date: Sat, 19 Jan 2019 21:35:18 +0800 Subject: [PATCH 017/107] =?UTF-8?q?22=5FGenerics=20=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E9=94=99=E8=AF=AF=EF=BC=8C=E8=A1=A5=E5=85=85?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=E7=BF=BB=E8=AF=91=20(#858)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 22_Generics 移除翻译记录、目录 * 22_Generics 代码块后添加空行,补充标题链接,移除冗余空行 * 22_Generics 修正注释翻译,修正编辑错误 * 22_Generics 补充句号 --- source/chapter2/22_Generics.md | 115 +++++++++++++-------------------- 1 file changed, 45 insertions(+), 70 deletions(-) diff --git a/source/chapter2/22_Generics.md b/source/chapter2/22_Generics.md index a7bbbccc..9ad5ad3b 100644 --- a/source/chapter2/22_Generics.md +++ b/source/chapter2/22_Generics.md @@ -1,44 +1,4 @@ # 泛型 -------------------- - -> 1.0 -> 翻译:[takalard](https://github.com/takalard) -> 校对:[lifedim](https://github.com/lifedim) - -> 2.0 -> 翻译+校对: [SergioChan](https://github.com/SergioChan) - -> 2.1 -> 校对:[shanks](http://codebuild.me),2015-11-01 - -> 2.2:翻译+校对:[Lanford](https://github.com/LanfordCai),2016-04-08 [SketchK](https://github.com/SketchK) 2016-05-16 - -> 3.0:翻译+校对:[chenmingjia](https://github.com/chenmingjia),2016-09-12 -> 3.0.1,shanks,2016-11-13 - -> 3.1:翻译:[qhd](https://github.com/qhd),2017-04-10 - -> 4.0 -> 翻译+校对:[kemchenj](https://kemchenj.github.io/) 2017-09-21 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - - -本页包含内容: - -- [泛型解决的问题](#the_problem_that_generics_solve) -- [泛型函数](#generic_functions) -- [类型参数](#type_parameters) -- [命名类型参数](#naming_type_parameters) -- [泛型类型](#generic_types) -- [泛型扩展](#extending_a_generic_type) -- [类型约束](#type_constraints) -- [关联类型](#associated_types) -- [泛型 Where 语句](#where_clauses) -- [具有泛型 where 子句的扩展](#extensions_with_a_generic_where_clause) -- [具有泛型 Where 子句的关联类型](#associated_types_with_a_generic_where_clause) -- [泛型下标](#generic_subscripts) *泛型代码*让你能根据自定义的需求,编写出适用于任意类型的、灵活可复用的函数及类型。你可避免编写重复的代码,用一种清晰抽象的方式来表达代码的意图。 @@ -56,7 +16,8 @@ func swapTwoInts(_ a: inout Int, _ b: inout Int) { b = temporaryA } ``` -这个函数使用输入输出参数(`inout`)来交换 `a` 和 `b` 的值,具体请参考[输入输出参数](./06_Functions.html#in_out_parameters) + +这个函数使用输入输出参数(`inout`)来交换 `a` 和 `b` 的值,具体请参考[输入输出参数](./06_Functions.html#in_out_parameters)。 `swapTwoInts(_:_:)` 函数将 `b` 的原始值换成了 `a`,将 `a` 的原始值换成了 `b`,你可以调用这个函数来交换两个 `Int` 类型变量: @@ -66,8 +27,8 @@ var anotherInt = 107 swapTwoInts(&someInt, &anotherInt) print("someInt is now \(someInt), and anotherInt is now \(anotherInt)") // 打印“someInt is now 107, and anotherInt is now 3” - ``` + `swapTwoInts(_:_:)` 函数很实用,但它只能作用于 `Int` 类型。如果你想交换两个 `String` 类型值,或者 `Double` 类型值,你必须编写对应的函数,类似下面 `swapTwoStrings(_:_:)` 和 `swapTwoDoubles(_:_:)` 函数: ```swift @@ -83,11 +44,13 @@ func swapTwoDoubles(_ a: inout Double, _ b: inout Double) { b = temporaryA } ``` + 你可能注意到了,`swapTwoInts(_:_:‘)`、`swapTwoStrings(_:_:)` 和 `swapTwoDoubles(_:_:)` 函数体是一样的,唯一的区别是它们接受的参数类型(`Int`、`String` 和 `Double`)。 在实际应用中,通常需要一个更实用更灵活的函数来交换两个任意类型的值,幸运的是,泛型代码帮你解决了这种问题。(这些函数的泛型版本已经在下面定义好了。) > 注意 +> > 在上面三个函数中,`a` 和 `b` 类型必须相同。如果 `a` 和 `b` 类型不同,那它们俩就不能互换值。Swift 是类型安全的语言,所以它不允许一个 `String` 类型的变量和一个 `Double` 类型的变量互换值。试图这样做将导致编译错误。 @@ -102,6 +65,7 @@ func swapTwoValues(_ a: inout T, _ b: inout T) { b = temporaryA } ``` + `swapTwoValues(_:_:)` 和 `swapTwoInts(_:_:)` 函数体内容相同,它们只在第一行不同,如下所示: ```swift @@ -109,12 +73,8 @@ func swapTwoInts(_ a: inout Int, _ b: inout Int) func swapTwoValues(_ a: inout T, _ b: inout T) ``` ------ - - 泛型版本的函数使用`占位符`类型名(这里叫做 `T` ),而不是 *实际*类型名(例如 `Int`、`String` 或 `Double`),`占位符`类型名并不关心 `T` 具体的类型,但它要求 `a` 和` b` 必须是相同的类型,`T` 的实际类型由每次调用 `swapTwoValues(_:_:)` 来决定。 - 泛型函数和非泛型函数的另外一个不同之处在于这个泛型函数名(`swapTwoValues(_:_:)`)后面跟着占位类型名(`T`),并用尖括号括起来(``)。这个尖括号告诉 Swift 那个 `T` 是 `swapTwoValues(_:_:)` 函数定义内的一个占位类型名,因此 Swift 不会去查找名为 `T `的实际类型。 `swapTwoValues(_:_:)` 函数现在可以像 `swapTwoInts(_:_:)` 那样调用,不同的是它能接受两个任意类型的值,条件是这两个值有着相同的类型。`swapTwoValues(_:_:)` 函数被调用时,`T ` 所代表的类型都会由传入的值的类型推断出来。 @@ -125,20 +85,19 @@ func swapTwoValues(_ a: inout T, _ b: inout T) var someInt = 3 var anotherInt = 107 swapTwoValues(&someInt, &anotherInt) -// someInt 现在 107, and anotherInt 现在 3 +// someInt 现在是 107,anotherInt 现在是 3 var someString = "hello" var anotherString = "world" swapTwoValues(&someString, &anotherString) -// someString 现在 "world", and anotherString 现在 "hello" - +// someString 现在是“world”,anotherString 现在是“hello” ``` > 注意 +> > 上面定义的 `swapTwoValues(_:_:)` 函数是受 `swap(_:_:)` 函数启发而实现的。后者存在于 Swift 标准库,你可以在你的应用程序中使用它。如果你在代码中需要类似 `swapTwoValues(_:_:)` 函数的功能,你可以使用已存在的 `swap(_:_:)` 函数。 - ## 类型参数 上面 `swapTwoValues(_:_:)` 例子中,占位类型 `T` 是一个类型参数的例子,类型参数指定并命名一个占位类型,并且紧随在函数名后面,使用一对尖括号括起来(例如 ``)。 @@ -148,16 +107,15 @@ swapTwoValues(&someString, &anotherString) 你可提供多个类型参数,将它们都写在尖括号中,用逗号分开。 - ## 命名类型参数 大多情况下,类型参数具有描述下的名称,例如字典 `Dictionary` 中的 `Key` 和 `Value` 及数组 `Array` 中的 `Element`,这能告诉阅读代码的人这些参数类型与泛型类型或函数之间的关系。然而,当它们之间没有有意义的关系时,通常使用单个字符来表示,例如 `T`、`U`、`V`,例如上面演示函数 `swapTwoValues(_:_:)` 中的 `T`。 -> 注意: +> 注意 +> > 请始终使用大写字母开头的驼峰命名法(例如 `T` 和 `MyTypeParameter`)来为类型参数命名,以表明它们是占位类型,而不是一个值。 - ## 泛型类型 除了泛型函数,Swift 还允许自定义*泛型类型*。这些自定义类、结构体和枚举可以适用于*任意类型*,类似于 `Array` 和 `Dictionary`。 @@ -165,7 +123,8 @@ swapTwoValues(&someString, &anotherString) 本节将向你展示如何编写一个名为 `Stack`(栈)的泛型集合类型。栈是值的有序集合,和数组类似,但比数组有更严格的操作限制。数组允许在其中任意位置插入或是删除元素。而栈只允许在集合的末端添加新的元素(称之为入栈)。类似的,栈也只能从末端移除元素(称之为出栈)。 > 注意 -> 栈的概念已被 `UINavigationController` 类用来构造视图控制器的导航结构。你通过调用 `UINavigationController` 的 `pushViewController(_:animated:)` 方法来添加新的视图控制器到导航栈,通过 `popViewControllerAnimated(_:)` 方法来从导航栈中移除视图控制器。每当你需要一个严格的”后进先出”方式来管理集合,栈都是最实用的模型。 +> +> 栈的概念已被 `UINavigationController` 类用来构造视图控制器的导航结构。你通过调用 `UINavigationController` 的 `pushViewController(_:animated:)` 方法来添加新的视图控制器到导航栈,通过 `popViewControllerAnimated(_:)` 方法来从导航栈中移除视图控制器。每当你需要一个严格的“后进先出”方式来管理集合,栈都是最实用的模型。 下图展示了入栈(push)和出栈(pop)的行为: @@ -208,6 +167,7 @@ struct Stack { } } ``` + 注意,`Stack` 基本上和 `IntStack` 相同,只是用占位类型参数 `Element` 代替了实际的 `Int` 类型。这个类型参数包裹在紧随结构体名的一对尖括号里(<`Element`>)。 `Element` 为待提供的类型定义了一个占位名。这种待提供的类型可以在结构体的定义中通过 `Element` 来引用。在这个例子中,`Element` 在如下三个地方被用作占位符: @@ -233,18 +193,18 @@ stackOfStrings.push("cuatro") ![](https://docs.swift.org/swift-book/_images/stackPushedFourStrings_2x.png) -移除并返回栈顶部的值 "cuatro",即出栈: +移除并返回栈顶部的值“cuatro”,即出栈: ```swift let fromTheTop = stackOfStrings.pop() -// fromTheTop 的值为 "cuatro",现在栈中还有 3 个字符串 +// fromTheTop 的值为“cuatro”,现在栈中还有 3 个字符串 ``` + 下图展示了如何将顶部的值出栈: ![](https://docs.swift.org/swift-book/_images/stackPoppedOneString_2x.png) - ## 泛型扩展 当对泛型类型进行扩展时,你并不需要提供类型参数列表作为定义的一部分。原始类型定义中声明的类型参数列表在扩展中可以直接使用,并且这些来自原始类型中的参数名称会被用作原始定义中类型参数的引用。 @@ -258,6 +218,7 @@ extension Stack { } } ``` + `topItem` 属性会返回 `Element` 类型的可选值。当栈为空的时候,`topItem` 会返回 `nil`;当栈不为空的时候,`topItem` 会返回 `items` 数组中的最后一个元素。 注意:这个扩展并没有定义类型参数列表。相反的,`Stack` 类型已有的类型参数名称 `Element`,被用在扩展中来表示计算型属性 `topItem` 的可选类型。 @@ -272,7 +233,6 @@ if let topItem = stackOfStrings.topItem { ``` - ## 类型约束 `swapTwoValues(_:_:)` 函数和 `Stack` 适用于任意类型。不过,如果能对泛型函数或泛型类型中添加特定的*类型约束*,这将在某些情况下非常有用。类型约束指定类型参数必须继承自指定类、遵循特定的协议或协议组合。 @@ -283,6 +243,7 @@ if let topItem = stackOfStrings.topItem { 当自定义泛型类型时,你可以定义你自己的类型约束,这些约束将提供更为强大的泛型编程能力。像 `可哈希(hashable)` 这种抽象概念根据它们的概念特征来描述类型,而不是它们的具体类型。 +> ### 类型约束语法 在一个类型参数名后面放置一个类名或者协议名,并用冒号进行分隔,来定义类型约束。下面将展示泛型函数约束的基本语法(与泛型类型的语法相同): @@ -292,6 +253,7 @@ func someFunction(someT: T, someU: U) { // 这里是泛型函数的函数体部分 } ``` + 上面这个函数有两个类型参数。第一个类型参数 `T` 必须是 `SomeClass` 子类;第二个类型参数 `U` 必须符合 `SomeProtocol` 协议。 @@ -309,6 +271,7 @@ func findIndex(ofString valueToFind: String, in array: [String]) -> Int? { return nil } ``` + `findIndex(ofString:in:)` 函数可以用于查找字符串数组中的某个字符串值: ```swift @@ -318,6 +281,7 @@ if let foundIndex = findIndex(ofString: "llama", in: strings) { } // 打印“The index of llama is 2” ``` + 如果只能查找字符串在数组中的索引,用处不是很大。不过,你可以用占位类型 `T` 替换 `String` 类型来写出具有相同功能的泛型函数 `findIndex(_:_:)`。 下面展示了 `findIndex(ofString:in:)` 函数的泛型版本 `findIndex(of:in:)`。请注意这个函数返回值的类型仍然是 `Int?`,这是因为函数返回的是一个可选的索引数,而不是从数组中得到的一个可选值。需要提醒的是,这个函数无法通过编译,原因将在后面说明: @@ -349,6 +313,7 @@ func findIndex(of valueToFind: T, in array:[T]) -> Int? { return nil } ``` + `findIndex(of:in:)` 类型参数写做 `T: Equatable`,也就意味着“任何符合 `Equatable` 协议的类型 `T`”。 `findIndex(of:in:)` 函数现在可以成功编译了,并且适用于任何符合 `Equatable` 的类型,如 `Double` 或 `String`: @@ -359,12 +324,13 @@ let doubleIndex = findIndex(of: 9.3, in: [3.14159, 0.1, 0.25]) let stringIndex = findIndex(of: "Andrea", in: ["Mike", "Malcolm", "Andrea"]) // stringIndex 类型为 Int?,其值为 2 ``` - + ## 关联类型 定义一个协议时,声明一个或多个关联类型作为协议定义的一部分将会非常有用。关联类型为协议中的某个类型提供了一个占位符名称,其代表的实际类型在协议被遵循时才会被指定。关联类型通过 `associatedtype` 关键字来指定。 + ### 关联类型实践 下面例子定义了一个 `Container` 协议,该协议定义了一个关联类型 `Item`: @@ -377,6 +343,7 @@ protocol Container { subscript(i: Int) -> Item { get } } ``` + `Container` 协议定义了三个任何遵循该协议的类型(即容器)必须提供的功能: + 必须可以通过 `append(_:)` 方法添加一个新元素到容器里。 @@ -447,8 +414,10 @@ struct Stack: Container { } } ``` + 这一次,占位类型参数 `Element` 被用作 `append(_:)` 方法的 `item` 参数和下标的返回类型。Swift 可以据此推断出 `Element` 的类型即是 `Item` 的类型。 + ### 扩展现有类型来指定关联类型 [在扩展添加协议一致性](./21_Protocols.html#adding_protocol_conformance_with_an_extension)中描述了如何利用扩展让一个已存在的类型符合一个协议,这包括使用了关联类型协议。 @@ -458,8 +427,10 @@ Swift 的 `Array` 类型已经提供 `append(_:)` 方法,`count` 属性,以 ```swift extension Array: Container {} ``` + `Array` 的 `append(_:)` 方法和下标确保了 Swift 可以推断出 `Item` 具体类型。定义了这个扩展后,你可以将任意 `Array` 当作 Container 来使用。 + ### 给关联类型添加约束 你可以在协议里给关联类型添加约束来要求遵循的类型满足约束。例如,下面的代码定义了 `Container` 协议, 要求关联类型 `Item` 必须遵循 `Equatable` 协议: @@ -472,9 +443,10 @@ protocol Container { subscript(i: Int) -> Item { get } } ``` + 要遵守 `Container` 协议,`Item` 类型也必须遵守 `Equatable` 协议。 - + ### 在关联类型约束里使用协议 协议可以作为它自身的要求出现。例如,有一个协议细化了 `Container` 协议,添加了一个` suffix(_:)` 方法。`suffix(_:)` 方法返回容器中从后往前给定数量的元素,并把它们存储在一个 `Suffix` 类型的实例里。 @@ -485,6 +457,7 @@ protocol SuffixableContainer: Container { func suffix(_ size: Int) -> Suffix } ``` + 在这个协议里,`Suffix` 是一个关联类型,就像上边例子中 `Container` 的 `Item` 类型一样。`Suffix` 拥有两个约束:它必须遵循 `SuffixableContainer` 协议(就是当前定义的协议),以及它的 `Item` 类型必须是和容器里的 `Item` 类型相同。`Item` 的约束是一个 `where` 分句,它在下面带有泛型 `Where` 分句的扩展中有讨论。 这是上面 [强引用循环闭包](./23_Automatic_Reference_Counting.html#strong_reference_cycles_for_closures) 中 `Stack` 类型的扩展,它遵循了 SuffixableContainer 协议: @@ -498,15 +471,16 @@ extension Stack: SuffixableContainer { } return result } - // Inferred that Suffix is Stack. + // 推断 suffix 结果是Stack。 } var stackOfInts = Stack() stackOfInts.append(10) stackOfInts.append(20) stackOfInts.append(30) let suffix = stackOfInts.suffix(2) -// suffix contains 20 and 30 +// suffix 包含 20 和 30 ``` + 在上面的例子中,`Suffix` 是 `Stack` 的关联类型,也是 `Stack` ,所以 `Stack` 的后缀运算返回另一个 `Stack` 。另外,遵循 `SuffixableContainer` 的类型可以拥有一个与它自己不同的 `Suffix` 类型——也就是说后缀运算可以返回不同的类型。比如说,这里有一个非泛型 `IntStack` 类型的扩展,它遵循了 `SuffixableContainer` 协议,使用 `Stack` 作为它的后缀类型而不是 `IntStack`: ```swift @@ -518,12 +492,11 @@ extension IntStack: SuffixableContainer { } return result } - // Inferred that Suffix is Stack. + // 推断 suffix 结果是 Stack。 } ``` - ## 泛型 Where 语句 [类型约束](#type_constraints)让你能够为泛型函数、下标、类型的类型参数定义一些强制要求。 @@ -555,6 +528,7 @@ func allItemsMatch return true } ``` + 这个函数接受 `someContainer` 和 `anotherContainer` 两个参数。参数 `someContainer` 的类型为 `C1`,参数 `anotherContainer` 的类型为 `C2`。`C1` 和 `C2` 是容器的两个占位类型参数,函数被调用时才能确定它们的具体类型。 这个函数的类型参数列表还定义了对两个类型参数的要求: @@ -564,7 +538,7 @@ func allItemsMatch + `C1` 的 `Item` 必须和 `C2` 的 `Item` 类型相同(写作 `C1.Item == C2.Item`)。 + `C1` 的 `Item` 必须符合 `Equatable` 协议(写作 `C1.Item: Equatable`)。 -前两个要求定义在函数的类型形式参数列表里,后两个要求定义在了函数的泛型 `where` 分句中 +前两个要求定义在函数的类型形式参数列表里,后两个要求定义在了函数的泛型 `where` 分句中。 这些要求意味着: @@ -600,11 +574,10 @@ if allItemsMatch(stackOfStrings, arrayOfStrings) { } // 打印“All items match.” ``` + 上面的例子创建 `Stack` 实例来存储 `String` 值,然后将三个字符串压栈。这个例子还通过数组字面量创建了一个 `Array` 实例,数组中包含同栈中一样的三个字符串。即使栈和数组是不同的类型,但它们都遵从 `Container` 协议,而且它们都包含相同类型的值。因此你可以用这两个容器作为参数来调用 `allItemsMatch(_:_:)` 函数。在上面的例子中,`allItemsMatch(_:_:)` 函数正确地显示了这两个容器中的所有元素都是相互匹配的。 - - ## 具有泛型 Where 子句的扩展 你也可以使用泛型 `where` 子句作为扩展的一部分。基于以前的例子,下面的示例扩展了泛型 `Stack` 结构体,添加一个 `isTop(_:)` 方法。 @@ -642,6 +615,7 @@ let notEquatableValue = NotEquatable() notEquatableStack.push(notEquatableValue) notEquatableStack.isTop(notEquatableValue) // 报错 ``` + 你可以使用泛型 `where` 子句去扩展一个协议。基于以前的示例,下面的示例扩展了 `Container` 协议,添加一个 `startsWith(_:)` 方法。 ```swift @@ -678,12 +652,12 @@ extension Container where Item == Double { print([1260.0, 1200.0, 98.6, 37.0].average()) // 打印“648.9” ``` + 此示例将一个 `average()` 方法添加到 `Item` 类型为 `Double` 的容器中。此方法遍历容器中的元素将其累加,并除以容器的数量计算平均值。它将数量从 `Int` 转换为 `Double` 确保能够进行浮点除法。 就像可以在其他地方写泛型 `where` 子句一样,你可以在一个泛型 `where` 子句中包含多个条件作为扩展的一部分。用逗号分隔列表中的每个条件。 - ## 具有泛型 Where 子句的关联类型 你可以在关联类型后面加上具有泛型 `where` 的字句。例如,建立一个包含迭代器(`Iterator`)的容器,就像是标准库中使用的 `Sequence` 协议那样。你应该这么写: @@ -699,6 +673,7 @@ protocol Container { func makeIterator() -> Iterator } ``` + 迭代器(`Iterator`)的泛型 `where` 子句要求:无论迭代器是什么类型,迭代器中的元素类型,必须和容器项目的类型保持一致。`makeIterator()` 则提供了容器的迭代器的访问接口。 一个协议继承了另一个协议,你通过在协议声明的时候,包含泛型 `where` 子句,来添加了一个约束到被继承协议的关联类型。例如,下面的代码声明了一个 `ComparableContainer` 协议,它要求所有的 `Item` 必须是 `Comparable` 的。 @@ -706,8 +681,8 @@ protocol Container { ```swift protocol ComparableContainer: Container where Item: Comparable { } ``` - + ## 泛型下标 下标可以是泛型,它们能够包含泛型 `where` 子句。你可以在 `subscript` 后用尖括号来写占位符类型,你还可以在下标代码块花括号前写 `where` 子句。例如: @@ -731,4 +706,4 @@ extension Container { + 下标使用的单一的参数,`indices`,必须是 `Indices` 的实例。 + 泛型 `where` 子句要求 `Sequence(Indices)`的迭代器,其所有的元素都是 `Int` 类型。这样就能确保在序列(`Sequence`)中的索引和容器(`Container`)里面的索引类型是一致的。 -综合一下,这些约束意味着,传入到 `indices` 下标,是一个整型的序列。 \ No newline at end of file +综合一下,这些约束意味着,传入到 `indices` 下标,是一个整型的序列。 From 4c3ad3d2f885722f34cae28afe26f966ea3157cf Mon Sep 17 00:00:00 2001 From: Chi Zhang Date: Mon, 21 Jan 2019 10:54:45 +0800 Subject: [PATCH 018/107] tiny changes (#859) --- source/chapter2/11_Methods.md | 38 ++++++++++++++-------------- source/chapter2/25_Access_Control.md | 16 ++++++------ 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/source/chapter2/11_Methods.md b/source/chapter2/11_Methods.md index c39669e6..6bb16678 100755 --- a/source/chapter2/11_Methods.md +++ b/source/chapter2/11_Methods.md @@ -72,18 +72,18 @@ func increment() { ```swift struct Point { var x = 0.0, y = 0.0 - func isToTheRightOfX(_ x: Double) -> Bool { + func isToTheRightOf(x: Double) -> Bool { return self.x > x } } let somePoint = Point(x: 4.0, y: 5.0) -if somePoint.isToTheRightOfX(1.0) { +if somePoint.isToTheRightOf(x: 1.0) { print("This point is to the right of the line where x == 1.0") } // 打印“This point is to the right of the line where x == 1.0” ``` -如果不使用 `self` 前缀,Swift 就认为两次使用的 `x` 都指的是名称为 `x` 的函数参数。 +如果不使用 `self` 前缀,Swift会认为 `x` 的两个用法都引用了名为 `x` 的方法参数。 ### 在实例方法中修改值类型 @@ -97,24 +97,24 @@ if somePoint.isToTheRightOfX(1.0) { ```swift struct Point { var x = 0.0, y = 0.0 - mutating func moveByX(_ deltaX: Double, y deltaY: Double) { + mutating func moveBy(x deltaX: Double, y deltaY: Double) { x += deltaX y += deltaY } } var somePoint = Point(x: 1.0, y: 1.0) -somePoint.moveByX(2.0, y: 3.0) +somePoint.moveBy(x: 2.0, y: 3.0) print("The point is now at (\(somePoint.x), \(somePoint.y))") // 打印“The point is now at (3.0, 4.0)” ``` -上面的 `Point` 结构体定义了一个可变方法 `moveByX(_:y:)` 来移动 `Point` 实例到给定的位置。该方法被调用时修改了这个点,而不是返回一个新的点。方法定义时加上了 `mutating` 关键字,从而允许修改属性。 +上面的 `Point` 结构体定义了一个可变方法 `moveBy(x:y :)` 来移动 `Point` 实例到给定的位置。该方法被调用时修改了这个点,而不是返回一个新的点。方法定义时加上了 `mutating` 关键字,从而允许修改属性。 注意,不能在结构体类型的常量(a constant of structure type)上调用可变方法,因为其属性不能被改变,即使属性是变量属性,详情参见[常量结构体的存储属性](./10_Properties.html#stored_properties_of_constant_structure_instances): ```swift let fixedPoint = Point(x: 3.0, y: 3.0) -fixedPoint.moveByX(2.0, y: 3.0) +fixedPoint.moveBy(x: 2.0, y: 3.0) // 这里将会报告一个错误 ``` @@ -138,26 +138,26 @@ struct Point { ```swift enum TriStateSwitch { - case Off, Low, High + case off, low, high mutating func next() { switch self { - case .Off: - self = .Low - case .Low: - self = .High - case .High: - self = .Off + case .off: + self = .low + case .low: + self = .high + case .high: + self = .off } } } -var ovenLight = TriStateSwitch.Low +var ovenLight = TriStateSwitch.low ovenLight.next() -// ovenLight 现在等于 .High +// ovenLight 现在等于 .high ovenLight.next() -// ovenLight 现在等于 .Off +// ovenLight 现在等于 .off ``` -上面的例子中定义了一个三态开关的枚举。每次调用 `next()` 方法时,开关在不同的电源状态(`Off`,`Low`,`High`)之间循环切换。 +上面的例子中定义了一个三态切换的枚举。每次调用 `next()` 方法时,开关在不同的电源状态(`off`, `low`, `high`)之间循环切换。 ## 类型方法 @@ -179,7 +179,7 @@ class SomeClass { SomeClass.someTypeMethod() ``` -在类型方法的方法体(body)中,`self` 指向这个类型本身,而不是类型的某个实例。这意味着你可以用 `self` 来消除类型属性和类型方法参数之间的歧义(类似于我们在前面处理实例属性和实例方法参数时做的那样)。 +在类型方法的方法体(body)中,`self` 属性指向这个类型本身,而不是类型的某个实例。这意味着你可以用 `self` 来消除类型属性和类型方法参数之间的歧义(类似于我们在前面处理实例属性和实例方法参数时做的那样)。 一般来说,在类型方法的方法体中,任何未限定的方法和属性名称,可以被本类中其他的类型方法和类型属性引用。一个类型方法可以直接通过类型方法的名称调用本类中的其它类型方法,而无需在方法名称前面加上类型名称。类似地,在结构体和枚举中,也能够直接通过类型属性的名称访问本类中的类型属性,而不需要前面加上类型名称。 diff --git a/source/chapter2/25_Access_Control.md b/source/chapter2/25_Access_Control.md index 8a315725..a8e9a409 100644 --- a/source/chapter2/25_Access_Control.md +++ b/source/chapter2/25_Access_Control.md @@ -155,7 +155,7 @@ private class SomePrivateClass { // 显式 private 类 ```swift func someFunction() -> (SomeInternalClass, SomePrivateClass) { - // 此处是函数实现部分 + // 此处是函数实现部分 } ``` @@ -165,7 +165,7 @@ func someFunction() -> (SomeInternalClass, SomePrivateClass) { ```swift private func someFunction() -> (SomeInternalClass, SomePrivateClass) { - // 此处是函数实现部分 + // 此处是函数实现部分 } ``` @@ -180,10 +180,10 @@ private func someFunction() -> (SomeInternalClass, SomePrivateClass) { ```swift public enum CompassPoint { - case North - case South - case East - case West + case north + case south + case east + case west } ``` @@ -208,11 +208,11 @@ public enum CompassPoint { ```swift public class A { - private func someMethod() {} + private func someMethod() {} } internal class B: A { - override internal func someMethod() {} + override internal func someMethod() {} } ``` From 8c267a3de897ee5023b2c6c2d7269442bb9b3187 Mon Sep 17 00:00:00 2001 From: BqLin Date: Tue, 22 Jan 2019 23:04:23 +0800 Subject: [PATCH 019/107] =?UTF-8?q?chapter2=2023~26=20=E7=BB=86=E8=8A=82?= =?UTF-8?q?=E4=BC=98=E5=8C=96=20(#860)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 23_Automatic_Reference_Counting 修正编辑格式,更新代码 * 24_Memory_Safety 删除多余空格与空行 * 25_Access_Control 修正标点使用,更新代码 * 26_Advanced_Operators 修正编辑小错误 --- source/chapter2/23_Automatic_Reference_Counting.md | 7 ++++--- source/chapter2/24_Memory_Safety.md | 10 +++------- source/chapter2/25_Access_Control.md | 13 ++++++++----- source/chapter2/26_Advanced_Operators.md | 8 ++++---- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/source/chapter2/23_Automatic_Reference_Counting.md b/source/chapter2/23_Automatic_Reference_Counting.md index 7c4192c2..597ff899 100755 --- a/source/chapter2/23_Automatic_Reference_Counting.md +++ b/source/chapter2/23_Automatic_Reference_Counting.md @@ -18,7 +18,7 @@ Swift 使用*自动引用计数(ARC)*机制来跟踪和管理你的应用程 然而,当 ARC 收回和释放了正在被使用中的实例,该实例的属性和方法将不能再被访问和调用。实际上,如果你试图访问这个实例,你的应用程序很可能会崩溃。 -为了确保使用中的实例不会被销毁,ARC 会跟踪和计算每一个实例正在被多少属性,常量和变量所引用。哪怕实例的引用数为1,ARC 都不会销毁这个实例。 +为了确保使用中的实例不会被销毁,ARC 会跟踪和计算每一个实例正在被多少属性,常量和变量所引用。哪怕实例的引用数为 1,ARC 都不会销毁这个实例。 为了使上述成为可能,无论你将实例赋值给属性、常量或变量,它们都会创建此实例的强引用。之所以称之为“强”引用,是因为它会将实例牢牢地保持住,只要强引用还在,实例是不允许被销毁的。 @@ -325,6 +325,7 @@ john = nil 最后的代码展示了在 `john` 变量被设为 `nil` 后 `Customer` 实例和 `CreditCard` 实例的析构器都打印出了“销毁”的信息。 > 注意 +> > 上面的例子展示了如何使用安全的无主引用。对于需要禁用运行时的安全检查的情况(例如,出于性能方面的原因),Swift 还提供了不安全的无主引用。与所有不安全的操作一样,你需要负责检查代码以确保其安全性。 > 你可以通过 `unowned(unsafe)` 来声明不安全无主引用。如果你试图在实例被销毁后,访问该实例的不安全无主引用,你的程序会尝试访问该实例之前所在的内存地址,这是一个不安全的操作。 @@ -502,7 +503,7 @@ lazy var someClosure: (Int, String) -> String = { 如果闭包没有指明参数列表或者返回类型,它们会通过上下文推断,那么可以把捕获列表和关键字 `in` 放在闭包最开始的地方: ```swift -lazy var someClosure: Void -> String = { +lazy var someClosure: () -> String = { [unowned self, weak delegate = self.delegate!] in // 这里是闭包的函数体 } @@ -527,7 +528,7 @@ class HTMLElement { let name: String let text: String? - lazy var asHTML: Void -> String = { + lazy var asHTML: () -> String = { [unowned self] in if let text = self.text { return "<\(self.name)>\(text)" diff --git a/source/chapter2/24_Memory_Safety.md b/source/chapter2/24_Memory_Safety.md index ef5239ee..aa8f36f5 100644 --- a/source/chapter2/24_Memory_Safety.md +++ b/source/chapter2/24_Memory_Safety.md @@ -34,7 +34,6 @@ print("We're number \(one)!") > 如果你曾经在单线程代码里有访问冲突,Swift 可以保证你在编译或者运行时会得到错误。对于多线程的代码,可以使用 [Thread Sanitizer](https://developer.apple.com/documentation/code_diagnostics/thread_sanitizer) 去帮助检测多线程的冲突。 - ### 内存访问性质 内存访问冲突时,要考虑内存访问上下文中的这三个性质:访问是读还是写,访问的时长,以及被访问的存储地址。特别是,冲突会发生在当你有两个访问符合下列的情况: @@ -67,7 +66,7 @@ print(myNumber) 一个函数会对它所有的 in-out 参数进行长期写访问。in-out 参数的写访问会在所有非 in-out 参数处理完之后开始,直到函数执行完毕为止。如果有多个 in-out 参数,则写访问开始的顺序与参数的顺序一致。 -长期访问的存在会造成一个结果,你不能在访问以 in-out 形式传入后的原变量,即使作用域原则和访问权限允许 —— 任何访问原变量的行为都会造成冲突。例如: +长期访问的存在会造成一个结果,你不能在访问以 in-out 形式传入后的原变量,即使作用域原则和访问权限允许——任何访问原变量的行为都会造成冲突。例如: ```swift var stepSize = 1 @@ -162,12 +161,11 @@ oscar.shareHealth(with: &oscar) // 错误:oscar 访问冲突 ``` -mutating 方法在调用期间需要对 `self` 发起写访问,而同时 in-out 参数也需要写访问。在方法里,`self` 和 `teammate` 都指向了同一个存储地址 —— 就像下面展示的那样。对于同一块内存同时进行两个写访问,并且它们重叠了,就此产生了冲突。 +mutating 方法在调用期间需要对 `self` 发起写访问,而同时 in-out 参数也需要写访问。在方法里,`self` 和 `teammate` 都指向了同一个存储地址——就像下面展示的那样。对于同一块内存同时进行两个写访问,并且它们重叠了,就此产生了冲突。 ![](https://docs.swift.org/swift-book/_images/memory_share_health_oscar_2x.png) - ## 属性的访问冲突 如结构体,元组和枚举的类型都是由多个独立的值组成的,例如结构体的属性或元组的元素。因为它们都是值类型,修改值的任何一部分都是对于整个值的修改,意味着其中一个属性的读或写访问都需要访问整一个值。例如,元组元素的写访问重叠会产生冲突: @@ -198,12 +196,10 @@ func someFunction() { 上面的例子里,`oscar` 的 `health` 和 `energy` 都作为 in-out 参数传入了 `balance(_:_:)` 里。编译器可以保证内存安全,因为两个存储属性任何情况下都不会相互影响。 -限制结构体属性的重叠访问对于保证内存安全不是必要的。保证内存安全是必要的,但因为访问独占权的要求比内存安全还要更严格 —— 意味着即使有些代码违反了访问独占权的原则,也是内存安全的,所以如果编译器可以保证这种非专属的访问是安全的,那 Swift 就会允许这种行为的代码运行。特别是当你遵循下面的原则时,它可以保证结构体属性的重叠访问是安全的: +限制结构体属性的重叠访问对于保证内存安全不是必要的。保证内存安全是必要的,但因为访问独占权的要求比内存安全还要更严格——意味着即使有些代码违反了访问独占权的原则,也是内存安全的,所以如果编译器可以保证这种非专属的访问是安全的,那 Swift 就会允许这种行为的代码运行。特别是当你遵循下面的原则时,它可以保证结构体属性的重叠访问是安全的: * 你访问的是实例的存储属性,而不是计算属性或类的属性 * 结构体是本地变量的值,而非全局变量 * 结构体要么没有被闭包捕获,要么只被非逃逸闭包捕获了 如果编译器无法保证访问的安全性,它就不会允许那次访问。 - - diff --git a/source/chapter2/25_Access_Control.md b/source/chapter2/25_Access_Control.md index a8e9a409..5254094d 100644 --- a/source/chapter2/25_Access_Control.md +++ b/source/chapter2/25_Access_Control.md @@ -81,7 +81,7 @@ Swift 中的访问级别遵循一个基本原则:*不可以在某个实体中 ## 访问控制语法 -通过修饰符 `open`,`public`,`internal`,`fileprivate`,`private` 来声明实体的访问级别: +通过修饰符 `open`、`public`、`internal`、`fileprivate`、`private` 来声明实体的访问级别: ```swift public class SomePublicClass {} @@ -135,8 +135,7 @@ fileprivate class SomeFilePrivateClass { // 显式 fileprivate 类 private class SomePrivateClass { // 显式 private 类 func somePrivateMethod() {} // 隐式 private 类成员 } - -```swift +``` ### 元组类型 @@ -208,7 +207,11 @@ public enum CompassPoint { ```swift public class A { +<<<<<<< HEAD private func someMethod() {} +======= + fileprivate func someMethod() {} +>>>>>>> /25_Access_Control 修正标点使用,更新代码 } internal class B: A { @@ -220,7 +223,7 @@ internal class B: A { ```swift public class A { - private func someMethod() {} + fileprivate func someMethod() {} } internal class B: A { @@ -370,7 +373,7 @@ Extension 可以在访问级别允许的情况下对类、结构体、枚举进 ```swift protocol SomeProtocol { - func doSomething() {} + func doSomething() } ``` diff --git a/source/chapter2/26_Advanced_Operators.md b/source/chapter2/26_Advanced_Operators.md index 7c54f6ce..88b48272 100644 --- a/source/chapter2/26_Advanced_Operators.md +++ b/source/chapter2/26_Advanced_Operators.md @@ -240,7 +240,7 @@ signedOverflow = signedOverflow &- 1 运算符的*优先级*使得一些运算符优先于其他运算符;它们会先被执行。 -*结合性*定义了相同优先级的运算符是如何结合的,也就是说,是与左边结合为一组,还是与右边结合为一组。可以将其理解为“它们是与左边的表达式结合的,”或者“它们是与右边的表达式结合的。” +*结合性*定义了相同优先级的运算符是如何结合的,也就是说,是与左边结合为一组,还是与右边结合为一组。可以将其理解为“它们是与左边的表达式结合的”,或者“它们是与右边的表达式结合的”。 当考虑一个复合表达式的计算顺序时,运算符的优先级和结合性是非常重要的。举例来说,运算符优先级解释了为什么下面这个表达式的运算结果会是 `17`。 @@ -424,7 +424,7 @@ let anotherTwoThreeFour = Vector3D(x: 2.0, y: 3.0, z: 4.0) if twoThreeFour == anotherTwoThreeFour { print("These two vectors are also equivalent.") } -// Prints "These two vectors are also equivalent." +// 打印“These two vectors are also equivalent.” ``` @@ -476,8 +476,8 @@ let plusMinusVector = firstVector +- secondVector // plusMinusVector 是一个 Vector2D 实例,并且它的值为 (4.0, -2.0) ``` -这个运算符把两个向量的 `x` 值相加,同时从第一个向量的 `y` 中减去第二个向量的 `y` 。因为它本质上是属于“相加型”运算符,所以将它放置在 `+` 和 `-` 等默认中缀“相加型”运算符相同的优先级组中。关于 Swift 标准库提供的运算符,以及完整的运算符优先级组和结合性设置,请参考 [运算符声明](https://developer.apple.com/documentation/swift/swift_standard_library/operator_declarations)。而更多关于优先级组以及自定义操作符和优先级组的语法,请参考[运算符声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID380) +这个运算符把两个向量的 `x` 值相加,同时从第一个向量的 `y` 中减去第二个向量的 `y` 。因为它本质上是属于“相加型”运算符,所以将它放置在 `+` 和 `-` 等默认中缀“相加型”运算符相同的优先级组中。关于 Swift 标准库提供的运算符,以及完整的运算符优先级组和结合性设置,请参考 [运算符声明](https://developer.apple.com/documentation/swift/swift_standard_library/operator_declarations)。而更多关于优先级组以及自定义操作符和优先级组的语法,请参考[运算符声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID380)。 > 注意 > -> 当定义前缀与后缀运算符的时候,我们并没有指定优先级。然而,如果对同一个值同时使用前缀与后缀运算符,则后缀运算符会先参与运算。 \ No newline at end of file +> 当定义前缀与后缀运算符的时候,我们并没有指定优先级。然而,如果对同一个值同时使用前缀与后缀运算符,则后缀运算符会先参与运算。 From 3224ccac8f1d614b9f27bb32420ba00fef1bf602 Mon Sep 17 00:00:00 2001 From: Bill Chan Date: Sun, 27 Jan 2019 19:58:10 +0800 Subject: [PATCH 020/107] feature:4.2-Protocols (#861) --- source/chapter2/21_Protocols.md | 265 ++++++++++++++++---------------- 1 file changed, 134 insertions(+), 131 deletions(-) diff --git a/source/chapter2/21_Protocols.md b/source/chapter2/21_Protocols.md index b1f8a6e7..150e1825 100644 --- a/source/chapter2/21_Protocols.md +++ b/source/chapter2/21_Protocols.md @@ -23,7 +23,7 @@ struct SomeStructure: FirstProtocol, AnotherProtocol { } ``` -拥有父类的类在遵循协议时,应该将父类名放在协议名之前,以逗号分隔: +若一个拥有父类的类在遵循协议时,应该将父类名放在协议名之前,以逗号分隔: ```swift class SomeClass: SomeSuperClass, FirstProtocol, AnotherProtocol { @@ -34,11 +34,11 @@ class SomeClass: SomeSuperClass, FirstProtocol, AnotherProtocol { ## 属性要求 -协议可以要求遵循协议的类型提供特定名称和类型的实例属性或类型属性。协议不指定属性是存储型属性还是计算型属性,它只指定属性的名称和类型。此外,协议还指定属性是可读的还是*可读可写的*。 +协议可以要求遵循协议的类型提供特定名称和类型的实例属性或类型属性。协议不指定属性是存储属性还是计算属性,它只指定属性的名称和类型。此外,协议还指定属性是*可读*的还是*可读可写的*。 如果协议要求属性是可读可写的,那么该属性不能是常量属性或只读的计算型属性。如果协议只要求属性是可读的,那么该属性不仅可以是可读的,如果代码需要的话,还可以是可写的。 -协议总是用 `var` 关键字来声明变量属性,在类型声明后加上 `{ set get }` 来表示属性是可读可写的,可读属性则用 `{ get }` 来表示: +协议总是用 `var` 关键字来声明变量属性,在类型声明后加上 `{ set get }` 来表示属性是*可读可写*的,*可读*属性则用 `{ get }` 来表示: ```swift protocol SomeProtocol { @@ -69,17 +69,17 @@ protocol FullyNamed { ```swift struct Person: FullyNamed { - var fullName: String + var fullName: String } let john = Person(fullName: "John Appleseed") -// john.fullName 为“John Appleseed” +// john.fullName 为 "John Appleseed" ``` 这个例子中定义了一个叫做 `Person` 的结构体,用来表示一个具有名字的人。从第一行代码可以看出,它遵循了 `FullyNamed` 协议。 -`Person` 结构体的每一个实例都有一个 `String` 类型的存储型属性 `fullName`。这正好遵循了 `FullyNamed` 协议的要求,也就意味着 `Person` 结构体正确地遵循了协议。(如果协议要求未被完全遵循,在编译时会报错。) +`Person` 结构体的每一个实例都有一个 `String` 类型的存储型属性 `fullName`。这正好满足了 `FullyNamed` 协议的要求,也就意味着 `Person` 结构体正确地符合了协议。(如果协议要求未被完全满足,在编译时会报错。) -下面是一个更为复杂的类,它适配并遵循了 `FullyNamed` 协议: +下面是一个更为复杂的类,它采纳并遵循了 `FullyNamed` 协议: ```swift class Starship: FullyNamed { @@ -94,17 +94,18 @@ class Starship: FullyNamed { } } var ncc1701 = Starship(name: "Enterprise", prefix: "USS") -// ncc1701.fullName 是“USS Enterprise” +// ncc1701.fullName 为 "USS Enterprise" ``` -`Starship` 类把 `fullName` 属性实现为只读的计算型属性。每一个 `Starship` 类的实例都有一个名为 `name` 的非可选属性和一个名为 `prefix` 的可选属性。 当 `prefix` 存在时,计算型属性 `fullName` 会将 `prefix` 插入到 `name` 之前,从而为星际飞船构建一个全名。 +`Starship` 类只能把 `fullName` 作为只读的计算属性来实现。每一个 `Starship` 类的实例都有一个名为 `name` 的非可选属性和一个名为 `prefix` 的可选属性。 当 `prefix` 存在时,计算属性 `fullName` 会将 `prefix` 插入到 `name` 之前,从而得到一个带有 `prefix` 的 `fullName`。 + ## 方法要求 -协议可以要求遵循协议的类型实现某些指定的实例方法或类方法。这些方法作为协议的一部分,像普通方法一样放在协议的定义中,但是不需要大括号和方法体。可以在协议中定义具有可变参数的方法,和普通方法的定义方式相同。但是,不支持为协议中的方法的参数提供默认值。 +协议可以要求遵循协议的类型实现某些指定的实例方法或类方法。这些方法作为协议的一部分,像普通方法一样放在协议的定义中,但是不需要大括号和方法体。可以在协议中定义具有可变参数的方法,和普通方法的定义方式相同。但是,不支持为协议中的方法提供默认参数。 -正如属性要求中所述,在协议中定义类方法的时候,总是使用 `static` 关键字作为前缀。当类类型遵循协议时,除了 `static` 关键字,还可以使用 `class` 关键字作为前缀: +正如属性要求中所述,在协议中定义类方法的时候,总是使用 `static` 关键字作为前缀。即使在类实现时,类方法要求使用 `class` 或 `static` 作为关键字前缀,前面的规则仍然适用: ```swift protocol SomeProtocol { @@ -116,38 +117,38 @@ protocol SomeProtocol { ```swift protocol RandomNumberGenerator { - func random() -> Double + func random() -> Double } ``` -`RandomNumberGenerator` 协议要求遵循协议的类型必须拥有一个名为 `random`, 返回值类型为 `Double` 的实例方法。尽管这里并未指明,但是我们假设返回值是从0.0到(但不包括)1.0。 +`RandomNumberGenerator` 协议要求遵循协议的类型必须拥有一个名为 `random`, 返回值类型为 `Double` 的实例方法。尽管这里并未指明,但是我们假设返回值是从 `0.0` 到(但不包括)`1.0`。 `RandomNumberGenerator` 协议并不关心每一个随机数是怎样生成的,它只要求必须提供一个随机数生成器。 -如下所示,下边是一个遵循 `RandomNumberGenerator` 协议的类。该类实现了一个叫做 *线性同余生成器(linear congruential generator)* 的伪随机数算法。 +如下所示,下边是一个遵循并符合 `RandomNumberGenerator` 协议的类。该类实现了一个叫做 *线性同余生成器(linear congruential generator)* 的伪随机数算法。 ```swift class LinearCongruentialGenerator: RandomNumberGenerator { - var lastRandom = 42.0 - let m = 139968.0 - let a = 3877.0 - let c = 29573.0 - func random() -> Double { - lastRandom = ((lastRandom * a + c).truncatingRemainder(dividingBy:m)) - return lastRandom / m - } + var lastRandom = 42.0 + let m = 139968.0 + let a = 3877.0 + let c = 29573.0 + func random() -> Double { + lastRandom = ((lastRandom * a + c).truncatingRemainder(dividingBy:m)) + return lastRandom / m + } } let generator = LinearCongruentialGenerator() print("Here's a random number: \(generator.random())") -// 打印“Here's a random number: 0.37464991998171” +// 打印 “Here's a random number: 0.37464991998171” print("And another one: \(generator.random())") -// 打印“And another one: 0.729023776863283” +// 打印 “And another one: 0.729023776863283” ``` ## 异变方法要求 -有时需要在方法中改变(或*异变*)方法所属的实例。例如,在值类型(即结构体和枚举)的实例方法中,将 `mutating` 关键字作为方法的前缀,写在 `func` 关键字之前,表示可以在该方法中修改它所属的实例以及实例的任意属性的值。这一过程在[在实例方法中修改值类型](./11_Methods.html#modifying_value_types_from_within_instance_methods)章节中有详细描述。 +有时需要在方法中改变(或*异变*)方法所属的实例。例如,在值类型(即结构体和枚举)的实例方法中,将 `mutating` 关键字作为方法的前缀,写在 `func` 关键字之前,表示可以在该方法中修改它所属的实例以及实例的任意属性的值。这一过程在 [在实例方法中修改值类型](./11_Methods.html#modifying_value_types_from_within_instance_methods) 章节中有详细描述。 如果你在协议中定义了一个实例方法,该方法会改变遵循该协议的类型的实例,那么在定义协议时需要在方法前加 `mutating` 关键字。这使得结构体和枚举能够遵循此协议并满足此方法要求。 @@ -155,13 +156,13 @@ print("And another one: \(generator.random())") > > 实现协议中的 `mutating` 方法时,若是类类型,则不用写 `mutating` 关键字。而对于结构体和枚举,则必须写 `mutating` 关键字。 -如下所示,`Togglable` 协议只要求实现一个名为 `toggle` 的实例方法。根据名称的暗示,`toggle()` 方法将改变实例属性,从而切换遵循该协议类型的实例的状态。 +如下所示,`Togglable` 协议只定义了一个名为 `toggle` 的实例方法。顾名思义,`toggle()` 方法将改变实例属性,从而切换遵循该协议类型的实例的状态。 `toggle()` 方法在定义的时候,使用 `mutating` 关键字标记,这表明当它被调用时,该方法将会改变遵循协议的类型的实例: ```swift protocol Togglable { - mutating func toggle() + mutating func toggle() } ``` @@ -209,13 +210,13 @@ class SomeClass: SomeProtocol { } ``` -使用 `required` 修饰符可以确保所有子类也必须提供此构造器实现,从而也能遵循协议。 +使用 `required` 修饰符可以确保所有子类也必须提供此构造器实现,从而也能符合协议。 -关于 `required` 构造器的更多内容,请参考[必要构造器](./14_Initialization.html#required_initializers)。 +关于 `required` 构造器的更多内容,请参考 [必要构造器](./14_Initialization.html#required_initializers)。 > 注意 > -> 如果类已经被标记为 `final`,那么不需要在协议构造器的实现中使用 `required` 修饰符,因为 `final` 类不能有子类。关于 `final` 修饰符的更多内容,请参见[防止重写](./13_Inheritance.html#preventing_overrides)。 +> 如果类已经被标记为 `final`,那么不需要在协议构造器的实现中使用 `required` 修饰符,因为 `final` 类不能有子类。关于 `final` 修饰符的更多内容,请参见 [防止重写](./13_Inheritance.html#preventing_overrides)。 如果一个子类重写了父类的指定构造器,并且该构造器满足了某个协议的要求,那么该构造器的实现需要同时标注 `required` 和 `override` 修饰符: @@ -241,14 +242,14 @@ class SomeSubClass: SomeSuperClass, SomeProtocol { ### 可失败构造器要求 -协议还可以为遵循协议的类型定义可失败构造器要求,详见[可失败构造器](./14_Initialization.html#failable_initializers)。 +协议还可以为遵循协议的类型定义可失败构造器要求,详见 [可失败构造器](./14_Initialization.html#failable_initializers)。 遵循协议的类型可以通过可失败构造器(`init?`)或非可失败构造器(`init`)来满足协议中定义的可失败构造器要求。协议中定义的非可失败构造器要求可以通过非可失败构造器(`init`)或隐式解包可失败构造器(`init!`)来满足。 ## 协议作为类型 -尽管协议本身并未实现任何功能,但是协议可以被当做一个成熟的类型来使用。 +尽管协议本身并未实现任何功能,但是协议可以被当做一个功能完备的类型来使用。 协议可以像其他普通类型一样使用,使用场景如下: @@ -264,15 +265,15 @@ class SomeSubClass: SomeSuperClass, SomeProtocol { ```swift class Dice { - let sides: Int - let generator: RandomNumberGenerator - init(sides: Int, generator: RandomNumberGenerator) { - self.sides = sides - self.generator = generator - } - func roll() -> Int { - return Int(generator.random() * Double(sides)) + 1 - } + let sides: Int + let generator: RandomNumberGenerator + init(sides: Int, generator: RandomNumberGenerator) { + self.sides = sides + self.generator = generator + } + func roll() -> Int { + return Int(generator.random() * Double(sides)) + 1 + } } ``` @@ -289,7 +290,7 @@ class Dice { ```swift var d6 = Dice(sides: 6, generator: LinearCongruentialGenerator()) for _ in 1...5 { - print("Random dice roll is \(d6.roll())") + print("Random dice roll is \(d6.roll())") } // Random dice roll is 3 // Random dice roll is 5 @@ -317,40 +318,42 @@ protocol DiceGameDelegate { } ``` -`DiceGame` 协议可以被任意涉及骰子的游戏遵循。`DiceGameDelegate` 协议可以被任意类型遵循,用来追踪 `DiceGame` 的游戏过程。 +`DiceGame` 协议可以被任意涉及骰子的游戏遵循。 + +`DiceGameDelegate` 协议可以被任意类型遵循,用来追踪 `DiceGame` 的游戏过程。为了防止强引用导致的循环引用问题,可以把协议声明为弱引用,更多相关的知识请看 [类实例之间的循环强引用](./23_Automatic_Reference_Counting.html#strong_reference_cycles_between_class_instances),当协议标记为类专属可以使 `SnakesAndLadders` 类在声明协议时强制要使用弱引用。若要声明类专属的协议就必须继承于 `AnyObject` ,更多请看 [类专属的协议](#class_only_protocol)。 如下所示,`SnakesAndLadders` 是 [控制流](./05_Control_Flow.html) 章节引入的蛇梯棋游戏的新版本。新版本使用 `Dice` 实例作为骰子,并且实现了 `DiceGame` 和 `DiceGameDelegate` 协议,后者用来记录游戏的过程: ```swift class SnakesAndLadders: DiceGame { - let finalSquare = 25 - let dice = Dice(sides: 6, generator: LinearCongruentialGenerator()) - var square = 0 - var board: [Int] - init() { - board = [Int](repeating: 0, count: finalSquare + 1) - board[03] = +08; board[06] = +11; board[09] = +09; board[10] = +02 - board[14] = -10; board[19] = -11; board[22] = -02; board[24] = -08 - } - var delegate: DiceGameDelegate? - func play() { - square = 0 - delegate?.gameDidStart(self) - gameLoop: while square != finalSquare { - let diceRoll = dice.roll() - delegate?.game(self, didStartNewTurnWithDiceRoll: diceRoll) - switch square + diceRoll { - case finalSquare: - break gameLoop - case let newSquare where newSquare > finalSquare: - continue gameLoop - default: - square += diceRoll - square += board[square] - } - } - delegate?.gameDidEnd(self) - } + let finalSquare = 25 + let dice = Dice(sides: 6, generator: LinearCongruentialGenerator()) + var square = 0 + var board: [Int] + init() { + board = Array(repeating: 0, count: finalSquare + 1) + board[03] = +08; board[06] = +11; board[09] = +09; board[10] = +02 + board[14] = -10; board[19] = -11; board[22] = -02; board[24] = -08 + } + var delegate: DiceGameDelegate? + func play() { + square = 0 + delegate?.gameDidStart(self) + gameLoop: while square != finalSquare { + let diceRoll = dice.roll() + delegate?.game(self, didStartNewTurnWithDiceRoll: diceRoll) + switch square + diceRoll { + case finalSquare: + break gameLoop + case let newSquare where newSquare > finalSquare: + continue gameLoop + default: + square += diceRoll + square += board[square] + } + } + delegate?.gameDidEnd(self) + } } ``` @@ -392,7 +395,7 @@ class DiceGameTracker: DiceGameDelegate { `gameDidStart(_:)` 方法从 `game` 参数获取游戏信息并打印。`game` 参数是 `DiceGame` 类型而不是 `SnakeAndLadders` 类型,所以在 `gameDidStart(_:)` 方法中只能访问 `DiceGame` 协议中的内容。当然了,`SnakeAndLadders` 的方法也可以在类型转换之后调用。在上例代码中,通过 `is` 操作符检查 `game` 是否为 `SnakesAndLadders` 类型的实例,如果是,则打印出相应的消息。 -无论当前进行的是何种游戏,由于 `game` 遵循 `DiceGame` 协议,可以确保 `game` 含有 `dice` 属性。因此在 `gameDidStart(_:)` 方法中可以通过传入的 `game` 参数来访问 `dice` 属性,进而打印出 `dice` 的 `sides` 属性的值。 +无论当前进行的是何种游戏,由于 `game` 符合 `DiceGame` 协议,可以确保 `game` 含有 `dice` 属性。因此在 `gameDidStart(_:)` 方法中可以通过传入的 `game` 参数来访问 `dice` 属性,进而打印出 `dice` 的 `sides` 属性的值。 `DiceGameTracker` 的运行情况如下所示: @@ -413,11 +416,11 @@ game.play() ## 在扩展里添加协议遵循 -即便无法修改源代码,依然可以通过扩展令已有类型遵循协议。扩展可以为已有类型添加属性、方法、下标以及构造器,因此可以遵循协议中的相应要求。详情请在[扩展](./20_Extensions.html)章节中查看。 +即便无法修改源代码,依然可以通过扩展令已有类型遵循并符合协议。扩展可以为已有类型添加属性、方法、下标以及构造器,因此可以符合协议中的相应要求。详情请在 [扩展](./20_Extensions.html) 章节中查看。 > 注意 > -> 通过扩展令已有类型遵循协议时,该类型的所有实例也会随之获得协议中定义的各项功能。 +> 通过扩展令已有类型遵循并符合协议时,该类型的所有实例也会随之获得协议中定义的各项功能。 例如下面这个 `TextRepresentable` 协议,任何想要通过文本表示一些内容的类型都可以实现该协议。这些想要表示的内容可以是实例本身的描述,也可以是实例当前状态的文本描述: @@ -427,42 +430,42 @@ protocol TextRepresentable { } ``` -可以通过扩展,令先前提到的 `Dice` 类遵循 `TextRepresentable` 协议: +可以通过扩展,令先前提到的 `Dice` 类可以扩展来采纳和遵循 `TextRepresentable` 协议: ```swift extension Dice: TextRepresentable { var textualDescription: String { - return "A \(sides)-sided dice" - } + return "A \(sides)-sided dice" + } } ``` -通过扩展遵循协议,和在原始定义中遵循协议的效果完全相同。协议名称写在类型名之后,以冒号隔开,然后在扩展的大括号内实现协议要求的内容。 +通过扩展遵循并采纳协议,和在原始定义中遵循并符合协议的效果完全相同。协议名称写在类型名之后,以冒号隔开,然后在扩展的大括号内实现协议要求的内容。 现在所有 `Dice` 的实例都可以看做 `TextRepresentable` 类型: ```swift let d12 = Dice(sides: 12, generator: LinearCongruentialGenerator()) print(d12.textualDescription) -// 打印“A 12-sided dice” +// 打印 “A 12-sided dice” ``` -同样,`SnakesAndLadders` 类也可以通过扩展遵循 `TextRepresentable` 协议: +同样,`SnakesAndLadders` 类也可以通过扩展来采纳和遵循 `TextRepresentable` 协议: ```swift extension SnakesAndLadders: TextRepresentable { var textualDescription: String { - return "A game of Snakes and Ladders with \(finalSquare) squares" - } + return "A game of Snakes and Ladders with \(finalSquare) squares" + } } print(game.textualDescription) -// 打印“A game of Snakes and Ladders with 25 squares” +// 打印 “A game of Snakes and Ladders with 25 squares” ``` ## 有条件地遵循协议 -泛型类型可能只在某些情况下满足一个协议的要求,比如当类型的泛型形式参数遵循对应协议时。你可以通过在扩展类型时列出限制让泛型类型有条件地遵循某协议。在你遵循协议的名字后面写泛型 `where` 分句。更多关于泛型 `where` 分句,见[泛型 Where 分句](./22_Generics.html##where_clauses)。 +泛型类型可能只在某些情况下满足一个协议的要求,比如当类型的泛型形式参数遵循对应协议时。你可以通过在扩展类型时列出限制让泛型类型有条件地遵循某协议。在你采纳协议的名字后面写泛型 `where` 分句。更多关于泛型 `where` 分句,见 [泛型 Where 分句](./22_Generics.html##where_clauses)。 下面的扩展让 `Array` 类型只要在存储遵循 `TextRepresentable` 协议的元素时就遵循 `TextRepresentable` 协议。 @@ -475,13 +478,13 @@ extension Array: TextRepresentable where Element: TextRepresentable { } let myDice = [d6, d12] print(myDice.textualDescription) -// 打印“[A 6-sided dice, A 12-sided dice]” +// 打印 "[A 6-sided dice, A 12-sided dice]" ``` -## 在扩展里声明遵循协议 +## 在扩展里声明采纳协议 -当一个类型已经遵循了某个协议中的所有要求,却还没有声明遵循该协议时,可以通过空扩展体的扩展遵循该协议: +当一个类型已经符合了某个协议中的所有要求,却还没有声明采纳该协议时,可以通过空的扩展来让它采纳该协议: ```swift struct Hamster { @@ -499,7 +502,7 @@ extension Hamster: TextRepresentable {} let simonTheHamster = Hamster(name: "Simon") let somethingTextRepresentable: TextRepresentable = simonTheHamster print(somethingTextRepresentable.textualDescription) -// 打印“A hamster named Simon” +// 打印 “A hamster named Simon” ``` > 注意 @@ -509,7 +512,7 @@ print(somethingTextRepresentable.textualDescription) ## 协议类型的集合 -协议类型可以在数组或者字典这样的集合中使用,在[协议类型](./21_Protocols.html##protocols_as_types)提到了这样的用法。下面的例子创建了一个元素类型为 `TextRepresentable` 的数组: +协议类型可以在数组或者字典这样的集合中使用,在 [协议类型](./21_Protocols.html##protocols_as_types) 提到了这样的用法。下面的例子创建了一个元素类型为 `TextRepresentable` 的数组: ```swift let things: [TextRepresentable] = [game, d12, simonTheHamster] @@ -519,14 +522,14 @@ let things: [TextRepresentable] = [game, d12, simonTheHamster] ```swift for thing in things { - print(thing.textualDescription) + print(thing.textualDescription) } // A game of Snakes and Ladders with 25 squares // A 12-sided dice // A hamster named Simon ``` -`thing` 是 `TextRepresentable` 类型而不是 `Dice`,`DiceGame`,`Hamster` 等类型,即使实例在幕后确实是这些类型中的一种。由于 `thing` 是 `TextRepresentable` 类型,任何 `TextRepresentable` 的实例都有一个 `textualDescription` 属性,所以在每次循环中可以安全地访问 `thing.textualDescription`。 +注意 `thing` 常量是 `TextRepresentable` 类型而不是 `Dice`,`DiceGame`,`Hamster` 等类型,即使实例在幕后确实是这些类型中的一种。由于 `thing` 是 `TextRepresentable` 类型,任何 `TextRepresentable` 的实例都有一个 `textualDescription` 属性,所以在每次循环中可以安全地访问 `thing.textualDescription`。 ## 协议的继承 @@ -543,13 +546,13 @@ protocol InheritingProtocol: SomeProtocol, AnotherProtocol { ```swift protocol PrettyTextRepresentable: TextRepresentable { - var prettyTextualDescription: String { get } + var prettyTextualDescription: String { get } } ``` 例子中定义了一个新的协议 `PrettyTextRepresentable`,它继承自 `TextRepresentable` 协议。任何遵循 `PrettyTextRepresentable` 协议的类型在满足该协议的要求时,也必须满足 `TextRepresentable` 协议的要求。在这个例子中,`PrettyTextRepresentable` 协议额外要求遵循协议的类型提供一个返回值为 `String` 类型的 `prettyTextualDescription` 属性。 -如下所示,扩展 `SnakesAndLadders`,使其遵循 `PrettyTextRepresentable` 协议: +如下所示,扩展 `SnakesAndLadders`,使其遵循并符合 `PrettyTextRepresentable` 协议: ```swift extension SnakesAndLadders: PrettyTextRepresentable { @@ -585,21 +588,22 @@ print(game.prettyTextualDescription) ``` + ## 类专属的协议 -你通过添加 `AnyObject` 关键字到协议的继承列表,就可以限制协议只能被类类型遵循(以及非结构体或者非枚举的类型)。 +你通过添加 `AnyObject` 关键字到协议的继承列表,就可以限制协议只能被类类型采纳(以及非结构体或者非枚举的类型)。 ```swift -protocol SomeClassOnlyProtocol: class, SomeInheritedProtocol { +protocol SomeClassOnlyProtocol: AnyObject, SomeInheritedProtocol { // 这里是类专属协议的定义部分 } ``` -在以上例子中,协议 `SomeClassOnlyProtocol` 只能被类类型遵循。如果尝试让结构体或枚举类型遵循 `SomeClassOnlyProtocol` 协议,则会导致编译时错误。 +在以上例子中,协议 `SomeClassOnlyProtocol` 只能被类类型采纳。如果尝试让结构体或枚举类型采纳 `SomeClassOnlyProtocol`,则会导致编译时错误。 > 注意 > -> 当协议定义的要求需要遵循协议的类型必须是引用语义而非值语义时,应该采用类类型专属协议。关于引用语义和值语义的更多内容,请查看[结构体和枚举是值类型](./09_Classes_and_Structures.html#structures_and_enumerations_are_value_types)和[类是引用类型](./09_Classes_and_Structures.html#classes_are_reference_types)。 +> 当协议定义的要求需要遵循协议的类型必须是引用语义而非值语义时,应该采用类类型专属协议。关于引用语义和值语义的更多内容,请查看 [结构体和枚举是值类型](./09_Classes_and_Structures.html#structures_and_enumerations_are_value_types) 和 [类是引用类型](./09_Classes_and_Structures.html#classes_are_reference_types)。 ## 协议合成 @@ -626,14 +630,14 @@ func wishHappyBirthday(to celebrator: Named & Aged) { } let birthdayPerson = Person(name: "Malcolm", age: 21) wishHappyBirthday(to: birthdayPerson) -// 打印“Happy birthday Malcolm - you're 21!” +// 打印 “Happy birthday Malcolm - you're 21!” ``` -`Named` 协议包含 `String` 类型的 `name` 属性。`Aged` 协议包含 `Int` 类型的 `age` 属性。`Person` 结构体遵循了这两个协议。 +`Named` 协议包含 `String` 类型的 `name` 属性。`Aged` 协议包含 `Int` 类型的 `age` 属性。`Person` 结构体采纳了这两个协议。 -`wishHappyBirthday(to:)` 函数的参数 `celebrator` 的类型为 `Named & Aged`, 这意味着“任何同时遵循 Named 和 Aged 的协议”。它不关心参数的具体类型,只要参数遵循这两个协议即可。 +`wishHappyBirthday(to:)` 函数的参数 `celebrator` 的类型为 `Named & Aged`, 这意味着“任何同时遵循 Named 和 Aged 的协议”。它不关心参数的具体类型,只要参数符合这两个协议即可。 -上面的例子创建了一个名为 `birthdayPerson` 的 `Person` 的实例,作为参数传递给了 `wishHappyBirthday(to:)` 函数。因为 `Person` 同时遵循这两个协议,所以这个参数合法,函数将打印生日问候语。 +上面的例子创建了一个名为 `birthdayPerson` 的 `Person` 的实例,作为参数传递给了 `wishHappyBirthday(to:)` 函数。因为 `Person` 同时符合这两个协议,所以这个参数合法,函数将打印生日问候语。 这里有一个例子:将 Location 类和前面的 Named 协议进行组合: @@ -656,24 +660,24 @@ class City: Location, Named { func beginConcert(in location: Location & Named) { print("Hello, \(location.name)!") } - + let seattle = City(name: "Seattle", latitude: 47.6, longitude: -122.3) beginConcert(in: seattle) -// 打印“Hello, Seattle!” +// 打印 "Hello, Seattle!" ``` -`beginConcert(in:)` 方法接受一个类型为 `Location & Named` 的参数,这意味着“任何 Location 的子类,并且遵循 Named 协议”。例如,City 就满足这样的条件。 +`beginConcert(in:)` 函数接受一个类型为 `Location & Named` 的参数,这意味着“任何 Location 的子类,并且遵循 Named 协议”。例如,City 就满足这样的条件。 -将 birthdayPerson 传入 `beginConcert(in:)` 函数是不合法的,因为 Person 不是一个 Location 的子类。就像,如果你新建一个类继承与 Location,但是没有遵循 Named 协议,你用这个类的实例去调用 `beginConcert(in:)` 函数也是不合法的。 +将 birthdayPerson 传入 `beginConcert(in:)` 函数是不合法的,因为 Person 不是 Location 的子类。同理,如果你新建一个类继承于 Location,但是没有遵循 Named 协议,而用这个类的实例去调用 `beginConcert(in:)` 函数也是非法的。 -## 检查协议遵循 +## 检查协议一致性 -你可以使用[类型转换](./18_Type_Casting.html)中描述的 `is` 和 `as` 操作符来检查协议遵循,即是否遵循了某协议,并且可以转换到指定的协议类型。检查和转换到某个协议类型在语法上和类型的检查和转换完全相同: +你可以使用[类型转换](./18_Type_Casting.html)中描述的 `is` 和 `as` 操作符来检查协议一致性,即是否符合某协议,并且可以转换到指定的协议类型。检查和转换协议的语法与检查和转换类型是完全一样的: -* `is` 用来检查实例是否遵循某个协议,若遵循则返回 `true`,否则返回 `false`。 -* `as?` 返回一个可选值,当实例遵循某个协议时,返回类型为协议类型的可选值,否则返回 `nil`。 -* `as!` 将实例强制向下转换到某个协议类型,如果强转失败,会引发运行时错误。 +* `is` 用来检查实例是否符合某个协议,若符合则返回 `true`,否则返回 `false`; +* `as?` 返回一个可选值,当实例符合某个协议时,返回类型为协议类型的可选值,否则返回 `nil`; +* `as!` 将实例强制向下转换到某个协议类型,如果强转失败,将触发运行时错误。 下面的例子定义了一个 `HasArea` 协议,该协议定义了一个 `Double` 类型的可读属性 `area`: @@ -704,8 +708,8 @@ class Country: HasArea { ```swift class Animal { - var legs: Int - init(legs: Int) { self.legs = legs } + var legs: Int + init(legs: Int) { self.legs = legs } } ``` @@ -713,15 +717,15 @@ class Animal { ```swift let objects: [AnyObject] = [ - Circle(radius: 2.0), - Country(area: 243_610), - Animal(legs: 4) + Circle(radius: 2.0), + Country(area: 243_610), + Animal(legs: 4) ] ``` `objects` 数组使用字面量初始化,数组包含一个 `radius` 为 `2` 的 `Circle` 的实例,一个保存了英国国土面积的 `Country` 实例和一个 `legs` 为 `4` 的 `Animal` 实例。 -如下所示,`objects` 数组可以被迭代,并对迭代出的每一个元素进行检查,看它是否遵循 `HasArea` 协议: +如下所示,`objects` 数组可以被迭代,并对迭代出的每一个元素进行检查,看它是否符合 `HasArea` 协议: ```swift for object in objects { @@ -736,7 +740,7 @@ for object in objects { // Something that doesn't have an area ``` -当迭代出的元素遵循 `HasArea` 协议时,将 `as?` 操作符返回的可选值通过可选绑定,绑定到 `objectWithArea` 常量上。`objectWithArea` 是 `HasArea` 协议类型的实例,因此 `area` 属性可以被访问和打印。 +当迭代出的元素符合 `HasArea` 协议时,将 `as?` 操作符返回的可选值通过可选绑定,绑定到 `objectWithArea` 常量上。`objectWithArea` 是 `HasArea` 协议类型的实例,因此 `area` 属性可以被访问和打印。 `objects` 数组中的元素的类型并不会因为强转而丢失类型信息,它们仍然是 `Circle`,`Country`,`Animal` 类型。然而,当它们被赋值给 `objectWithArea` 常量时,只被视为 `HasArea` 类型,因此只有 `area` 属性能够被访问。 @@ -749,7 +753,7 @@ for object in objects { 协议中的可选要求可通过可选链式调用来使用,因为遵循协议的类型可能没有实现这些可选要求。类似 `someOptionalMethod?(someArgument)` 这样,你可以在可选方法名称后加上 `?` 来调用可选方法。详细内容可在[可选链式调用](./16_Optional_Chaining.html)章节中查看。 -下面的例子定义了一个名为 `Counter` 的用于整数计数的类,它使用外部的数据源来提供每次的增量。数据源由 `CounterDataSource` 协议定义,包含两个可选要求: +下面的例子定义了一个名为 `Counter` 的用于整数计数的类,它使用外部的数据源来提供每次的增量。数据源由 `CounterDataSource` 协议定义,它包含两个可选要求: ```swift @objc protocol CounterDataSource { @@ -786,7 +790,7 @@ class Counter { 这里使用了两层可选链式调用。首先,由于 `dataSource` 可能为 `nil`,因此在 `dataSource` 后边加上了 `?`,以此表明只在 `dataSource` 非空时才去调用 `increment(forCount:)` 方法。其次,即使 `dataSource` 存在,也无法保证其是否实现了 `increment(forCount:)` 方法,因为这个方法是可选的。因此,`increment(forCount:)` 方法同样使用可选链式调用进行调用,只有在该方法被实现的情况下才能调用它,所以在 `increment(forCount:)` 方法后边也加上了 `?`。 -调用 `increment(forCount:)` 方法在上述两种情形下都有可能失败,所以返回值为 `Int?` 类型。虽然在 `CounterDataSource` 协议中,`increment(forCount:)` 的返回值类型是非可选 `Int`。另外,即使这里使用了两层可选链式调用,最后的返回结果依旧是单层的可选类型。关于这一点的更多信息,请查阅[连接多层可选链式调用](./16_Optional_Chaining) +调用 `increment(forCount:)` 方法在上述两种情形下都有可能失败,所以返回值为 `Int?` 类型。虽然在 `CounterDataSource` 协议中,`increment(forCount:)` 的返回值类型是非可选 `Int`。另外,即使这里使用了两层可选链式调用,最后的返回结果依旧是单层的可选类型。关于这一点的更多信息,请查阅 [连接多层可选链式调用](./16_Optional_Chaining) 在调用 `increment(forCount:)` 方法后,`Int?` 型的返回值通过可选绑定解包并赋值给常量 `amount`。如果可选值确实包含一个数值,也就是说,数据源和方法都存在,数据源方法返回了一个有效值。之后便将解包后的 `amount` 加到 `count` 上,增量操作完成。 @@ -815,12 +819,12 @@ for _ in 1...4 { // 12 ``` -上述代码新建了一个 `Counter` 实例,并将它的数据源设置为一个 `ThreeSource` 的实例,然后调用 `increment()` 方法四次。和预期一样,每次调用都会将 `count` 的值增加 `3`. +上述代码新建了一个 `Counter` 实例,并将它的数据源设置为一个 `ThreeSource` 的实例,然后调用 `increment()` 方法 `4` 次。按照预期预期一样,每次调用都会将 `count` 的值增加 `3`. 下面是一个更为复杂的数据源 `TowardsZeroSource`,它将使得最后的值变为 `0`: ```swift -@objc class TowardsZeroSource: NSObject, CounterDataSource { +class TowardsZeroSource: NSObject, CounterDataSource { func increment(forCount count: Int) -> Int { if count == 0 { return 0 @@ -833,7 +837,7 @@ for _ in 1...4 { } ``` -`TowardsZeroSource` 实现了 `CounterDataSource` 协议中的 `increment(forCount:)` 方法,以 `count` 参数为依据,计算出每次的增量。如果 `count` 已经为 `0`,此方法返回 `0`,以此表明之后不应再有增量操作发生。 +`TowardsZeroSource` 实现了 `CounterDataSource` 协议中的 `increment(forCount:)` 方法,以 `count` 参数为依据,计算出每次的增量。如果 `count` 已经为 `0`,此方法将返回 `0`,以此表明之后不应再有增量操作发生。 你可以使用 `TowardsZeroSource` 实例将 `Counter` 实例来从 `-4` 增加到 `0`。一旦增加到 `0`,数值便不会再有变动: @@ -866,14 +870,14 @@ extension RandomNumberGenerator { } ``` -通过协议扩展,所有遵循协议的类型,都能自动获得这个扩展所增加的方法实现,无需任何额外修改: +通过协议扩展,所有遵循协议的类型,都能自动获得这个扩展所增加的方法实现而无需任何额外修改: ```swift let generator = LinearCongruentialGenerator() print("Here's a random number: \(generator.random())") -// 打印“Here's a random number: 0.37464991998171” +// 打印 “Here's a random number: 0.37464991998171” print("And here's a random Boolean: \(generator.randomBool())") -// 打印“And here's a random Boolean: true” +// 打印 “And here's a random Boolean: true” ``` @@ -885,7 +889,7 @@ print("And here's a random Boolean: \(generator.randomBool())") > > 通过协议扩展为协议要求提供的默认实现和可选的协议要求不同。虽然在这两种情况下,遵循协议的类型都无需自己实现这些要求,但是通过扩展提供的默认实现可以直接调用,而无需使用可选链式调用。 -例如,`PrettyTextRepresentable` 协议继承自 `TextRepresentable` 协议,可以为其提供一个默认的 `prettyTextualDescription` 属性,只是简单地返回 `textualDescription` 属性的值: +例如,`PrettyTextRepresentable` 协议继承自 `TextRepresentable` 协议,可以为其提供一个默认的 `prettyTextualDescription` 属性来简单地返回 `textualDescription` 属性的值: ```swift extension PrettyTextRepresentable { @@ -900,7 +904,7 @@ extension PrettyTextRepresentable { 在扩展协议的时候,可以指定一些限制条件,只有遵循协议的类型满足这些限制条件时,才能获得协议扩展提供的默认实现。这些限制条件写在协议名之后,使用 `where` 子句来描述,正如[泛型 Where 子句](./22_Generics.html#where_clauses)中所描述的。 -例如,你可以扩展 `Collection` 协议,适用于集合中的元素遵循了 `Equatable` 协议的情况。通过限制集合元素遵循 `Equatable` 协议, 作为标准库的一部分, 你可以使用 `==` 和 `!=` 操作符来检查两个元素的等价性和非等价性。 +例如,你可以扩展 `Collection` 协议,适用于集合中的元素遵循了 `Equatable` 协议的情况。通过限制集合元素遵 `Equatable` 协议, 作为标准库的一部分, 你可以使用 `==` 和 `!=` 操作符来检查两个元素的等价性和非等价性。 ```swift extension Collection where Element: Equatable { @@ -926,14 +930,13 @@ let differentNumbers = [100, 100, 200, 100, 200] 由于数组遵循 `Collection` 而且整数遵循 `Equatable`,`equalNumbers` 和 `differentNumbers` 都可以使用 `allEqual()` 方法。 - ```swift print(equalNumbers.allEqual()) -// 打印“true” +// 打印 "true" print(differentNumbers.allEqual()) -// 打印“false” +// 打印 "false" ``` > 注意 > -> 如果一个遵循的类型满足了为同一方法或属性提供实现的多个限制型扩展的要求, Swift 使用这个实现方法去匹配那个最特殊的限制。 +> 如果一个遵循的类型满足了为同一方法或属性提供实现的多个限制型扩展的要求, Swift 会使用最匹配限制的实现。 From 10395aaee181c38b101c4083b2fed57c39776fe4 Mon Sep 17 00:00:00 2001 From: Karsa Wu Date: Sun, 27 Jan 2019 21:00:21 +0800 Subject: [PATCH 021/107] =?UTF-8?q?=E5=BD=92=E6=A1=A3=E5=88=B0=E7=9B=AE?= =?UTF-8?q?=E5=89=8D=E7=9A=84=E8=B4=A1=E7=8C=AE=E8=80=85=20(#881)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 修改第二章部分细节 * update control flow * 调整 Functions 章节细节 * 重新整理翻译工作主要贡献者记录 * 更新贡献者记录文件 1. 移除与官方文档无关内容 2. 归档主要贡献者记录并附录在文档最后一页 --- source/SUMMARY.md | 16 +- source/chapter1/05_contributors.md | 101 --- source/chapter2/27_contributors.md | 613 ------------------ .../01_About_the_Language_Reference.md | 13 - source/chapter3/02_Lexical_Structure.md | 28 - source/chapter3/03_Types.md | 14 - source/chapter3/04_Expressions.md | 47 -- source/chapter3/05_Statements.md | 41 -- source/chapter3/06_Declarations.md | 63 -- source/chapter3/07_Attributes.md | 20 - source/chapter3/08_Patterns.md | 25 - .../09_Generic_Parameters_and_Arguments.md | 20 - source/chapter3/10_Summary_of_the_Grammar.md | 22 - source/contributors.md | 131 ++++ 14 files changed, 135 insertions(+), 1019 deletions(-) delete mode 100644 source/chapter1/05_contributors.md delete mode 100755 source/chapter2/27_contributors.md create mode 100755 source/contributors.md diff --git a/source/SUMMARY.md b/source/SUMMARY.md index 63c518a5..0e760d2a 100755 --- a/source/SUMMARY.md +++ b/source/SUMMARY.md @@ -1,12 +1,11 @@ # Summary -* [欢迎使用 Swift](chapter1/chapter1.md) +* 欢迎使用 Swift * [关于 Swift](chapter1/01_about_swift.md) * [版本兼容性](chapter1/02_version_compatibility.md) * [Swift 初见](chapter1/03_a_swift_tour.md) * [Swift 版本历史记录](chapter1/04_revision_history.md) - * [Swift 1.0 发布内容](v1.0.md) -* [Swift 教程](chapter2/chapter2.md) +* Swift 教程 * [基础部分](chapter2/01_The_Basics.md) * [基本运算符](chapter2/02_Basic_Operators.md) * [字符串和字符](chapter2/03_Strings_and_Characters.md) @@ -44,12 +43,5 @@ * [模式](chapter3/08_Patterns.md) * [泛型参数](chapter3/09_Generic_Parameters_and_Arguments.md) * [语法总结](chapter3/10_Summary_of_the_Grammar.md) - -* 苹果官方 Blog 官方翻译 - * [Access Control 权限控制的黑与白](chapter4/01_Access_Control.md) - * [造个类型不是梦-白话 Swift 类型创建](chapter4/02_Type_Custom.md) - * [WWDC 里面的那个“大炮打气球”](chapter4/03_Ballons.md) - * [Swift 与 C 语言指针友好合作](chapter4/04_Interacting_with_C_Pointers.md) - * [引用类型和值类型的恩怨](chapter4/05_Value_and_Reference_Types.md) - * [访问控制和 Protected](chapter4/06_Access_Control_and_Protected.md) - * [可选类型完美解决占位问题](chapter4/07_Optional_Case_Study.md) \ No newline at end of file +* 翻译贡献者 + * [翻译贡献者](contributors.md) diff --git a/source/chapter1/05_contributors.md b/source/chapter1/05_contributors.md deleted file mode 100644 index 2c6611ce..00000000 --- a/source/chapter1/05_contributors.md +++ /dev/null @@ -1,101 +0,0 @@ -# 翻译历史记录 - -## About Swift - -> 1.0 -> 翻译:[numbbbbb](https://github.com/numbbbbb) -> 校对:[yeahdongcn](https://github.com/yeahdongcn) - -> 2.0 -> 翻译+校对:[xtymichael](https://github.com/xtymichael) - -> 3.0 -> 翻译+校对:[shanks](http://codebuild.me),2016-10-06 - -> 3.0.1 -> review : 2016-11-09 - -> 3.1 -> 校对: [SketchK](https://github.com/SketchK) 2017-04-08 - -> 4.0 -> 翻译:[rain2540](https://github.com/rain2540) 2017-09-21 - -> 4.1 -> 翻译:[mylittleswift](https://github.com/mylittleswift) - -## Version Compatibility - -> 4.0 -> 翻译:[muhlenXi](https://github.com/muhlenxi) 2017-09-25 - -> 4.1 -> 翻译:[mylittleswift](https://github.com/mylittleswift) - -## A Swift Tour - -> 1.0 -> 翻译:[numbbbbb](https://github.com/numbbbbb) -> 校对:[shinyzhu](https://github.com/shinyzhu), [stanzhai](https://github.com/stanzhai) - -> 2.0 -> 翻译+校对:[xtymichael](https://github.com/xtymichael) - -> 2.2 -> 翻译:[175](https://github.com/Brian175),2016-04-09 -> 校对:[SketchK](https://github.com/SketchK),2016-05-11 - -> 3.0 -> 翻译+校对:[shanks](http://codebuild.me),2016-10-06 - -> 3.0.1 -> review: 2016-11-09 - -> 3.1 校对: [SketchK](https://github.com/SketchK) 2017-04-08 - -> 4.0 -> 翻译+校对:[muhlenxi](https://github.com/muhlenxi) 2017-09-26 - -> 4.1 -> 翻译:[mylittleswift](https://github.com/mylittleswift) - -## Revision History - -> 1.0 -> 翻译:[成都老码团队翻译组-Arya](http://weibo.com/littlekok/) -> 校对:[成都老码团队翻译组-Oberyn](http://weibo.com/u/5241713117) -[changkun](http://changkun.us/about/) -> -> 1.1 -> 翻译:[成都老码团队翻译组-Arya](http://weibo.com/littlekok/) -> 校对:[成都老码团队翻译组-Oberyn](http://weibo.com/u/5241713117) -[changkun](http://changkun.us/about/) -> -> 1.2 -> 翻译:[成都老码团队翻译组-Arya](http://weibo.com/littlekok/) -> 校对:[成都老码团队翻译组-Oberyn](http://weibo.com/u/5241713117) -[changkun](http://changkun.us/about/) -> -> 2.0 -> 翻译+校对:[changkun](http://changkun.us/about/) -> -> 2.1 -> 翻译+校对:[changkun](http://changkun.us/about/) -> -> 2.2 -> 翻译+校对:[changkun](http://changkun.us/about/) -> -> 3.0 -> 翻译+校对:[shanks](http://codebuild.me),2016-10-06 -> -> 3.0.1 -> 翻译+校对:[shanks](http://codebuild.me),2016-11-10 -> -> 3.1 -> 翻译+校对:[bq](https://github.com/bqlin),2018-02-22 -> -> 4.0 -> 翻译+校对:[bq](https://github.com/bqlin),2018-02-22 -> -> 4.1 -> 翻译+校对:[bq](https://github.com/bqlin),2018-02-22 diff --git a/source/chapter2/27_contributors.md b/source/chapter2/27_contributors.md deleted file mode 100755 index 11807c8e..00000000 --- a/source/chapter2/27_contributors.md +++ /dev/null @@ -1,613 +0,0 @@ -# 翻译历史记录 - -## The Basic - -> 1.0 -> 翻译:[numbbbbb](https://github.com/numbbbbb), [lyuka](https://github.com/lyuka), [JaySurplus](https://github.com/JaySurplus) -> 校对:[lslxdx](https://github.com/lslxdx) - -> 2.0 -> 翻译+校对:[xtymichael](https://github.com/xtymichael) - -> 2.1 -> 翻译:[Prayer](https://github.com/futantan) -> 校对:[shanks](http://codebuild.me),[overtrue](https://github.com/overtrue) - -> 2.2 -> 校对:[SketchK](https://github.com/SketchK) - -> 3.0 -> 校对:[CMB](https://github.com/chenmingbiao),版本时间2016-09-13 - -> 3.0.1, 2016-11-11,shanks - -> 4.0 -> 校对:[kemchenj](https://kemchenj.github.io) - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -## Basic_Operators - -> 1.0 -> 翻译:[XieLingWang](https://github.com/xielingwang) -> 校对:[EvilCome](https://github.com/Evilcome) - -> 2.0 -> 翻译+校对:[JackAlan](https://github.com/AlanMelody) - -> 2.1 -> 校对:[shanks](http://codebuild.me) - -> 2.2 -> 翻译+校对:[Cee](https://github.com/Cee) 校对:[SketchK](https://github.com/SketchK),2016-05-11 -> 3.0.1,shanks,2016-11-11 - -> 4.0 -> 翻译+校对:[kemchenj](https://kemchenj.github.io) - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -## Strings_and_Characters - -> 1.0 -> 翻译:[wh1100717](https://github.com/wh1100717) -> 校对:[Hawstein](https://github.com/Hawstein) - -> 2.0 -> 翻译+校对:[DianQK](https://github.com/DianQK) - -> 2.1 -> 翻译:[DianQK](https://github.com/DianQK) -> 校对:[shanks](http://codebuild.me), [Realank](https://github.com/Realank), - -> 2.2 -> 校对:[SketchK](https://github.com/SketchK) - -> 3.0 -> 校对:[CMB](https://github.com/chenmingbiao),版本日期:2016-09-13 -> 3.0.1, shanks, 2016-11-11 - -> 4.0 -> 翻译:[kemchenj](https://kemchenj.github.io/) 2017-09-21 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -## Collection_Types - -> 1.0 -> 翻译:[zqp](https://github.com/zqp) -> 校对:[shinyzhu](https://github.com/shinyzhu), [stanzhai](https://github.com/stanzhai), [feiin](https://github.com/feiin) - -> 2.0 -> 翻译+校对:[JackAlan](https://github.com/AlanMelody) - -> 2.1 -> 校对:[shanks](http://codebuild.me) - -> 2.2 -> 校对:[SketchK](https://github.com/SketchK) 2016-05-11 - -> 3.0 -> 校对:[shanks](http://codebuild.me) ,2016-10-09 -> 3.0.1,shanks,2016-11-12 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -## Control Flow - -> 1.0 -> 翻译:[vclwei](https://github.com/vclwei), [coverxit](https://github.com/coverxit), [NicePiao](https://github.com/NicePiao) -> 校对:[coverxit](https://github.com/coverxit), [stanzhai](https://github.com/stanzhai) - -> 2.0 -> 翻译+校对:[JackAlan](https://github.com/AlanMelody) - -> 2.1 -> 翻译:[Prayer](https://github.com/futantan) -> 校对:[shanks](http://codebuild.me) - -> 2.2 -> 翻译:[LinusLing](https://github.com/linusling) -> 校对:[SketchK](https://github.com/SketchK) - -> 3.0 -> 翻译:[Realank](https://github.com/realank) 2016-09-13 -> 3.0.1,shanks,2016-11-12 - -> 3.1 -> 翻译:[qhd](https://github.com/qhd) 2017-04-17 - -> 4.0 -> 翻译:[kemchenj](https://kemchenj.github.io/) 2017-09-21 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -## Functions - -> 1.0 -> 翻译:[honghaoz](https://github.com/honghaoz) -> 校对:[LunaticM](https://github.com/LunaticM) - -> 2.0 -> 翻译+校对:[dreamkidd](https://github.com/dreamkidd) - -> 2.1 -> 翻译:[DianQK](https://github.com/DianQK) -> 定稿:[shanks](http://codebuild.me) - -> 2.2 -> 翻译+校对:[SketchK](https://github.com/SketchK) 2016-05-12 - -> 3.0 -> 翻译: [crayygy](https://github.com/crayygy) 2016-09-12 -> 校对: [shanks](http://codebuild.me) 2016-09-27 - -> 3.0.1,shanks,2016-11-12 - -> 4.0 -> 校对:[kemchenj](https://kemchenj.github.io/) 2017-09-21 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -## Closures - -> 1.0 -> 翻译:[wh1100717](https://github.com/wh1100717) -> 校对:[lyuka](https://github.com/lyuka) - -> 2.0 -> 翻译+校对:[100mango](https://github.com/100mango) - -> 2.1 -> 翻译:[100mango](https://github.com/100mango), [magicdict](https://github.com/magicdict) -> 校对:[shanks](http://codebuild.me) - -> 2.2 -> 翻译+校对:[SketchK](https://github.com/SketchK) 2016-05-12 - -> 3.0 -> 翻译:[Lanford](https://github.com/LanfordCai) 2016-09-19 - -> 3.0.1,shanks,2016-11-12 - -> 4.0 -> 校对:[kemchenj](https://kemchenj.github.io/) 2017-09-21 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - - -## Enumerations - -> 1.0 -> 翻译:[yankuangshi](https://github.com/yankuangshi) -> 校对:[shinyzhu](https://github.com/shinyzhu) - -> 2.0 -> 翻译+校对:[futantan](https://github.com/futantan) - -> 2.1 -> 翻译:[Channe](https://github.com/Channe) -> 校对:[shanks](http://codebuild.me) - -> 2.2 -> 翻译+校对:[SketchK](https://github.com/SketchK) 2016-05-13 - -> 3.0 -> 翻译+校对:[shanks](https://codebuild.me) 2016-09-24 -> 3.0.1,shanks,2016-11-12 - -> 4.0 -> 校对:[kemchenj](https://kemchenj.github.io/) 2017-09-21 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -## Classes And Structures - -> 1.0 -> 翻译:[JaySurplus](https://github.com/JaySurplus) -> 校对:[sg552](https://github.com/sg552) - -> 2.0 -> 翻译+校对:[SkyJean](https://github.com/SkyJean) - -> 2.1 -> 校对:[shanks](http://codebuild.me),2015-10-29 - -> 2.2 -> 校对:[SketchK](https://github.com/SketchK) 2016-05-13 -> -> 3.0.1, shanks, 2016-11-12 - -> 4.0 -> 校对:[kemchenj](https://kemchenj.github.io/) 2017-09-21 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -## Properties - -> 1.0 -> 翻译:[shinyzhu](https://github.com/shinyzhu) -> 校对:[pp-prog](https://github.com/pp-prog) [yangsiy](https://github.com/yangsiy) - -> 2.0 -> 翻译+校对:[yangsiy](https://github.com/yangsiy) - -> 2.1 -> 翻译:[buginux](https://github.com/buginux) -> 校对:[shanks](http://codebuild.me),2015-10-29 - -> 2.2 -> 翻译:[saitjr](https://github.com/saitjr),2016-04-11,[SketchK](https://github.com/SketchK) 2016-05-13 -> -> 3.0.1,shanks,2016-11-12 - -> 4.0 -> 校对:[kemchenj](https://kemchenj.github.io/) 2017-09-21 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -## Methods - -> 1.0 -> 翻译:[pp-prog](https://github.com/pp-prog) -> 校对:[zqp](https://github.com/zqp) - -> 2.0 -> 翻译+校对:[DianQK](https://github.com/DianQK) - -> 2.1 -> 翻译:[DianQK](https://github.com/DianQK),[Realank](https://github.com/Realank) 校对:[shanks](http://codebuild.me),2016-01-18 - -> 2.2 -> 校对:[SketchK](https://github.com/SketchK) 2016-05-13 - -> 3.0.1,shanks,2016-11-13 - -> 4.0 -> 校对:[kemchenj](https://kemchenj.github.io/) 2017-09-21 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - - -## Subscripts - -> 1.0 -> 翻译:[siemenliu](https://github.com/siemenliu) -> 校对:[zq54zquan](https://github.com/zq54zquan) - -> 2.0 -> 翻译+校对:[shanks](http://codebuild.me) - -> 2.1 -> 翻译+校对:[shanks](http://codebuild.me),[Realank](https://github.com/Realank) - -> 2.2 -> 校对:[SketchK](https://github.com/SketchK) 2016-05-13 -> 3.0.1,shanks,2016-11-13 - -> 4.0 -> 校对:[kemchenj](https://kemchenj.github.io/) 2017-09-21 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -## Inheritance - -> 1.0 -> 翻译:[Hawstein](https://github.com/Hawstein) -> 校对:[menlongsheng](https://github.com/menlongsheng) - -> 2.0,2.1 -> 翻译+校对:[shanks](http://codebuild.me) - -> 2.2 -> 校对:[SketchK](https://github.com/SketchK) 2016-05-13 - -> 3.0.1,shanks,2016-11-13 - -> 4.0 -> 校对:[kemchenj](https://kemchenj.github.io/) 2017-09-21 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -## Initialization - -> 1.0 -> 翻译:[lifedim](https://github.com/lifedim) -> 校对:[lifedim](https://github.com/lifedim) - -> 2.0 -> 翻译+校对:[chenmingbiao](https://github.com/chenmingbiao) - -> 2.1 -> 翻译:[Channe](https://github.com/Channe),[Realank](https://github.com/Realank) -> 校对:[shanks](http://codebuild.me),2016-1-23 - -> 2.2 -> 翻译:[pmst](https://github.com/colourful987) -> 翻译+校对:[SketchK](https://github.com/SketchK) 2016-05-14 -> 3.0.1,shanks,2016-11-13 - -> 3.1 -> 翻译:[qhd](https://github.com/qhd) 2017-04-18 - -> 4.0 -> 翻译:[muhlenXi](https://github.com/muhlenxi) 2017-09-21 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -## Deinitialization - -> 1.0 -> 翻译:[bruce0505](https://github.com/bruce0505) -> 校对:[fd5788](https://github.com/fd5788) - -> 2.0 -> 翻译+校对:[chenmingbiao](https://github.com/chenmingbiao) - -> 2.1 -> 校对:[shanks](http://codebuild.me),2015-10-31 - -> 2.2 -> 翻译+校对:[SketchK](https://github.com/SketchK) 2016-05-14 - -> 3.0.1,shanks,2016-11-13 - -> 4.0 -> 校对:[kemchenj](https://kemchenj.github.io/) 2017-09-21 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -## Optional Chaining - -> 1.0 -> 翻译:[Jasonbroker](https://github.com/Jasonbroker) -> 校对:[numbbbbb](https://github.com/numbbbbb), [stanzhai](https://github.com/stanzhai) - -> 2.0 -> 翻译+校对:[lyojo](https://github.com/lyojo) - -> 2.1 -> 校对:[shanks](http://codebuild.me),2015-10-31 - -> 2.2 -> 翻译+校对:[SketchK](https://github.com/SketchK) 2016-05-15 - -> 3.0.1,shanks,2016-11-13 - -> 4.0 -> 校对:[kemchenj](https://kemchenj.github.io/) 2017-09-21 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -## Error Handling - -> 2.1 -> 翻译+校对:[lyojo](https://github.com/lyojo) [ray16897188](https://github.com/ray16897188) 2015-10-23 -> 校对:[shanks](http://codebuild.me) 2015-10-24 - -> 2.2 -> 翻译+校对:[SketchK](https://github.com/SketchK) 2016-05-15 - -> 3.0 -> 翻译+校对:[shanks](http://codebuild.me) 2016-09-24 - -> 3.0.1,shanks,2016-11-13 - -> 4.0 -> 翻译+校对:[kemchenj](https://kemchenj.github.io/) 2017-09-21 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -## Type Casting - -> 1.0 -> 翻译:[xiehurricane](https://github.com/xiehurricane) -> 校对:[happyming](https://github.com/happyming) - -> 2.0 -> 翻译+校对:[yangsiy](https://github.com/yangsiy) - -> 2.1 -> 校对:[shanks](http://codebuild.me),2015-11-01 -> -> 2.2 -> 翻译+校对:[SketchK](https://github.com/SketchK) 2016-05-16 -> 3.0.1,shanks,2016-11-13 - -> 4.0 -> 校对:[kemchenj](https://kemchenj.github.io/) 2017-09-21 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -## Nested Types - -> 1.0 -> 翻译:[Lin-H](https://github.com/Lin-H) -> 校对:[shinyzhu](https://github.com/shinyzhu) - -> 2.0 -> 翻译+校对:[SergioChan](https://github.com/SergioChan) - -> 2.1 -> 校对:[shanks](http://codebuild.me),2015-11-01 -> -> 2.2 -> 翻译+校对:[SketchK](https://github.com/SketchK) 2016-05-16 -> 3.0.1,shanks,2016-11-13 - -> 4.0 -> 翻译+校对:[EyreFree](https://www.eyrefree.org/) 2017-10-19 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -## Extensions - -> 1.0 -> 翻译:[lyuka](https://github.com/lyuka) -> 校对:[Hawstein](https://github.com/Hawstein) - -> 2.0 -> 翻译+校对:[shanks](http://codebuild.me) - -> 2.1 -> 校对:[shanks](http://codebuild.me) -> -> 2.2 -> 翻译+校对:[SketchK](https://github.com/SketchK) 2016-05-16 -> 3.0.1,shanks,2016-11-13 - -> 4.0 -> 校对:[kemchenj](https://kemchenj.github.io/) 2017-09-21 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -## Protocols - -> 1.0 -> 翻译:[geek5nan](https://github.com/geek5nan) -> 校对:[dabing1022](https://github.com/dabing1022) - -> 2.0 -> 翻译+校对:[futantan](https://github.com/futantan) - -> 2.1 -> 翻译:[小铁匠 Linus](https://github.com/kevin833752) -> 校对:[shanks](http://codebuild.me) -> -> 2.2 -> 翻译+校对:[SketchK](https://github.com/SketchK) -> -> 3.0 -> 校对:[CMB](https://github.com/chenmingbiao),版本日期:2016-09-13 - -> 3.0.1 -> shanks,2016-11-13 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -## Generics - -> 1.0 -> 翻译:[takalard](https://github.com/takalard) -> 校对:[lifedim](https://github.com/lifedim) - -> 2.0 -> 翻译+校对: [SergioChan](https://github.com/SergioChan) - -> 2.1 -> 校对:[shanks](http://codebuild.me),2015-11-01 - -> 2.2:翻译+校对:[Lanford](https://github.com/LanfordCai),2016-04-08 [SketchK](https://github.com/SketchK) 2016-05-16 - -> 3.0:翻译+校对:[chenmingjia](https://github.com/chenmingjia),2016-09-12 -> 3.0.1,shanks,2016-11-13 - -> 3.1:翻译:[qhd](https://github.com/qhd),2017-04-10 - -> 4.0 -> 翻译+校对:[kemchenj](https://kemchenj.github.io/) 2017-09-21 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -## Automatic Reference Counting - -> 1.0 -> 翻译:[TimothyYe](https://github.com/TimothyYe) -> 校对:[Hawstein](https://github.com/Hawstein) - -> 2.0 -> 翻译+校对:[Channe](https://github.com/Channe) - -> 2.1 -> 翻译:[Channe](https://github.com/Channe) -> 校对:[shanks](http://codebuild.me),[Realank](https://github.com/Realank) ,2016-01-23 -> -> 2.2 -> 翻译+校对:[SketchK](https://github.com/SketchK) 2016-05-14 - -> 3.0.1 -> shanks,2016-11-13 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -## Memory Safety - -> 4.0 -> 翻译:[kemchenj](https://kemchenj.github.io/) 2017-09-21 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -## Access Control - -> 1.0 -> 翻译:[JaceFu](http://www.devtalking.com/) -> 校对:[ChildhoodAndy](http://childhood.logdown.com) - -> 2.0 -> 翻译+校对:[mmoaay](https://github.com/mmoaay) - -> 2.1 -> 翻译:[Prayer](https://github.com/futantan) -> 校对:[shanks](http://codebuild.me),2015-11-01 - -> 2.2 -> 翻译+校对:[SketchK](https://github.com/SketchK) 2016-05-17 - -> 3.0.1 -> 翻译+校对: shanks,2016-11-13 - -> 4.0 -> 翻译:kemchenj,2017-09-23 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - - -## Advanced Operators - -> 1.0 -> 翻译:[xielingwang](https://github.com/xielingwang) -> 校对:[numbbbbb](https://github.com/numbbbbb) - -> 2.0 -> 翻译+校对:[buginux](https://github.com/buginux) - -> 2.1 -> 校对:[shanks](http://codebuild.me),2015-11-01 -> -> 2.2 -> 翻译+校对:[SketchK](https://github.com/SketchK) 2016-05-17 -> -> 3.0 -> 翻译+校对:[mmoaay](https://github.com/mmoaay) 2016-09-20 - -> 3.0.1 -> shanks,2016-11-13 - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - diff --git a/source/chapter3/01_About_the_Language_Reference.md b/source/chapter3/01_About_the_Language_Reference.md index 78faf33d..2f0b4844 100755 --- a/source/chapter3/01_About_the_Language_Reference.md +++ b/source/chapter3/01_About_the_Language_Reference.md @@ -1,17 +1,4 @@ # 关于语言参考(About the Language Reference) ------------------ - -> 1.0 -> 翻译:[dabing1022](https://github.com/dabing1022) -> 校对:[numbbbbb](https://github.com/numbbbbb) - -> 2.0 -> 翻译+校对:[KYawn](https://github.com/KYawn) - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -本页内容包括: - [如何阅读语法](#how_to_read_the_grammar) diff --git a/source/chapter3/02_Lexical_Structure.md b/source/chapter3/02_Lexical_Structure.md index 776a17fc..038c985d 100755 --- a/source/chapter3/02_Lexical_Structure.md +++ b/source/chapter3/02_Lexical_Structure.md @@ -1,32 +1,4 @@ # 词法结构(Lexical Structure) ------------------ - -> 1.0 -> 翻译:[superkam](https://github.com/superkam) -> 校对:[numbbbbb](https://github.com/numbbbbb) - -> 2.0 -> 翻译+校对:[buginux](https://github.com/buginux) - -> 2.1 -> 翻译:[mmoaay](https://github.com/mmoaay) - -> 2.2 -> 翻译+校对:[星夜暮晨](https://github.com/semperidem) - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -本页包含内容: - -- [空白与注释](#whitespace_and_comments) -- [标识符](#identifiers) -- [关键字和标点符号](#keywords) -- [字面量](#literals) - - [整数字面量](#integer_literals) - - [浮点数字面量](#floating_point_literals) - - [字符串字面量](#string_literals) -- [运算符](#operators) Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言中有效符号(token)的字符序列。这些合法符号组成了语言中最底层的构建基块,并在之后的章节中用于描述语言的其他部分。一个合法符号由一个标识符(identifier)、关键字(keyword)、标点符号(punctuation)、字面量(literal)或运算符(operator)组成。 diff --git a/source/chapter3/03_Types.md b/source/chapter3/03_Types.md index 0f153b37..8245cf89 100644 --- a/source/chapter3/03_Types.md +++ b/source/chapter3/03_Types.md @@ -1,18 +1,4 @@ # 类型(Types) ------------------ - -> 1.0 -> 翻译:[lyuka](https://github.com/lyuka) -> 校对:[numbbbbb](https://github.com/numbbbbb), [stanzhai](https://github.com/stanzhai) - -> 2.0 -> 翻译+校对:[EudeMorgen](https://github.com/EudeMorgen) - -> 2.1 -> 翻译:[mmoaay](https://github.com/mmoaay) - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) 本页包含内容: diff --git a/source/chapter3/04_Expressions.md b/source/chapter3/04_Expressions.md index ebd55392..c071f432 100644 --- a/source/chapter3/04_Expressions.md +++ b/source/chapter3/04_Expressions.md @@ -1,51 +1,4 @@ # 表达式(Expressions) ------------------ - -> 1.0 -> 翻译:[sg552](https://github.com/sg552) -> 校对:[numbbbbb](https://github.com/numbbbbb), [stanzhai](https://github.com/stanzhai) - -> 2.0 -> 翻译+校对:[EudeMorgen](https://github.com/EudeMorgen) - -> 2.1 -> 翻译:[mmoaay](https://github.com/mmoaay) - -> 2.2 -> 校对:[175](https://github.com/Brian175) - -> 3.0 -> 翻译+校对:[chenmingjia](https://github.com/chenmingjia) - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -本页包含内容: - -- [前缀表达式](#prefix_expressions) - - [try 运算符](#try_operator) -- [二元表达式](#binary_expressions) - - [赋值表达式](#assignment_operator) - - [三元条件运算符](#ternary_conditional_operator) - - [类型转换运算符](#type-casting_operators) -- [基本表达式](#primary_expressions) - - [字面量表达式](#literal_expression) - - [self 表达式](#self_expression) - - [超类表达式](#superclass_expression) - - [闭包表达式](#closure_expression) - - [隐式成员表达式](#implicit_member_expression) - - [圆括号表达式](#parenthesized_expression) - - [通配符表达式](#wildcard_expression) - - [选择器表达式](#selector_expression) -- [后缀表达式](#postfix_expressions) - - [函数调用表达式](#function_call_expression) - - [构造器表达式](#initializer_expression) - - [显式成员表达式](#explicit_member_expression) - - [后缀 self 表达式](#postfix_self_expression) - - [dynamicType 表达式](#dynamic_type_expression) - - [下标表达式](#subscript_expression) - - [强制取值表达式](#forced-Value_expression) - - [可选链表达式](#optional-chaining_expression) Swift 中存在四种表达式:前缀表达式,二元表达式,基本表达式和后缀表达式。表达式在返回一个值的同时还可以引发副作用。 diff --git a/source/chapter3/05_Statements.md b/source/chapter3/05_Statements.md index b6da572f..c628a8d5 100755 --- a/source/chapter3/05_Statements.md +++ b/source/chapter3/05_Statements.md @@ -1,46 +1,5 @@ # 语句(Statements) ------------------ - -> 1.0 -> 翻译:[coverxit](https://github.com/coverxit) -> 校对:[numbbbbb](https://github.com/numbbbbb), [coverxit](https://github.com/coverxit), [stanzhai](https://github.com/stanzhai) - -> 2.0 -> 翻译+校对:[littledogboy](https://github.com/littledogboy) - -> 2.2 -> 翻译:[chenmingbiao](https://github.com/chenmingbiao) - -> 3.0 -> 翻译:[chenmingjia](https://github.com/chenmingjia) - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -本页包含内容: - -- [循环语句](#loop_statements) - - [For-In 语句](#for-in_statements) - - [While 语句](#while_statements) - - [Repeat-While 语句](#repeat-while_statements) -- [分支语句](#branch_statements) - - [If 语句](#if_statements) - - [Guard 语句](#guard_statements) - - [Switch 语句](#switch_statements) -- [带标签的语句](#labeled_statements) -- [控制转移语句](#control_transfer_statements) - - [Break 语句](#break_statement) - - [Continue 语句](#continue_statement) - - [Fallthrough 语句](#fallthrough_statements) - - [Return 语句](#return_statements) - - [Throw 语句](#throw_statements) -- [Defer 语句](#defer_statements) -- [Do 语句](#do_statements) -- [编译器控制语句](#compiler_control_statements) - - [编译配置语句](#build_config_statements) - - [行控制语句](#line_control_statements) -- [可用性条件](#availability_condition) 在 Swift 中,有三种类型的语句:简单语句、编译器控制语句和控制流语句。简单语句是最常见的,用于构造表达式或者声明。编译器控制语句允许程序改变编译器的行为,包含编译配置语句和行控制语句。 diff --git a/source/chapter3/06_Declarations.md b/source/chapter3/06_Declarations.md index 76efd750..8a03290a 100755 --- a/source/chapter3/06_Declarations.md +++ b/source/chapter3/06_Declarations.md @@ -1,68 +1,5 @@ # 声明(Declarations) ------------------ - -> 1.0 -> 翻译:[marsprince](https://github.com/marsprince) [Lenhoon](https://github.com/marsprince)[(微博)](http://www.weibo.com/lenhoon) -> 校对:[numbbbbb](https://github.com/numbbbbb), [stanzhai](https://github.com/stanzhai) - -> 2.0 -> 翻译+校对:[Lenhoon](https://github.com/Lenhoon), -> [BridgeQ](https://github.com/WXGBridgeQ) - -> 2.1 -> 翻译:[mmoaay](https://github.com/mmoaay), [shanks](http://codebuild.me) -> 校对:[shanks](http://codebuild.me) - -> 2.2 -> 翻译:[星夜暮晨](https://github.com/SemperIdem) - -> 3.0 -> 翻译:[chenmingjia](https://github.com/chenmingjia) - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -本页包含内容: - -- [顶级代码](#top-level_code) -- [代码块](#code_blocks) -- [导入声明](#import_declaration) -- [常量声明](#constant_declaration) -- [变量声明](#variable_declaration) - - [存储型变量和存储型变量属性](#stored_variables_and_stored_variable_properties) - - [计算型变量和计算型属性](#computed_variables_and_computed_properties) - - [存储型变量和属性的观察器](#stored_variable_observers_and_property_observers) - - [类型变量属性](#type_variable_properties) -- [类型别名声明](#type_alias_declaration) -- [函数声明](#function_declaration) - - [参数名](#parameter_names) - - [输入输出参数](#in-out_parameters) - - [特殊参数](#special_kinds_of_parameters) - - [特殊方法](#special_kinds_of_methods) - - [抛出错误的函数和方法](#throwing_functions_and_methods) - - [重抛错误的函数和方法](#rethrowing_functions_and_methods) -- [枚举声明](#enumeration_declaration) - - [任意类型的枚举用例](#enumerations_with_cases_of_any_type) - - [递归枚举](#enumerations_with_indirection) - - [拥有原始值的枚举用例](#enumerations_with_cases_of_a_raw-value_type) - - [访问枚举用例](#accessing_enumeration_cases) -- [结构体声明](#structure_declaration) -- [类声明](#class_declaration) -- [协议声明](#protocol_declaration) - - [协议属性声明](#protocol_property_declaration) - - [协议方法声明](#protocol_method_declaration) - - [协议构造器声明](#protocol_initializer_declaration) - - [协议下标声明](#protocol_subscript_declaration) - - [协议关联类型声明](#protocol_associated_type_declaration) -- [构造器声明](#initializer_declaration) - - [可失败构造器](#failable_initializers) -- [析构器声明](#deinitializer_declaration) -- [扩展声明](#extension_declaration) -- [下标声明](#subscript_declaration) -- [运算符声明](#operator_declaration) -- [声明修饰符](#declaration_modifiers) - - [访问控制级别](#access_control_levels) *声明(declaration)* 用以向程序里引入新的名字或者结构。举例来说,可以使用声明来引入函数和方法,变量和常量,或者定义新的具有命名的枚举、结构、类和协议类型。还可以使用声明来扩展一个既有的具有命名的类型的行为,或者在程序里引入在其它地方声明的符号。 diff --git a/source/chapter3/07_Attributes.md b/source/chapter3/07_Attributes.md index 78be9254..6e36d5a5 100755 --- a/source/chapter3/07_Attributes.md +++ b/source/chapter3/07_Attributes.md @@ -1,24 +1,4 @@ # 特性(Attributes) ------------------ - -> 1.0 -> 翻译:[Hawstein](https://github.com/Hawstein) -> 校对:[numbbbbb](https://github.com/numbbbbb), [stanzhai](https://github.com/stanzhai) - -> 2.0 -> 翻译+校对:[KYawn](https://github.com/KYawn) - -> 2.1 -> 翻译:[小铁匠 Linus](https://github.com/kevin833752) - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -本页内容包括: - -- [声明特性](#declaration_attributes) -- [Interface Builder 使用的声明特性](#declaration_attributes_used_by_interface_builder) -- [类型特性](#type_attributes) 特性提供了有关声明和类型的更多信息。在 Swift 中有两种特性,分别用于修饰声明和类型。 diff --git a/source/chapter3/08_Patterns.md b/source/chapter3/08_Patterns.md index c2d0a535..d50da3a9 100755 --- a/source/chapter3/08_Patterns.md +++ b/source/chapter3/08_Patterns.md @@ -1,29 +1,4 @@ # 模式(Patterns) ------------------ - -> 1.0 -> 翻译:[honghaoz](https://github.com/honghaoz) -> 校对:[numbbbbb](https://github.com/numbbbbb), [stanzhai](https://github.com/stanzhai) - -> 2.0 -> 翻译+校对:[ray16897188](https://github.com/ray16897188), - -> 2.1 -> 翻译:[BridgeQ](https://github.com/WXGBridgeQ) - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -本页内容包括: - -- [通配符模式(Wildcard Pattern)](#wildcard_pattern) -- [标识符模式(Identifier Pattern)](#identifier_pattern) -- [值绑定模式(Value-Binding Pattern)](#value-binding_pattern) -- [元组模式(Tuple Pattern)](#tuple_pattern) -- [枚举用例模式(Enumeration Case Pattern)](#enumeration_case_pattern) -- [可选模式(Optional Pattern)](#optional_pattern) -- [类型转换模式(Type-Casting Pattern)](#type-casting_patterns) -- [表达式模式(Expression Pattern)](#expression_pattern) *模式*代表单个值或者复合值的结构。例如,元组 `(1, 2)` 的结构是由逗号分隔的,包含两个元素的列表。因为模式代表一种值的结构,而不是特定的某个值,你可以利用模式来匹配各种各样的值。比如,`(x, y)` 可以匹配元组 `(1, 2)`,以及任何含两个元素的元组。除了利用模式匹配一个值以外,你可以从复合值中提取出部分或全部值,然后分别把各个部分的值和一个常量或变量绑定起来。 diff --git a/source/chapter3/09_Generic_Parameters_and_Arguments.md b/source/chapter3/09_Generic_Parameters_and_Arguments.md index a37ef900..8a26ef49 100755 --- a/source/chapter3/09_Generic_Parameters_and_Arguments.md +++ b/source/chapter3/09_Generic_Parameters_and_Arguments.md @@ -1,24 +1,4 @@ # 泛型参数(Generic Parameters and Arguments) ---------- - -> 1.0 -> 翻译:[fd5788](https://github.com/fd5788) -> 校对:[yankuangshi](https://github.com/yankuangshi), [stanzhai](https://github.com/stanzhai) - -> 2.0 -> 翻译+校对:[wardenNScaiyi](https:github.com/wardenNScaiyi) - -> 3.0 -> 翻译+校对:[chenmingjia](https:github.com/chenmingjia) - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -本页包含内容: - -- [泛型形参子句](#generic_parameter) - - [Where 子句](#where_clauses) -- [泛型实参子句](#generic_argument) 本节涉及泛型类型、泛型函数以及泛型构造器的参数,包括形参和实参。声明泛型类型、函数或构造器时,须指定相应的类型参数。类型参数相当于一个占位符,当实例化泛型类型、调用泛型函数或泛型构造器时,就用具体的类型实参替代之。 diff --git a/source/chapter3/10_Summary_of_the_Grammar.md b/source/chapter3/10_Summary_of_the_Grammar.md index 3a92578e..aa7e6439 100755 --- a/source/chapter3/10_Summary_of_the_Grammar.md +++ b/source/chapter3/10_Summary_of_the_Grammar.md @@ -1,26 +1,4 @@ # 语法总结(Summary of the Grammar) ------ - -> 1.0 -> 翻译:[stanzhai](https://github.com/stanzhai) -> 校对:[xielingwang](https://github.com/xielingwang) - -> 2.0 -> 翻译+校对:[miaosiqi](https://github.com/miaosiqi) - -> 4.1 -> 翻译+校对:[mylittleswift](https://github.com/mylittleswift) - -本页包含内容: - -* [语句(Statements)](#statements) -* [泛型参数(Generic Parameters and Arguments)](#generic_parameters_and_arguments) -* [声明(Declarations)](#declarations) -* [模式(Patterns)](#patterns) -* [属性(Attributes)](#attributes) -* [表达式(Expressions)](#expressions) -* [词法结构(Lexical Structure)](#lexical_structure) -* [类型(Types)](#types) ## 语句 diff --git a/source/contributors.md b/source/contributors.md new file mode 100755 index 00000000..d3c61aec --- /dev/null +++ b/source/contributors.md @@ -0,0 +1,131 @@ +# 文档翻译 & 校对工作记录 + +Swift 官方文档中文翻译工作由[numbbbbb](https://github.com/numbbbbb)发起并主导,该工作已经得到了苹果官方的认可。下面是各个版本官方文档翻译和校对工作的主要贡献者,排名不分先后。 + +## Swift 5.x 主要贡献者 + +## Swift 4.x 主要贡献者 + +- [Adolf-L](https://github.com/Adolf-L) +- [BigNerdCoding](https://github.com/bignerdcoding) +- [bqlin](https://github.com/bqlin) +- [Cee](https://github.com/Cee) +- [CMB](https://github.com/chenmingbiao) +- [Damonwong](https://github.com/Damonvvong) +- [Desgard](https://github.com/Desgard) +- [dzyding](https://github.com/dzyding) +- [EyreFree](https://www.eyrefree.org/) +- [Forelas](https://github.com/ForelaxX) +- [kemchenj](https://kemchenj.github.io) +- [jojotov](https://github.com/jojotov) +- [Meler](https://github.com/pmtao) +- [mobilefellow](https://github.com/mobilefellow) +- [muhlenXi](https://github.com/muhlenxi) +- [mylittleswift](https://github.com/mylittleswift) +- [Nemocdz](https://github.com/Nemocdz) +- [numbbbbb](https://github.com/numbbbbb) +- [rain2540](https://github.com/rain2540) +- [Rsenjoyer](https://github.com/Rsenjoyer) +- [WAMaker](https://github.com/WAMaker) +- [wuqiuhao](https://github.com/wuqiuhao) +- [YiYiZheng](https://github.com/YiYiZheng) +- [ZhangChi](https://github.com/zhangchi25806) + +## Swift 3.x 主要贡献者 + +- [bqlin](https://github.com/bqlin) +- [chenmingjia](https://github.com/chenmingjia) +- [CMB](https://github.com/chenmingbiao) +- [crayygy](https://github.com/crayygy) +- [kemchenj](https://kemchenj.github.io) +- [Lanford](https://github.com/LanfordCai) +- [mmoaay](https://github.com/mmoaay) +- [mylittleswift](https://github.com/mylittleswift) +- [qhd](https://github.com/qhd) +- [shanks](https://github.com/shanksyang) + +## Swift 2.x 主要贡献者 + +- [100mango](https://github.com/100mango) +- [175](https://github.com/Brian175) +- [BridgeQ](https://github.com/WXGBridgeQ) +- [buginux](https://github.com/buginux) +- [Cee](https://github.com/Cee) +- [Channe](https://github.com/Channe) +- [CMB](https://github.com/chenmingbiao) +- [DianQK](https://github.com/DianQK) +- [dreamkidd](https://github.com/dreamkidd) +- [EudeMorgen](https://github.com/EudeMorgen) +- [futantan](https://github.com/futantan) +- [JackAlan](https://github.com/AlanMelody) +- [KYawn](https://github.com/KYawn) +- [Lanford](https://github.com/LanfordCai) +- [Lenhoon](https://github.com/Lenhoon) +- [littledogboy](https://github.com/littledogboy) +- [LinusLing](https://github.com/linusling) +- [lyojo](https://github.com/lyojo) +- [miaosiqi](https://github.com/miaosiqi) +- [mmoaay](https://github.com/mmoaay) +- [overtrue](https://github.com/overtrue) +- [pmst](https://github.com/colourful987) +- [Prayer](https://github.com/futantan) +- [qhd](https://github.com/qhd) +- [ray16897188](https://github.com/ray16897188) +- [Realank](https://github.com/realank) +- [saitjr](https://github.com/saitjr) +- [SergioChan](https://github.com/SergioChan) +- [shanks](https://github.com/shanksyang) +- [SketchK](https://github.com/SketchK) +- [SkyJean](https://github.com/SkyJean) +- [wardenNScaiyi](https:github.com/wardenNScaiyi) +- [xtymichael](https://github.com/xtymichael) +- [yangsiy](https://github.com/yangsiy) +- [星夜暮晨](https://github.com/semperidem) +- [小铁匠 Linus](https://github.com/kevin833752) + +## Swift 1.x 主要贡献者 + +- [bruce0505](https://github.com/bruce0505) +- [changkun](http://changkun.us/about/) +- [ChildhoodAndy](http://childhood.logdown.com) +- [coverxit](https://github.com/coverxit) +- [dabing1022](https://github.com/dabing1022) +- [EvilCome](https://github.com/Evilcome) +- [feiin](https://github.com/feiin) +- [fd5788](https://github.com/fd5788) +- [geek5nan](https://github.com/geek5nan) +- [happyming](https://github.com/happyming) +- [Hawstein](https://github.com/Hawstein) +- [honghaoz](https://github.com/honghaoz) +- [JaceFu](http://www.devtalking.com/) +- [Jasonbroker](https://github.com/Jasonbroker) +- [JaySurplus](https://github.com/JaySurplus) +- [Lenhoon](https://github.com/marsprince) +- [lifedim](https://github.com/lifedim) +- [Lin-H](https://github.com/Lin-H) +- [lslxdx](https://github.com/lslxdx) +- [LunaticM](https://github.com/LunaticM) +- [lyuka](https://github.com/lyuka) +- [marsprince](https://github.com/marsprince) +- [menlongsheng](https://github.com/menlongsheng) +- [NicePiao](https://github.com/NicePiao) +- [numbbbbb](https://github.com/numbbbbb) +- [pp-prog](https://github.com/pp-prog) +- [sg552](https://github.com/sg552) +- [stanzhai](https://github.com/stanzhai) +- [shinyzhu](https://github.com/shinyzhu) +- [superkam](https://github.com/superkam) +- [takalard](https://github.com/takalard) +- [TimothyYe](https://github.com/TimothyYe) +- [vclwei](https://github.com/vclwei) +- [wh1100717](https://github.com/wh1100717) +- [xiehurricane](https://github.com/xiehurricane) +- [XieLingWang](https://github.com/xielingwang) +- [yangsiy](https://github.com/yangsiy) +- [yankuangshi](https://github.com/yankuangshi) +- [yeahdongcn](https://github.com/yeahdongcn) +- [yangsiy](https://github.com/yangsiy) +- [zqp](https://github.com/zqp) +- [成都老码团队翻译组-Arya](http://weibo.com/littlekok/) +- [成都老码团队翻译组-Oberyn](http://weibo.com/u/5241713117) + From fead955824dbea2db90adb99bf1a29e03cc74d97 Mon Sep 17 00:00:00 2001 From: BqLin Date: Tue, 29 Jan 2019 21:22:07 +0800 Subject: [PATCH 022/107] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E4=B8=AD=E7=9A=84=E5=B0=8F=E9=94=99=E8=AF=AF?= =?UTF-8?q?=20(#883)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 04_Collection_Types 优化翻译细节 * 修正注释引号使用 * 05_Control_Flow 更新代码 * 修正注释中引号的使用 --- source/chapter2/01_The_Basics.md | 36 +++++++-------- source/chapter2/02_Basic_Operators.md | 12 ++--- source/chapter2/04_Collection_Types.md | 26 +++++------ source/chapter2/05_Control_Flow.md | 64 ++++++++++++++------------ source/chapter2/10_Properties.md | 28 +++++------ 5 files changed, 85 insertions(+), 81 deletions(-) diff --git a/source/chapter2/01_The_Basics.md b/source/chapter2/01_The_Basics.md index 218ef5ba..8dd5980b 100755 --- a/source/chapter2/01_The_Basics.md +++ b/source/chapter2/01_The_Basics.md @@ -119,7 +119,7 @@ languageName = "Swift++" ```swift print(friendlyWelcome) -// 输出 "Bonjour!" +// 输出“Bonjour!” ``` `print(_:separator:terminator:)` 是一个用来输出一个或多个值到适当输出区的全局函数。如果你用 Xcode,`print(_:separator:terminator:)` 将会输出内容到“console”面板上。`separator` 和 `terminator` 参数具有默认值,因此你调用这个函数的时候可以忽略它们。默认情况下,该函数通过添加换行符来结束当前行。如果不想换行,可以传递一个空字符串给 `terminator` 参数--例如,`print(someValue, terminator:"")` 。关于参数默认值的更多信息,请参考[默认参数值](./06_Functions.html#default_parameter_values)。 @@ -128,7 +128,7 @@ Swift 用*字符串插值(string interpolation)*的方式把常量名或者 ```swift print("The current value of friendlyWelcome is \(friendlyWelcome)") -// 输出 "The current value of friendlyWelcome is Bonjour! +// 输出“The current value of friendlyWelcome is Bonjour!” ``` > 注意 @@ -170,7 +170,7 @@ Swift 中的注释与 C 语言的注释非常相似。单行注释以双正斜 ```swift let cat = "🐱"; print(cat) -// 输出 "🐱" +// 输出“🐱” ``` @@ -413,7 +413,7 @@ if turnipsAreDelicious { } else { print("Eww, turnips are horrible.") } -// 输出 "Eww, turnips are horrible." +// 输出“Eww, turnips are horrible.” ``` 条件语句,例如 `if`,请参考[控制流](./05_Control_Flow.html)。 @@ -461,9 +461,9 @@ let http404Error = (404, "Not Found") ```swift let (statusCode, statusMessage) = http404Error print("The status code is \(statusCode)") -// 输出 "The status code is 404" +// 输出“The status code is 404” print("The status message is \(statusMessage)") -// 输出 "The status message is Not Found" +// 输出“The status message is Not Found” ``` 如果你只需要一部分元组值,分解的时候可以把要忽略的部分用下划线(`_`)标记: @@ -471,16 +471,16 @@ print("The status message is \(statusMessage)") ```swift let (justTheStatusCode, _) = http404Error print("The status code is \(justTheStatusCode)") -// 输出 "The status code is 404" +// 输出“The status code is 404” ``` 此外,你还可以通过下标来访问元组中的单个元素,下标从零开始: ```swift print("The status code is \(http404Error.0)") -// 输出 "The status code is 404" +// 输出“The status code is 404” print("The status message is \(http404Error.1)") -// 输出 "The status message is Not Found" +// 输出“The status message is Not Found” ``` 你可以在定义元组的时候给单个元素命名: @@ -493,9 +493,9 @@ let http200Status = (statusCode: 200, description: "OK") ```swift print("The status code is \(http200Status.statusCode)") -// 输出 "The status code is 200" +// 输出“The status code is 200” print("The status message is \(http200Status.description)") -// 输出 "The status message is OK" +// 输出“The status message is OK” ``` 作为函数返回值时,元组非常有用。一个用来获取网页的函数可能会返回一个 `(Int, String)` 元组来描述是否获取成功。和只能返回一个类型的值比较起来,一个包含两个不同类型值的元组可以让函数的返回信息更有用。请参考[函数参数与返回值](./06_Functions.html#Function_Parameters_and_Return_Values)。 @@ -564,7 +564,7 @@ var surveyAnswer: String? if convertedNumber != nil { print("convertedNumber contains some integer value.") } -// 输出 "convertedNumber contains some integer value." +// 输出“convertedNumber contains some integer value.” ``` 当你确定可选类型确实包含值之后,你可以在可选的名字后面加一个感叹号(`!`)来获取值。这个惊叹号表示“我知道这个可选有值,请使用它。”这被称为可选值的*强制解析(forced unwrapping)*: @@ -573,7 +573,7 @@ if convertedNumber != nil { if convertedNumber != nil { print("convertedNumber has an integer value of \(convertedNumber!).") } -// 输出 "convertedNumber has an integer value of 123." +// 输出“convertedNumber has an integer value of 123.” ``` 更多关于 `if` 语句的内容,请参考[控制流](./05_Control_Flow.html)。 @@ -603,7 +603,7 @@ if let actualNumber = Int(possibleNumber) { } else { print("\'\(possibleNumber)\' could not be converted to an integer") } -// 输出 "'123' has an integer value of 123" +// 输出“'123' has an integer value of 123” ``` 这段代码可以被理解为: @@ -620,7 +620,7 @@ if let actualNumber = Int(possibleNumber) { if let firstNumber = Int("4"), let secondNumber = Int("42"), firstNumber < secondNumber && secondNumber < 100 { print("\(firstNumber) < \(secondNumber) < 100") } -// 输出 "4 < 42 < 100" +// 输出“4 < 42 < 100” if let firstNumber = Int("4") { if let secondNumber = Int("42") { @@ -629,7 +629,7 @@ if let firstNumber = Int("4") { } } } -// 输出 "4 < 42 < 100" +// 输出“4 < 42 < 100” ``` > 注意 @@ -669,7 +669,7 @@ let implicitString: String = assumedString // 不需要感叹号 if assumedString != nil { print(assumedString!) } -// 输出 "An implicitly unwrapped optional string." +// 输出“An implicitly unwrapped optional string.” ``` 你也可以在可选绑定中使用隐式解析可选类型来检查并解析它的值: @@ -678,7 +678,7 @@ if assumedString != nil { if let definiteString = assumedString { print(definiteString) } -// 输出 "An implicitly unwrapped optional string." +// 输出“An implicitly unwrapped optional string.” ``` > 注意 diff --git a/source/chapter2/02_Basic_Operators.md b/source/chapter2/02_Basic_Operators.md index a9bef66d..8fb666a7 100755 --- a/source/chapter2/02_Basic_Operators.md +++ b/source/chapter2/02_Basic_Operators.md @@ -198,7 +198,7 @@ if name == "world" { } else { print("I'm sorry \(name), but I don't recognize you") } -// 输出 "hello, world", 因为 `name` 就是等于 "world" +// 输出“hello, world", 因为 `name` 就是等于 "world” ``` 关于 `if` 语句,请看[控制流](./05_Control_Flow.html)。 @@ -410,7 +410,7 @@ let allowedEntry = false if !allowedEntry { print("ACCESS DENIED") } -// 输出 "ACCESS DENIED" +// 输出“ACCESS DENIED” ``` `if !allowedEntry` 语句可以读作「如果非 allowedEntry」,接下一行代码只有在「非 allowedEntry」为 `true`,即 `allowEntry` 为 `false` 时被执行。 @@ -433,7 +433,7 @@ if enteredDoorCode && passedRetinaScan { } else { print("ACCESS DENIED") } -// 输出 "ACCESS DENIED" +// 输出“ACCESS DENIED” ``` ### 逻辑或运算符 @@ -452,7 +452,7 @@ if hasDoorKey || knowsOverridePassword { } else { print("ACCESS DENIED") } -// 输出 "Welcome!" +// 输出“Welcome!” ``` ### 逻辑运算符组合计算 @@ -465,7 +465,7 @@ if enteredDoorCode && passedRetinaScan || hasDoorKey || knowsOverridePassword { } else { print("ACCESS DENIED") } -// 输出 "Welcome!" +// 输出“Welcome!” ``` 这个例子使用了含多个 `&&` 和 `||` 的复合逻辑。但无论怎样,`&&` 和 `||` 始终只能操作两个值。所以这实际是三个简单逻辑连续操作的结果。我们来解读一下: @@ -488,7 +488,7 @@ if (enteredDoorCode && passedRetinaScan) || hasDoorKey || knowsOverridePassword } else { print("ACCESS DENIED") } -// 输出 "Welcome!" +// 输出“Welcome!” ``` 这括号使得前两个值被看成整个逻辑表达中独立的一个部分。虽然有括号和没括号的输出结果是一样的,但对于读代码的人来说有括号的代码更清晰。可读性比简洁性更重要,请在可以让你代码变清晰的地方加个括号吧! diff --git a/source/chapter2/04_Collection_Types.md b/source/chapter2/04_Collection_Types.md index ea685879..e7fa4698 100755 --- a/source/chapter2/04_Collection_Types.md +++ b/source/chapter2/04_Collection_Types.md @@ -117,7 +117,7 @@ var shoppingList = ["Eggs", "Milk"] ```swift print("The shopping list contains \(shoppingList.count) items.") -// 输出 "The shopping list contains 2 items."(这个数组有2个项) +// 输出“The shopping list contains 2 items.”(这个数组有2个项) ``` 使用布尔属性 `isEmpty` 作为一个缩写形式去检查 `count` 属性是否为 `0`: @@ -151,7 +151,7 @@ shoppingList += ["Chocolate Spread", "Cheese", "Butter"] ```swift var firstItem = shoppingList[0] -// 第一项是 "Eggs" +// 第一项是“Eggs” ``` > 注意 @@ -162,7 +162,7 @@ var firstItem = shoppingList[0] ```swift shoppingList[0] = "Six eggs" -// 其中的第一项现在是 "Six eggs" 而不是 "Eggs" +// 其中的第一项现在是“Six eggs”而不是“Eggs” ``` 还可以利用下标来一次改变一系列数据值,即使新数据和原有数据的数量是不一样的。下面的例子把 `"Chocolate Spread"`、`"Cheese"` 和 `"Butter"` 替换为 `"Bananas"` 和 `"Apples"`: @@ -181,7 +181,7 @@ shoppingList[4...6] = ["Bananas", "Apples"] ```swift shoppingList.insert("Maple Syrup", at: 0) // shoppingList 现在有7项 -// "Maple Syrup" 现在是这个列表中的第一项 +// 现在是这个列表中的第一项是“Maple Syrup” ``` 这次 `insert(_:at:)` 方法调用把值为 `"Maple Syrup"` 的新数据项插入列表的最开始位置,并且使用 `0` 作为索引值。 @@ -192,7 +192,7 @@ shoppingList.insert("Maple Syrup", at: 0) let mapleSyrup = shoppingList.remove(at: 0) // 索引值为0的数据项被移除 // shoppingList 现在只有6项,而且不包括 Maple Syrup -// mapleSyrup 常量的值等于被移除数据项的值 "Maple Syrup" +// mapleSyrup 常量的值等于被移除数据项“Maple Syrup”的值 ``` > 注意 @@ -203,7 +203,7 @@ let mapleSyrup = shoppingList.remove(at: 0) ```swift firstItem = shoppingList[0] -// firstItem 现在等于 "Six eggs" +// firstItem 现在等于“Six eggs” ``` 如果我们只想把数组中的最后一项移除,可以使用 `removeLast()` 方法而不是 `remove(at:)` 方法来避免我们需要获取数组的 `count` 属性。就像后者一样,前者也会返回被移除的数据项: @@ -212,7 +212,7 @@ firstItem = shoppingList[0] let apples = shoppingList.removeLast() // 数组的最后一项被移除了 // shoppingList 现在只有5项,不包括 Apples -// apples 常量的值现在等于 "Apples" 字符串 +// apples 常量的值现在等于“Apples”字符串 ``` @@ -404,9 +404,9 @@ Swift 的 `Set` 类型没有确定的顺序,为了按照特定顺序来遍历 for genre in favoriteGenres.sorted() { print("\(genre)") } -// prints "Classical" -// prints "Hip hop" -// prints "Jazz +// Classical +// Hip hop +// Jazz ``` @@ -593,7 +593,7 @@ airports["LHR"] = "London Heathrow" if let oldValue = airports.updateValue("Dublin Airport", forKey: "DUB") { print("The old value for DUB was \(oldValue).") } -// 输出 "The old value for DUB was Dublin." +// 输出“The old value for DUB was Dublin.” ``` 我们也可以使用下标语法来在字典中检索特定键对应的值。因为有可能请求的键没有对应的值存在,字典的下标访问会返回对应值的类型的可选值。如果这个字典包含请求键所对应的值,下标会返回一个包含这个存在值的可选值,否则将返回 `nil`: @@ -611,7 +611,7 @@ if let airportName = airports["DUB"] { ```swift airports["APL"] = "Apple Internation" -// "Apple Internation" 不是真的 APL 机场,删除它 +// “Apple Internation”不是真的 APL 机场,删除它 airports["APL"] = nil // APL 现在被移除了 ``` @@ -624,7 +624,7 @@ if let removedValue = airports.removeValue(forKey: "DUB") { } else { print("The airports dictionary does not contain a value for DUB.") } -// prints "The removed airport's name is Dublin Airport." +// 打印“The removed airport's name is Dublin Airport.” ``` diff --git a/source/chapter2/05_Control_Flow.md b/source/chapter2/05_Control_Flow.md index e356eac0..8aa7cf6b 100755 --- a/source/chapter2/05_Control_Flow.md +++ b/source/chapter2/05_Control_Flow.md @@ -65,7 +65,7 @@ for _ in 1...power { answer *= base } print("\(base) to the power of \(power) is \(answer)") -// 输出 "3 to the power of 10 is 59049" +// 输出“3 to the power of 10 is 59049” ``` 这个例子计算 base 这个数的 power 次幂(本例中,是 `3` 的 `10` 次幂),从 `1`(`3` 的 `0` 次幂)开始做 `3` 的乘法, 进行 `10` 次,使用 `1` 到 `10` 的闭区间循环。这个计算并不需要知道每一次循环中计数器具体的值,只需要执行了正确的循环次数即可。下划线符号 `_` (替代循环中的变量)能够忽略当前值,并且不提供循环遍历时对值的访问。 @@ -243,7 +243,7 @@ var temperatureInFahrenheit = 30 if temperatureInFahrenheit <= 32 { print("It's very cold. Consider wearing a scarf.") } -// 输出 "It's very cold. Consider wearing a scarf." +// 输出“It's very cold. Consider wearing a scarf.” ``` 上面的例子会判断温度是否小于等于 32 华氏度(水的冰点)。如果是,则打印一条消息;否则,不打印任何消息,继续执行 `if` 块后面的代码。 @@ -257,7 +257,7 @@ if temperatureInFahrenheit <= 32 { } else { print("It's not that cold. Wear a t-shirt.") } -// 输出 "It's not that cold. Wear a t-shirt." +// 输出“It's not that cold. Wear a t-shirt.” ``` 显然,这两条分支中总有一条会被执行。由于温度已升至 40 华氏度,不算太冷,没必要再围围巾。因此,`else` 分支就被触发了。 @@ -273,7 +273,7 @@ if temperatureInFahrenheit <= 32 { } else { print("It's not that cold. Wear a t-shirt.") } -// 输出 "It's really warm. Don't forget to wear sunscreen." +// 输出“It's really warm. Don't forget to wear sunscreen.” ``` 在上面的例子中,额外的 `if` 语句用于判断是不是特别热。而最后的 `else` 语句被保留了下来,用于打印既不冷也不热时的消息。 @@ -328,7 +328,7 @@ case "z": default: print("Some other character") } -// 输出 "The last letter of the alphabet" +// 输出“The last letter of the alphabet” ``` 在这个例子中,第一个 case 分支用于匹配第一个英文字母 `a`,第二个 case 分支用于匹配最后一个字母 `z`。因为 `switch` 语句必须有一个 case 分支用于覆盖所有可能的字符,而不仅仅是所有的英文字母,所以 switch 语句使用 `default` 分支来匹配除了 `a` 和 `z` 外的所有值,这个分支保证了 swith 语句的完备性。 @@ -368,7 +368,7 @@ case "a", "A": default: print("Not the letter A") } -// 输出 "The letter A +// 输出“The letter A” ``` 为了可读性,符合匹配可以写成多行形式,详情请参考[复合匹配](#compound_cases) @@ -401,7 +401,7 @@ default: naturalCount = "many" } print("There are \(naturalCount) \(countedThings).") -// 输出 "There are dozens of moons orbiting Saturn." +// 输出“There are dozens of moons orbiting Saturn.” ``` 在上例中,`approximateCount` 在一个 `switch` 声明中被评估。每一个 `case` 都与之进行比较。因为 `approximateCount` 落在了 12 到 100 的区间,所以 `naturalCount` 等于 `"dozens of"` 值,并且此后的执行跳出了 `switch` 语句。 @@ -427,7 +427,7 @@ case (-2...2, -2...2): default: print("\(somePoint) is outside of the box") } -// 输出 "(1, 1) is inside the box" +// 输出“(1, 1) is inside the box” ``` ![image](https://docs.swift.org/swift-book/_images/coordinateGraphSimple_2x.png) @@ -453,7 +453,7 @@ case (0, let y): case let (x, y): print("somewhere else at (\(x), \(y))") } -// 输出 "on the x-axis with an x value of 2" +// 输出“on the x-axis with an x value of 2” ``` ![image](https://docs.swift.org/swift-book/_images/coordinateGraphMedium_2x.png) @@ -483,7 +483,7 @@ case let (x, y) where x == -y: case let (x, y): print("(\(x), \(y)) is just some arbitrary point") } -// 输出 "(1, -1) is on the line x == -y" +// 输出“(1, -1) is on the line x == -y” ``` ![image](https://docs.swift.org/swift-book/_images/coordinateGraphComplex_2x.png) @@ -510,7 +510,7 @@ case "b", "c", "d", "f", "g", "h", "j", "k", "l", "m", default: print("\(someCharacter) is not a vowel or a consonant") } -// 输出 "e is a vowel" +// 输出“e is a vowel” ``` 这个 `switch` 语句中的第一个 case,匹配了英语中的五个小写元音字母。相似的,第二个 case 匹配了英语中所有的小写辅音字母。最终,`default` 分支匹配了其它所有字符。 @@ -525,7 +525,7 @@ case (let distance, 0), (0, let distance): default: print("Not on an axis") } -// 输出 "On an axis, 9 from the origin" +// 输出“On an axis, 9 from the origin” ``` 上面的 case 有两个模式:`(let distance, 0)` 匹配了在 x 轴上的值,`(0, let distance)` 匹配了在 y 轴上的值。两个模式都绑定了 `distance`,并且 `distance` 在两种模式下,都是整型——这意味着分支体内的代码,只要 case 匹配,都可以获取到 `distance` 值。 @@ -562,7 +562,7 @@ for character in puzzleInput { } } print(puzzleOutput) - // 输出 "grtmndsthnklk" + // 输出“grtmndsthnklk” ``` 在上面的代码中,只要匹配到元音字母或者空格字符,就调用 `continue` 语句,使本次循环结束,重新开始下次循环。这种行为使 `switch` 匹配到元音字母和空格字符时不做处理,而不是让每一个匹配到的字符都被打印。 @@ -610,7 +610,7 @@ if let integerValue = possibleIntegerValue { } else { print("An integer value could not be found for \(numberSymbol).") } -// 输出 "The integer value of 三 is 3." +// 输出“The integer value of 三 is 3.” ``` 这个例子检查 `numberSymbol` 是否是拉丁,阿拉伯,中文或者泰语中的 `1` 到 `4` 之一。如果被匹配到,该 `switch` 分支语句给 `Int?` 类型变量 `possibleIntegerValue` 设置一个整数值。 @@ -637,7 +637,7 @@ default: description += " an integer." } print(description) -// 输出 "The number 5 is a prime number, and also an integer." +// 输出“The number 5 is a prime number, and also an integer.” ``` 这个例子定义了一个 `String` 类型的变量 `description` 并且给它设置了一个初始值。函数使用 `switch` 逻辑来判断 `integerToDescribe` 变量的值。当 `integerToDescribe` 的值属于列表中的质数之一时,该函数在 `description` 后添加一段文字,来表明这个数字是一个质数。然后它使用 `fallthrough` 关键字来“贯穿”到 `default` 分支中。`default` 分支在 `description` 的最后添加一段额外的文字,至此 `switch` 代码块执行完了。 @@ -729,22 +729,26 @@ print("Game over!") ```swift func greet(person: [String: String]) { - guard let name = person["name"] else { - return - } - print("Hello \(name)") - guard let location = person["location"] else { - print("I hope the weather is nice near you.") - return - } - print("I hope the weather is nice in \(location).") + guard let name = person["name"] else { + return + } + + print("Hello \(name)!") + + guard let location = person["location"] else { + print("I hope the weather is nice near you.") + return + } + + print("I hope the weather is nice in \(location).") } -greet(["name": "John"]) -// 输出 "Hello John!" -// 输出 "I hope the weather is nice near you." -greet(["name": "Jane", "location": "Cupertino"]) -// 输出 "Hello Jane!" -// 输出 "I hope the weather is nice in Cupertino." + +greet(person: ["name": "John"]) +// 输出“Hello John!” +// 输出“I hope the weather is nice near you.” +greet(person: ["name": "Jane", "location": "Cupertino"]) +// 输出“Hello Jane!” +// 输出“I hope the weather is nice in Cupertino.” ``` 如果 `guard` 语句的条件被满足,则继续执行 `guard` 语句大括号后的代码。将变量或者常量的可选绑定作为 `guard` 语句的条件,都可以保护 `guard` 语句后面的代码。 diff --git a/source/chapter2/10_Properties.md b/source/chapter2/10_Properties.md index 32d7b177..0b47856a 100755 --- a/source/chapter2/10_Properties.md +++ b/source/chapter2/10_Properties.md @@ -21,9 +21,9 @@ struct FixedLengthRange { let length: Int } var rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3) -// 该区间表示整数0,1,2 +// 该区间表示整数 0,1,2 rangeOfThreeItems.firstValue = 6 -// 该区间现在表示整数6,7,8 +// 该区间现在表示整数 6,7,8 ``` `FixedLengthRange` 的实例包含一个名为 `firstValue` 的变量存储属性和一个名为 `length` 的常量存储属性。在上面的例子中,`length` 在创建实例的时候被初始化,且之后无法修改它的值,因为它是一个常量存储属性。 @@ -35,7 +35,7 @@ rangeOfThreeItems.firstValue = 6 ```swift let rangeOfFourItems = FixedLengthRange(firstValue: 0, length: 4) -// 该区间表示整数0,1,2,3 +// 该区间表示整数 0,1,2,3 rangeOfFourItems.firstValue = 6 // 尽管 firstValue 是个可变属性,但这里还是会报错 ``` @@ -92,7 +92,7 @@ manager.data.append("Some more data") ```swift print(manager.importer.fileName) // DataImporter 实例的 importer 属性现在被创建了 -// 输出 "data.txt” +// 输出“data.txt” ``` > 注意 @@ -138,7 +138,7 @@ var square = Rect(origin: Point(x: 0.0, y: 0.0), let initialSquareCenter = square.center square.center = Point(x: 15.0, y: 15.0) print("square.origin is now at (\(square.origin.x), \(square.origin.y))") -// 打印 "square.origin is now at (10.0, 10.0)” +// 打印“square.origin is now at (10.0, 10.0)” ``` 这个例子定义了 3 个结构体来描述几何形状: @@ -200,7 +200,7 @@ struct Cuboid { } let fourByFiveByTwo = Cuboid(width: 4.0, height: 5.0, depth: 2.0) print("the volume of fourByFiveByTwo is \(fourByFiveByTwo.volume)") -// 打印 "the volume of fourByFiveByTwo is 40.0" +// 打印“the volume of fourByFiveByTwo is 40.0” ``` 这个例子定义了一个名为 `Cuboid` 的结构体,表示三维空间的立方体,包含 `width`、`height` 和 `depth` 属性。结构体还有一个名为 `volume` 的只读计算属性用来返回立方体的体积。为 `volume` 提供 setter 毫无意义,因为无法确定如何修改 `width`、`height` 和 `depth` 三者的值来匹配新的 `volume`。然而,`Cuboid` 提供一个只读计算属性来让外部用户直接获取体积是很有用的。 @@ -340,14 +340,14 @@ class SomeClass { ```swift print(SomeStructure.storedTypeProperty) -// 打印 "Some value." +// 打印“Some value.” SomeStructure.storedTypeProperty = "Another value." print(SomeStructure.storedTypeProperty) -// 打印 "Another value.” +// 打印“Another value.” print(SomeEnumeration.computedTypeProperty) -// 打印 "6" +// 打印“6” print(SomeClass.computedTypeProperty) -// 打印 "27" +// 打印“27” ``` 下面的例子定义了一个结构体,使用两个存储型类型属性来表示两个声道的音量,每个声道具有 `0` 到 `10` 之间的整数音量。 @@ -404,9 +404,9 @@ var rightChannel = AudioChannel() ```swift leftChannel.currentLevel = 7 print(leftChannel.currentLevel) -// 输出 "7" +// 输出“7” print(AudioChannel.maxInputLevelForAllChannels) -// 输出 "7" +// 输出“7” ``` 如果试图将右声道的 `currentLevel` 设置成 `11`,它会被修正到最大值 `10`,同时 `maxInputLevelForAllChannels` 的值也会更新到 `10`: @@ -414,7 +414,7 @@ print(AudioChannel.maxInputLevelForAllChannels) ```swift rightChannel.currentLevel = 11 print(rightChannel.currentLevel) -// 输出 "10" +// 输出“10” print(AudioChannel.maxInputLevelForAllChannels) -// 输出 "10" +// 输出“10” ``` From 6ccc8227effcb76c1d9aff8576fe692f8c3ab76f Mon Sep 17 00:00:00 2001 From: Karsa Wu Date: Wed, 30 Jan 2019 21:30:48 +0800 Subject: [PATCH 023/107] =?UTF-8?q?ReferenceManual=20AboutTheLanguageRefer?= =?UTF-8?q?ence=20=E6=9B=B4=E6=96=B0=20(#882)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 修改第二章部分细节 * update control flow * 调整 Functions 章节细节 * 重新整理翻译工作主要贡献者记录 * 更新贡献者记录文件 1. 移除与官方文档无关内容 2. 归档主要贡献者记录并附录在文档最后一页 * 删除多余内容 * 更新 ReferenceManual AboutTheLanguageReference --- source/chapter3/01_About_the_Language_Reference.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/source/chapter3/01_About_the_Language_Reference.md b/source/chapter3/01_About_the_Language_Reference.md index 2f0b4844..c16ea6dd 100755 --- a/source/chapter3/01_About_the_Language_Reference.md +++ b/source/chapter3/01_About_the_Language_Reference.md @@ -1,10 +1,8 @@ # 关于语言参考(About the Language Reference) -- [如何阅读语法](#how_to_read_the_grammar) - 本书的这一节描述了 Swift 编程语言的形式语法。这里描述的语法是为了帮助您了解该语言的更多细节,而不是让您直接实现一个解析器或编译器。 -Swift 语言相对较小,这是由于 Swift 代码中在各种地方出现的常见的类型、函数以及运算符都已经在 Swift 标准库中定义了。虽然这些类型、函数和运算符并不是 Swift 语言自身的一部分,但是它们被广泛应用于本书的讨论和代码范例中。 +Swift 语言相对较小,这是由于 Swift 代码中常用的类型、函数以及运算符都已经在 Swift 标准库中定义了。虽然这些类型、函数和运算符并不是 Swift 语言自身的一部分,但是它们被广泛应用于本书的讨论和代码范例中。 ## 如何阅读语法 From 719d83d33bdf9fa289a06a0bbeb9fd9eabe95c81 Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Fri, 1 Feb 2019 21:22:01 -0600 Subject: [PATCH 024/107] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fc713f5a..0d59a23c 100755 --- a/README.md +++ b/README.md @@ -13,8 +13,9 @@ # 当前阶段 -Swift 4.2 翻译中,请到 [Issues](https://github.com/SwiftGGTeam/the-swift-programming-language-in-chinese/issues) 中认领章节(把 Issue 的 Assignee 设置成你自己就表示认领,不要认领已经有人认领的章节)。 +Swift 5.0 翻译中,请到 [Issues](https://github.com/SwiftGGTeam/the-swift-programming-language-in-chinese/issues) 中认领章节(在 issue 中直接回复”认领“即可,如果有操作权限也可以把自己设置成 Assignee)。 +- 更新到 Swift 4.2,2019-01-27, - 更新到 Swift 4.1,2018-04-12,感谢[@Mylittleswift](https://github.com/Mylittleswift) - 更新到 Swift 3.0,2016-09-23 From 9b43c08e4702af83bb3b3cd5483ec6c8d55db8e9 Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Fri, 1 Feb 2019 21:22:23 -0600 Subject: [PATCH 025/107] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0d59a23c..554932a3 100755 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ # 当前阶段 -Swift 5.0 翻译中,请到 [Issues](https://github.com/SwiftGGTeam/the-swift-programming-language-in-chinese/issues) 中认领章节(在 issue 中直接回复”认领“即可,如果有操作权限也可以把自己设置成 Assignee)。 +Swift 5.0 翻译中,请到 [Issues](https://github.com/SwiftGGTeam/the-swift-programming-language-in-chinese/issues) 中认领章节(在 issue 中直接回复”认领“即可,如果有操作权限也可以把自己设置成 assignee)。 - 更新到 Swift 4.2,2019-01-27, - 更新到 Swift 4.1,2018-04-12,感谢[@Mylittleswift](https://github.com/Mylittleswift) From daeda4aab18dd0238808dfe9829179e6b88c04c1 Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Sat, 2 Feb 2019 07:41:23 -0600 Subject: [PATCH 026/107] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 554932a3..aeaf35cb 100755 --- a/README.md +++ b/README.md @@ -119,6 +119,7 @@ Swift 5.0 翻译中,请到 [Issues](https://github.com/SwiftGGTeam/the-swift-p | literal value | 字面量 | | alias | 别名 | | Assertion | 断言 | +| conditional compilation | 条件编译 | # 贡献历史 From 8b9f8ba4cb97148e9d1b43c50f9e1c8e4175f753 Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Sat, 2 Feb 2019 21:36:57 -0600 Subject: [PATCH 027/107] Update README.md --- README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index aeaf35cb..71dcc4b9 100755 --- a/README.md +++ b/README.md @@ -121,12 +121,11 @@ Swift 5.0 翻译中,请到 [Issues](https://github.com/SwiftGGTeam/the-swift-p | Assertion | 断言 | | conditional compilation | 条件编译 | -# 贡献历史 +# 贡献者 + +[贡献者列表](https://github.com/SwiftGGTeam/the-swift-programming-language-in-chinese/blob/gh-pages/source/contributors.md),感谢大家! -## 简体中文版贡献历史 -1. Welcome To Swift 翻译贡献榜[详情](https://github.com/SwiftGGTeam/the-swift-programming-language-in-chinese/tree/gh-pages/source/chapter1/05_contributors.md) -2. Language Guide 翻译贡献榜[详情](https://github.com/SwiftGGTeam/the-swift-programming-language-in-chinese/blob/gh-pages/source/chapter2/27_contributors.md) # 协议 和 [苹果官方文档](https://swift.org/documentation/) 协议一致:[Creative Commons Attribution 4.0 International (CC BY 4.0) License](https://creativecommons.org/licenses/by/4.0/)。 From 4ac5ae6485c1c496bf94abc835f9ea30e03817b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=8D=E8=A7=81=E4=BC=8A=E5=85=B0=E5=B0=BC?= Date: Sun, 3 Feb 2019 23:28:16 +0800 Subject: [PATCH 028/107] Chapter3/05_Statements (#885) * draft 1 * Fix typo * Fix encoding issue --- source/chapter3/05_Statements.md | 247 +++++++++++++++++++++---------- 1 file changed, 172 insertions(+), 75 deletions(-) diff --git a/source/chapter3/05_Statements.md b/source/chapter3/05_Statements.md index c628a8d5..44fb3c6a 100755 --- a/source/chapter3/05_Statements.md +++ b/source/chapter3/05_Statements.md @@ -29,7 +29,7 @@ 通过 `break` 语句和 `continue` 语句可以改变循环语句的控制流。有关这两条语句,详情参见 [Break 语句](#break_statement) 和 [Continue 语句](#continue_statement)。 > 循环语句语法 -> +> > *循环语句* → [*for-in 语句*](#for-in-statement) > *循环语句* → [*while 语句*](#while-statement) @@ -48,10 +48,10 @@ for item in collection { } ``` -`for-in` 语句在循环开始前会调用集合表达式的 `generate()` 方法来获取一个实现了 `GeneratorType` 协议的类型的值。接下来循环开始,反复调用该值的 `next()` 方法。如果其返回值不是 `None`,它将会被赋给“项”,然后执行循环体语句,执行完毕后回到循环开始处,继续重复这一过程;否则,既不会赋值也不会执行循环体语句,`for-in` 语句至此执行完毕。 +`for-in` 语句在循环开始前会调用集合表达式(`collection expression`)的 `makeIterator()` 方法来获取一个实现了 `IteratorProtocol` 协议的迭代器类型。接下来循环开始,反复调用该迭代器的 `next()` 方法。如果其返回值不是 `nil`,它将会被赋给 `item`,然后执行循环体语句,执行完毕后回到循环开始处,继续重复这一过程;否则,既不会赋值也不会执行循环体语句,`for-in` 语句至此执行完毕。 > for-in 语句语法 -> +> > *for-in 语句* → **for** **case**可选 [*模式*](07_Patterns.md#pattern) **in** [*表达式*](04_Expressions.md#expression) [*where 子句*](#where-clause)可选 [*代码块*](05_Declarations.md#code-block) @@ -70,7 +70,7 @@ while condition { `while` 语句的执行流程如下: -1. 判断条件的值。如果为 `true`,转到第 2 步;如果为 `false`,`while` 语句至此执行完毕。 +1. 判断条件(`condition`)的值。如果为 `true`,转到第 2 步;如果为 `false`,`while` 语句至此执行完毕。 2. 执行循环体中的语句,然后重复第 1 步。 由于会在执行循环体中的语句前判断条件的值,因此循环体中的语句可能会被执行若干次,也可能一次也不会被执行。 @@ -78,7 +78,7 @@ while condition { 条件的结果必须是 Bool 类型或者 Bool 的桥接类型。另外,条件语句也可以使用可选绑定,请参阅 [可选绑定](../chapter2/01_The_Basics.md#optional_binding)。 > while 语句语法 -> +> > *while 语句* → **while** [*条件子句*](#condition-clause) [*代码块*](05_Declarations.md#code-block) @@ -86,7 +86,7 @@ while condition { > *条件子句* → [*表达式*](04_Expressions.md#expression) | [*表达式*](04_Expressions.md#expression) **,** [*条件列表*](#condition-list) > *条件* → [*表达式*](04_Expressions.md#expression) |[*可用性条件*](#availability-condition) | [*case 条件*](#case-condition) | [*可选绑定条件*](#optional-binding-condition) -> +> > *case 条件* → **case** [*模式*](07_Patterns.md#pattern) [*构造器*](05_Declarations.md#initializer) @@ -115,19 +115,19 @@ repeat { 条件的结果必须是 Bool 类型或者 Bool 的桥接类型。另外,条件语句也可以使用可选绑定,请参阅 [可选绑定](../chapter2/01_The_Basics.md#optional_binding)。 > repeat-while 语句语法 -> +> > *repeat-while 语句* → **repeat** [*代码块*](05_Declarations.md#code-block) **while** [*表达式*](04_Expressions.md#expression) ## 分支语句 -分支语句会根据一个或者多个条件来执行指定部分的代码。分支语句中的条件将会决定程序如何分支以及执行哪部分代码。Swift 提供两种类型的分支语句:`if` 语句和 `switch` 语句。 +分支语句会根据一个或者多个条件来执行指定部分的代码。分支语句中的条件将会决定程序如何分支以及执行哪部分代码。Swift 提供三种类型的分支语句:`if` 语句、 `guard` 语句和 `switch` 语句。 `if` 语句和 `switch` 语句中的控制流可以用 `break` 语句改变,请参阅 [Break 语句](#break_statement)。 > 分支语句语法 -> +> > *分支语句* → [*if 语句*](#if-statement) > *分支语句* → [*guard 语句*](#guard-statement) @@ -148,17 +148,17 @@ if condition { } ``` -第二种形式是在第一种形式的基础上添加 `else` 语句,当只有一个 `else` 语句时,像下面这样: +第二种形式是在第一种形式的基础上添加 `else` 语句(通过引入 `else` 关键字),并且用于:当条件为真时执行一部分代码,当这同一个条件为假的时候执行另一部分代码。当只有一个 `else` 语句时,`if` 语句具有以下的形式: ```swift -if ondition { +if condition { statements to execute if condition is true } else { statements to execute if condition is false } ``` -`else` 语句也可包含 `if` 语句,从而形成一条链来测试更多的条件,像下面这样: +`if` 语句的 `else` 语句也可包含另一个 `if` 语句,从而形成一条链来测试更多的条件,像下面这样: ```swift if condition 1 { @@ -173,7 +173,7 @@ if condition 1 { `if` 语句中条件的结果必须是 Bool 类型或者 Bool 的桥接类型。另外,条件语句也可以使用可选绑定,请参阅 [可选绑定](../chapter2/01_The_Basics.md#optional_binding)。 > if 语句语法 -> +> > *if 语句* → **if** [*条件子句*](#condition-clause) [*代码块*](05_Declarations.md#code-block) [*else 子句*](#else-clause)可选 @@ -182,7 +182,7 @@ if condition 1 { ### Guard 语句 -如果一个或者多个条件不成立,可用 `guard` 语句用来退出当前作用域。 +如果一个或者多个条件不成立,可用 `guard` 语句来退出当前作用域。 `guard` 语句的格式如下: @@ -194,9 +194,9 @@ guard condition else { `guard` 语句中条件的结果必须是 Bool 类型或者 Bool 的桥接类型。另外,条件也可以是一条可选绑定,请参阅 [可选绑定](../chapter2/01_The_Basics.html#optional_binding)。 -在 `guard` 语句中进行可选绑定的常量或者变量,其可用范围从声明开始直到作用域结束。 +在 `guard` 语句中进行可选绑定的任何常量或者变量,其可用范围从声明开始直到作用域结束。 -`guard` 语句必须有 `else` 子句,而且必须在该子句中调用 `Never` 返回类型的函数,或者使用下面的语句退出当前作用域: +`guard` 语句必须有 `else` 子句,而且必须在该子句中调用返回类型是 `Never` 的函数,或者使用下面的语句退出当前作用域: * `return` * `break` @@ -206,7 +206,7 @@ guard condition else { 关于控制转移语句,请参阅 [控制转移语句](#control_transfer_statements)。关于 `Never` 返回类型的函数,请参阅 [永不返回的函数](05_Declarations.md#rethrowing_functions_and_methods)。 > guard 语句语法 -> +> > *guard 语句* → **guard** [*条件子句*](#condition-clause) **else** [*代码块*] (05_Declarations.html#code-block) @@ -231,7 +231,7 @@ default: } ``` -`switch` 语句会先计算*控制表达式*的值,然后与每一个 `case` 的模式进行匹配。如果匹配成功,程序将会执行对应的 `case` 中的语句。另外,每一个 `case` 都不能为空,也就是说在每一个 `case` 中必须至少有一条语句。如果你不想在匹配到的 `case` 中执行代码,只需在该 `case` 中写一条 `break` 语句即可。 +`switch` 语句会先计算*控制表达式*的值,然后与每一个 `case` 的模式进行匹配。如果匹配成功,程序将会执行对应的 `case` 中的语句。另外,每一个 `case` 的作用域都不能为空,也就是说在每一个 `case` 的冒号(`:`)后面必须至少有一条语句。如果你不想在匹配到的 `case` 中执行代码,只需在该 `case` 中写一条 `break` 语句即可。 可以用作控制表达式的值是十分灵活的。除了标量类型外,如 `Int`、`Character`,你可以使用任何类型的值,包括浮点数、字符串、元组、自定义类型的实例和可选类型。控制表达式的值还可以用来匹配枚举类型中的成员值或是检查该值是否包含在指定的 `Range` 中。关于如何在 `switch` 语句中使用这些类型,请参阅 [控制流](../chapter2/05_Control_Flow.html) 一章中的 [Switch](../chapter2/05_Control_Flow.html#switch)。 @@ -247,34 +247,68 @@ case let (x, y) where x == y: `switch` 语句中 `case` 的匹配顺序和源代码中的书写顺序保持一致。因此,当多个模式都能匹配控制表达式时,只有第一个匹配的 `case` 中的代码会被执行。 -#### Switch 语句不能有遗漏 +#### Switch 语句必须是详尽的 在 Swift 中,`switch` 语句中控制表达式的每一个可能的值都必须至少有一个 `case` 与之对应。在某些无法面面俱到的情况下(例如,表达式的类型是 `Int`),你可以使用 `default` 分支满足该要求。 +#### 对未来枚举的 `case` 进行 `switch` + +非冻结枚举(`nonfronzen enumeration`)是一种特殊的枚举类型,它可能在未来会增加新的枚举 `case`,即使这时候你已经编译并且发布了你的应用,所以在 switch 非冻结枚举前需要深思熟虑。当一个库的作者们把一个枚举标记为非冻结的,这意味着他们保留了增加新的枚举 `case` 的权利,并且任何和这个枚举交互的代码都要在不需要重新编译的条件下能够处理那些未来可能新加入的 `case` 。只有那些标准库,比如用 Swift 实现的苹果的一些框架,C 以及 Objective-C 代码才能够声明非冻结枚举。你在 Swift 中声明的枚举不能是非冻结的。 + +当你对未来枚举进行 switch 时,你总是需要有一个 `default case`,即使每种枚举类型都已经有对应的 `case` 了。你可以在 default 前标注 `@unknown` ,意思是这个 `case` 应该只匹配未来加入的枚举 `case` 。如果你的 `default case` 中匹配了任何在编译时就能确定的枚举 `case` ,Swift 会抛出一个警告。这可以很好地提醒你库的作者已经新增了一种 `case` ,并且你还没有去处理。 + +以下就是一个例子,我们对标准库的 [Mirror.AncestorRepresentation](https://developer.apple.com/documentation/swift/mirror/ancestorrepresentation) 枚举进行 switch 操作。每当有新的 `case` 加入,我们会得到一个警告,提示我们要去处理它。 + +```swift +let representation: Mirror.AncestorRepresentation = .generated +switch representation { +case .customized: + print("Use the nearest ancestor’s implementation.") +case .generated: + print("Generate a default mirror for all ancestor classes.") +case .suppressed: + print("Suppress the representation of all ancestor classes.") +@unknown default: + print("Use a representation that was unknown when this code was compiled.") +} +// Prints "Generate a default mirror for all ancestor classes." +``` + #### 不存在隐式落入 当匹配到的 `case` 中的代码执行完毕后,`switch` 语句会直接退出,而不会继续执行下一个 `case` 。这就意味着,如果你想执行下一个 `case`,需要显式地在当前 `case` 中使用 `fallthrough` 语句。关于 `fallthrough` 语句的更多信息,请参阅 [Fallthrough 语句](#fallthrough_statements)。 > switch 语句语法 -> +> > *switch 语句* → **switch** [*表达式*](04_Expressions.html#expression) **{** [*switch-case 列表*](#switch-cases)可选 **}** > *switch case 列表* → [*switch-case*](#switch-case) [*switch-case 列表*](#switch-cases)可选 -> *switch case* → [*case 标签*](#case-label) [*多条语句*](#statements) | [*default 标签*](#default-label) [*多条语句*](#statements) +> *switch case* → [*case 标签*](#case-label) [*多条语句*](#statements) | [*default 标签*](#default-label) [*多条语句*](#statements) | [*conditional-switch-case*](#conditional-switch-case-label) -> *case 标签* → **case** [*case 项列表*](#case-item-list) **:** +> *case 标签* → [*属性*](#switch-case-attributes-label)可选 **case** [*case 项列表*](#case-item-list) **:** > *case 项列表* → [*模式*](07_Patterns.md#pattern) [*where 子句*](#where-clause)可选 | [*模式*](07_Patterns.md#pattern) [*where 子句*](#where-clause)可选 **,** [*case 项列表*](#case-item-list) -> *default 标签* → **default** **:** -> +> *default 标签* → [*属性*](#switch-case-attributes-label)可选 **default** **:** +> > *where-clause* → **where** [*where 表达式*](#where-expression) > *where-expression* → [*表达式*](04_Expressions.md#expression) +> + +> *conditional-switch-case* → [*switch-if-directive-clause*](#switch-case-attributes-label) [*switch-elseif-directive-clauses*](#switch-case-attributes-label) 可选 [*switch-else-directive-clause*](#switch-case-attributes-label) 可选 [*endif-directive*](#switch-case-attributes-label) + +> *switch-if-directive 语句* → [*if-directive*](#switch-case-attributes-label) [*compilation-condition*](#switch-case-attributes-label) [*switch-cases*](#switch-case-attributes-label) 可选 + +> *switch-elseif-directive 语句(复数)* → [*elseif-directive-clause*](#switch-case-attributes-label) [*switch-elseif-directive-clauses*](#switch-case-attributes-label)可选 + +> *switch-elseif-directive 语句* → [*elseif-directive*](#switch-case-attributes-label) [*compilation-condition*](#switch-case-attributes-label) [*switch-cases*](#switch-case-attributes-label)可选 + +> *switch-else-directive 语句* → [*else-directive*](#switch-case-attributes-label) [*switch-cases*](#switch-case-attributes-label) 可选 ## 带标签的语句 @@ -286,9 +320,9 @@ case let (x, y) where x == y: 关于使用带标签的语句的例子,请参阅 [控制流](../chapter2/05_Control_Flow.html) 一章中的 [带标签的语句](../chapter2/05_Control_Flow.html#labeled_statements)。 > 带标签的语句语法 -> +> -> *带标签的语句* → [*语句标签*](#statement-label) [*循环语句*](#loop-statement) +> *带标签的语句* → [*语句标签*](#statement-label) [*循环语句*](#grammar_loop-statement) > *带标签的语句* → [*语句标签*](#statement-label) [*if 语句*](#if-statement) > *带标签的语句* → [*语句标签*](#statement-label) [*switch 语句*](#switch-statement) > > *带标签的语句* → [*语句标签*](#statement-label) [*do 语句*](#sdo-statement) @@ -303,7 +337,7 @@ case let (x, y) where x == y: 控制转移语句能够无条件地把控制权从一片代码转移到另一片代码,从而改变代码执行的顺序。Swift 提供五种类型的控制转移语句:`break` 语句、`continue` 语句、`fallthrough` 语句、`return` 语句和 `throw` 语句。 > 控制转移语句语法 -> +> > *控制转移语句* → [*break 语句*](#break-statement) > *控制转移语句* → [*continue 语句*](#continue-statement) @@ -328,7 +362,7 @@ case let (x, y) where x == y: 关于使用 `break` 语句的例子,请参阅 [控制流](../chapter2/05_Control_Flow.html) 一章的 [Break](../chapter2/05_Control_Flow.html#break) 和 [带标签的语句](../chapter2/05_Control_Flow.html#labeled_statements)。 > break 语句语法 -> +> > *break 语句* → **break** [*标签名称*](#label-name)可选 @@ -351,7 +385,7 @@ case let (x, y) where x == y: 关于使用 `continue` 语句的例子,请参阅 [控制流](../chapter2/05_Control_Flow.html) 一章的 [Continue](../chapter2/05_Control_Flow.html#continue) 和 [带标签的语句](../chapter2/05_Control_Flow.html#labeled_statements)。 > continue 语句语法 -> +> > *continue 语句* → **continue** [*标签名称*](#label-name)可选 @@ -365,7 +399,7 @@ case let (x, y) where x == y: 关于在 `switch` 语句中使用 `fallthrough` 语句的例子,请参阅 [控制流](../chapter2/05_Control_Flow.html) 一章的 [控制转移语句](../chapter2/05_Control_Flow.html#control_transfer_statements)。 > fallthrough 语句语法 -> +> > *fallthrough 语句* → **fallthrough** @@ -382,13 +416,13 @@ case let (x, y) where x == y: 当 `return` 语句后面带表达式时,表达式的值将会返回给调用函数或方法。如果表达式的值的类型与函数或者方法声明的返回类型不匹配,Swift 则会在返回表达式的值之前将表达式的值的类型转换为返回类型。 > 注意 -> +> > 正如 [可失败构造器](05_Declarations.html#failable_initializers) 中所描述的,`return nil` 在可失败构造器中用于表明构造失败。 而只写 `return` 时,仅仅是从该函数或方法中返回,而不返回任何值(也就是说,函数或方法的返回类型为 `Void` 或者说 `()`)。 > return 语句语法 -> +> > *return 语句* → **return** [*表达式*](04_Expressions.html#expression)可选 @@ -408,7 +442,7 @@ case let (x, y) where x == y: 关于如何使用 `throw` 语句的例子,请参阅 [错误处理](../chapter2/18_Error_Handling.html) 一章的 [用 throwing 函数传递错误](../chapter2/18_Error_Handling.html#propagating_errors_using_throwing_functions)。 > throw 语句语法 -> +> > *throw 语句* → **throw** [*表达式*](04_Expressions.html#expression) @@ -444,7 +478,7 @@ f() `defer` 语句中的语句无法将控制权转移到 `defer` 语句外部。 > defer 语句语法 -> +> > *延迟语句* → **defer** [*代码块*](05_Declarations.html#code-block) @@ -475,7 +509,7 @@ do { 关于如何在 `do` 语句中使用一系列 `catch` 子句的例子,请参阅 [错误处理](../chapter2/17_Error_Handling.html#handling_errors)。 > do 语句语法 -> +> > *do 语句* → **do** [*代码块*](05_Declarations.html#code-block) [*多条 catch 子句*](#catch-clauses)可选 @@ -486,20 +520,21 @@ do { ## 编译器控制语句 -编译器控制语句允许程序改变编译器的行为。Swift 有两种编译器控制语句:编译配置语句和线路控制语句。 +编译器控制语句允许程序改变编译器的行为。Swift 有三种编译器控制语句:条件编译语句、线路控制语句和编译时诊断语句。 > 编译器控制语句语法 -> +> -> *编译器控制语句* → [*编译配置语句*](#build-config-statement) +> *编译器控制语句* → [*条件编译语句*](#grammar_conditional-compilation-block) > *编译器控制语句* → [*线路控制语句*](#line-control-statement) +> *编译器控制语句* → [*诊断语句*](#grammar_diagnostic-statement) -### 条件性编译块 +### 条件编译代码块 -条件性编译块可以根据一个或多个配置来有条件地编译代码。 +条件编译代码块可以根据一个或多个配置来有条件地编译代码。 -每一个条件性编译块都以 `#if` 开始,`#endif` 结束。如下是一个简单的条件性编译块: +每一个条件编译代码块都以 `#if` 开始,`#endif` 结束。如下: ```swift #if compilation condition @@ -515,12 +550,34 @@ statements | --- | --- | | `os()` | `OSX`, `iOS`, `watchOS`, `tvOS`, `Linux` | | `arch()` | `i386`, `x86_64`, `arm`, `arm64` | -| `swift()` | `>=` 后跟版本号 | +| `swift()` | `>=` 或 `<` 后跟版本号 | +| `compiler()` | `>=` 或 `<` 后跟版本号 | +| `canImport()` | 模块名 | +| `targetEnvironment()` | 模拟器 | -`swift()`(语言版本检测函数)的版本号参数主要由主版本号和次版本号组成并且使用点号(`.`)分隔开,`>=` 和版本号之间不能有空格。 +在 `swift()` 和 `compiler()` 之后的版本号包含有主版本号,可选副版本号,可选补丁版本号类似,并且用(`.`)来分隔。在比较符和版本号之间不能有空格,版本号与前面的函数相对应,比如 `compiler()` 对应的就是这个编译器的版本号,`swift()` 对应的就是你要编译的 `Swift` 语言的版本号。举个简单的例子,如果你在使用 `Swift 5` 的编译器,想编译 `Swift 4.2` ,可以看下面的例子: + +```swift +#if compiler(>=5) +print("Compiled with the Swift 5 compiler or later") +#endif +#if swift(>=4.2) +print("Compiled in Swift 4.2 mode or later") +#endif +#if compiler(>=5) && swift(<5) +print("Compiled with the Swift 5 compiler or later in a Swift mode earlier than 5") +#endif +// Prints "Compiled with the Swift 5 compiler or later" +// Prints "Compiled in Swift 4.2 mode or later" +// Prints "Compiled with the Swift 5 compiler or later in a Swift mode earlier than 5" +``` + +`canImport()` 后面跟的变量是模块的名字,这里这个模块可能并不是每个平台上都存在的。使用它来检测是否可以导入这个模块,如果模块存在就返回 `true` 否则返回 `false` 。 + +`targetEnvironment()` 当为模拟器编译时返回 `true`,否则返回 `false` 。 > 注意 -> +> > `arch(arm)` 平台检测函数在 ARM 64 位设备上不会返回 `true`。如果代码在 32 位的 iOS 模拟器上编译,`arch(i386)` 平台检测函数会返回 `true`。 你可以使用逻辑操作符 `&&`、`||` 和 `!` 来组合多个编译配置,还可以使用圆括号来进行分组。 @@ -538,42 +595,63 @@ statements to compile if both compilation conditions are false ``` > 注意 -> +> > 即使没有被编译,编译配置中的语句仍然会被解析。然而,唯一的例外是编译配置语句中包含语言版本检测函数:仅当 `Swift` 编译器版本和语言版本检测函数中指定的版本号匹配时,语句才会被解析。这种设定能确保旧的编译器不会尝试去解析新 Swift 版本的语法。 -> 编译配置语句语法 -> - -> *单个编译配置语句* → **if** [*编译配置*](#build-configuration) [*语句*](#statements)可选 [*多个编译配置 elseif 子句*](#build-configuration-elseif-clauses)可选 **-** [*单个编译配置 else 子句*](#build-configuration-else-clause)可选 **#endif** - -> *多个编译配置 elseif 子句* → [*单个编译配置 elseif 子句*](#build-configuration-elseif-clause) [*多个编译配置 elseif 子句*](build-configuration-elseif-clauses)可选 - -> *单个编译配置 elseif 子句* → **#elseif** [*编译配置*](#build-configuration) [*语句*](#statements)可选 - -> *单个编译配置 else 子句* → **#else** [*语句*](#statements)可选 +> 条件编译代码块语法 +> + +> *条件编译代码块* → [*if-directive 语句*](#grammar_if-directive-clause) [*elseif-directive 语句(复数)*](#grammar_elseif-directive-clauses)可选 [*else-directive 语句*](#grammar_else-directive-clause)可选 [*endif-directive*](#grammar_endif-directive) + +> *if-directive 语句* → [*if-directive*](#grammar_if-directive) [*编译条件*](#compilation-condition) [*语句(复数)*](#statements)可选 + +> *elseif-directive 语句(复数)* → [*elseif-directive 语句*](#grammar_elseif-directive-clause) [*elseif-directive 语句(复数)*](#grammar_elseif-directive-clauses) + +> *elseif-directive 语句* → [*elseif-directive*](#grammar_elseif-directive) [*编译条件*](#compilation-condition) [*语句(复数)*](#statements)可选 + +> *else-directive 语句* → [*else-directive*](#grammar_else-directive) [*语句(复数)*](#statements)可选 - -> *编译配置* → [*平台检测函数*](#platform-testing-function) -> *编译配置* → [*语言版本检测函数*](#language-version-testing-function) -> *编译配置* → [*标识符*](02_Lexical_Structure.md#identifier) -> *编译配置* → [*布尔值字面量*](02_Lexical_Structure.md#boolean-literal) -> *编译配置* → **(** [*编译配置*](#build-configuration) **)** -> *编译配置* → **!** [*编译配置*](#build-configuration) -> *编译配置* → [*编译配置*](#build-configuration) **&&** [*编译配置*](#build-configuration) -> *编译配置* → [*编译配置*](#build-configuration) **||** [*编译配置*](#build-configuration) - -> *平台检测函数* → **os** **(** [*操作系统*](#operating-system) **)** -> *平台检测函数* → **arch** **(** [*架构*](#architecture) **)** - -> *语言版本检测函数* → **swift** **(** **>=** [*swift 版本*](#swift-version) **)** +> *if-directive* → **#if** +> *elseif-directive* → **#elseif** +> *else-directive* → **#else** +> *endif-directive* → **#endif** + + +> *编译条件* → [*平台条件*](#grammar_platform-condition) +> *编译条件* → [*标识符*](02_Lexical_Structure.md#identifier) +> *编译条件* → [*布尔值字面量*](02_Lexical_Structure.md#boolean-literal) +> *编译条件* → **(** [*编译条件*](#compilation-condition) **)** +> *编译条件* → **!** [*编译条件*](#compilation-condition) +> *编译条件* → [*编译条件*](#compilation-condition) **&&** [*编译条件*](#compilation-condition) +> *编译条件* → [*编译条件*](#compilation-condition) **||** [*编译条件*](#compilation-condition) + + + +> *平台条件* → **os ( [*操作系统*](#operating-system) )** + +> *平台条件* → **arch ( [*架构*](#architecture) )** + +> *平台条件* → **swift ( >= [*swift 版本*](#swift-version) )** | **swift ( < [*swift 版本*](#swift-version) )** + +> *平台条件* → **compiler ( >= [*swift 版本*](#swift-version) )** | **compiler ( < [*swift 版本*](#swift-version) )** + +> *平台条件* → **canImport ( [*模块名*](#grammar_module-name) )** + +> *平台条件* → **targetEnvironment ( [*环境*](#grammar_environment) )** -> *操作系统* → **OSX** | **iOS** | **watchOS** | **tvOS** +> *操作系统* → **macOS** | **iOS** | **watchOS** | **tvOS** > *架构* → **i386** | **x86_64** | **arm** | **arm64** -> *swift 版本* → [*十进制数字*](02_Lexical_Structure.md#decimal-digit) ­**.** ­[*十进制数字*](02_Lexical_Structure.md#decimal-digit) +> *swift 版本* → [*十进制数字*](02_Lexical_Structure.md#decimal-digit) ­**.** ­[*swift 版本延续*](#grammar_swift-version-continuation) 可选 + +> *swift 版本延续* → **.** [*十进制数字*](02_Lexical_Structure.md#decimal-digit) [*swift 版本延续*](#grammar_swift-version-continuation) 可选 + +> *模块名* → [*identifier*](02_Lexical_Structure.md#identifier) + +> *环境* → **模拟器** ### 行控制语句 @@ -592,7 +670,7 @@ statements to compile if both compilation conditions are false > 行控制语句语法 -> +> > *行控制语句* → **#sourceLocation(file:[*文件名*](#file-name),line:[*行号*](#line-number))** > *行控制语句* → **#sourceLocation()** @@ -600,8 +678,27 @@ statements to compile if both compilation conditions are false > *文件名* → [*静态字符串字面量*](02_Lexical_Structure.md#static-string-literal) +### 编译时诊断语句 + +编译时诊断语句允许编译器在编译的时候可以发出错误或者警告。语句形式如下: + +```swift +#error("error message") +#warning("warning message") +``` + +第一句会抛出错误信息并终止编译,第二句会发出警告信息但是编译会继续进行。你可以通过静态字符串字面量来书写诊断信息,静态字符串字面量不能使用字符串 `interpolation` 或者 `concatenation`,但可以使用多行的形式。 + +> 编译时诊断语句语法 +> + +> *诊断语句* → **#error** **(** [*diagnostic-message*](#grammar_diagnostic-message) **)** +> *诊断语句* → **#warning** **(** [*diagnostic-message*](#grammar_diagnostic-message) **)** + +> *诊断语句* → [*静态字符串字面量*](02_Lexical_Structure.md#static-string-literal) + -### 可用性条件 +## 可用性条件 可用性条件可作为 `if`,`while`,`guard` 语句的条件,可以在运行时基于特定的平台参数来查询 API 的可用性。 @@ -622,7 +719,7 @@ if #available(platform name version, ..., *) { 与布尔类型的条件不同,不能用逻辑运算符 `&&` 和 `||` 组合可用性条件。 > 可用性条件语法 -> +> > *可用性条件* → **#available** **(** [*可用性参数列表*](#availability-arguments) **)** @@ -630,7 +727,7 @@ if #available(platform name version, ..., *) { > *可用性参数* → [平台名称](#platform-name) [平台版本](#platform-version) > *可用性条件* → __*__ -> +> > *平台名称* → **iOS** | **iOSApplicationExtension** > *平台名称* → **OSX** | **macOSApplicationExtension** From 1abd1157fdfefd19c1bd818bcc9f65ada14a3c3c Mon Sep 17 00:00:00 2001 From: DanziChen Date: Mon, 4 Feb 2019 01:55:37 +0800 Subject: [PATCH 029/107] update swift 5.0 (#886) --- source/chapter2/09_Structures_And_Classes.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/chapter2/09_Structures_And_Classes.md b/source/chapter2/09_Structures_And_Classes.md index cd91e2b7..fdce2153 100755 --- a/source/chapter2/09_Structures_And_Classes.md +++ b/source/chapter2/09_Structures_And_Classes.md @@ -31,7 +31,7 @@ Swift 中结构体和类有很多共同点。两者都可以: 更多信息请参见 [继承](./13_Inheritance.html)、[类型转换](./18_Type_Casting.html)、[析构过程](./15_Deinitialization.html) 和 [自动引用计数](./23_Automatic_Reference_Counting.html)。 -类支持的附加功能是以增加复杂性为代价的。作为一般准则,优先使用结构体和枚举,因为它们更容易理解,仅在适当或必要时才使用类。实际上,这意味着你的大多数自定义数据类型都会是结构体和枚举。更多详细的比较参见 [在结构和类之间进行选择](https://developer.apple.com/documentation/swift/choosing_between_structures_and_classes)。 +类支持的附加功能是以增加复杂性为代价的。作为一般准则,优先使用结构体,因为它们更容易理解,仅在适当或必要时才使用类。实际上,这意味着你的大多数自定义数据类型都会是结构体和枚举。更多详细的比较参见 [在结构和类之间进行选择](https://developer.apple.com/documentation/swift/choosing_between_structures_and_classes)。 ### 类型定义的语法 @@ -206,7 +206,7 @@ tenEighty.name = "1080i" tenEighty.frameRate = 25.0 ``` -以上示例中,声明了一个名为 `tenEighty` 的常量,并让其引用一个 `VideoMode` 类的新实例。它的视频模式(video mode)被赋值为之前创建的 HD 分辨率(`1920`\*`1080`)的一个拷贝。然后将它设置为隔行视频,命名为 `“1080i”`。最后,将帧率设置为 `25.0` 帧每秒。 +以上示例中,声明了一个名为 `tenEighty` 的常量,并让其引用一个 `VideoMode` 类的新实例。它的视频模式(video mode)被赋值为之前创建的 HD 分辨率(`1920`\*`1080`)的一个拷贝。然后将它设置为隔行视频,名字设为 `“1080i”`,并将帧率设置为 `25.0` 帧每秒。 接下来,将 `tenEighty` 赋值给一个名为 `alsoTenEighty` 的新常量,并修改 `alsoTenEighty` 的帧率: @@ -251,7 +251,7 @@ if tenEighty === alsoTenEighty { 请注意,“相同”(用三个等号表示,`===`)与“等于”(用两个等号表示,`==`)的不同。“相同”表示两个类类型(class type)的常量或者变量引用同一个类实例。“等于”表示两个实例的值“相等”或“等价”,判定时要遵照设计者定义的评判标准。 -当在定义你的自定义结构体和类的时候,你有义务来决定判定两个实例“相等”的标准。在章节 [等价操作符](./26_Advanced_Operators.html#equivalence_operators) 中将会详细介绍实现自定义“等于”和“不等于”运算符的流程。 +当在定义你的自定义结构体和类的时候,你有义务来决定判定两个实例“相等”的标准。在章节 [等价操作符](./26_Advanced_Operators.html#equivalence_operators) 中将会详细介绍实现自定义 == 和 !== 运算符的流程。 ### 指针 From f44291ad8e6e407ee65cecac9a6994f0543817bb Mon Sep 17 00:00:00 2001 From: Karsa Wu Date: Mon, 11 Feb 2019 22:10:40 +0800 Subject: [PATCH 030/107] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=87=E4=BB=B6=20?= =?UTF-8?q?&=20=E6=9B=B4=E6=96=B0=20README=20(#887)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 修改第二章部分细节 * update control flow * 调整 Functions 章节细节 * 重新整理翻译工作主要贡献者记录 * 更新贡献者记录文件 1. 移除与官方文档无关内容 2. 归档主要贡献者记录并附录在文档最后一页 * 删除多余内容 * 更新 ReferenceManual AboutTheLanguageReference * 更新 README & 添加文档 --- README.md | 8 ++++++-- .../TheSwiftProgrammingLanguageSwift4.2.epub | Bin 0 -> 1856003 bytes .../TheSwiftProgrammingLanguageSwift5.epub | Bin 0 -> 1774124 bytes 3 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 document/TheSwiftProgrammingLanguageSwift4.2.epub create mode 100644 document/TheSwiftProgrammingLanguageSwift5.epub diff --git a/README.md b/README.md index 71dcc4b9..fbb06237 100755 --- a/README.md +++ b/README.md @@ -13,9 +13,13 @@ # 当前阶段 -Swift 5.0 翻译中,请到 [Issues](https://github.com/SwiftGGTeam/the-swift-programming-language-in-chinese/issues) 中认领章节(在 issue 中直接回复”认领“即可,如果有操作权限也可以把自己设置成 assignee)。 +Swift 5.0 翻译中,请到 [Issues](https://github.com/SwiftGGTeam/the-swift-programming-language-in-chinese/issues) 中认领章节(把 Issue 的 Assignee 设置成你自己就表示认领,不要认领已经有人认领的章节)。在翻译时可以通过 Calibre 软件对 document 目录下不同历史版本文档进行 diff,检查待更新部分。 -- 更新到 Swift 4.2,2019-01-27, +diff 操作如下: + +将最新文档加入到 Calibre 中,点击 **Edit Book**,然后在编辑界面选择 **File** -> **Compare to other book** 检查各模块的更新内容,详见[链接](https://manual.calibre-ebook.com/diff.html)。 + +- 更新到 Swift 4.2,2019-01-29 - 更新到 Swift 4.1,2018-04-12,感谢[@Mylittleswift](https://github.com/Mylittleswift) - 更新到 Swift 3.0,2016-09-23 diff --git a/document/TheSwiftProgrammingLanguageSwift4.2.epub b/document/TheSwiftProgrammingLanguageSwift4.2.epub new file mode 100644 index 0000000000000000000000000000000000000000..84dab8bab73bd3220aa956002a6128498b0554cd GIT binary patch literal 1856003 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

m+)vup!q&;Vb7Z$uGm$cqc8+pfcSD_alw6 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

vbu1sYvFiWmXz*wDeM< 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®PJ$nU%8G;d)hXy#Fz?vq9 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

bbj< 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 Z1PCm4wX_E1D)}?cqLWA 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
+-Y>cu_T*+Ujoc4FmMm!Zb>NumD!o=v~Z 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 z77∨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® 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 literal 0 HcmV?d00001 diff --git a/document/TheSwiftProgrammingLanguageSwift5.epub b/document/TheSwiftProgrammingLanguageSwift5.epub new file mode 100644 index 0000000000000000000000000000000000000000..a18a7e4455f391769264fa24d51bd93ba504aca8 GIT binary patch literal 1774124 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

h8z@}Znf*B0! zMfnii7qwSM*?;I_iq;%4JrTOrlcs*v%QNB=Ne|4ydnfW?u|{>F z93q=V1^aB2@RKi4=Ig5H4X)E7%*x(W%22F^TPD{GeQAx-D{=Pk<4=3ccA5=Lxg7a& zOClrfYz+~MT z59HOq@evOXd^Mp`W~O88Mrh1>ICQ2gNs-&~Naf0yP=31(Qd~R|LrB}Ywfe@2Jr$xO|V1L!2XDG7uztYqkrk)h$b2(hh$i7$es3&sg+koH3 z6&c1%65AfopFm->Y&En)`e&hM^Bes6cTletuU;?{v%S_ECM#uqgI|4 zN_OuOq)L?vn$l?{Oqo)Nzd9PulqPXE@UOMk9 zy9kz)80&Ob2KA-r0ir_l`gL0W+1+e5U`WD1E&Q4m3`^?-vft6mV{wXa;V6e|d$%2+ zr4lPLJc(DXw6&Of7eTxsVLVkLgf~?A(w^ItERZDZW`9SrpblqT(aI@p$yS*1-}AgZ z(MzZ!RW8Jwffi<%MVN|r8e~}kbZM+`Y>cjSwM|)@Z%sk0FVCf!HXCY-9`fnd+N@4&&ir=gTDIYwir^b`#?{^F?*t&FjzRC@V9>@! z?~OnSrrHXk;CVF^N!c9i(W#57XIG- z=A}H$7Bew-Djwo7vuNXG+Oj$#A>|{|>_}}?1Aa4)^>-NBfoloou$((;VtbYUE9c01 z!VWQX+q^<5!)fkZ2|7_^!le#bFn|L+Yam31Y&H{kR+Catl$v=2vpNZ}-l$aKB`c@w z*=oM64^HG`b-|EcKU7fbZ~|6`w+Q$vllNxT!3HlI0e*pxQvm>@M{Y}l$@X;<9HpIh zUlnkFVH)PfnIp(z+g^*P38fnHWecaTW5mfC>v!F&#WDBdF<5a)QVBs$>n=PEMqBM2~qm;l!o=cL0pI~ z1q;vRMt71%PeC~KsqHUePVW@s1fO^}YU*ragiJmz-tB!+KM@RN#%7g4c!6FO#HO>> zQr2*5kX9~{&B|q39*%A9teBmO@6`Z1^y(~T+SXC(E)`ZrdpVM7s%WB#KQ{s+K!J-Z z>k6wwmc#^_>>1{tbS167e5y6xhfx*DzLOL?sSga4QtC~u-`9LT%ktz*Oa#7*k-C_< zS_y3O#@=Ja9a;0E8697%Vq-Be7+UR@N+rj%R}kkm^-#SULNO09p^9^w?I4+$8PGW8 zd9PMSiMsO@xKvFOUJ6Yx3+MQ&w0TFE8Lp#h?s?KGKdC3+oQv}#jeeEXg>GMb7zxTH zq}D⪙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⋘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%0DxC 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�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%0A`t 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%0AOxPHe3dc>>6qARp3 zxo6HeOR%DdKjZTwBteKD*9&9c+$>z_h~TnDJGn>ag*`PY*>eaI9tSjKDWYAao_On6d(Wtb8P_=g*Sr! z1vc%}#uMsz%a?3~s+Tz2Wm44@n{F~N<5p?dr?tW^n6gIBC)*WS&Ew6T_`Mc(dHLRs zBWEYpj!x@6g<}Lt-JTM^bDfFRmt|7Lr6ZXpPhuxHhTV`b#M%^ToVM-lzrvLIZy5*K;& zv^#|0C!&w!B(z+cH^f-xPq0q(jI{OE>1@Mp+F%sVr_lZ~w9{M2`s_~{gz7@5V?ga~ z_vDJe0#$S4YZ&*HsCfXfcG;su?@gZZ;tatyH*G_b^hc_83_rxd-mM zEQvLUTHZR<9}M*jfm~j7GJj^NJ;*qlh)`QLbEq+cx^yORfw{#-5m15d)!~`%LDj*O zdqjDYEnGZ)-$8|t7zWan7gsLynGbLU?^3s8%gTc*oxX$EaMBV-NMk0!j$`9iwI0;{ zJn)7=0s9WpWM>Q;e5y5F1R4kOPl!~_q|ZunWICOg0?7VVJdn_=r1rKaPGwD0r<<;)O%F-86@LR<5c6J!*l5gzN<%~T_1CTf(iJxjP z-oH8B*d(@99OV=0vhDLzg-UjYAY}mAoXB-Kc>3nJho=#EWC ze>8NH8|WxSWM*8-B4q4E*c;&5iTNl;lufJ8SNE*)uGd77=4ARV2vW!OkY!1 zQ^A{$^q*g!Ue@m{LAJG=e)KYvdk_`d+lN~lj8_-T$3UjBTL*3pfwae}mP97~MtkQ3 zOLW%9KoWt+FsQ$jr!39`jz?Vi5byI9rE{6y?x;-UKa~g#}>Hd;k^hmymTp$X4aR zpt~Pr)Qnd~OjTRMrr#tes^drdGCj^BRU}U!0mbv^!{dQyQvQ-wle(||GiCBQknuQ* z4f(Dy)&ZV+!gK%OuF-~U&qu+q##qqo>aXcmp!NHvcsDj?Q@FY>tqOSpDm;e&xk~CX z8$CASIr^Qt8pMPjggjb+5pbN{98<4F4fOH6RfgwPUi~|?;f>@eVT8niWlZ~~f*&Wz zXAsO$NBOe4D^<#c%Os_`e{m?ScDTUN)Xh})*(M{&jN_U%sy&E;l3Y=P(vI?k|vgN>XGGS^HTa^rZ{ zdH!U$?*zMZSo2dp%J8Bm8aO${Ll;*G#hsk5*>T}7r0J$Z>Iu`U12?xBXlG)zKkjk@ zKg&LEs!Dw|wc9PSdcyqf?;EVOR{?_NP`bc z7w^xu@U-1e1-zpT?GrNjgy3L%(Me>@DPs2jf~p}2`a$P@sho$bC*t$(8V+m_{sZFd z?ow6rSE|NyggBRPhOZ8rF69e&|5#o&4n8${8(FI$7m-*!nj2~fRttO%oAk~olj~y} z6-YpwWdu8712PLjAR%-x5Ax+myJraxgy9K;kdGbj&;nmaTnuCpOTuH1PK71#vvL%u zVVvQD5MOa?%#@FV`u?y=7T7)ZtmrFmJiCK0_2AR>7>Obfk7|mwzc*^NM&S3XFQ|oR zYm*xi7GiDO62uouaGpmM(KlE*s6zJ<13tu_8;5Hw^^%j%L@aA#M)S6uU?%Q)9^d$x zRvcqNW!<{Gu0Em3m%iBss-9W5TV3lmH4K)^iTJnZENHLbuF?+oH=$y*V#0^+(V0aG zcwKc*5SM^Q?*hPS{o$W@t?H!XC7Wyrrf)3!6k+dpo?pdcyT1CaKzb<9;bTO$TAB@% zZxb>KAESK2MqDb5s?r23$@Fa$Yx{8YzQb;Xkzo^9@xlZikOpCj+c>nIWTRqTWU%D; zG*4ZlyI-{_-6_xX4rt)dFB$gxaY{?h6KkV^I@u?zs)3gaFW_5DPMH{%iKlY;$zz(c zs%b=z-;V(JQ06aD8i#DDyymXb8w+?HOQ`M(`|>ml0W!fl)(27d)Bsb9&6K=r_BaQ_ zOuBF9r9DHn#5-Hs@8nE9<2-@oxD*uE)rJ^StsUf3fLscnE}ghhohHr z2oFo$BLBi!l0GEnlB zIui(;l8fV62aEGnOG{@K18DmDHUIx zG%UC_?u?VLAY%S-qQk@S##|>)>5T%z3FZV+C7&Z4%G58t!B{zi?nr9J8+-EmCjtIY z0`hnkn$22CSW3Yvk3ZrUY3+eDgu4zF1P<#tAz9pbs8QkxTh}Y5L5=nRi<%Xg)2)a| ziGJqw(d<9DY4N{%35~0&)!hrnE!tnFlVssQ-X$z5H~pc17q7bj0hGpnD1P5A1Ysu( zFnJ$YQJNRAru(#PXSPHAyA}{M^2tN^ep?G$WcCymfGeN*+$ zeV!x<9~W$AISv(&7|e@#cSN-z_=3W0gDeSq+++c@{@e|NA*i=A={(Eus+bML&M!>@ zth-U&>i%n%+UyqGyE>gd2?kmF!UDEvZ1+VHuu+%+*@kV59T4dU=$ah;9RSkr)DT1* zDY^Cht-1=o$jYPM9X*_zSqtq8S;*{vW)>C47q@K?klLNT6PyD>K%>DiOtKS2!hCJc z*=Z|&tI}^6L`O|vn8#Bd*Jc^=I5|iXoMho$Sx>I?u2Lw?B}Q6NF+G!;2geJQO;gwI z90Fhc^-u8p{Pz0cK^|tl(m%o(L7#i7{dJl9k98|O7dg)n`oQ|?Xsdbv3l)ZDlfoDo z_d=oETeW@dauM|8BKt!i)nYsO_RLT!JKrz6EOw*T`C26U<0N82My-+J6*N@j z1H{^D@1oSj2013Vs83c$L-Y#F$u>3$bc#Mi$F+L|B(v$cS5!+)IHI&@O#?AAc)tFP zEbC<0sF5*Jee?X|<^gwKkl52~8=fr%Y@Q9GWV!rw^7Fj(rA$)>y%(M64VuWYxsJAj z@v8;xoh>pZ@}gO=wA&}k$D>_`12UpTkfJV81u7!RkaIG6TQs>^o8L8Sf|*0k7~2I* zA&}^8ThRBs@y*aAjoWhrf~F!m6zw~Zif(@{Cg7vAC-E6}=_(c-GNf=h+a5goR&gi& zB9OeFA6~!sDauyhX#qKUNxnmZ0|@yrl(C*EEZbO5r7IHK3}#)V$ph2juv>BBwhInv zvohR^6%bjTseLLeC@66zF=&=+(za`AC5imDgCO)KU8FDp0r8vai1%3}o&98GW*(^I zDnMwF0KgSmCoVDr#>$-gi@W%ZFvc0FF}_H$t8j+4)>$hkLl{8ujuT{@g08;VzNzd% zdLDEzo>!c_^8J18#+>r&6ak zgTusI^gM3DJ;~O@=xKID7x#(N;~9KO^n*oaZQ9MqCC7;GQ3r&MY@_l>OX4D5{2AIb z7d`m4Y)(#3B;GC4kF4rLyS~F^FIumOKP+0%tUW5iHq|HiW^F9WLPrQ?z1|lt*JI9y z`;r5d4#GzWI$02h?Vg(ASZ{POd)|-?&xJ1t16lPn*hKpLBzIGCMApEt_yu9US9CoV zCiy_vAA94ODnhvWMRr=seiRTcLv}sJ2fg<%Bjp&#`x1bvE4#iu6~8c&XxN??t_W@8 z*OLp2Kj=XDg|eSXHR^(o`q7iJgQjN+>{8$`l1WjsH{PpQ4{l60J-`ziRoOythT8+<11~u* zZ7vWptGC<0I=hlAa=d>g0~a71odm~&{~RbzF=jA?B&^%M)NupF;=qkn>!?`>jX}ecw-P5nperNJU)e3yH&69gQ9~#$}t)^1m9gkb4s}s{#BOK4>0T?F5 zkt>bm0cM(iVMTy})Z=j}wqi&CEk1`m*@qUFN5xiGPm!f`P%9?jKS|%Ry2Cy*7*>%~ zrof^P5KsGwM+?ELeaSqRmLtj2Ci*sLnLeHiVd}-v%4i;6HFC11QYrH z*iw?bTyQzraJ)#QYa&7vJv-p9^BMNj&! z1sa6^=w@Nt@}Y;;VoLb*+5-p92MG!er^UdlO$X%i8@i&3QXJ$6yIASbfc6r#N6&f8 zn5v-2_D(XsX^<#?W>U9t6tKYX3`j(QOR2&rAxU3AK092sYpk(aD`pC-ahR;wH z%b7}-yWvjMEUkaKZZ_FA9c!%<{2jUVUBx)HDd-HwJ;fC<;Y)IpEBAltzoW}*vb9oz z3#$ybMVu=3TwFyn)WHkQgAKuU@$VVEHyOk=1E5&W7W!6iqvf}CWbOthlCFRbhQk6VE0Bot%5k>fVcJ-BxrmT&mzn{xJho?vmOO!V4{6c$ZEu z%kq^H7qG1G5{5)(lX$bwsa41Ke1<+zMh=oSK| zpord|B!eq%5xn*MwCXlZ1-jXSfM_^(g+i+vYoy}Rq-xZ6(kuhI+T2VfHi1VD(6zdT zsp&2nLPOxvnq^KahXfPf5g*QSY}5P*QG>%n0w8{E!-b9`C!}0iv?)ZI6zft&obqQ- zoh642tO?jXN7$yN0{`t8@1)6WBaWh~a4=7Wn%Zh4hrY@})@Wc>0mNFf;Yc5Gd zMWk9zdK;Ifp~N*KVm|vK*jA#1^FkxlH(1!Dam&|7q`VQLG&RZ~Jm9`4>S7+r_&_M| zu0%_x$C-%n=n_y-B@Gqk*)A^Q|75^z+DF3M1M59@-z2VnCM=t}>3C<`T8&|N3Qt?B z9C1_s%1-W+WE2%jO(|AJMhB$m$3y^x8t}#wa{DB>ZyoO$e20mZYFymGT%Cd)OK3Kg zZ-@9MB&_1i6Zf(JFQbQ60WTMw#Le zhY9ILhFw4FDu*gF2}Z#*OM{AyPPKBQ-ZM&+J|n2y`M=EkxCnklpLWWAd!6_H<#~IF zH#P7e>3E?^6&tlr4)EQm5%0TINO&09(`E?P&#oVE-S@czL6s7309wmso1ifZG&%#Kd{4?=;^PBlxT|(dR7ZPH)2r(}H0vIgMcODVC$kL1) z`=B4IkCZW@=JK|1X7QseIlW^7WTuo5JgHdMT=?bkY5pF)OQy?dvFT;z&ggp`#|3AQY*J^3G82Nw# z1sjZgo?G!KvOe~|?@T++HqL5kCWVQw(j%JJSD0MjM)NC$MGH&m93u(-q3wO>x8|@i zO6a!G!@_l{;D>qa!lic&pLFsKz+BPawX&|-krHJXQ>O+l3ouYS4LWRMjI5VUX$O^| z2}_?tg%%yI?GYWti(IOHYj=t53-+t&blnVrFz7^gjuY22IZftB(02*Fs09aEC^M}> z8Mw8EtHJMsT?oT3XvE8W{a0dk!q!;|!sILahmy2gfY&A~8?TdDhK&`HmT+SveKeet z*FrZ3+_H6aR&ujik4Q45op7@z%3tu=>29?%YHa2F&&Dj06eYeN!hH%}L=NK?0tF^x zazBCaqhkS5-_2O9x3ke)r$=VQbq~ZeJio$3ZuB8N(Y?;WZdsPk2YvIEaYCsAgOcQ? z?9)f8K(CBVqTZxU)1*lRJ@;u0sOXzI&_ROk`3ylu z*o5pv;^u@>Mp_g0^{B8qY|p)YLG4O6o$^w)_v{i=zLiLoF|g&@BTW{0)_1EBf70}& zidETV?L_7()j$T@o8_r*A=@|+_4@o$_8jECPlgrxr_Wh8`&2oY%tw9=4?Q3?Xuo8m z*ZbJ0(8%N6%Zy=|Fm$Hy(c~1g_c>ANZJN0&bf|-PlqZ12?Ec{qvHb1I#FdLjk7n0! zaPfsn!H+JDVWB7ICF~M3Ln%DBGE{2M16#dH zz{zJ?tzVQrGhcM16M$Y`^!bTUu`7Uon2xHhk(A8#KM$J2Eeu~CT`C7dvU|F;cAb!n z-^{jRJpB69lbo2lc736f8+2>?TgU&E%vliI(z!*}bFMy= zckMx&3upKo7oK?8POXB{9HkZwl24&*gU1c3X4cK3F; zU1xnKR|2bh_3}n!cia2NKa#@kbG_38!;%(`&ld+Hu69JmGo)Z>2XBk-W-d`l!tFiJ z9HpqyJI3{Z1_0&fV}xzq;le{6k94=SZMjjSz0fhg;ccPaef;q{oNclhl_U;`xrh5l z7=(_da5dlLz3YSo7t82GKmts^Siqmyz2ThZ=Rcif$08C-9mN+fmFODo{^A+10lWGc zh0m}odcVrwr1AL?s@Gd$-MnYhP!rLS@7rNo;T31;qFYV#6o=KOt1U-a5wl!Y@MCvi5D zVz-^PA^^u7Svx|#bu=;HbBJI3!@YUst}gl%U^`maa4-_-7lM#$OVugmHaCOW40-LQ zHa~nn!2bQI7UkvSj$${`R>ksx9Xx9=WsL@yi7+$=m8+^uMfe*Bdi}Jv3&Z^VHD=aMBT0($7PnMEIm`Ycq$@fNExOU; zp|el;;IGAS_zm-aZ9EdHJ92|P;q!QRnsUA2)fI#yUo;6Fj1q;JhRDi* zJgTvUV`5Nzb36ZwgsCB~as6KiiQPC%1p2BtYqC25;Mj3)1rdBM zwrLMN9T;yhp$w-deH&UNOb#hoe)NoIieeVc0koqA2a=eIRiz4b{-Vx|v&CVN%2bV6 znODl=W~h1Aw>zL!_~+>_3j4bES8b6rkQr~vG1X074|5~&yk-kc31vY7g*-Ex!j6Ms zXfQ9iGSi`a7jl%U{6@x8Q_q_ahV-As6d!4PyJ-bWVi_Atf$G^BS{z&>qAY=r_#%z4kEl|y9SiRr%NjHbyx)~sS%AyD z*E1^ncTI^#+rw~>O9(!D%~X|2xUHI^!56heUtiaKn=F{VXb^}$0F(P9I~SH#e3457 zd!cOPZC)kdlO+M>k*fRySR+VKfs9HxaHVNNiXvWGnW-W(qd1#?q>U!jNJRT`Dw8+V z3MJkCB6BxBKZc}kF)8?1zc6{;UC&;b;#Bo4TUYDTJYO(K<+W&;FB{Hg{nEouT7CRn zecZ7vYA^VjGHoA?C(Rf!Q_t=cq17FH!pSnFKztF17cF4zo@m3mFwQg54EcQrp9_IS z8qc6#L=9~Ci+KQ3msbr1URTO_{H}hc=tR#q43al`+f0aBFp%rj_x5+RFUK{P#|O}; zepiv=@#4;`2=4Cr_v&1kMuFx5spV@mDQXvvLqUhqIJ!!L93g85`|Gh{*|Zux+rGy6 z;9~HE$mbGu|e>Hm5Mni#5HXQqijBx^W?e9Wy03q;&i|#1rqZhoi&I4)xoR zvPG2Z(;&B^#r~kenh~{9-PTT(%zVNL_LFa_)wy#+Wo8sNZSbf-mDtnkAGx2bj}tQ= zYo*sgLk>wtnHD^twMq zlXgDEQUlN5HXvvL;oC~}8ne2cmJvE{zlzdA*CWU;Z&gKWvDZW}YDU~cgRij4a=Q`{5fP=W5CI|AbcMtsGa#(Lul&)QxX+4 z)?Hd_`$sL??l(XKL2Wa|IsXA<{ek|6m4{_;Ayy6er(pN9W8ePfn^E!tnPEtFjaEvz zClr?Dlsn+?NF;0}G{QISSgBTpl0w36WM;YzORgcYf4Y_?Jp90_;_#43alAJ-jtw7W z`)FO6t9+)S-*=_lt}EjBJ-a)D4utpIERWUgapnFGSt&Th*1qhmA>x1&U$P$-r2PcRNLZ}hgqBk9?i(`H(o#gh%J2}C&P| z#NuVEQ$`f(UyG7@Mgfa7*A`{11j}S~x+u#R^Qc&E^eJoR1F|G4K}d z4s1c#?8qliAOfHLP!LRuo!Fg)z@hOjzyI~yvKyY67PwGQz|B)UW3sw)+@jmhdw9~% zGZeXosK!}4K9hpr-INh@S=p=imge!^ZLzk=Y@ zFS(`=+y)mMvOX)DmdS;2)Jag`I*c7;un&nMv(F%Two7GgZx>cs~`lT^>PK1SVrq?d(QrM^fu&p0@=&!?m6J zmb^BI@=uuWDFr+WY3fmI)jD+zE}J|WP+W_@#zcj78OjnYl4KFav8d;58+dy*{|9tH zi@&E#_}0ozpwPvZTCaD#U1QPolq_A|oPx5*AJT)-qIb4Sfz7F#bIy3~IqNwsivp}* ze6$TkLN`pyuTd*-rSUT6o^P6AClu&+Y0!RaQmpN2kt$YfXZiU_6PRhq5D2Zda*`9N zGMKyVZFzw!XAJ15iBHTzU+q-3s)k#J^{}U5Y;e4?k^jXG@DavQF7Ry}`%@|~SejhY zCLVG05zs-O==1jE1Hh+<``r&KHP!8;=DwWnR9cLomQD&Uu( zSBc=<2?G)xR$cJuRy{#+@h%HmjQOck6hm`d-n|X3uvcV6>QDgnJq5aL&j|friIKpv z@621NBk?R=wI-gA=<9-|Ud7wfpsx$FQmi*)?O4TjXJz(z>lq#Jsc?YFMt2=MPtB2~ zV6?2S$L{q|i5@G!@}-p0!=I*c7UgoR>YgcfIQ}q>mY(V7sV?Z+;L3Ghgy`tuV#g`9 zdi=kobF`~*X1%Ipqg{LZzNy%O*|#J7uq$w;Q_uqT$M=RiO4)2qdBzonWTYV$^y)Pl zRjP^O0DwKHw(`!nt_)}CY8!c-D?#~`@R$ccG13fARtW@r!HKdW`}u6QJ7}()XZ{u5 zeJns604N^g@tdNM53{W&O5`lcjvv=zLIW^*YR{2O)PXS zxzGS7u%&lu6CpNmgBlKo>EP~8^)|ZlEn~zzT}LL z;(asz;hiQTsiDPpy<@i2o16Oj&AytptSM%C9zzFOirDSfRI@I1A z&!Y3=5gykN3p;*~9_ZIcfZtcn_mc_1hR=_^gDLS^x%ul7s}`||?ir)BW^krz!0DLZ%<-wspy)FNr^&p`FG#OjZOD#kcE zI?-L<6R$=lh2nja?9S}j3&EmJt^BDfs=)8gQat!SyZ$o-c7T;Fv*sSV@sV&5f<%IsJiVzFBs8Xq(pz}A{ZqSP! zwpINVma>sE0;kkWF{24%?bsT2Uus>^lzXwAcMI+zeCQFjszK{FJu(H3E)Zn=yj50Y zU-zTVN5JZ$2K~q1MS7I)zvPBjB=K5D|MbUUD{z<%H*EMY@K?Ba5D+ePf_+>$h9m{< z|EtqDStcyhFy6&br>;9;sd;nJgdD0m(WN%oT4>Hj=b@A4Jkj;mWS^7H17{kZ|2R9M zu*=ufF$D&1p1Hq#DRzezfBE13T5}-=dmNhC{cOS#iIio$M8rpkKy`q8YD98-qC$eT zSUgeX+O1lbE?r95f{WHw_`jx15+e`KPyp}@x_(;*=>h=qk`$E_DHGEF_J06SO9KQH z0000800MORNbPm0U+zKx0DwdQ03`qb0AFcsVP|D?FJo_Sa%5?4VRU6ja$#_2LvL+x zY-M;~GI%a9Ib+mQ(Z2OH`4g#V6W^Zf$#o7!2a9v7Q zvrtz%AQZb@y84P=ENL`M2V z5U8?ZgrO}UZv%ft`saj%4LxqU=UC0P-0qIP)Xt0V{k}}E9!Ks#!AO+lQRVZ&C<0Ty z-SF@4>D%09m-I!W`v$;4sWt^VJk!Df?z}`r-_dj+w*lZ>r_oUW9ZIPkoaDi;*oWZc zPjEf~a2<{@f(j@;_y9?_NN_$t@;#hS`cDQmKo%mvaM;B74*<#rFl6-Jod)=%-zB@l z0d(Vm1aMg~0BSt55GlZC5y0>9k73dPElvQwxk8T+V1W(5DW_>J3#h0Ebd2GkR{>Bk z0Gz5Jfy@9zcYxslEv+jcAQ^!F{z6mq{9PH&9t-SEC0B_y(g{iX>Y}jOA!}-~Q!Fnsn z#l@ZN?FIQBu&&XNrss=AmqCZ-v-Q1~=+o`>M%xyhFSnkr4C38J*T|J(9{G4IYJl;| zZj{VZJ^Jet#WYQioN=QT3;rKfT)RlAl!#02Jep8&EORgY)T`;%I_o2X_&Oh;!crX0 zJ%+7N&jjH{fe}Z`v198N0Jvzj?VMpkLGbzPzd7#mdM5EKlSL2kF_(+A0|4};=-AbV zswMhS005~hUzQ3G*;OYoYsVY%PNbDi^e03905Dxo7Z?YOX6i$3Z^-=H56l!aT0y~L z$T1^H!P}wwIVkQM7JHXQ1D4n~><1&1j83K&UsOcU01BQFa47`NI82K+5``!^@DA81 zi-;ReM?DyVuS%m3!zau2AxxcGLzdz~%pP7S_|yBQ7?A-0x8GAxiwsx1Z*;*fsMj(uWeo*rvX_P%a#r64P6 zoXKz{&2Nm7KGKShzY&^4uT91)T@Z17r8`jh5naI4MwB2~Ek!Nm1=&Jsays6(OQ-^< z2mz{Hj5KkD3N;K(Z|{4Ejk&pkwPaao=WwI&IB?uUAUy(fxSQxPxyoGiDcq^| zQ(r&O992%o($7Sn zZ@-l9J2t&tO`udxn$VmYK9Jc@+DEu@!N3e6@b3??U?NE+Mkcl(aUm}MshCeP9Zu4( z&MClk^m8v6JK0u4i=~dmgCJ%IEkQnkA%TpAL%patzj&<}UE@+?SUsvpU(K`Zy#|lk zpCZ(m#1f6-bm);9nVLnBNMUfXMWL;_M6Q?ibLboGZpCgDNUmyDrNN(;K5BFml4@60 zpcQ6GkdrT84@2eXqK7j}^Ur6B=5Vp%qHG}uk35fN^@q!Na|z@>Kke?)9F8@bFrSrsQHC2Ez(mZ+A<9JTV7ofM?!w@No_Kl);U`sEovG0Ip( zjUlD)sV%Cl7N8XnDv1eSm$4UH<&kAKOS!avEjay|(WdW{p=evM_PurQf!vehS^e4O zq2O8uL+ed72Hl%wj4@)-UOqcpQ3{U!<#SbtUbiG9&nUqtX)_?EaZ)sA_Wh6d*b!g) zKK-HlW7B8Tm&5Re0mz`Bbf|Qi@isuU`>Y zy`he)4r^UuU4xli)wWK)_Gw+q*FYU1?K~|F9lh%JrRk;gbIqmA1#b%)mE)94GUhD0 zE6(c%>x$}0Ds~p$ESJ^U)Oi|N7!z64_m*{^#w2TFjMWciNWk`6ag5NNEk~n)R zS>NhF>$be(wVmFk+thV>YISPYN#Sz&DgWu0)8LiN5#CJZ3~e5ViS7Z&hU(6w1bSuy zr`7szFBOQ2uSM-1Er$t5jArS4MSY%2@vYGrk@$_cedZtWKcWI_+-uqfBLW@u1NFly z-L@G9f$I=&+E>$8x7SHPfe$^L1wyDV$X6Hs@y^Wy*d8e%yli$;wRi%G$Z7-;fTH|L z{dPJ_fu9GCqf3Fedq2lw#=c+$LcR9qCXkJGjl#RVFc<@a12uyrBEN-bkxp_Y@wrT{ zKpfVk9;6bb)>19FRD{aezgoAg zKb>3#Z>4Xc|8Xb!$uXe!?R)lE*HvHvVG%nnt8k*EVu-R}{9h0bOCezd{RN&2eI(lV zE{ZM-8jeZ+$&dxeCl*TO3t1K=x7g#D7QXLvy*zoWJBcIK?>N-sG zEXY+BW}4>hqoG4Wi6t5DMo&hnhnAxS(#|qpPjI_%H)HGaf)q5_D71E4e_IMwiQ0W% zM*Bm6^e*V*o8O`hVRbAvvnnMgnn`6|tqg8TR=)b3Lw=pLa8^g?8fZI#o<}S5CweMc z9NO!(Mh`*hWa0#&VP*KsL`ekR3rs7nJ7mGOL+!~c@ij#yJ&mU0=2PYeyK8J2x>$+D zNxMl{UojV#YB1M7)|_15NH23FjWR7a``1AlbJ|54TFeRt$3{gY)N|FZ)F0IOPp4LE zjppyZPM(svx7_d^&o1k>+&+sBwk>PGX(-K_&ze2TJyzdJl!X=_+$BER=#?tl*q!tv zOd&iY(_+=lH_psbOo^#~h?;wMB!ksY)%KEp=E8=_kE!t^t#6C=o7DI1gIm<~TS`pf zCFcnD-Yy2iRqDkI{PbBAkgPcq9?*lE0?+TZ0b)d#;U z9r#VhSzL@qq$i|%da>WH7%u;+bKf%=TerlvJ!`^o+?)dRHkl1SL zrJL<-@9p(E;i{KC zCeVNUCFVK`8-f&-95oz-8FZ8(C@v(lC1L-3@KgX9HyvllAbR=rGF(PP$l-N2do({b z`ExQm=^`nv-NqyD`LN@Nq*xE* zYqg1j$2gL>xK~7kpO;T2JZ#G_y-95%`#}i+aH9tReEb1``&Zch003~}1ON^V0RZ8j z005C~tU>R400031RaBRT`Mkcq(o#{|THBZ!o7mZYdwF_pZEDH;m0MX_@p$uKqG6;V z_#xFR`R~@*)&6Dm=Zcyyl{J=?bvD&C)|K_&YU*sO8|-VFT^gF4>s#C!o4(h#`?NHA z*L6m=5C0q-O&jh@>KV@(9n9*VDVbWRoZB7UIhfwx8r>YI?>|{NuCcCa^=R%4Z10We zZV7H0i0zxm8}CSOU#eSNZCRPBncVE&_|w0&*tVc6r90a+yVSpQICprqake(GcD{Xn zuzGNPd@aByaCd%p`}cNhdF%f2{%Ggu;^gA&@Qjm#^XcyC@$T{F^5*LN>h$PTQbO|S z;py(??&9yo(7@2^%j?qO(#Y`0@X&BmV^e)y{rcR-@xjUd&cUCJ?VUfnyE}V3+q?Jo z4<{$52M34GFE95G4|n(X*EctpS6Am37k|&s&;I^BIXyi-IXOB$K0G=)I6T}xIN00Y z-`(5W+1=gV+1dK@XLD<7b!}~Z_s`DB!PepK%J#;^-SzF`{n_RD@!!+k!~Lh1=evjd zzZd8GhX;Rlwri%kMwX|y&kqN;XXm$84lYitYr?FmLv3p#zSe|)tNUSB7wOaxUKH54z&@$aOv9~mPxc294|L^VP{@Iar zb*NqK4~P0Fd)T%%QZwL-cgs&rFN?sA^oX9E=)U~qp;CyZLS|>FZ+b+_%3$y2M9?kWaQqzmxe$T z<>jp{EiFHP{%mdzRZ-E`(`#*MX>Mw2YHVz5Xeci$EB*cZcS%V>e*VkL%k%T|)6>(# z!^7?E?e+Eb)z#I-#l_j#+2-cv`uh6H%F6uw{LIYEcXxYx zdv$enMMXtXQBg)lMqFH6aB#4jo7>l~Uu|q`VAt2u(t7{?JtHF{5fKp<78VK$3L+vR z92^`B`6c;ptpETxfa3>cwb%c@7l7I=GK@F);^d@2>aI)2tKU8F_R=N(jz_TGcMy{u z2TU&zTcgL~g5#_mlITWfPlO+boduR{9xdYloBS?VOJAoLHqjVMrh_I_Qz~v8?NGQmoUXezw)q&;+-O2Ka(Ig7`^n^ORl%bh~bN( zLnSAV2^fKNbOs3i#6iZ}G6a*8D~9-^+HnH075t0S z=%Ou!Ap?ZcABf)anGT{WLl^JSL$_CosbVOSrs+${!Vl})CyADPx8HrGLD6$Z1~A)I zSL9{pml5se_ROlEgl?0JpOXt&s<(F>_FzgmL+G5|o{MVR!zb&-Nz!G?J~J2$9ZH;x5mnZ|A}ol?sYaC`l*1ZCz}33N45W3tPi2j&Mv|hont>X z^+Dyr_hGtL)R>%T^hp@W4_q*P$|w2$kz~j8s2=GyjSPT~dd3GN2({9ZNEz~5Nj!C_ z$e=B>A~#HRVYm~{i*AvKoBuTPt`VY=7vm4d{chTyzSJ_SYP;^&$~uD!joJ3D;RA`q zXMcnjRaS(K;2pFN<|7#EGx9|}L{U_Jg4d6C#2#18FYV)*?GWwr6!c&RU1N^^@V1vtx9<2!bMm9n`bzs6bM~|+ z**FkMb&<9f0GN}XV!k{(4L^~zKhi!QVLfK$HUJldW1<@CP~$x1o#nu(G~XlD!l~`@ z8o36ri==VnRG)vG!xe8jzs~D?Owuo)NBqIu!HEhN%wv{jZ4BA`<57NM0hntGL@ovH zGhk%muq;LkUPJ*=J8~}4*0uF<&Woh^rFu;1SmDF|x}&2E|=IAJH_R*TEne8j#UvAVG?T$ngcVk^SaSEByax1br zGd2pZlse=DGK1NFtgmKpKCrz;X-#Bd!)ZJ)WTj#ThOW~}zjzR#lRgP?^V5Y8ydWx? zf*{nUaFC4a;-EW}mZZuoQ2z9DP`;Aj>%VCx=rWmYzB zRYbN4)h$a~^YSkCLsz#nszt$Hq0b@H2U*!qs0D7ZMi=9nwRxTE;Rs)D(}*MbojT|U zdDE(+`Nklxj0AeaxK=ukSiHKoxUK7$bU(<0va&f;HDZh)Di@{Zl&zi@{Y7~Llqu`HblXK_BhF9IywRS<8;MjbKczqTJwFAQC=MA zN}{wn^cTCNn0^|$?@|d}mbqbDLoz(!rZd|RX=Zc4ddS5cpcJ?>X^d*kJq5q9e%49E zSZ~x-5|8dzi*7+Dj8I|mJx&dJHgp*X{QdextH>I3$7tz}p2zdDHg^_@^%_37Hzgd_ zD<+n@*c!l;``dy`V^8)z8L21GdRufW#$x#^NNCO;rmW?+RA43!#ejLUr`k6*C2U><;fheH_0b0}FB%UeE1z=%{$s{#XD(D5eSgD|x(SO_V=uJxR6z4%R4L8?G}-kD>MAneGu;3XUl&?FGQC6Uj& zBe)-h%gdP7zA5K+7JCxr?H)V1{PdQJ>bZY4^8I%1v%(cA#{IzJ$_5qx!Y-PA8yYc* z_@1--(`oQ-n0uAc<)`9U4NvtC3ulG|*g%CDKFW$wBG2-2x^a4M!J=bAd)??|tSX43 zo{W}nOT#mkwd3~z2%1rwX&T0Pk|&k3yV1KA{mESm8Ds-)%I1l`3Vl3`0yK}+ z4YcU;oAo@58=MO}Yf(o-|ommHHSGynryiemoYD|A38E#*DZ zrlCbr(&v<7D>xjSe4fHHvHn6y(P1dd0EMNntK0}_kN=rEDRJLhr6 z%xlI&VP^vI27TA6zaQv1P~&kIQ({ZEOw)51gGn(C0WnTC6>z`{n!nrhc_q+Nz^&BB|gi(^mkW z(ZZ(AdTVF{ocVJtK%p{xcif9ic*c+>LSFgsa@t6K;6M8-JS~nfgb*(m4p<|i_Kn4e zluEz~Wy%j{jajynS%j=Ah*}Ay68H{vDhP+HDw_HStZ;-f6^27L^@BRN&ySZjzy*zA zOPz--tU1f4&kuGzmnsIDjvz%2SqK;eQL-M`_N$@$X9OET7>IJ2v$KG0iM?vj8^=+?CX&sGBEU>P*%HJ$}55JwYSvvhLu2Z5d1M z`(@X97@81Fz2m~iM+ZL#4c$-lv9zt>LO`(oTVGHB{_1&8`Pi(Hs5Y077Cr-A_KSG! zIiXUoD{3~ctqLIHxkMTbr%>!upLEYYlBEqFZ>gFpWQu;}OvL=vUn#=n$6PZFzt{l5 z1**edp$TGy*6@JeOO3Ku(#s_TaxH0ryj`?U{GFn@R*Wns$$z9dWNj+(q~o69>$U@r zdKdYY#d_+=aoy2b5#hV8Pz*R!?W?9Brg%21J=rUDt#QHuQiD^qHgKliUOF0j>g@Pft1X$}(^6dp!Jcoy?ZySb0iIhAnc^a1I!aXxs~vbrFi48QNFojhN0;Weyf z)j;b3$*7y7c5wjy-0ZA(ChSao0e(SuI{E2Yx`xhR*SK;s20VNRuxoWnxmn7n{}zzx zCSbz|G8v^g-fuyPPX)G?MF8!^3+nZ5K|(N-<)NQYDziTu^v1iwD!(sWpP2Qy`XP=T zMg??but1o#W@6E-lq4@VKBoJAO^Gs<`EALD zz^?rhxi=XnGdMy5J4^t0oEeX)u40BBl#bk+j)SE*^d@B?+Gr1S4ucSeIQA4A4D>qC z@L$*#1W@5LM)48au35&zw?x&Mj z*?dAY8v9tm$In*p##*@s;H6C4U4sV1d34P5I`Di(^H5^Va5bjbi`A^_-Y!xMJI9JV zA_w~&b0sCnG_x14`~DDyAalNd=RPrcC2`X6^U-+iEGv6BLF}swbH(@q)umTEhOrs; z_~Az8vTg>Bb&G0@2f8$yt-OA2$m8nIEj@Nc=a)vzy_agqh7q_$4(f!P-_%}Paq9E6 zIM9HDsW!77L0h#%oW;@$W4jNX&gWxo{L6VAli$kk2#Sw>Jy0y{+n)zoYkq4*AtG0k zVk?D&b81#LM|}e2xT4u1J$)1z(+o3^yhc|yW{&xhRW|O0kf&aQ``(Ufk~tBv&{_#K zrnLKs+~^`p!T0%US_O|0uhvQRIgD(!(^1&<`?EReM4C(c+Sd#xfjF<(onVtbAqtIL zBJhA?Bz#KL8aCDkXgF15#cF)v8E`1{B(r5;||d; zFlI8*>%Ec)SDqK3O?WOr{Y+dbirlkO!ft-B7+B45>GUD&3 z1cR;K9REM~xPXKi5ciI9eCLSCSZpcsnv)*l6QPFHWzzUiuXhMGa`(S_2e~z7B`6@oi=BmoLei3b3s*44KzwLXOhM z27Bgo!v*lPjr7P|qD>sYT_%7;HiGz;-|+Q_SBJE+do`1QCA9*jgd7aRE=95UsSUNYw=Qzl>MYloxbeb0^~pDDd} zZ%jV*X}F1{4J~ zZ{&w?nBw_)Hw-nogw=hGrt+4Hf1KP`-eR0mmcmuIeRR-?-MUwO>`2r)0)A25Cx7I;3R*^P zzNO~`Vj3IQB4M;{-gK^s?R{s+RT>Ek%pMOX?9qmHlA2Via6(Jn&m@*2mJS*pYmVtM z3_M?gmV?i8+Ra!&LBi-pwoVLCT{Y9Kl7%~r98_*XV8=+1pWi7WtTW8vnhJs^1-4l- z`u$j?nI3|+XITey0-)(gGauKxHMtmag^R0vnjYM>aA38c&lPCVxfy_QBs%Msrl2?U zrYw*nH4L_a!T?3nfqg#=1sHZ)Swm2Z1mclrX6dV`VgBNy2#5J=R<0n_K0;GdSlo8H zCDnuaRw9w4L~mjygQF`^ugT=iL5i}i*{oS#i@79Jp4(|XqNg!A2KEC^+gb1mQ`-i7 z^2)6a16LjqIJ58i);26I$i_*^E<#O?sBg>o+o&O)PvR}vk5T+NHy){-hh9c$MD~5y zM*Lt0fA0mu)OW7;EQZ^k&PkLSC;(*q<9RIFvoiFdUg?Zh6JFbGtiLQ~oqix&Un2PB z!X)DOnbgg0ybja-bWb^TaM)V5>>=*n8~!HIZ88M#91#oUQ&rsumh)bJ;l;DFakww_ zKPI!5`};R?)}`AQD;u4leNPgqO@f`8xKSWV%l69x)NycWr^GR>7-eT)6mx8W-b@v3 z?eM$P+e*Ezk8so`=W$Yr$3*ol^8q)sfBM78kJa_&;i;(=Ev}s3(np~=qHy1&#vWyv zw$Uz4>9?>=fS$8(k(quq75-C+O$(v;=5HaI+VkwHaF`b+UC3?koP#e~8fKBc_hhi0 z0X0i=U>fmE6nUHcR=Ty!M03;sC{UtCzj&M8_rqlCf)+>oflIhRsl(Ma)E`8Vg>p#q zNFZSOSELHv&VT_b(mH@s`(pW<=wg4~D3KEtD2RFKu~@#;0_BeMK|Ns2;2GixYqz`v zpTB-X!kaQ6?uJ4qEMaFRqv0|*c(SQ^-g0;B6^$|ts0TRO4#fM7NXza8jW7?G1~}Rb z^Y^di+LYWrN4xBx^@A zqaKV+z|Ij{eFW{&-oraAFhCe7_NlpZlT z4LSk6scg6sv;Pe%rNc`17p^EN3nr-lSNI`vtOF$D{pr@QIvys~3AgJU+fB#C8{yOW zZkZ1cNs$+J)8Ae<6@xxanc=x*r9DxpPXEh_`O-Y>WstL0vCD4PNkhI|{Z~57XeL2y zAbPC`@k2U~hRts`v#4!5eWunjMU7TcSFg;y)N@jYZJ-zpABRqn(Qlj;bR5SqB3s{V{_ zq;ZDPju!?eaGE4`;-KvZ5?A&BMq>^CRpJh!b_fnuf5(I_K_Z?hJ(!F0>Z5cN%o-NG z8^p>CV#Qu!du^5I9TcPd_d#pL`y|@}C5i)d zmGvL+Aaew!VqhP_AXe6aumIkML~ZS8deoEBku;yUQ(bKwybs=Nmr9Z@GZ@;s(bA~W zv(dds+6hp6%;((hB|laLCd(i%?vlPGzuz!kgOZ{fgAXyUVfF1(di;X$(eRph|K*(+ z?^958T*rm|c28kgg%oJmW=>kCm;6-wDd&@ixuYUD>rkk@GbdMV<)fOIfvg8E6dhS- z4>hHcv0;qSj*nUFeCXwox=Ehgs-yaPAx-Pjb^cEM-mlbi$l0 zX0_6KkJ=xEohM}$+QfdSiB^r_EAnlSWbo;oI|lBVOB(p1#tKOrrt|vwY9)(x!&4lq zs$^V#9;hfW4=h z?sY9uL$S~B30m@|$VEr}r{cED8Yf0^na^+JzcdW5xEoMeGqlo4oc|J6M)KaS zo`7PSEpC=J#2{VwqeEOV@kon-@6bp;aApHZjX{b`+z?pk#_Wa~(X^CJj3c+-3c(-` ziMqYS+qAL|Lb=fT1pPkyi2>giNQk(1gUFD(hJ(I^u5B7b`7e6cW|Nh{nXewfy|2nL zdaD!8*F$(9rOR*JyjPL@+q8m!e=0N$b38_@r0~eog2rP9_uDus_4Q^&YT49r#e_eI z>R+Z$otN~2*UJ4b=ipHPuL6;sZj?{&*f(<8vxgq1oe*~AD}6;a^|@OMnB8o!H_hF@F&RJT z0E}dMKd|~z?q?A3d`S`Zc{DxqES~*QeP&MU9^a0wb!AR+=KPXE9-)$Jkt0hn%PqfJ zN^dWP-z%bd?MQ@%>E2Ot<#fklljzms4MT(oy+;cNrz#ed;6Dnn&gEK4o{Oiy}_66BA)NRBxBu;l4MsyOGJ+QyZUY=k&I`8__-S z);rg`TF6Itqddx!*T-d|uj0Gp2|c)|Vmm78%))}wIn4^Wl@WX87=dsdgj9$s^^t^- z)oC8KoU06|FI8#onHHNc-YeYIR|ylH2`3hk1Uxyu(e;R-aZ(U`!CEyvE; zG6P1tU=e;2Kzx`LcE6*=?Q!TZu}IEs8%}>Zt(^dZ@Mt zRYz@%q&kQ>eYq@h#eb~KwL`XQK22;}^fKzKIhS|?$ZO@K3=)s|*ze^-wSNk$clEn2 zz-wl=MVRZG;mrDNulFL|xKdOjMj^&G71~jtk?`_BJ zTv!O^J#d>nONXoajSiD2_l3_C#2uWLEUIg0)nfw6c(6sd43q_Nr&k|?HO+$OJfFHI z-7Q7G{hGHscjph@Z4i0O1L3oHHOJk;8I(On*vN1wgm$AZ3O9S(_~I?hMmlk=wocKF zA|){X>PI&m;(GeKwUX_pPW^GdYRU@X9H)l$Egt~-*Zm?6GY0no^|sO7bXy}L4p$*SPi7oW%)wD7sKgdtt z0NkEyQT!xg4Hs@#xDqT6neGF}*VLY}cOJg&KW$J_Cy3Iz69J(~`6eP%VUSO*DlJa< zIy}5BMc8Y4<>%Q}iHkwsRss#gt^=tOA=8X-1l2~TT27|;xTJi7=(TwWKHca5zUjWx zqf+JYK`hK;0dpY2%eU9pU5di~&_x+VjKYg5)8_KW8i$|VeDTrnzLM16-T-v^9&^hy zrcJ695FTblmBG$%fJAtDBZKqZ204^8&hzhuLK369+5(~=h#0!qDh8k(@QG*Y`~aan zd{*3Z(H4USudW>)FqTs;{5154NNs5Fz&vneNh=LNB*wOItE!JlCaG2WPP=iz9HhJGrd{xU&q?i06`cYJ(JZ= zf}R$?@NE`lAgVu&yHbX3W(E%7ReBhZ56x7pUj&H*+=qiKK3Ay+r@WR-u8ryb$u!pi zkG&CMmvAG!c~?IR9|#XJ0p8uszR)xhmX%1%=H^DkvvHBm2YpOwj{!<=xpWh7heMKM1EU-T7pbIx@q`*%65TIR@iWx1xX=zqsG+2cvU8G(KV zBDGx7cWX=UI~YBx3>~Iuw&Yfo2H8|_%xrGiXsb-yebkq#!D)GiZg$St(J$-2T$m04 zgVo#~r*CI+%-8jPMbcc=l|7 z)l=;k#BTuyZz`A?=F7$? z+iiPTn-5&H_oJMv2+qnbwrA+^n;|1bnh}ML!8|M>1#A|w<{;}3)C0MRq@Ys^@GhFm z2%;XRV@)_}GV{v`^ceA)%+jkl6*c)YV}IWVoPVjS8V{YZfUf=~L5NYfd%VJ^d&3b{{%Co8fys z-1iOmd`_jqJ;Ci7YWA0pY#l#sBk>98?|Yl8yV_jgzt7N+$dkbF{hN5%= zB5;4bYou<~VEA|=TXFj!2fi|laoYUOsycnv@jeqv`vHHKE&n- zhZ@;mSkiy4R%(TRw!A^Ly8L)ELmM-q!K{2pnQUgBtig^K>X3B5H^b0Q>(E^6I}_G$ zmF{K8J7MVssX{{RJyJVYwjz!l<@kI`R{>4JMNuS?C7-+7dBlke&{PBh5w3iwTApdU zT8VEAX$uvvew|K1 zNNAyh%A0!EmA@GnTqWYy-rFC{egnfu%#8H)yRVLS4%r1;j)Md@kNQNMJL5|$;puah zwqC9Vgiu|ZpxfXGZ<&vCsER^uL!Zqu+gXSTdAj$CFjWeFBgpb^HM6>pUL<=gV)*TP zjECf z)YTKjD#NtoM_6hBiIMW#K_WQZ5sjaZ&{=Wt83%h1gzt;0dt>8G3F`BfW^G)WIrZ_F za)LSPzOe1Dtc&5)x0Z0{0+W#fgWT7#dKRH?@wh9fU5*5{nu0a7CG~1+0#HfRq02F8 zs&;Gr#jIJUWL^xp(h(k&m;=x1!w%4`*~o@7a}C0Y^U9upUsMX_HE@kGnKM;UPOzob zP9PrH(c@8{0ss2Wt6w@O*t*<&C|tA|8MpLqD+EoIEIn3vMhC7 z9Bv)1cHRhAlpD>pEPb@&F|q_oW-Wa@j*W!C2k3m?>h{8jZs38BO{cx;Ae!pMd*tNR z_s6GIl9-42yVk(S6n}F0TBp*5x)MvK9}kd>CN#ao%^Lmk&P;Xq#XrBE125Y+4J1yT zYRs=*o&Nhz3KMTOT@QHT@2k$O87`FWavp?!d5G6CCm#T=HUVDFE{9ZS;=YklL|+AZ zI#KCo-~g@+4!$Z^59;@eNL}cQr!qYy+(y%dr+Hh)hednyVfO75>u*e7?Ub5bIh@BB zPyKD05uL>F6weTRYz@O&?=nPKt^jL0dF9!!dZjNqV z&cKD`mi5Z&dUY>cMj0~A#~q;;m6l*_ zfd~aGeMG9BZ93vBzo*o;i_!jD)GXZ7MF%h81$<5Gu}%Ucwr8*hF~Vg zOenAp2nIRI?dQ=Envz4R*pc|EvMPeUnt)lE;32rediAhyZ7L4qS8jRoxgwx;u%Eqh zH8lcBtP|7zzS>ByB&?H|@1kO9ZNY@uz6;k`EliMs zcO)EhYxM=s| z{;nT`UT{S<7J-5#ZR|5}u@-sM+Dr8j#CtYqwO@}eaVsC*pVysiD`^UR@-2fPas2mG zV^CQft~}G-c2mg+qep;e`ZmEXi}S4#UeYOx`=^GTH^BibF%pj?b|kb9NGz4{1I6X& zGH|b0li-_1xJUNIT>w=0x3L@~gzL zPBi;+@3V)Xq>;kL&tX;rlqXw^@{!h87iA`%;+E%jTQN4WB z8{{7Ny-mcZxj>{s9Yw0ajiq@*Q)yTi_HWwZ^cZYx7S*;vLzw4lwuM&DL14z8W826n z@YoQLCLzIUT{qJn(Z_!JPrAKN%gq?VnMbm&yAKZ>RP&)ZuIH7E57+~l)eor?rao_L zMI)m~e7knjd+}CNOKMp66?x?C38=G01`xG0{z@dJi{jL*bPwgcl@AX%J}t;3By3+v zQotmg<$yL?vBl&a!hbST=v`z0bXnVRXk5es5=#I5)uL=;`D|?z5(RhR^tF6Y^d_#=hzZYNU>}6UTRS75`{6YgJ zBZo81wAqG`Rl7(Qwr!g`-m#M%+qS)9+jdrL+wA<+ zr!Ts@&Y88YM$H=In-{Zc%`u+ud1Jh=VtnJHWk(y#ZeL7|xsbvdhr7Uq*WLQCOd=rfx5%3d=qFRn0@;(T9OsUX85pBTsTLeKwm- zh~7B~h2|rHL=Me1ZxX5ClI7D>pNLKNk^d`!6~0As2Ii(snQ@qH0|czY5KY0tudb>d zgWUT_wmG6c%X<3bocSQh#crebL6cJ)8N!?`KU-Qw31$0v!ACJByf>y2fGyRpz5lUa zvC{L6QO{M`QPkdi;OLQ{H94{y6zI_!5?Q!*EuK{KCt`-3)?ZyJq6yK|F5ap?xNf`h zacMKtpX9FyRW49ivUuMmjj%vj4@_?{m#<@b7MwgDOg%p0?aX1l;dn2y^o*pa@Pn^g z|0duaySNDd(!Nc~H~1}(greh}Gbhx$r`{?=D2U#|I^f1}gWZqrbtqP9ZDMFA%hWvQ zO(hDyI&AV`pkz_el6WdlZyc}*SBQViz6|H0p!#a?tBkR>^s)hzvFB0J0418UezQ6l zJJPlZn!Y3#LB)?LeAFCG2U?^7eweju5nAj z`~;J@^37)Hs|d{P5(q1eYUaMlOX1opLfP-Thh#>&n}Kecnq^-=%2HpW%Qtz_pB26) z-Y-bf!L7Yx0BWkt9UUWA542WBjVh_b&hov*$2oP1hPBImEB`c>kJ zwCKZp-Zd>PZ-PK9bt9|c zLq*M2rMLD~fkp@&eRiV~39Iz`y^=;-qaJ=%{VpyvawoDT zhcwC}P7Y(ijFET|gUOcM^Zf;%#*V<9{4mKaORUN6MuE0ZU9EE#I+y&YN6U{@I=dwPk1!ipmAu<)A|4@gedf=%3*Lj>}0SV!8U;1 zpU9XBgZ>xbL0eFjlXZutDA0Ec3}n%@Ity?KZermtOkRlwTw+ao?hpj` zWFaIFU#*gOC9OACf7z_Rq@Sl+`*wftvCk^xwO5_7`Yh~tyr9_cO46u2p8ENktqy*p zcNIFsHp}AkhJ5aOA%}R)7?aW`sF332sRP>=KGFAv9WNn^UHm1i-~Q_ghZG{cIO&o> zS^Ev^sXnAl?o+(lju`hd%qDdN;*q{2e zkmIhP#Bal0j^{w(5ubQ$KDWy`ckqrQ7Z*ECz_OdWbJ+EL!CHmO;Fig}%9lCDb7s;e zva~eTQFCbi`$xVCBFwiQ%hC6yf)t3CTqXm|b;gS;u^~YqM@j`PwWqAKg#V?{!}t9) zy5Xotl|+B{gd?^ToC4hC1y}A@u$CO{O?N&>e|;M8%2LK&(tYcs{kbl49fJaEMp*m@B@_Z&eF9g;( zM+rU=_+L@5%28ia_h4y+{;*w)U$siY3QM*``9Sp8aE4@1sAXQcM)YKv+I-4(KmwbX}Y%W<6ChTB8?Vmy_)K}Tr z?}2UA&4^C%x?)t;)y;u=cNJ3QctbZEgDGE|)mT za)BD%(~IRAw{t4bG507-Z55@wr#5c_jNQ#=rQ^g(#q|vDE1R!(hcX9#zN{b^&1BvlckscV;f2xk}8qFVV|72%!4_g54>AkD8&C>C? z1VdJz{EdGL>AZ>k{H0Ha^eg{-nMO0Z8>~;;@pl{?&Wq`^(|4=)%vDgA@u|>fF0_sB z>A2{%Huu$r?!Yk9;ua4-OVF!p`u@jYqVPm|8o^G{^={Ej;qbyM1@Fq~gV+hy++kPa=f4&w73a|LJKwa3@f#u)3ury_0h8; z^ab+tZCVAgT}5}W3E>`-UcXOIW_uk^XSja*HgznYdaA3r=622aHfJf4hdgtpk){2t z4N3JW4-WK)?CpI}&{t4(i#d-MF7~px2@e>E?qi!0h3F6f3k0MxCoC*1HMTK5Ha)j7 zor6L}EM)aPHoe%t4hHl)Q$~eNMP-v1O_(kxVj}cqXl%V4$xyN4Z`eCuY`&TI<4d^g zXl0ew42 zIjcwwzOco_kW$i_`u@cTGa^wy58>o8w5qBx;>|=E0GeZ{>f?R*M z#;AAI5i-fG1LNgX2 zYqIWZb3lf{ya8m;5HLQNF?neiNO)S#Jq|yMEV9|9ivq>b!||{VKQ?VD`!Y7rT1X4h|C_fMq{4X7Lb{UL7&0fHXC8bj1UYH>68QyMT>s zuN_XQ4LZ7!4w}9Cy&P@2yb`*$7XA2$oo?@lKj0hpoUK(V#B;LzHh+8xzh~R#n!KK? zGV{$hKIC+~Q?7e8VRW<4C|);p^336?`OIOuU)vEN4xbSkW8yunlm5q5}`vX~JPIi!B)S)8~BhP>Pw=AG_qlPz2wVG*ofc1#XOD}*S^v) zht#s><8)=URpeES#M}Mv$l0D3+D5!%<9n#w=euI)i+nB$;-6uN|J%Wn7vnw4gg}pt12`9~~56FH7gabxPYgRdh zz<|4m%^wEK8D|aBkUP4m6cQ##e>lV|HIw80Rhf0^VVP!?71JuS2a><1BT=d0rO}jT zrYf{_ydbHlW@rqUYNhSYEr7Nt}sWg#vP1OxcDH8Sz zU2!8ymdIC%sp1Q>UIz@Tv4z9UWOWaRKgMB7IY-xWOEaHFW~)+RO;qOTwNzRam5eZY zz*6Bb%cKvVG86mv>EAvEQFH5tj>F(8;fg#qoZ#^&+SSFN!=W>V=7+|I zuAjC4Od#AX+-Z|#{;T~w+^pDK*FDVb8d(;t>@N||90~3I0~pvhd`^j~cK?#p z60Vg|C0SwGVsbo`ksUYzTu7BmQg=eZ{=LF^%zz(+NRW#Ze~(aC_thZCDInR78;PT& zqNG~kVdZ@Av7||-RQqd^;Y{mF>&op~eihW5$?j|?WY+~<=cLD@0ILtM#VwnvO|C4j zsn#G@%TSm8wWPY9^v&8MM690A=`&tcxmVU)+gumZYHR{w*Il(-vJ9A={5x7zQ(6T} z06;n4Ji+&%4UR$Ojnt7XkvrPg{5);*5A8LEdBD{j>^NpM3Y(I3ei^%gThXTf0upHv z%dkFs@%ly52r=TH7_9f6gLrf#69?U}9lau2!B634VY0TfY^Y z7b}H%G`laZX6TS}{!ztP%fmz!jFvQK)4F_6LP>aTyUIK=Vk(UuLX}%jDfL`Cn2DDR zg&*@Psh*2t&@_FYM^n-D$$+o`N4t!KLM z92T)w!%m3=-(shj1y?Yrp#-Ix{{2ehddUiEG*2S*lG|9jKmF}SRt6NNM ze1{TPzjXy0XL))F^uH9Jv6*qrVH=yxc9)+Jna+&nh^8Z{q`@bZnJqrpbq}001`I8OW&^MRSY5HHn4zmW z&+Fl9O-N%Ut{W@fv;!-K0<~y!TB=Lr1g8G#TbYBf*x|xl9xG7ETi|eGRh{L2k3U~B z?SJiP9XF!?wzH3;`x_$b+*mxA&~sNE^v-*P15Be52cbO%c&pPE&y*V4164FmSAeY! z>rC$PmH0l6!6B>UqjQ~%7QE(LeF(@YpvYWSj^0&M#3^SIveaC=_b3nr*~a!v13*~S z>G|of(ABipwRY_8*PW)FP9KrTv?JIHEA5$+)X+~~=(0^Gh(GqNwH@&4>>+)6s|Z$$ zinsv)Z{~>~{3mgFf3;)Q%h!`}7`<)thkw8IyP?USt$9y(32@aeM75${*<@=-D5vJK zX0x_I=xY#*jtfV+F`(4gJxHV5;vsm(kHk65mH)OW#igJa8xCGnEhtTU+S-3o{;$F2p(!w(4lGJ+&!21CQf^MCJ83~svhEvGsv(po_^YM>j1 z#ls6|^&%P5kb0bUjshf|xf!y@nA(9MAIoynBM$zo5GM8=6a_)#ZwVe5Tyl> z#*HYjeTgL8?se%RX|-k@Hb-Mr7knV}OolHEM|3y}AZ*-Rof_0)yw3NNE>@y)fElz>0Uk@Eu|VX8fczAcBgEuE1E zZ;TIbtRq0}181ryr( z8WRu9Ty~od5{FTOdz#y3$|Iw>zR~^W&J7y+k(2AOy)F9XH5w9376L*Z5;7J7Y%(ll zDmZvDG;Dx`^q7!eNePyj`F?IL&fh<`uMd@(`4=>FqN5}2=_zb^`8_qY45GpOyn189 zvXfIvV}p7_qlS~S#{FFl(%=6QLF}8ne0}w8Z7m%h9u5s{Zf^c)A*O=%YHDk1z6Kel zr>6<*dAWY18$ZSk&ee?#U2Sb`UEQqA%*^!k^qicWv@|SSTwHv7d;$UjJiLqR>+AFL z^PeeBPpupr9BgcC?CtIUW1+AttE{XnFE1}Eqhe%a{IONg(9qD)P5yX2rlzKTR{8Nx z{D>xGWMrhIq~zu0Wo4scV`Ia^!=s|$5D^ifp`j5FzU~euj%RW|KR&#De7d^2`1trX ze+tsm%g)aJDd1<(%ZrPu>gu1#f990?nIbwG9v=S3aq*+AaCLEEWn*JwWnElcR8>_? zN>2WHUNbYZ0KuL2=j-h*FG^x!;-8v+j1@#gH%C*r{QUesrT>)T=H|xE&TejQPC-H8 z>FN3N{MOcIKh6skW#xp##2)Y0gy7)dw6wIpfB*XX0}&E_pDvWPwzmG5GkylKu&_=} zPN=A;VhQ+uzNtJlXZ*ikEOpSUJ+Wf4Rnb(hzx{ZC4BC9?fq+<4cX*iDTG~EYdAv5Q zp5eBuhrm@&Yt;>VI-W=}eF<>B9u%9tR?OcsUSwxEPGN=v(VWLLP;}Xu7C7HtgyL7w zH7C(`%Z!0%;)xDYBdkEqw!xPpT5VPG9I|>Qx~2e;JK?}KlTMG36;<%hTGs z9+$N!;b+~gb0}MhxDBr9>4$DPF-Y7G{9zsxp2FZKAInO61QGKB;5*-`AKg?7$FiNa z+G7U_(?%UN$9BX~m$&2ma3QrTx`jEL>Tx8$q~&P9*z6#3I<6XyhIfm>YnRutTJBKn z#)S(dBJn2@#<$UCLN8C}v3}dYe*F`sW6V7!dbS~%DZh66~}{8jzk-DZZyg&deqHadrD3a#5F`f`TG6&Ef;Pve>`3uI=zrS z*^;(w!u3$W;@e)%=)9~<7pr&8ioZRtG=pGZdkNMbXy223wBKOemV@ceR4Eyv)L-#AVvV`L8IMk68mk2Sd+!enNMG zjyp}0>wR51If&USsEDL*454kL^vy=*U!XuFwkE}N1%boNzi5A?29xg80?0qIhjt$P zsgj9wv9ulRUKVv(YQGAZ?AX~!o)KEFgOmQ5HK~fYqBObBtX$M;^>Sg~^NX4AJ+8rl zeek!RW{cxVAUEG~ok9{&rzA=1pQ^C;Ew;QpYr4Q$#(Fk?P&Y#dxB|wa_zKdg^dns7 z;mhH3AFr_Lj$;t=quuxI7M@$U;mUNSXYx2?=pabxoC<;peB9RDtn76fYsRstSmN&B zHi~cGU5#b^=DGuQyhLx&+wNJoKFMPr?;t{0a3W*{)W1%tyTUDxTr6SGCH}oKh&;o* zvLh6VWSUNCm)92V&=jLk+8su0CDSPm^|`#jpN;?Ox6HH|{1US!u>n!-0?L+=ig_#< zUI0O(7UVMS_luW5qtapU-g8&@E%$v9|853Ekn^x=Tk#id0@c%qA!6;`e#IzLymD_@ zMVZaiuaKtFLoG--z1LgEAR;VWzgPMsqF2oI=t6G(!w~te;YZ^ySNS-Q2rCb*X70Jy z6XV9_(c^|85G1x)M|-&4-Booy86`fU38We#y6Lp6xw9moKx%*KgJ6B>pn-ZvX|ihe z*cG&Yh-U#SW@twrblw1K?VS#K5X0ZaBizy9zo*PGr|;Ls?2=<;Z^mn`h20x6 z0M0CAi_rJerATnm%>&uMC;L%r8_mX6$&?Q}*GU1iAg?!#tVazc*E#9%MqGqs7`pX2 zqgwK;bIvi&Yh$~(>uV36585)dtl<pp(sPd+`BMmx+7~$C{{}#by}~vk`vuA>D)!oJ7(JGCt-~(T z;OraZW$53J9rA);Jd#BY74&SZ8Fh$wo;9pA+->X%YBxyGI>NoD18-70yXpLM=24xM z6g%5gkRUF$IL&h&8+W@qM|zk=6HjxUK98I~@A|$r^I%edjU=4WdDTS_-03n9EjtVf zv}$Db2*Z%RkJ2wUe|T7C)1=KwiK1WRt>4KmU*REOP$zwH%vLq?p4qyLC}G9c@#i7* zXZ-Hlcn&SLqt&BLQ$BVJfv$QHK|5PnuIGKJ3g*!Yl+`lljFC8PRFxD18TK^t5Le!w zg6rzTJHEun*Rs_b zE2rO#KX{GN1D`!X=2okC{%z};kE}nx`+Nf+bo-4(*MyMU8ZkvFdh(u}`Pi<+#MCz+ zC5;19$+nEjcwLq1GYe;Y@Sjk_U)l9A0!;0KzF(Y&C}nX71>E02{bePPce0+S0yB># zTvfGIR%p8u5Wt|(cUHnAKIV!$S{;^bPZuV%cT_*MQgx@5zRtEX8RWJN=>k zF4Q-g4(AU!h$G^KqXkI6SHDF`t6Pw7%FvXYuWefhQcEY@Z}IFhcepTaDkb`i$p-dx zKpfVxICUKv2bVSXfikzb_R6eqb;)f7qY~mL+ne3&UWGM!B0qNSfWf+9iDRSE+W65* z+78og;K@=s?p~AD)7JKFfxUiq_?vT5h`8$RUCkKPPNsG>dudq|t|9Yb=s4f0BOp+7 zd2|}&QR|wY?qC?-BD>BR<}7Q4wGP+&E__zO`QrABxmF7m=n+{=ewTnFV-3(lD8fQ5 z)Id!Veo%pu@g^irg(Rb=UV7Frv~_b%6EP#5L;URO@Zf(IX~1~Hr05%&dy)(Ca(}0g zr|G*FqS^a4LhYbB+z)6;()F_}OIq&zOw+&XE38Az)Ct7Cyj|GyrGuIm@Dy#V51VWu zlD-Mf5kcw#I*oVsDyN~?L&T8x6`L-rA7+v)d>5W*fUz@jpKp8nBm9Q}J?RYaNODBu ze!}o86|?Nn#rt60eO-5{^K9O7(Y;VNwVMh}Ajh(eb3Vkf3$RXY^#}u-I}t*kUci^| z)LYq{sKQLWyYY-ip~3vY1@GjBQ&n0!vuMV_$9MHL4(eGaEg0KytNS)l_}GZnrE2GK z@NpJx&d$AUY8{GlXW*@b3xzU&wgAEO9q{(93Pmil4Sjr;Y-lPINhfy|Kv1}~Q6Lqo zX8(KdlDM;QzqkJ_?w7|!7Ta<~0XVGxi;UIfutR#Id)DfrKpvm42U4qFy1S+fJOx+r zJoEPu6wUM9uYZ1pM*{w$wN)t6dBXPl%iq#9cfQ{a)$iMt3mN{9%-Q?Xi{9Woc-;humrnb|3D+!M&n*)t z>!;gzSk3hTO;*_v3p-kL$79&#>^a=03Gc7XBx)i~i72H{)=N&X5^@EoxOZ`BHuQ0)xjxP2pPGhBSPCw; z&*jDDVaRIe)Tr+zPekJyVv#~3;yPR|YwMy9qR_MnwmQI3vpvRX!a8nfvfINkLuVSN ztc|?;>kWVE7Y^}_uen@8>!i@jO5HmrMxyyvV=w(0cKKYyaw>Ct-X@R>YSE_gIF^A| z56=#rc4g=FMWX!*$MZN!yFw4A{5R$D!Tx~GVa*vWnml#yz^Y-le;~&l&UH{4X@a#B z{+Z8S13lf?0yXUg*(!6ve3C7CHWt+-DD>?ULOwMAJW3t~96hpNPDSh>pJ=c{aIuMX z2~DP^fhZqP6x6vgZm^w{I;hpQtEHksHK%T^&~QG93e|d^%B|>eJ+;2kXro{Ti?A)L zK#7pt^9Y3o4_R5xKo&tg6A)9F<`Pkh-^RPQv~}Zax^}FSxVCB)00tdbtuTyy#V@W= zS@;z$Ge{!Unn@`w&a`4M3F?qChuz#=lJ<_a>B-~J!sqqCVQiljR~V@9g>*5+g|3^? z9`mFPJKl4R871HwE_⁣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

! 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 sfo0v~=+Gv}XT-icXH6zi2 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

#4LE7^(}giu31z9??;x>LKhWD0 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

pwLu|Kx^?i`a(j*oKKODY__viAzizh7?i z?&f?n$2f1|-|xs2TVRYO#*yA;V^d)1f884_FQYH=r9)(ul^F47mg6d^qJDsT55cZ= zWpZEVO)05=srUC-T&ugK`KmyYYnSag<);Q>AWWcO$Wd(kK0tJFOasWqOsWe~y)_+C z@y$p~hdkWI7gC0Ed<$gCD241d{t1dKbDP6v_xg3&5Aw4&toYIWwCP({_-*@CBPFc2 zInI7@O=|3HoVArQJ73dbVpSqz+7N2knW6^c&aSOIF!iT+%#OnI|5?V^@D`aNy zk&5>%<7X_deS$$x$mWC~`@TM??C9?}u*a|bS<&=J6EjRqTU&v|`4?Oj%EDvUahGU1 z>Ao&BvejSM15amOdrrfHU~8r>bzW@i(0R=^`1c#z9ancG!Q$Ey9lZ$g1swu z`ka$S(pjlf-XS-AW3}uQV3Z=e`M2OGY+I4#)&bjWbDj_Ys~2=xl1a3%E&ZI5lq?Qz!Vb90SjIu zcN7A{R{D7AA|YK#xm8qS7hO<Uv~R-PBkL7>|E{9Ml+-F)!9A* zAt$FD9U&nx1*R#(#K54oPP2e7b*!H&B{e+!Z8I0j{h71Y{ms{f?WrPn%aoN8x*k|P z)>)#HoL&bYW6tJB9=IZiM-{~)U%L_uYu!e4-cMp zx^fauP+quw$8E8utSs?Yd*G3b4vaywDw6XLgWtmq9Hr4LDId4R`~sg+MoUA5J*k|a zRL>$40^b8`(}Sisa%H>XywL0`&}mfwey34a^F$tMQp2zDuu}o|RR2s_P@^|kl)F+d ziRUs?YI@ODftz5$icMy4QZKu8F--_oA(#d67j{1F%jhI#k8WGvCe@6`6_q4-fgK(# zyAPe8{RS|R7P$Sf=JW4<7itE^^HWSoDCqeEZJi20bBeUTM+tp%Rf6DD1VY7BUz{ zT%Wu_$@jcZ&%kFr{%jTSS*X|XC&jI$XFTd$K`PPE_P1rK5qI-Pv4MfXs0omo`byPt zHC@xmXCs&)c-IkCv!9Zvg&-^)DuD_8xbhQpC}=dc`npC>B^uEz+IOQdLDxTP+-^9h zL#USu^3-Hr-t1~Q0A8qo&L1pIe@$k#ZD5Ucdw=r#(ndV4TW8-TACL*p5hBtcuik`yb@Qx)qI z{K>JTP&rFwCpo>^#Mj%<3dil5A<8*JylZ8b%BRFdjr}K@o?3{Bl}4~mRn+2MdmHWl z1(ZN*zc-M(xhtSX&HUM%P}?t38FJ$3IoJK&p%Oa~##do&mN7H8Xza^V>p-c;x{;KNAB_5^kIPlF>F68DuGr@55+kSCEDVXhA@htQTJwmsFWS%fgCqoRl=C8|h zzBhf2ob9IN$H>I4!*2LD6W2g`_*vloV^|0_u)E(wk`w=lbM5>n-S7cY#yPvNFqW}g zQ1TZkDCeYBy3MBp`}_~Lw>^-Lf^yGM9^|IIyK4l3QWlMAi=W}BGJk=(ntOgEu#(~; zd14;g-Ec!3Va>$UHEOV)8KKK}GUSL4Oj_75vC1y>UjH6CcJj5ozO}>QQ%5Vcj1Bj^ zw2k(!(PM$=kxk6ka}(kxpyS$p5iowNn$4$I%9A6lA*?r4i-L6m@FbgK6#4hOjhdG* z7CWX77g6%~eIQg`=Ts;Ybb!51-sZ4FlJj=EYn9Y%sTtFwUf<^A5I+|8tNi$GdFwkD zQ)LGoD_q?hd<8PN_cNfc;n~PW^Btl z;wG=vGy9TO8vW;)Z;fK!#-l!cpVIG7zpgbz*n2M{Fq$Gmw^?OQ_^^@b1Gc2~rEnYF zSqjB;AeRT$+a=#>6h2!Zf-fCvA!B0!p{v1Z)in~*i|$U$)bsIm>>B#@(H!q3v1TWG_yhLpr7pJI@s`g>xFAH%ZbDV& zNgwj|j*sMN$WD3#r+)YhwFw`Wq?)+9t8=4%ovZX79%aLt5G}q_t-w$M6fu*9W%T%;`mkUTBwKr(B_UjPe@D2gom&pW2t)H^i z9FpW;9Q55+qXaT1JoX~78K?h1MLXLXGxf^&tyrqQd>|w0(PSTZ?|aL`4DdS63|ssq zK5i{oYb+?u&hADu7W5G#-)Q&q^pR7VVEal6!h&AlInoze$KQZ|a7SZw-{L-+@P37E zfX>FCKU%7a!VVoyiA+4Tr|JzV>lCzMlpz0}kNsqIfWA0fyg!lA^d5fVaghK{-yjv| z<7ZSgR^6;?ijTjAdeP_Jw1)A>DeOo3z|muVOCc&3I{Lr($C@o*7qhw6`>V3Q1g9F9 zfAAEc>Md=QfI+8#tPg8baDVo{qE4>YJu?+#1bW*KjK-*rT$MAJs11BV)=(D{aK)X~ znm1Dp!nf_@arihr#|y8qQyIa#Msg4eoaBH<`GrVU?qXcPH;6jrNdXq%Up_KN$F7DE zB}SzwXK_k8qFQa-zxBbY&Tj&1RuF02o{Uf5n-w(^*29>Dk{JD^_Czc7k&Qx>%%-b# zZOo5-wDK#!leKJNKV_{fM%!F9anlyI#CW-zEJmkI;5`o`MvF=t(MitsV1qJ#3ma*8 zi`q5=_o%jn`!3v3ytKF^0Sy>u$7Su&opYiHaE=@SExIuJ7`=AlOf4*Ea~SYGw*F|! zx=~Z{eio_uG^N*b$t1>FWY~&YV^+rsIZ+MXhx_vAOnW=~lfBBVjDk?V7zm<|UL zhw@%i{REaq0!lsQu$hK%H)~zt3|$}ZX&(Ka`k>yX6x~my79ZOP?%wU_C<+~XBK6292>)Yl)!*_mIi>XJzf5=(u&@BklLToppE+mBm&$d>z!WE>3T zA0KrMCL2BH%PdROJ{9MBz&Xn~j~9M|GaA_(vf<%<46e#4f4S%qWUF-A@UbB5RF+?U z(A!wjUY)8ZZS_(<>>uq4NLlV?@rfoLY)AQfk>q!#+!-IhoCnhVX0MY>K@eD->-syx z;4V-lN5ZaC{wL-b5D069&g!F z=M{RMr189{Lm?!0e1pM+84#S_V~ou6j)Boe%8%Rn=sW@|(|Usb$PHm3*OGcy-)D|< zoVghS;FMxlG#>nj2TARJS#)4B!i zW51Pi$!X{r{6>h{$MgI3N^73^2tw_0=GW_Z!WuJnTYISNKx<~YFO|UozV{w8nuaAN zqu)39Y}^1o;-DV7roJoJb2ul9ou{U`6xqwjt-bxZhvzPs*Bg*@4g%Esvp=}`ajri` zOe}08+!9Rm{6W78tETralt$MK5nOKib{X1ezKQ4s zpO}?tp>2%qJy>Y{G_W#$#8qZ+L7|s>->FEKS2K_z&3&TI?EUgIh1!3m3;v>0Wc^Z| zUNw#rM8JF;c7G+Nb9|OA=>6gWb8f%ah93;0d!aq zmeBHuBU4nUZWE8{#=!iF^5$vyG83-TZn-{wW2k+Z)Vkt4r0;iRLLE_?!m-y)>x0`> z;@)s^#g)f39%g z@93zaF}~XBF}l{LkYGPfv;x-wy-d=qNAyz#z2o!az&WGVp!(lwU!RGDygix@*V!*f z1S35Fopx3aI=hzWxO-gxJwiH>6SZD$&)?M{yaIkBNcqYgtFeyJXvBW0u{P8=z9U9g zJb|?t;gwQOu#7>UB!R0KIMtuJ6?Ow4XkD=ZFA+?TT$#ATycNKGd{Pw3x9A$#+p2>~ zQj405;!~w?_1Modl(oMswB_Djj}aLyXF9 z_gdvytYuwjI%&F`fUz7+$34sR>T8+^zcP?J?a&_4a_;h@A>DH)&Lq~Bc+b07@|R9^ zs>hw?V*kNwDvlZ3C*KtaZ6<9oAwC&Nz3MXWPZHVBj@xF(an9haJdIHEYc?jJsvcYw zx}`|$U|MM6V>YNHYx2gtVpTlRO;GZM%gs0GXCCuWXS5!AH) z65G-bowCx$r9FG%0}cKsKNHqBtLGg|Sc84D7!yYH4Y&3_HTX-dPgxIE@dkV|LMcGq zG9z>nzlC8e=+jrMhoEX@>o(F0k;64=#TVaJ_8?7lHMNxbb>M8p@fpSMxE;XwcG465;LC30B z{JWww&cE_khV(){-WBD3aS^Mb z_aXZP2_yy0z$q}RYS7`$JZDz;gHGosB&f|W*yg4lg zfe((x7q!hDm~~aYJ>CZIy@dJe$BsAxJd08X^_oLb>V|7xlD4sEFft<>i6sqWvHH2q zWRJ4UPW{2XjtIA=tj>V}%1N0S+tjw-outGaV%@_wmY^XB`!q{P!o2}S*Y1=#6V^_N z3yULrV9&9T&x;_IM&J=K*v<}yCW7J!xSxWge_4~Cbff7^CJNBQW5Bn^oIl}2G2pDi zn@oaFM(JTjD}^GRk99wz==5dTUxt?ssKR9=yfs9&;QXghG;o5dt7{IJ(t2xs3fl}c z8jj*aY^pHx$5K&)KLN1ycmaBU4uYUXA*fO-qeoqw_2tkTzuVqw_iJCJU<@-@LHmH5 zKE9<}dVpLs{C_?eVS-3DoqCwVfJB{&C6~~)>$VI6|AOWEb4AUQ(@IdO-J4T~Dg2Mx z67B(Wd3xKdEn_CjzHJ8Mx9=BC@DMg^z`>!7lLv%}F;m|Hr@j^F;RRG-Eu;1{>Yn#0 zjJ;2BzUygd8F;wRxy~237uzobzUzqTK%2O#)!Wi+xbB0Gij!}(=H~J`(~FMX-M7#( z_HW+;Q8+nvHWn*cw*eursI6fK+TR-gF>%T}rXWsxc4skduOne%#k`e)K2W;5+p*5s z54P4oM9;wNNpm-?K)p7!dh&bLztWpqju$Xd8iLbE2zN7>xps%y{8N*CG7~Q8OLN?_ z>eV9UX5ot(;m;z5QfoTB+Q>M z1&L+WrXgGarcZ+@5) z`S|fkh*AjUE{;8)_&C^QOQ>J=FFK5n?`I3Q(x*FF& zVxDeHVwXzadN@&)&;3PozLXQBVyGV9)wg0Ia9JxAXz4jVU&T{;%Wg6mSTJ?sqW-(g ztC8?HzGjTud1j&EXsuZ840Kud$XnuD)?j(p(OECQJOL~sRh|mEn4qG1MzOd135_A+ zdU)b|(R|)#{wbGib#z;kGoCtCtEVFyvcUhi-+i0AdLomKSO(K_)hCoX`#X5l=(e-P z{@0l$zH*(%#OGU#9~#!g9ALz(EMt{nH$l$85!j+*Tsi_BqKO%<$@ZQ2H28KH{sDYFQ{@6P&msHU#^D(wJ_d>L&wGHYlH<1OR~Ccy@DKu>DX>1l+o8exb!lON zgnkFG%o?1Mn&N#A`UF?CCuQ|&mQi&QDV%*7*D(~b4`ZqkpZ6H%; zS0tM{Ij4Z~N=ibEswX5i-v%rs>gTs_ZHZ8+w1!GS%(u7Tfr`r&jGodkIQhLNjUWtB ziq}4SVCO~0d**zAWbelYf9wZ+sP=(>XbqI%s$tNB1KsPoXztfUz z#B9I7JqO}LXX8_(cu0*myREGEfv2E5Gf`_iG zXpqI`Evi@t3(Tj4XDL&Q^7A<`FVS?5j)l0$Yo$Gqah+_*T~aU1J^WcGj#;&DzQTm_ zX?fte6Zt$Pq?@iK#>GEj#IDE{J&LYhHE+G(rEugYdTm3)8BhA1Oo5M)`5hM^qfE4J zx^R4Kw$|c&w$_%mhp9K}br8>VN2 zQn%|jwd@&G=7-Fu_FC6=xn~aDD@VV5nwu*r#y=v@6mg#th|ZZ>Vk}_zl9z0B5Bey` zT6-wN_xIF`rQ3oSLX-DRWh!x2Sjf>%mBJ#yzzR7TlWswrk(^ zoJ&~^SZYHEpbAX`_;vCIPW0D!%c2-&(!po=2k~qDu?x- z5P2GDb0FUL@cgXe{i;2m*yCBCBV|eNu*+6UqN5I`$2ZMOBWi>M+hulG&%@!4x4h1y zT^*)hDrM1SY*q{IuT?H3&>$@PMhMM$mI%K#clK=_3Q+|AoL3iKfX>{ssr;ilXtQhv zCu1$arLb9=_Xnf0mc~p6yZJIn*Pr8td_KmeTvlD-mCp`?3i3Kj+j#<&Xu#t;=e&-7 z;)O-h=t!ip_u_%>yg%-yGMtu4dI}tpmUUhsjI72>@@iP2X+tIHHupbK5sX^-xT!aH zxS*G~Rg7w_UHeT}MJf=Uy0@eDyD3*7?SK)VJS3A=V?u6{$#7AfpbUT4LJe&w0h&Z% z#QX#*);1epjwoH@W7ffXr#b6ESROkuWc{*?b7SRoR+opn%Ycc}`V<7EiTu8OyNh3y z6$Ij%Pj@XDSse?S(1I!G4;IAPt5w84YVOVRYtr6a^H3P0*YWBLeDg%3R+IhOwKD4@ z4l7N~`!Nmj$i2MVz)Sr&wUCEtg|)V-=U%-AAv{dDujqa+M~ttr!9KQ+{aCUtxHVdA zpTcw5Rz>DInS+023E3&T*h-H!M`B_qc9U5T|B%(!vJ&-l zPz9a4eizhBgtVVDoBAzjkhR9GPx+-*|OVBju=QD4(|D4)<6G|E5b6{t*KS zB=VoofA;!G#03x1bmfyLCgzlLreweW*DdA$gR3h4raO>kgWRJHgI^m$a`Ea)-sOtR zGm2FF$Q3tIf|dV3V=|d$WBRvngsT zmkcBaU`(t_U=hYSNZsHy?{wPc=1X3B_G>gR90fb$ks26M4z%7?)+PItb$30s*T60+ zAQ=(M5=`3T0Pg&g?(?dW4I>Fj7tIstO_u~FFqH$SlQoJOVNxscMH}5qXxC#b=9)>z zTC)AWLxJ0bTu_PR>+KL7u_}CJ+32ndZ|d4gci_hKS( zSxytrsfortSpzTAk{l*^rOWbH#4!#MokTbD~VWbThwb)9~^PzsHywSWc4!{Xrdh+|=pb3-b+5Y#)~?4;5H(h|sC9c!R!{@l!rMh8m)GiMxu9Sa!e6;pb13`V7qq5QH^znSB+jv|0IdSR&rzhRM#tdTP>Vtiw+ zzxx}}>x782@A+g8oC2i^_&fjFFS4T?5(eTS7i*d#{O~W|oHxvTjGC&dxo*4SA2J3A z#H7D`CLNEyJc1sPM+|h;lvcgYshKx*h#1$wwQewQ-}7M z<67H&tgip@-zv59ek!>Oc6-1A3AWB$=H?3 ztD^x~)p=zJHB*ooSHnA+Xo5ILiYliJFGZRx#Xs7 zbKKCOCn~|J8nHouoW5?{frf{zy`HYiKee5-lQYpB$HWCvT6U3LBni}3CPl^-kxi2vCe_5h=6|q9Nit$L zae4`~k&6DntAC)&_5|<8mX$Y2Z3L`dNK-8^h?u#Lpqflo2IS7s@!nqz`g5xu`r{oaZAu30#{)$d|8@tG~U{|WGAMqLVSvtz$ zxGkv16UN|9!f{&HmJ3uhc4}{;YBi#vUlPq#AU|AcW+CdogXewUps| zXlSWB9X(5`z0%M{RNhoRm6Se{D%@eA^t}0w}9eIJ+zU%CSAg|lZ zmhZ<1N@+chqv|!tUhZ;cyGvS`M3=o((I%`h64O)Y%p>nLfh4Zrt(!qo|yg7)mzjyXs*^#d=G zrwTXtcbL5E)Y;cGkLN3DqriEQRNM6m!sMS|ugV=9xJDQt)@%KhkkF}r0d$=g|3o`ki`D2LM5Ij=7A zk5FdcVElc)wcycfddct!;eET(o~F?}e3Zh1>E>OS0Sa2j`d&6$7`t%Ou|tWsQ52`m z-+JtLt!qKhf$wgL0xfyXfTLcGcWCMLz$VTcCfwSyy~Hd+_GvNg~Lpn^rxj+ z3M-RvtV_FLEmxkh=u=g#I~)wdNCgu@&rcug{z!vII9LIDI?+{*Oav#rU6iu8`p8E+ z%r(w!`hor@nWSC(K;VLsc6YJmO_GU=mD)+NeE66M+^j22;Xqa@od;DW!qrKk8*Z_0 zkfnuC@yMJGC-g?gQK*I|FWN1zal@4~NE|);P>W#)%cpu-pMsEy`;kZOVZi4W%U!=8 z_^;#qci!dxI1G3{xMjoXZ+ry!YnQF{riF~{uKF*7qWGt;pXGc&UtGcz+YGcz;$_)NZf_fEZ|3#Zl9dA)rfzlI5*pEB1a76@?}k$qj{yjs`|zD>5L5Bd)+5kmX1JE(i@D zd*AgguwLqTKAQY&ToyR4xX-GehUSY zHz9KdQ9uA*{P_6j$$Q|s01zJYNbrCj*^Hj=gdt$GGvPEH2;d)x9+$Wu((phmfRIiAkIxkUrC;Tav_)YX}YzfDQv(qnNNLK>zEG4*+-;jsp= zqwU;J006mh*#Am<5Av8ot(uzRjBY~JXFThM1(O>Y?SCFlmpcdn0J|=Jv!4vi_4q(u zSfK4^KGhYpg&tC_>vM!z9hy)hAop}l{odg}bt9S=+q$}XcyO>HH6W~QIHvCVY2K&b zqYkop_2c_^e%$HWqYPlx4G@QZ+3A~jkSQXZjz{=ov~d(8{?UvC{vetsACNR^)u6-L zSHy6P{*@ki&ssztCLB*YNHqsG+1qA#hZ5N40Mu9sKzPS7mgpKoJxSA`Yq<36Jp%xD z?e@J3-{7Hu7Qc6=-NDy_An{x(0MJY_-Vp%M`$fs5GFC4*3=aVO$_=2a`AP85`<0;w zmarFQqZjGJfb)+qx-g;%kkHA1wjxmYTkvEJ5uE|^f)EjVkD^6zf&(g3pK1## zzXRHvA$)f4w~hb==$|9-n1*C)p%6yl8Whp+xM@KzWW5s57!j1DqoG)eMMF8n`Y`A9P+E-dLWIJp@! zP7V0{k(_zQGvyX&YcT>M!{2*OzQVB$*nDRi>KCs4!GMrpJYGv)fm}X>U!zt5)gJa} zJYDM!jS(Q)gTM*xE=+1j{8K_hMni5zqJ)%?lKsmX0v7_*AH_Zz@`MuU2I{siuLEC= zSXn|eBp4``Fk(Y-@O2Dm6O!bDhUT4Nz4YYSE8Fy_SO?35@@8A>zQCGaT{M%PTN z>)^N(8A$0zf)26{`VZI+2oA{Zv=Ot6gd7WBl=r?VjafezMA8?f2~fH`HMFnfj6x3or~o>^*9YJ&0bZ5u8GbE zJ8ldyNh*mtiGYq-rL^pC*;W~n>b>f?N=&JqvTv1`Dx30tDZ)Z>xoTOK!nrbmvUw?Q zNl2M_iM@(op`Ruw3|6yWre9v9P%*bwf4^gh6v-H`-h+Y68l^ngHGpG)x^{Ba$BnK% z6-3k?!CzLI$1TDp#im}bbf0J@2)Cc=_>$=&hj9F@IOX0id<*NEc8`|eFS|@Di>Z!v zS#nCUM!7_}V!8NvCuh}Van|2X(RR)E0MwtuQZza=;^r|^Fj>dStIC_jh{ZUv{5+3U zOl8(Z1bOYh+`H|HuTrzS^nlqi_QhMCoyTv4zRVyMknLOXqd2k#Y&|k1>^kz)SH3|G zM|(aZ=Hc~QMG@V8A(0}(B*T>5KXI+Id4?rwnGKfu+(JK(z0i= zSLsT!t$%6%^2+ea3{Or>=1(rAab)nbEVCYG9A_+NY&RQdd1x^-l{B@OO4c1{{nfl` z>aYva;?^wEP}S0{7pu&wq*`jPY%l&&+$xtKSDw9O-d}UuG}=_!j8}8G0=r(-WZUFx zXl{gS-aJ^%Q830XxgC(NIqpY*O*41 zUSZpB!W^d^u*_1}|^603$>oxb7l~JG3 zcUiJteZ_fYc@?seGr^uio2|*_JkviSvZHu7D~Obn^xb;9!cSgAKES;3n1b1uIZnND zxu&_uz3kcW8du;+z$s^6V4sg`i*-v=e}b#0d8BzQ*m*M&`Eu#Qqr*SQ&WOTS;ayauHie_I#W=6*pyx z8l>QNvNQu{cw`vS?}tni6cVH!EEw$&s)0YtlEUFWyCLGd{p;;l@~^E7a~65-YDOsz zI)O4KE50?ZHug5bAtp1;iA9Yp4M`hmLT)CyDo#6_uI-P@`;fh?J*0ha+*IZfT?fy+ zslJDxVw_SY3FQABi_V(dkNXBB|~$-KnAxJ^P6I%*mN&IcGyxM0DtgxsJGx4MQKS23x_`65d2-yC`3N zsh(2h*GcUqYaO81I~Lg62w{DWq>6YLNfh|)EpEDjsmr5xpiTYXpUb+DQ1cO zTpV?nr0X;5+MN-F6Gb&Db7+sk;g{#Z=`+IiGcgL!np>oI#V*`Di5rnQ5wn$W`dzwM zhI0D5wvl$5{Di>l(%F{Rhxj@PS|&T6rl-`s%BbbqY2bW<`Q3D6R#KL)AJglG!Fqm^ z_p$NRwiTNFbsM_N?wlw%;+VICcS`53#pSMU{SZ^VMLoTmN8k3$<&5t$VP1Z?J+nQ% zs#V9j^~$TW(cA3#lpvdHYV)Df^A-oZw3yA!zu9^3W&b?*{J4#?>E}cPni_9kb*H(i z?2zx!e-OI-xhk?5vM8wixv_G+;cwOBo_jyLA^r>-^n3a%QSmbX~BGCV${V>i-RF@ml++JX8FhfR~T}hK5SL|1f4_T>s~9 zk{U}W$pQdgQ~&_*HvsSo{uiGD0IuHwfU|%8C{HQ?fNLMGKPUzOKminFR7C&DfWhGR zk53uDZdv~xd0>x1K(A6@uk!Ccl|OxILH+8%{hA>Iy5WO1Nn_6Glb+er{`s>(#q*IB zOK~+TNp-93Q^x}fXQL|@vs>3oyEkhGcU#BzyQdGAcdrl6?}~xF#xcXb$&IOvYZ=Y! zx$T?9Jv+6-`%yWKz4NET%jc8pm-9O}EBm(x7f;?1Sx>JYukWA_&?h1i5(z1(pTGb3 z#6);RL`Y~T1{Nk24K+3%PEuZKY-)T|Qp}(9P(w!(5jjzQaX~U_@}lZP`$j zUqXPKwgMdsy{?VEnu&&zz6uiub6HO%m(UMZ9=43SY$#|bWE5l+RFtoHUkQl_{{;OB z{2d4ee?Hvbe7@bkO~=2@B)%`^eC&0CF6KWU4nH4HKA$h2%Y~mSemz%;Jy%J-)X2Tm zE4|dKJlCtdG-__<$-lH1ytJ9Vc3Qo5JG}P0zYY1ljfK2TM!(Odyw9b*&t<&NXT2}x zy)PHNuN1$pReWsL?Ti$Ijz&ONtDm&-dVuS1{=P^WzQt3Hk(mjQg=)Z;U@* z9&|f??{;G8aboRpX6tcb?{($ub>r&u;2H219P}3*36dR;RG*C1olUh|D)d^f4&Up{ z+3U{V?=3v&`+Lw|ayVFiJXU)$(Re!5az592HrsJN-*ve>c)K%qyE}ikw|IZB{BX4P zc)I;^bNY6F`FeM;+n)7yfA#)&3wnF`{QUg*_;`DJdwP1hzrVk}zCJ%cKR!O*-{0Ta z+1cLSUSD5dT3VW!nHe4)?(gsK>gsB0YO1cTE-o(4&dyFwPL7R@jf#p22?+rLfj&My z9v&W!j*hmrwiXr^1_lNi8XAgEd>Py zHa0doIyxE}8Ug|WJUl!c92_hxEHpGUBqSsR1jN6duLg1l{hPD_T$JRL!TYiY*K)ofWWy5Oxvd8EiC2E-MYFvLcinK-l6CD=3wk6V! z2hV!)N)iIxWrxY1{VC?V-B@*;c^d!vxCs2_?|DRwN-*BX8 zfUpJ+g@mC;SOR2C{uZakGUQV*YsTtRgN_>xw%!xb-;5VIRcuv;hl`lJ_PyP`g=7zp zeQbU9VP^L$J`onE?Y*&o?)31VQ3A&3>A2P$8E%^?wptQyCNtDiMFqWz4UEZ!d``A2 z7Lxf}IQkeAEnCn}gs9)f*>68LKIS_eJ8t-OQ)rIZ2W{TbUSE=vpvI+#a0KHsiSA3tB>v)7WF=dBvxkxN)J>u$lPkcDkk8dp<*`|VMt1+29bpD<=tmTf2&!H6+#9o z!`YZv)~+P;R=%(k(O`vPH5Rw}Il?#|0a!`TWfpw+XUx{4PHD>ysFI<_N`^KgXp<-d z&~Vh3bLleLj#*Px&cRpb_d{K@&usE9t>g3>1b9mZ#n@Ok{L#jl8~f`0S8h@ zvQLy>pvk&Nv6B+~xNj|Be)@3V-oX6Njaub^fQmekN!0`~oYdX^Fpi*(k;D+Dv*W_> z6?x*JxkRVyc8s14Z0B`ICu5%C$Gs~RPxsd5eE022&>pqzx>yj!^lW`Z-v4d0!_)3J z7D(l4nAci1HU8quT}YlfSR==FE^pgxvDwsMo@O9rT)M*8SaKAGOg^mBeX-&ga@^e} z=LbAKCdrcLV2ZYcsddK-vvUh;P&hs_RWdgw_Oez>2aeA!aJ5S3u&bTsEhuUKH8z6k zwN8QY+K0QFx3gY-;?NB!r3KdoDzL|WH9oyJdzR?Yx&3z`Pa+eVzG>II&R@$zbISBS z+bkuqyS zfyQITbm!gNLR&Yz0G;bZP*`=3=H~ogK#lDzskSX4!u{`RN4T1UCw)|wOp#Jj7VHK7+Uo6s zCqpO-=b~1y!D(@h*ozg z^LC!l2t_TKG=309ez4{03SUScz1M41>n**VMYLrNCe_<*gWU>_ikMV|ZuGm#LFT5@A{DJm(K*9O&+F^?U#yV zZ(8B5XuZL_es@tZ-iMu7OfQ8u+(c5n`g4@};)OJqVWoWfK+-C># z-&Ajm$G0Bi>^~JE>~CyS{ZebMo`wCNPDBcS=w?`}dW}Dk?f+=wv(!1zjaWRQfk!W) zwuH=og3fi8nG#)pFFx|1v*gmJ%>Pq5WiyELsbN+St1%+RHziPcSss&A6q!u)pg%P* z?!z50=h%s>ke$+$1PBwFKpa|WPkRaNBjOZcJw(%2IVfr0jD<{QXMJqTXHTW|FZROX)} zoUoqsZk>@6WtSsa0;ng}ySs`=r<{a{I-?%~kiV8!Lb# zSoTmf`Dojxbpii@Hc)V$upsq(c>D8MMSA?48Y*&vHXRt?Lh{|B6IawqOkW?Ji8<^Y zFDSnAi#;Oz8u+nUw4tHHl2yoLYK={t9>tGwDZ_VTGQ&4OXos-rdAc9e;u+hUdHrw9i zP~9WVWHSgbn|hmF$5a8B#g#3>0gkom`)_87$fZ7%Tf*&9U1^2yVmCqF2*Nt+nOF$$ zpy7-`PWu`sk?b(gCZ((Qn!kKq`X(f}epv6^w>apgp}Vd3!O_ zga0K^rt?uS4Mt2+16sd$>J+nOdpT^?QZ@@Lrz~)nW$fpbW_?w!DKFICdTg=qB|%J(+w zE}n+*o~xUegDsQAu8yq&Hn1L@{-4QB2UL~D2NXrPb~HL-h5B-Unpc*kRt{%r7#jdd z#(1a*r2_PZV12E&AK<1NKoSZ?+x%p=Va(5*+bOj=dgG`EIoPubR^y-bx z-C_j4K(f|vJXmJv7uq88ZmKDF75bLpuXJiI%YvNAl)trG$f@|@o~98UJT4)LJ5a^> zaU0^i%N8BkUf_0iLkEp^EMq)sKU+Q|x;H5Q4Hb;kAg4f5IvV)@hLnsEAMXDM z+W%`f^k0YnZ2f$sOJ|WofjeDu8Jj>2MVEvFVPb{*o0P&f$f9|e zUx(BdC~fpbG$OBfDe4r=U%}el$U+Kp_fd?kw`PYDhAw_5cYZ_GWKHTQonWVk4*b{N zTS0m)r4thRW`Cx$GHiXOh}vrpq9EP(!Hv#sjJR=JJ72Or6f76iZ_~#{#*N(Z$vSb# zf9udHA2bo&ge4hvG1W6H&xX?$l>$9A*+wl1U1m|F0MP?;&&y;r|K#r*8DWfd8oazd+yO5UHj^*o9=C zn-nMf>rar^%yQTmg0h2mjT95SXW$|7K;a>e1IUil+7)bRLH4mdPG0IQ)fc-qMjkF%3yu&b~ixw5LHPAA?H zP;N%gB~XPH>w84-GJJ1#%l=HQ%>pj8yxX+QIhNx%U7aaYzoS?kbclb`UK5Fs^XkOVZfGz) z##|oXB_mvW?{9=KBGaUPPNMe_%Ytjo2#!}K61Hq zcOIEJ%s;)Bu;55fd?-N?R4@bl0AmP1H*+zGnu=XC1Els@gnx#X6)gO)(V#*2pb?8N z^{2lTL@X>O5%6d=4I;( z88E9|61aO54Et}+lrOMPa0*;RhgtufUKugQ=wmk{(zELQ)GKa|G|PMXm?yt3Y$C-} zjIRN6f^SfHP~w2HdI%iQ*lwly+{>@*p!>dDJjSgmDnIl7biQG%1Y5OiVe4_!#ofr0N-X(V*jBaf`ga^xXBRQrdDp zNZZAhCWM6-XU0%4t;nOhoM*9QMlqkC%8nF(Urx*dcMGc7L5aER>yTsQPO{8Sx;Z(@ z306c3Or*g!q&Z+G7;!qUKj{QQE093ktANVwHM~(jgoN&tTbeFlvo9&qS|nP?;rZVv z2cl-2KS#f?1;`6bUJ2YD-UXOBM4IROVv7)iF)kDC1+r7LV8tt%p*Ph(LLw`6km$+PpfHg~2`4c6p zCZ`Fdr4Qj)F{2IbZ4rjAe*z)EdA6ac!Z=}U z>YKJ6!+&1C{6Q~(v#aTl#lGpFTDhuq>Azg`G=W#2{fHC>x^HR04W;xytQ)na0rIMh zjEt3K_+yr|ie)?F@3Wrl&F7j35#D7Gl|As$U=$%2&384j!5 z_L`G(A?9pK=dLBX3B&Kv6L!^)$*RZM9l+N6R>zB&W1HlE=6s{HxXaLvj9^6;#NhSP zy0`WHTqpM-zNoKp-$%Qu-C$)^2Ann@{N8lcX7^R6^}QtDse14`6P1mHj(st%!$mwY zHcs1V@x;dtm@?$2`|py>SX(@RTd~QXSX@d7-9lXzxe*1TFlr^9-;*CL2SGJEcp5n2 zG)Y?*k(>v1=HN=p-Mq73potY^2CKk%FYAuC5dhZg#J=CzeZd??fA|~<5Hcb zVlPJ$`L$wSl~cEkec#5XUTlt)W=FfDuyc~sB}P2QFtRnLO$od_WV9+^256EeM7N@( zi4(abMtslcq>nKeGQZ7G+vYuuPl_J>I{4!g-x`SB+DGKu(lQY?g78Y|97OK~!#Cu` zl7<%)d@GA`wKT&j!9LnXjP3l%ruiTxs$NK zsE%QTPC&J9s_cJJL*ljy>+f>Z|2H+06HK?3KlOi8>m8WL$Dgv&kkcF_{L2zHCY$g- zX#eR_u}l9iDRQTLr+JhAq5hv>QU>+^P?i~*S+c?YUtGTqejWb(Pg1P>fB5LQ{_7FA zzqBF;y>5o2z0{Q}{iDErib4(lkEZ4bo>3?=`;ru9uYWc?P=QpU`~O{IPvG`X2!iDq z$UGCkClPx3U(woF6{(A|z%7rRY@Y)2Q_|fJgTnE~K>>p&tI5~XE$mj;aq&#(-b}2Y zC2pv6&++5TX{r({xScFHB-c%PIf;&BhV{JDU`ws;4Yc=P2Z%`i+wylWr%PEFar6w3 z{aoyND=F*l*2N~uyNaJxKE8FLSBY5my|rf#Futv(ZtfL+`9V z*&otoEQHu3bi2t}KGwPy&krMI;z}%_qVm@lhpzOdf{x~#2r)&$m$)nw%et2}-Z!?h zuUtTFWOWaC;IS*<$BNcHa21~d@>%MU_^IJpYL25{m6v-iFzvl%%(OEsKgNa)`BYUk z2y>g;U;paV8Y-!rZNkTZL&w0b_6DeyS#5_c2`Y4Yd;Y6EfBke2S)gl2PKk*W6k+TF zH5ee>QkNf?Ctb&K?)0^VFoK<)?(5TmB==Vw2_6D`kJ~Xi=|$$Wg6QO~yieOZSR~wH z_}sGxDjiGiQIr&u>oZCngB03h#tBEO!dFVJ@G)I}KkQk}ZNP6+^@c?rK9Wi7B+MgH ztm$RQzvW)j;YjL>6cj-k=&cn_qGtY(J;$P;mn^;;(05?niG)lRyy-0FqL`eFm@XZj zoLN>X#)8H#o2qf%iZ&AmR^lY73D(y!i-l4XK64WzK>S}7bn$v}Y({_i!lLT6i=sp-QPp7*c7wlU;44La(NfJGxl+ZC? zLXWSJ=+{bqz3WhlR+ALaJhn6z?nq*wfn8<;a~+;vF9}3Ms=ZC3*?A(imqd5~+H%i? zR7U1ITr&$)=#|)h%xLzsu+Bk6k({Fdo|JAhruyPmVZR7(J!*{k;r;!JQMtW2sI`&sn` zP_{i}zeoVkdr-pq^mx0ghQexhv-nBh*>fkj(|lAZ1S0tRJc-kd1|+dIQoqxCdE^HO zxzxO}{u#WU`K$sbIFo(z#|0;J5bV4Q05R0F+}^zR6&hX`*Lur4 z{Vtv%rc;8Q&Fp}+l{(NeucW!QH1F~)TA)!OZ#NRsf*n$NF2lSDO73j;yt@-ow? zj9Ub45E`2((r^vDkkL6s%`3VGb4FP+7e6Y-e>L@CFU_4@LVSCKs5l)PvzOM?AL>R{ z*b5kn;RY?|t{Nd6v@jQ6G}Tr1jN6g)bh+>lY(Z1m|2`fs;}Ot%w&J@)=#1lErg(F1t_YK-LHd0V|6GPvtWT~Jd?kc+~$m?h;{=p zf;Ugw2|0tqcEr{ul>(gI4exCnGO%h|A`c6B zn@t6rTJ)|U!Z_JR7WWqddMIgs?vq+3lHK4dMKwE%OU7lHDyvk=1)iS$-X#s`8E)gd z4;sVaM16s|$sFMfD#(cU)B8Yma~Mb(Lr>=9gj0tp3;3HZXQyw6nK4CBDp8Q*R+c{2 zyd~jZS3V1p(Q+WXjcv8ln&Ff^T@|gFqe$Fgjq;rmvfwCq4X@8`Z%n%TNG!o1AHeu^ zuLmM|*C-X?BgIcrc*>oJw=MJ+hs|_#d-JIBrVUj(?0O z&C`R}t8Bbr)Ee-==<&lW`MNSM0C~zAog`lY`>1E$z+4Chflx7DD&}Y+tC!x(TdCXQ zy8u_3uZBT`+}~%{2IQv0x7O|&#?pRM_5;6=f2ki;Kz!;~F-Z^U0(@6yR*R=Bln6w1 zrjN3R^diq)mJ{cgmen3oQRI!m8aBWxIfKAuC@yq2qklfT2xblP-%F-{>qRB*(SY{9 zf>AQ=+0(lE0r9ep6w!emVNrEexa-Ofn)j>rZ~$Ivm^L~~yeQ2F8Kh23ikd8r0DXCh~4jJztg zT29tYxu1Ins>RMR1&fTfrHAuhhJ~UL+cG`v9%2ta0-K^w3bx3pwQcvjuYXI*zTo56 zVWIWtus?0*qk8_@4j;tSRcIo1=)W-u%7pGqUv4}asE~3q9Lh~Dt?o%gqCaBWi+443 zI0X;}^Lp{k2Xb#*-TTqzWNKAVc=tLS!dGHSN={GKGoj{mHVwu*)8YEwdv7-+y=hk? z!LWTMnuoW2oat!I|Mk|*iYECXcM0_NUzYUICn~|Jsg9P`luT8!lnp=WHphGWfr9er zE^n>L10;dNtoU&2zmVcG-1BB@B?5d;i$l40E_#>Iyw<`FM^~rR>rRn zSpM7Zw{P&2C7F#Wp7qf> zX(lKI_39aD?S?_G+15Na*Ddn zygfGjp_7M~-|3T_&9q5Hxrq<$wUX@Xs>WCJ+aS|1mZ7C1=4Oo8fQlbk#6In>=U`aw z<~~H@Hy($mX4Bcj!p2`do#3Z_^*OlrI>Juuo2xRT_RZQ2-p(;vt-~6;8k}WJ7|2H( zT_q(YS1ui!)%w+4haYyZ5&gU0(p-+`+K<&3m}|f3)<&(5Q{y8F>RdSd2+t*I3uj68 z^%?SzHatIx8l*}pf7tOy*f<<)G8zsC&q4WIx)1vLeQE7*K7k#xw=6_@*)*-@hbi-Vfzmmw{|~J)tQUi$FsL)s+T?XUNAkk3CM?1(GT!M%snXWA zVb-i4CjJ@?7+5XE z0bDiLTsQN15t1P92JkgR7w7D7>}kqAnt^{Ag3_s2oxi@W2-FSHx1g-YjH>N6|My5D z4na>iv;{7}Hk?@Zn-KK^fh5R>Zw8_6QR6f2!9&17Bz%xq?V+%JUt-u|pUu{WVfy2zb?8-KUyN4Y3ze955dPF^u7rg@!ac6dsK_?s=e^2d@!yP+zit9e^akkUQ`ll5MsR6F<&;4XncS9qcMxF z%6Ur02crpSFoyls(=%8uOucyya8Zp9b@L(Doy7B`9yKK{J!gGi_jXABh++e$hbQ5l z`$`8serDx)YR6nB*m(_4qi_bvbvHu1*wdhwe5iVbE&HQj#L_x>%Alb`PbwpA`u!Q) z2Yi}>ETr3%h7NrRcca}k%)@p!P~tSx3j*f<`HhZC>r+!MUG7=0H&m3KsajgrhJ&jv zXlpAbh*O&@lD5W|jBM*RbPffT*aksxH#vIA*)e z$gxM)+z0ZN(Ze9r3hd(M?U#Q0lei$xx(gDgZQZ(^76@~J*B_`}Td8bsX zloybk;+Ijy*WY2fQV-)BIvZn^JU72r0j8b6MU5(DNp;e4G}9si_(H(Ck*}49PZ7Zf zrll+ighs@esuN{wGTJ+NmQK>_FThR_s|UEXu%rALG;QiKpI!LUq$5#@%Y-q zu83xP^mXwKm+UbeN++&e@9+UW@VmH6Jj{Q6nPAXB{&((h7?wQIK`xD+g!$)#6eoc% z7N`9Gw!{H5;8}nMOQoq4N_qc)xx!OAh!n44E<&?bUUPy!7y&MeGHBYG3j#5zT;T9ugF29(4TL4_Hu5GqIM5C%c|9HJ za-Ow8Ht!`*GG#h6`x!?M=?weOUsD{ZrC-(1r@p@I5_mZGivb?SPoPj4?n9YV+Ut%1 zJ2TeNC!%nfEv~2#)5Jr5ogKb?90rFSbXT;5I%cNABjJ?_@j04_DIh1%<>h5#3I#bF z?+SkkFoV-ZV(gt-hlu?wV@-)1fMC zr|9gN&#lLisS(d@!89~#j%tUK1@hWPF`BAT%;qu^J(cw5 z$G~h@dh;llaTWDtKU!*+gXMJx7_S}4oE;EEGJq7=3~+Lqfn7x1e)rY7S}797reDx? zk$NO~PiU{9E-_AOdT)lfH;XMTFS&4J+noO1#uIsim3&&4C#>28?&xX?Tt$-GRo(Y+ zzE`5sA^pHT&%3A21*Q1{7F*^=;=#=2&r>>k`Y4owcFd(&cS@Alz^BI6LvdID?enRMSh%6>dA<)9J^I$4eJ;c zb;eVEoyJ1wA5XhD&k`@6B-&SkUbU832wcBo9oRS%XqxAah>$bNrDj!vit?gcUay~h z)p&J3aEnFW1`nt0a`N7+X~}?S;?(8IsBM^o$Lm+U8+@0aF9@<}gW!6&i%x#4=*nxgZI%TWkY#DW-L;k~rBW)6ED1p2;A06W} z>+e*@C6YqXZB|=gs+Go~&U2NdP}oXzy-_W4-YeyL$%+!ssAk#}OOx?o6P4%!t2Jp| zX2 zC0gr5_2Mp09|3^2*Byqio4=RR6teGZ9bE z{ikh#^?Lc*t>6aY03T-67G;q)7dJ#aMIwZkLM1>OAjQZlfLL?-p4b<_3d^+!NwTft zgdBdmg=q5-4knk`Ye!l6nyK7R&&tO~m?K?SOeb!aJ_kp%GV#|@PljaqNEue|62}^g zwD+DDfFG?X%TtpNXAwY&c1<(-rKYBmZ_|9n2&Tlgqwv*2cBz3LtkAzDl0mJ6KF;?# zjbk0cR?>OJ@=;@I;s3Xq9I#NABnU$a?_ka~pXG%Fz9az57}~Za#4KHEFQuimtXdSk z-a-HwRRI6&2;7Gp)O6S+s|ZdLY@62;1oLZ!V(wy0Qug7UlPjhs*1rU{H5x*tRodFV)iP`s^J)m_TV2(T2CIb5W zM<GJ?*T<7G>o4r00`7Y9n9i){myE*K2&T0(Hrfa6(gp3j9of#5a zH+xD1)jKMOIT3L^CgAh%D87kLN7jS!c)U`hgCp$?pP?$Q=(eb2T~Qx%q1PU>K+ox`t*3^fiIoN;*5!37MnabAo@ ztD;wZlaBu_*)s+{HTA%Bd%1JdKybS~WTFwLdwpZDvO&66wGwdThQ2+c%;-+9ar%P-Be z30HK)zW_vSVkYQ)(TH=|U=_L!eAk#cfl&5)3ElwWZK#IyMn3@y8Ao=IdTc&QrLrRC_F>cUw!A?zH!*3^Cxt~T zg8LBWo3{2w9qqN#!&<4%r6e*O7u4Y-Tjt~9iPyY8@k;*aLVW8a;uUcxX3rQK6(DC* zd&z}HVQO1tlHQlr&B9oL#`EySOM=;y$u`XTo|(jY66m(#MpCN0UiG? zbq{QUhW0zHfwgTQ`gHD^y(AcO@m+_P$dma)FSeKWr=g`Jw&z$P9AMv-?SfFk&jqr36yu^4V=v*_6iW$9ow zOw0ugI@}N=*&(dZYacD25VNJPMl{+w(9Za(fi}aX32zZyB|2XraSN#$JqI)s++LKk`NJH8Jbg*DAu}&XtYAuUv0W3B%S)8R#`)-4wIW zGpU0hr*o%mIe`jo|AB(y!d!QL2HQ5KBOuXYBrVbQFSLFDyom|B-cgTxIW5xh(7pYg zLFPL2>T&zjTje62ISkToN^JIa$^tXm=5Uy_LOO+@I-HA<+QdAOY%tZu)`FS8#hW}t!gFHWpEFaZ$9oj}it(>B@n-JCK0*Jb*O zIyfi2P$sYA#ZC}}Yj2hws*@x^FFSs`a#;b&^yc>3kLg#p;}Ahd=Yfq-vg}XKiiZa+ z)W1v$=NvT6GGb0bxH*y4Uyw%`AN{p5TIV5jm(+M<-_qZL%WYx1&l|S6a&Fp(8wO+F zBnktV<(^;?`C!>I1E^Tk5nbrrdg}`efpc88FrQOFv<7lOUlXpHb$--DnvNBc?hkp@ zGwplnb(jS81mE7|(^+?{B!qhn7uhJg)Xk8SMpUE>TL zxx3*3fnFb#N|IlRT#y=5?Hr)Vq5|l}C3P)mJ%?~xm{nOP=$IUsb zPR`|bO_J0UHG;kPqCV_jR*Ht7RXT_ZX`4M=O>eNofgvd0?`+)UB_3ExxVo=L8=(|H z3cjXu(;975T`y$B?3ion;(&!cxO4ln1U~G6l=de|-L8v%U^x&J6I>r#=5h3;M0#qj zjp-F*=H@{S(!eh?ILjElQS%g?A1c2>rWl zm~W`q9D#*JE=2;|*+f%+rqk_gbgP6V25g%S8SH_+J^Z7SKV=UGpCPM7@4DT9j!EyB zU@6Iqbcz;W7Iju^aOx?D@NbS7i^Ru)6_b2I#-fGha1aQa4B3LJ!7n0B9_RM*pMPdX zXz{Z>pIH21{!BXbmNLV_UrHmbw%*I9leWMSBS-`z<~s??)t(yyHw${`B)l!@&5?N^ zXGuHGAkG`)_y~T0c5-<12vTc!GWpClDmTf(L>G zcZY)@Asi6M;TANwyK8_XNP-8~0}gjM+=5%U!`(SNaKVB+lK-pss=oTBwzjsar)Q>T zcY3FPJ>4R--%vhn@P3dNH~+WOXzag7XcAgVQQzLA9mMDU6-7gyMxR>7IBOZBJhyDf z@w-m}ibOdI?Xgyp0BTvPu584TDDs1o#Vh?XS;y)Yx-$aEGKvf7=)9>ns= zz>t7#4Eegoyc3btTOjUl0!i-lPW%TE9e)CN`^z<`z6WSPtag`|)Pvg2o(hLJ?fU8u z{k3o_S`lr+W2AcYaK+3V>WpIu>kyEQpLOIBGKHjq4eIH|Y7LjrH4@S4pI^FP$ozxk3k6D%&ZPRx46sA+T!FbtT7;gd>KdWKr&>$yD z_Jb*R&C^tp?NZlk3nb$MS>A(tV)QHbOE)$%?FSQna|EI9_hpDJx`S0rGx(szql@LX zdpW~Ev*P*Ze#?ukkLZviuc}H%Q;5$JENUntuS6NIkyvjheNs3sl}T0~Nv`XwX6fSw z_U#UT5Q<#&-qzN`6qc;tpz!&P+3{*Zv46O4^-~xixG6?Dp`xSf02h6?Z49? zzx@vxNG17e{ad{KYx>8D{f)f(kMLb?B6g-V~D4*@V(X=G4E?2&3!6 zXq|r`&#xro@flskRD(oYwKU&0Sv>ynBiT@OVHqnq#qtS^BaEH>%l3kwSG}YA0BOg@ zWQC;tC&$(Td}^nOp4mNR5NBCOZ*P3ltt=YYEvg8DdsD9if9lD}J4|3uQ8SQ<2zTtD z`Bg{8?AZQs*w8X~<$jAk@YVwc#_U%qaD19HoM*Om!u%d);W7>}(lsPB1mjoVh%=_7 z%__HSTqTxASpMR0g~Id?ciSb|-XFFXXs2iis5N0 zH(%s$qNXdum?H4qtbf{g@DhhGVg9?ZUUK%WD>W6`7gLULiXHXlqo%E7gNpUTH2KZb zFqYABFKA3ZcGqrGo=E9j)tc=WL*>gJ7#-&>c(c>h9*H0hy1xLS)*ei7RYK*sIC%@h zmYrPiv#(MoBt{4?5+m`l90`Kf`{$Vv@^#(3o^p*ZkZq=n)qEXA*sFxg`1YR?Xrj$Kwb*8BIhEvZk=1BK84)L3olnxI zieFHn?9mA|WqI{X-(J3k-+D$4l@)6C9?w1Q99(B4!}k_On<4O(tY>_%<2ML-)#q`% zr!fSRC6>uSrkFG6j7QOG54^7hFrLkCn^f*BVn4o(v9gXjAClm7 zx~|lH>HMPVOklQi0_V~(q!66GMf(o^b!EBgk*GFa&kr)Et9p(zYg)qne6{etep`S( z`xjODexvl@TRFP%Or7Q%P4boNJ~c%607{gAP7?%Wh`0f)X@J-uwsmfUcPw00QEqJj zQLSm5&`b~;PoPO1OF*%Hec%_1Y%mBa{&ognFI|x+&gZjb!!=L1I)XLny^7cs7A**; zaf(cHw{<2!|0t0J9ukYoVo7RO^&*f_hyEJ$%hDK97}YkxedDRZl1zJuq@g?qcoVTF zEq$F9llq|F8i#sEioFNGP6C5G`uU$`CXLH{1(!&r0&(r%foRcvso4&U`s3PNyU#~T0A0m6rQfgkU)=p`WsM3cTJ zO$(()>Q3q`WLNnaj??)dn$X-=p~P6KXYHMtM4qq&XAm1vQzCee`{X5Le$uj8$?su% z3|{~&f}k3dcH)pkFg1Ld?&x6-;GF;&Gi++rA~ioN1Vblfx**u9!5X0wAk@N-BQc){ z&Xkc>X)VQxzOZfn^xjdDVb+V(Q*b0W6{Cx9o)v>X$gcN|E`AeF2&4-$&zX+U7 zJbaA27OHE1ZXuVKi0+%uyl19wqk`2H75krs(LR)RSV2|!g`J2dP>mC7_WA19iN$1~ z6%?D7#}1p+p6WuuMCph8&Z&Lo?dVT{W_ai>D96S_tXH^eSxd1Vp3R2kJmST3MB3^` zFZ0`Fb=Ko`_xtgYvqX3CcnN=r&U0}7`S1=W;43}au3=kH&6#OWiGu#A{S0jwY3ro- zzIs3Qug&)_mKz!xT#oGR?Cj3a%8D1~rf^Hlh-gXY2pP#<~L1U|rrrjN2 z3Z*6+M&$uAjSr#`zCqDS)InC#3E>MjoykT;t2L$a|NLT_vfz~=8Aspnxnjq(zuo-2hVw^5aw2gu1-UecOdDhkbaUESU2R!n+ zU`YD4Mflr}+nlRcjm-l=^n%hjHkT_h)?GqN1IJ#XB+*t3o|`C6gLeFGs@lj6T@B+% zj?3|lpjwC3{#s9%hCl32V{xsG1~p(D4WgMYK;J~PfvfG#ikYc zrxAT|Dq*Z_8k0sRz=qlt?GRM|(WFUjE93!2OeJi9n3>4F)%Ti65l>K>BLvsv*2sz}zxfhWBoN?Z4_iMjw07EN^?*Cvc$cf zqD1h}=vdiFzY@)Zo?Nq?oUdLIC|Nu?Ie}3MjZvbXEcsaEwY=1)cmw!MqB@k~c1fhn`?hlo^||5TTLAG0&{53) zvcR+Ut?DziLW9fOZ}u~xg3xW%w5<~0iQUm4bPe~Ld*jZ>A))N~19x$pwNKMLDHXHv zT=V!-`|jeAxoliSVYb3a5^?0BBD8zzPgCGXckxUi1P5fV4zHRrcD%r~b`lE{d%pH7 zhUy+ECXsdJeQX`x5+qT4Lh69%HKWUH;yc)USyN$&VfyLQckHq;w#(RZMh~T}(*+{Q zTLP=kf)yK%lO`>c{jL#(e_jF3dRV+p(lEf5^hjrnV?x*!dcEF%h5U))n@f8%>n{D+ z%frKC%C@j9alV)^`&axCe2_IM9YaTD>!|zK6=ujiW3&kQJq*D&-q#2EdQNP)!s?IK z7_cYVJ$zp$rN{Ji#m%*7{LsMg0~ z7^Mx>TZ_9J8X0cAwVSe2)8{s?m_LsZfG+kqUYw7}gpvOtKTOU9L95*>t1U-6S7B~D zV+3;i<{OdCOOLkC^Nd4>M(v{OH=qHWgK5F>0PE;{3A`9G<#MFSHR|5YfE8R|p67G` z_XEVI%wNZTZQWnBs3cgt4Rgb;YOs^`ccCW^BNeRV8pZTut_AO=i;S%iZtvvU?p?aC z$4lV1ci;u)s=EJ*rl<{)_KuiVCGxTir+bNhnJ9djlqC1MctynJghmC`VEtnP)GIf- zm1fdvci6+PNHpDHX7wdbP4B0xWvUBkSGmFJ&hg-85E)k-wEybmSG0(T=WT)zW9XC31Z}ygsghqvB&qz_X|`-68$H8*pibI-fmIP}de4v_T8+ zyI8o}_IXCcq-&8TrZ7qYdS9DAVj8?V@!<(ffgw)RLD%K54BjTL&HP6yL_*AW!LC`( ztZ76SYE546LT}+@||L}ff@i9QfehK#&WObfBw(UQ@ zjpI_7N-wO5Ek)HP;rkARn!@CH=tK$5zY=~hZ<&UF!9Biz8 zfJFZ-dc<)3%6lA+gewwkA+Zr zXAHTMTy}ECUVg2OjaE+PI;> zD2B7W@Hi7%#FxHQ5@iL}&bYLFOW0)V)lawkZ#$Feh%7^CFReblHW7zo>ZC21p9rmHT?w-P%d-@X)F+X3D zQ~0oP^O(Qx)R52*c|Fh7-)G;aZRE37I>uYLd_# zJcEX+?c<6yCRUWgLKQ^ljgR<-MCc1XAbW?@GaEg6A|k00GG&50q#LrPw`!+M=yM7@ zoiY$8VBcCfb49~KPPyq4Ct25m+EqN$&ZhWOcdh^#vmjZIF-B`eq1X~%3IeOK^5dnF zx632Hj)~u!>>HfbA4B%dO#_3{j$$#(S!@HlBxdLZN5FQep9@7r%KaP=guXAo0IbGl zXnWEQd*XN`@1CWq(#a~(+LbmJeyI&D`4FGI)z`~&+;DIIdt|f-QGO^H59{#-$ zP%`jFns*!6eg#TdlC+GcIZdFsc)dGSSVO=^9(A=hxvw9Ks2<&ka@Zdo33lf5p!z0U zvzj5CAP+q+XR>ScK$;@O9SBA@RpQCZ^KD`|S`)z~&|4FU)VSZTp3Sht+x&X?jT71_ zt2|vsjl_~#3!q%wgrGjy|8CnGK*3rCo2&TUzXDzgTc9gF0kxEXM546#}r z;_wC5{AG-?>0NpP?+)4fd5#HjST~0N z^>Ky0gyxcU6b36xuJx^HQ4JT-3g5_%^}2}vBmyTi)otBF2;^51)bNmRne@*=4bmE zDB0ieNL8S=WnazACYBx_)=-iGpYKuy2ip;cRxqq4Pb+k>1fb||b^ySOAC2e*hA7Bc z-BsOG4!@RmH`Y;4SLto2#U3`1do8A`Vn6F;@hL`+t?Lra} zwVA^CbbZfv^HOq#aezAZj}{m8^~{8bqoXB4g7Kw^JwHS+3ez9dAb;=tNFMt-*b&*e zWA^yOjtw`XHfX!lcP~pcbM8})6(bfZ3wpVEhUPRgj*5OYgq0ste_4;)l%TPd?Hk+7 zdJP~vx{dC!Wg%N*e_f5FndxlN%4XvkC!#>ONO$2}cF$zOyw2d&p ztV&|NAZT5&X(qJ-U<1_qgQ378o$36utQ_sgBff3G<+iKlX_W8gv0R87;GLDP2fIui z+}3BO5_m-vGWI(y+&#JdaI4@Rajh}{{3KTYV{XSol&U615Q#XqqH*IV^lmOs_In?= z8MT3=MK?h{ic-RPpHozN1BZ5a5Quh3J@Fe!9jhF57hk?DZ3$Z2$I+c}-5I}I-BP^c z-t_98nk5nRW0vBPr)WE4TuUb*A?WWax!a;qr*x`)^7x|hy{&i}>KDGdl<-)KfoqQs z8)bQ?R%+5bn;QS|K(?|YOvPptWR(DfeQ1bEM+s51D!RE2%d5ml@FcdTUKthLwu^mU z%&R59f1OOVvS$SM;5st!8+C$T@(}2-F#IM+c~+X7SNfy*ZRx#Gu_1Yw*6lDw^bb3B zFUn!@#+BnMs&xfT$H@eaKPdFmc2K~K{MJXiF&}nT<3<>%>ryss#G^@2CmicQIJEy-n?t7xcEB;WI26DTw z)QRDEIjn(z5QHwBu>LLPjPe@!bB?fGD-ALBkGX&bA!7(Lk4cF;e16uu|O@2^rP5_8(2IBY4l- zTQI^^ma6!|^JW+lj9=d7D{PrL&mb{n>!m{#Hnsu+l9BT0$tgs6@rtAxn1r3o=*eao zKtACQCs5<>9%vYfA$$aI1I3<+l!Gf%TG>hO{FsP&@ElsKn^14;=87n$H@JR(^x!aW z1CNDwA9gJlA6+LHs&DPBNKxet6o~9I_nc^MQPB+;7ucEUbla{-zwmn6tl#U-oxaDrvccrc3j<&b1WxT~s z-xXIMs)ZN3o;-4k`%?;@#fpl*!!xDh*Fnu|9pS$!%Z3fH@8ANNAv&GFEQ=6ctE|W0 zjs2JgcePeX&5}MDzB2#DNxaSAhA%Leofw}$Ui#ed6_wfNf(pe8!73g+^9|Azv}<1z zuP*{>$DjM$+xGVWbb476NL2~6J*SA+g>F8h6*%(zw8lH=CRzR(^!Mv>4f9Pd_!ik75^nab4am*tLERHqFk!VFEnN(4UnL=XByb;r{b@ zSw_Us-2+#wPJ-P7Df`*KL9uve3fHdT9K(6PcnCSPqrY9r7e4C72*QZP87I=GV$%IZ z#K)>zIxgLKHpsBv#vBlz8+z#~Tk(Wmfa>v>=yhF?aB*bS%)XS=(jiCq>L=FlT(h0J zgodZjL*)4XdvT`e4W3hUN<7U$zBWjEV=`!&Fo2Zjwio3lk*Ta~&s_a<@SSP2^O$WaO(!BxB+QVfO?7SUR|yiB2h2DHIPf4!%2jsy{AKNEji@LZPwdO(H0SwuYN z(q@o`I+DO=WpgibWoBh^Wo~0-LwRFt zWiT^eGI%aMplkZo6D%yX$K?LPA002OemJ(M103eS50I)x>5ML$B z8Wcuf37n&pwhI7&fbriA2FS?51pwd`t;EEXlq?-w9b7CO97&|b#7G>S9n7t4%>V$8 z^=wrOHPusW0pRw7sBCyZlB|OY7A%R1XjA}ZJQW=&9I8w>Y5p3PazC1c1SI}gUN}T- zY(O-YG6P~H{3^^LX+dmIVR+>D+n#r!&2ks;cx1b5fO#w+zykW@Gy7Nw!ah;X zMAP-a0)oN%T;spX!UkXhguP-#O8~+@zyh+uA11$LfRWllq5&$h00H(R@5D#FL5x^p?X)Xn*YX$U8qari_ zU=aZ<%Hbij07!3u(HJ?o2Ou~dfcfK2lmC{!2K9vQ%TnnL{OuGx5`ns~j7~6`noLAA z)6zKfm|Vu-#u>s)1D@%4Y=ImoyZ4g-Kwdo7*J$rS9@EG*)6-nBEy#w9XT8v$WF{sD zA4fBlj=})Io~z&72Lp5Cw*Wrq0K1O@$}31q1BAR^z$o(u6yat--s!sLz2kqjk;wnk zzP5IBc(^JvB&usXuIc+>F<{uI39^0h<9`P}?)L0c1hVM|N+<(w<3JL6E2VqNt?85(P17aqdUclXGGt#6_Z7XCeRL3&VT;g-(h%z5ZvJe)L9FH zdB-!B>6=14$x@?gx%TY?0f4(shyFzxScm}2puHLQ&ubx&WF93Tz+5`P2>>tlL}nULZ$lPvM0qua&FQD<3WS3c8H2?zCS4B)Gl|q9kA=la4|yi- zmx4r(q9FMjj;Ty08_y}lsuHP2qAo>vC*Tau6Q=j0Bc5*z!1nt+v`dmTDX>9VU=gud zti6o;TkwwpgxR02tQm3Gd6~1$P2U8fx$;kDD=ksh;{?SQw%3i&BRc_xR{H}b^4>pyK8V0e-kNa)8x4zmvj57`g#4@vKI;j>MIor<1S_i0qd zt!40zP>(o{pv}_QMAQp2RJO|U)zCQObVRH3TU2V5!^$u?er51X1z}6e7FQP}FMPAa zu>@Mx{&Vd>+e#)80?!?{HchSsZy^eA zRE>q3^*rq)9VOjCU5l=T&Ic=g96nhlnJO8dj#;g|qNHNG0zv&=eL^j++(6a0=7&1F z>Onc&VoIfYMYhtpD!!^kIbT^=g+-ZznoyCSHYfsGdr)prQLIQguio&WYlH;B6tB^P zfz$@6GW1s<=MYu>)S8bQU1u7Iuro@aqCB5Rj9rFZvr*+f$y^BLAkFDH%T)pHgr+q0 z-Y;?+^O|;_7Qci;uAS9P&!!?JHASmZs#3X9^1Pd?=CU-qq+6m>`z;VzWK@P)k6O|q zZW=24M0HJds}#NzTV8aaMqgCjQnijhjUty?)|HU&@I%TevxU|S>dY$pK?}wN?T}TrYUYBZ1&&3#OVE9IRD|sB38qv*rcC^i zt+DPy8P`WA{XMVw$L!3;%z?|YjoK@&E32!p&D=?jT-qFMc9+?~F|l3cqd6gj++-G; zohm;?F~vZO<`Z&eQ|5Th>Xo|IV)qK5@imU%lc00%f#3l@_cq(Mw&5gqU+Y-wgyNt> zj$z1-m_PaF&rh$&bre*czdVT_NBqXzvDsYAj-G(&}A9mBQ0&9SC(y3cKj zx$KC)il>NgXIii-^3*cQaMB4@Fj@1jb9Zob2#qkAYfmm|Wot>>$`bG}(baI-+xG0d zU*3o9XYV5%c;lookLf#l=1&higp^{JGodr^rU=W0D|}D75kaLZ!;YrB!*HjJh4&mF z9Izl`p5vMeUlr4%BT~4NqLcSZxQOrK^rRSOFJ?Gu52h~v(1ta%#vojf<- z53r!XFSztwEK z@@zkMh40<<#Bs5-q1y!n3I6TbPzO_&Uou}Zdy{@^1PaweRGdDiyxHkjE7&<*jzY{s zfMCdxTUOc^mk8$t)Kub@>CYvRM~Qnrvaj74k+_i5W3oo}$sNT#4^M$`J3t~N-gUQV z@2WkR1!6Zs3qodV(Tux{ADOBdZ@MPB9g35JbIWJjUhk3{#3)%D{Mw!}_iBHw)=z&g zBwF0fL}w>w`}#4xY#MD8w0NJGPVZQwI9zw2y6(+Od`6w{b@5H>-L<*iHEbMVXtrr) z)bbkIow=Uze@7cMYS8pV=bAh9RdttQm*Io(rO2AtR@jn|?#Jfp^`^gdpL^c@+@>TDIwWZ3 zBmOZCMGPt~J#HctDfB$&yC4tGzK}EM^u1JU=I0Dm4$eox$3zVdHnZRJ()r5tT-scI z>RoDLubodZ=&bJ?uXbZ(V1%gWuLnD;!Gp%zWxxBTJK=TV4vONT4~aj`r{zoiqv~ww zTOwX!;wL0T+WosJJLASzyh&mzr6Laicu@iX0YL!3%jZ{m3IP0K0RYav;!)l-0074! z!EpEo0003{l2eoTdgt@=69oErdVYU<|2VpMlJo18_wQ2-=u`RKuNFL@6*i<9I;ayq zq#H4;A31CoJz^X)Y8cXDojC5CKING+<5w^jTDlllvy$AfmeI0N(6v3Va5}ery?K0p zdG}%(HyTv35Lvn88c~qfxmDD&Q`)y%Ik;CpdJvvo(=u_?K6TtRbJ9EaZ*=8+YU6Td z>uP@I`u6el;s%=m}m={ic<^I2lhw%_eOemhKhR26m*qZ7CLg<3-xUcHGXO-8>m)})YgqRm3LPq zR3uw?Sfw{)aSMNE<7MX)=ND5D7nBl$fP}!r!9+zzg@cDfKtw=7Mq*@UBqSn?jf?&K z{CK>-2ED(&&L(}_?R@|*ft8}bDluU74`7WHuukr|PT{#(>$$`1rPuLg(DQXH=yf9E zbt>*{KJ#rU?`@^zZLR!$z3Oef>V2o>eZL2E@)vZm2)bJPcsTiZzWD%NeZ1U*-d;XG zKp&uY;MH-j6HA{9`=C4bkhjpVujsI!*s#C&NWhQLAepgXxxZmb6HyvdfAnXP%@(p8 zmW#aBDt>R&Ms795@3bcGw59EJc3nWx>_5( zTK{{yJO6Tb@%nImy)kjKHGO}$`gpqg_H_68{`&Fu`tk7r0)bv%Ux7g2FLSI$^QQS_V)J5%F6uw{Pgtn=;&x~Z*N;$TT@e0ZEbB;RaI$eX+c3j zYHDgiLPA(rSa5Lg@87=z0|NsB0(^XYJUl!c9UZN#tjx{Ljf{*83=DL2b+xp#6crVv zq@;v}g?V^**x1-;X=%yH$#HRUF)=YwQBhG)P+(zUVPIgOpr9ZjA;H1H!N9=2W`06j z;pG=-1GuUvsDA$cn*gdnn6G_9dRW{TKa-ve~Xo_cimwR*E}A=!|y z;1^g?9i6L@m)`zajWk2QA>ovCOnOgXA{LG((_fCW9nR=NNMHvzMo6SdV1Jio{jXSo z^Y8y7b3iY#jg)fqB`lMU*{3l+1Ut>+j(oL+xv4RK0Y^8`%1PCFh$ z4qI-JWIgOqQyz;t=ERG59p;C;NKn~koxj7IE-O52&1WZJ0{lV%^xHVUG?eXf9Cr9P z(w>J=$||Ih^r0-790UQeRihN0a6KoVj^$duv%dwZCUQ75q009X3A+$&bTFxD4l{{F zPCm7(FywmJJ`?F4igFet7W|@AJiupIW5N0~e6r1ZT^q}{5lKp<5-?)sWDY?1^dxdA z7rmMSX-`(@V_^dH0{Bb1DL^)bBIrVz3|4gtC@oC}m}8KJR^|~&vlgV1{-e%R{hxa^ z%ZBNCzS8}Ph;g_9^)VnN9LG@VghG~r_sIR$bRI=43u{A*A=9$9b6{nVTc_vHPGase z>J+-+GzAq;#^vOchhRG>n{7*?ZCv`DwZZ5g2@#EK^ix;Q)J_o&DPGT1!%L!X_QQl3 zExo3WSxq8~zPkNZ_zQ5W_l)=#>+@N7kjyI2OZ)3Qb85DlddSbO8a!VePVZ&0`+5H| zer(taI`IhKmhM&bY3Gg>x!-+JpG;#vD4O;JB4sdBW0I~suO{i%?XfZ926+}pba|NG z{_(7=JL)-*^V*;|P3;sFH%AU_j;50y2B9h-ci9^qy%%lo88s8PCS%&kZ|ifp!LU>k zlAzC{Ajr+6Ctm-Zkkypx@5;p``jr9TM;N$O8$Nz6M8iu&ElJ_mZB=*aVh|6)eRW{r zm%O`@iTaS`Ig0q%b&X}?)6C5Jqb!LTEbSg{sLxk_Y!PTGd%^rbD1d+zFb5^)`M4--sJ;Y(Vc*9eI<;1E}K{9-p{i6`Sa4(r}crMt(nW;47_?D-z9S!-$U@~ zx`sX@1NVx1E7_`@_>u)^We3tA?+{TZ1;sLSKe#`fJv>7bFj_7 z)o-jurOpj-q#$R_&_$n`MnI@&EO=WrE6Loztoiqior5T2`bT|=yx^lb7cQ0MB}^-7 zL4ta;^P^OqlaT&QDdi49UuD$LbhTbRmXdbiC(Q&Wl4II>uvoCrr-hHLm|`xIWjNdG zpK!%0AIZ`mH&1qAOWlot>qK@ck+x%i2^f}918>$A&2r{wTXQ+5Q!Zvbfr`YL{z6aWF!FJKxx3P_pV5zzoZ1*? ziTO9jW?%s~2=Txt>|fuQ^^+33u(4$Fv6$lHlI72CO)-C{M2?yO$~99Mud=ryyq{l_ zKFh?nUCuAujLZikGPB*j54gOBD85i**mKBYODKpXBUF2xF6e!p7dd?>WO#P;RMzlpa)Vv#^ql>H(G0(4xWh*#wq%; zb*X?GUTlU}<8v|84)+M;aKR3q+`7EAnrh@)K+(pR^;7iSq8ttL1YyhCS zl?5%+jm{fWgyAr*67lSnLWK%JJ3XNIXCsDR%eXIjNPUA571F*DU(1H|uCNxD0Vu(! zgY+H0&*PMCW!RjYWp$=Qj?DcBd?5=_qW5FIDZ8Eg1oJRC^LEbx?cFolJfCc|o=bkmLJMS#6 zKDt^T&lh#Xtl?aXk^cT}0p2M~chk*uFODd)&xQMsp_ZCbf_6FsQ5^N8K2h9gp?r*t zl95a2mg(^jCD-}35l35!G?LI5?=tiVC^8HZJ>X zx1?YI+2N=vu2?>LfEJrz@u1X4AQkO_rqIO19W_qCme_io+L%(ZW9WpsRO@LIrTKs@ zI~vC$zSMeN8Fw-aDhJ-Aux*<_BJs-M=&D25{GK$0eON!DM0e3jtru(yod44MWk{oU9}j+*!u-!;)}a??sf_RY(SsxirvDf&?&1b7xW zF9fc-Df3kSeI?eOfl zfcCuOOv;P11E{xVdo!n#`yZSSu(|+cAz0TJ)Hv0?#U?Fy8&Jt5yPv=)wvAN$l3Ry; zV*6-;8}38x*jP6Bkl(ypdoRz^+1=BSZ1-v4FW)jm&2h z@=s4R{J6e#%%k!yC~UAzaBHN6v4|<%Um}BBNTgCle&Q-cpJ=QCF~}-^d1`qqhvGL$ z_&D7EihcR{f5HB5V}bt@_Wy_?|KHN){|QC@-_b@Bp(NVEu!|=>p(*`?M(j3EPZHz=nxSCt&7><%2c>?0_@S%4(PZs~l$`L9!8wwQ$r1Wf zg;4ggyp}V`Yo8qn^5UMd^T<_R{%TMc0p3FWRB1 zY|$x+S=!EE$u3dKhg5%0wY&A1A*^`D*KXCXS_P$Z2!?@o9PczsnnFq$=Ry_vc_m>Xj~m zh|4F-wX|UJvGmYOo;dx*f(5*3Bw)f`sBaWCkB{zm4G!VC&98S-XF^aO29*EQ(;*&E z4;zH`Ku- zaj&7=&Ko%FHVKjyoG8G6m0b10$&|B4W&v z^;eJ)%a0f;M6lPulJG^O(`C^G?9&X181D|@T}&1XJ~}q9o4zqQ(+&!X$ zQe5~&tbR|n-x4;D?jkB`TtEExzyk66(;p;AF!nr|$Q`h*Du-_xFM?o}v%E{eA@XQ753IKKxM2*+#6~W(oCQy<-q5Qv}eA2v6mgC9xS9u3?0Kba`$xex>pEQM930I?8!7CnnCN#adG4?1K= zUp}hQcaXhWaix?E4H2}XI3WZ>)3qXFG_kwOpmZO{OnocyF|t=6IJche>i!7F2HcVU zPykUMhnu&az-937U&M( zf8JvQiRzDX`iuI4#Hd*G-g3h7a>B0E0U>YK+W9+P1HZWW-#-Q-#PiM!cDH2$ z-hF{eC{@ls+nBGn!@$}`3k~fag|hsfK4h5@HL@odeoQ4ZB&IX09Q z*`+tw6AC5-1xmYlitbSAgb@u?h{XrCNBe-l<_(02l8?~)cxB{uajTS#;_@H@g30lL z@ZN?;Ie!Y1qGY$Iu-S4S{Yug&#DOdmR7$LhcBk=Itwz zG>uIr};0H+3tO63^OUFdFSef&n9xvPSgxMUM)wNenW7nyFf z8*l_1P!tP|Y!!G2Gva^G?MAt4;T_!Y*`Jjsx5X-bdlO+i1Glxv-+>n6>GIE+S_ePD z46qWJ%r%_Nux4DU&E0zv-}FFDXw0XNC`WgM*gU4SEbp#f@Zw6wIbL^bD`x(5kG0&`E>7Cxd4{V2pixsIBrSzb<%)i zZXp#5c=*3Py&9gmEuNpa`-?)SGHk+eNAot$|3&mTegkt9PRGCb9^gSe8P3@@Gixj-vZsGjsM-fiG;$qK%-Ve$+;Z>TS9mHX{vLUKjAy`vGFFQ&hrw-s zOiIkcO=Js0b8j43q;@8!Gm5y)WbS_Vn)@QHf6fnQFlhINd*^zb1N(a_W(OsdVg>0` z?QYXH+;hA?{1JB35w}&~j~upTXk%OU+8?(50IG6j?w|isZ{PaApG`hWwnHa8kf$nu*e%v`>uK#o5iB0 zMkI3uwZPeJtlYlmr#nNv8)EZL9qKJ|z4Gz)!b9L+%(x-l5vCq84f_XH7~HR!4Rx`x z0MURC4o&EN21z;~6|^hhpz+`l-1L@2Rl}|ln6}LQeZ*NUaIUCMWIhSJ>|O+y=v4#! z;-<3@07lYF=p)Pzc(L!hz6KfZUFUlKNsS!J%|vFfy@Xis(e%Qh=i7AT;5}i`5b(z# z3SwE*5N%k{FlV7b7B==8k)nYWFEoWvKo7u`c5I_lum;%&IoK8Jxj=X|nTK>d;C43c z{{-mtt6+ym-|$QBa$=|7V{y@}2u|+?i(Do{v-2N{0AKH{tvslA^_p_wxhY_vtJo3N z(Qgk%xaYE;DQ!~S& zhFW|uLe}jb4&i`?!W1?&-eMTyCtdX<5H zFKF%!EShP(q4uxx{|8fmx&TI=7TH}IY9oB3MMF{jqb)E%MtOIHt@jeAxnuae6`yHV zKKGltQB)*={WRSnV!|L72M^h^A8mT}2F=@$ijl5*eY9-sn~Ip?^d_G(wuUlyQa){I z4dboL>IspTDvpeWY44`kuj_9&akzngjN)Wmt58ashPm5(Vwza%VP|zlrwDOO@Vr^xD&9P5AP4%N`{8+Ta)#wXYl+e7JfY+x;p11tPO}a$e?RvfoW{XVF9I5 zancevC!l<{puRKwv@lMSNG1=@Pc`Y}0RVzdxxn=rk3NQH5ZL#^Uk7uXA)zjA%JhrB zbsWtno7YO2>XdVH^L2C=5_P&$?=cFghvGgF^&lig4$&5D8ay?$`u7-LO> zqqpsYW$PXKxQo;7Ki9R_-=j9~SQCUfD*qAImvW2bTB) z-3TJHg7d2h9~zEtMg&m2{(09YBc3-Sf^8)WK-a|!#C$kHIe>P6bR;2nCVDC zIh5Zb>a6!hXNYMvF+An}_FMe&OqeNk;F#TP^c(!31GR*3$7l2^Z~*>377sGwJLkh1 zTFt5RtaPP)uIMz=Ma}{v!CZyH^nrcx`A?1Yb$3ec?u;ciue{rnS${`focH_&QT#v9 zE4Mq}d~RVuU=J_ivAL-#`?$!W?*EaiWn-fV zg4!RVPZ{vWr&waGV{LQgvg~qh3bv_tImZv-v!OEZ@b-N%4M7{V@2!B5=nn}KY*$Qh zOw2yO#nQz%+5(hJ`1Q)pA*~KuF14Zn?!q$>*isokm8kV{Byyz znrvkww(pU9)d8PSL=_CQJ;(j=Vt@k*QHd`ixTB||8z0eQ?9LxD=D~Nn83DNi0)?( zz0+7m3hhABerLhIf3z5} zL8hwFR?=yi)rIY$oOKz@DoC(V^@R>-Z{$VpJ>B3kzdU@C5(niu%9UDt+5qnqE@w1H z1n(!B7@olP;5}e|J&GZ;j*LEoU4FKL_2PA63<(Ht{UY9@^re$7tI2r_xR$tGUb^2q zQS?8%wP0&;wK?~M&Z|NE=ljy1pO2v;^hk^?otA@~y<(GNR#=p~u?{FeYKD`<>~l?F zBFPwPZwqOZY1bQZ3MB%0G545GKC<6WJN}8r*ylJ8?*6H>XSQt7n?2=`OuTH3vg2pc z7BdfzIpQRGmPG1z^Aw$9aWWOQieTv?H@(@yyp$4aaCV$i_3ZRr3_CNb*JV;==kQdM zc;&;(_kwNr(0Bba?sEuY_hrr@KWEf`KdWfF2e2qK=@9iR`JUNV0Hn(DVaD87Vew&+ zMO=FQ7PkZLXb2vD2-5Sv0K!3MvmLVdMm*+HA>LvJd=|bQ!XIzLb8PN{D=-AA-94or z#C*@n#PlvPdRlLH(Ga{IJwuL0gt;e?1(4+-Z+MpouF-vOf7OlCbp8C{pYO`l>U_bZ}N0eVs z@xCS2rM!#=Lx-Y8`N3ytRiR25H;B-HrCpTxU`5AlZVYh@qV!W3HR7o%=klPui#avx zgqEOY(vimsGi-rWu%?OSwDtG6HCGEX6UX5SoHdKbv%^dQHJ6xt-l}TTB&VdX15H2F z6i^|Rc|=fyD{v7j^A zM^>+9oYs;)r=9vfo6qKj-B=qL7=qK;Yz6jlZoK9{Y7xbpN_jYyZVGju#Ut?=k%L9A zQKeOH;vedbV4)XT(^{joXOl4&6H@#|FRGfr$uuw}4vSc{yW`1v>3-}V>yqWB&%6Kb zKp0+Qyr!XW(d_1{k~D^7N3x&Y7V30M1)y^CNk`!=8+Q0FP@*%5q+=k@oA(M?7pt3Sg@7pr7ubJ9C15(HGwa%uV3c z#guNbSIhs&2(8VbJ394>k(nhLHq1BK4eL}Jk^>XxhZmh}jI{eqq?{u5x9%EFU1TQk zRrVkkv!jtAVMV0A`Z!-c4J$>YC&uaLY0wd}7~86Qrdv~I)tD6j?!qXl&iF;>p?6NF zYHJOr5I36JRu$o8M!G}zBULfU37dc`BiNI=lQjJQ&MNz72MO`>1oCtE6WSq1Hl9Ip5XlG9w@;%pTfOJMR(etvL$co&%!F zP9M_I$j^l~z=f;tL-JdIcx}>yo;kD~UdxaT0>(5p&hE89V|(QVI`JvptQ;f@I4_Tz z$yQ%(Z?smRoxQtLP}H2&vCnY7Nr?)^`?Y}N#C`qO(P?Gp>Mk2$y@G*NUOikAS;EeR zz;KC4NcwRiRQm{v5znWA5c%CFai6sE-)RK4kl|u6VRG%o&4zhu(bKlzasQM2hL^Y4 zlXgq-n?1xaZ&!9;61fmq-`%T4$14n>Iwi`L9&{)6;Ts=BNx_u*Xe~^QT^T54=eTll z0Ir<}TA5ow<<2Gjw~#>7#JuWDjBhJgmOZI|pkJ{&H-E!@8P1J9Ly{woFY2`@PAy2i zIh&lI73OB|=dCB7< zZ8QE;Sx}u}Gpdq|C$6Q2Ou0S(dLwl}Y;-=CIqw=WqYUk@$bMg$^5e(0Bo(?beZC}> zQSF7IBwi@VWR)p;o^;Z1at1qZLOm(H6&8J7(4o%%QpREuQRAHa+r2@>e8f*ry_}+aGrF(Q~h2C zSurZBcgY0b^Z7?y{WoiC(y_E*WgMT5E&-O6Z8uu|j06m&WkgEk#-{2o1IE6@=O@kg&>9xB0|KxBi8Y0*l*v$RV z2ekqwxT6V!>}aOra-hmC_rwB>GX+b{poC9rl&F<-8zT)x#Ly!6z_=JU3?PRg?ZHxN zb8k-Ic!V9%lt72U-wfinx3{0g!3Ffr+Kq>d(fW%Qeaza9$O=(XXG*!iBObg_jyIx> z=3*267?~2m?Hh3`t)U1{zQY0#n6E<&4}1ZL4X4)}?11o+lUZ?1z!2M1waw&--|lV9 zX-_1o@Km39CJ~A7A7<_>YO!Wc{*NO+!0^+Stai`Gnj#@e5nnLjO^P1?!Z6eargygJ z4d_OHXmw3OL#c~P6{;afrK07KWt7GzgeSm%=Rt1JHvxgPP^aNrsBT}x-E!YC@7k#S zDI@}~Q73Qwn{B$&i-$w~J{$j+EGyEe5zRN8v?Gn5iY=Saf&_f2R)qLo1kH{G8DW1@ z;&MNCKQr4s@5dfMi`;eyuoBzdR!~O9mS->6A?bS`+cnZ{IZ5}xtWtnaUFSo^#7O;d5^;Yjd?Pp z(Ns_U*~9CAH01BStykqQ?MuiA&DQh2WWG+c!Zs9k6Zpma2o9JMS{(qs5+<({CBRD9 zBSL|*>R676!Vcn30ui6Kk2r6tBi{2njc)TO9#DR&7NuXf-Nw8ZOdfCx@4=D5tL|3c zv~ru8D~8tzrWnbtQAU<8;JfwdKOL{zY*_b`%=&<$h#uA@EnU7N0);oY+(%S6+mHE@4E0Xl2y{CY3RS26^M%iu3C z_8}vTkPmNzaD{^SE=J|e=Hi?9oOp7+muqo=?eJ!kXA}9ElDm?OeBExZGTmA(_SY<| z$dw2|c_cIfmIBk)f%huMLu+5txgm3?^MlIl_byZ#uG;0-kS-f;9JyXdUkr7oy2;(` z=B9dE-Nl4G>ytCQEdg0eri!*9zvkMmw>E!i7f;$>GvE)^Yj-IE?i@3WB`5PbeZ35? z#m5WG>vhVi?FmRIiv;h~U9wF{_g97urrV8T0K$(vf}2rn5>;oE)6?0QSRXggl3oQgL8+jUgV zfM?6Q->l}xcrXm2dZxbOgMGGXDiJ%1aE$D`lkTbycCh9$xLnsGqvH-)B*=D%US_I) z*-Ee3?&7zWhVF3=i;&Is->M5Jn;V0!-eu(Jn8P&u1Tnf!w-+fr`NY3H3K8!-i%dyY zDsKK-7+Ggu*N!{LUGaC2y?dCIT530&5v;7n>a1B{ad>>CzK_m=prOF?SV777rvq8% zDRPwZ{CX*im<327fM3)00@`W3_eBPsM{3l5ZewevV?Gj;aR1zaoa5AG)33^co4wHx z-ax9c=|&3G@X*JWkA1ik>-z4-h?Sg)=$DE?a-UV)~cS$EUFPzS*$-55@Id_GoARSf_q+_jE~|Y4;3Vs{K2H zxPC_Nhu;e51SSzUgkkZBy2+%l1()^jefHep{Azy2tF!l39Xb|yMp37$bkTUW$Vox> z^UW{UN4IwcE;tScy0@$7Z}q4V6e0V^p*#NX?rnpBOrR^a4<$O#LlJy){;v2f1A4`^ zgJ#Bga1A}ilp~V}s)Z^7B4TP5#L<_6DWK?E!(n{o|IO&_N^0EJ0HW`NUfHH46azbx z3*m0qF|BLbQ+n~6aw~@{^20hTaRe_9!gE$eyjRnw?{xlKQ}31Kt6UD$L-S0K!oSSt zN}p-!0RGkmPS=7N-b-|~n2Yvzg`$0kg(YVyzO{NYG`@;3lr75Aao;D?c@Ub>gJ>xjolU98OSqY15NUTx{Omp+jJEGz$+sy` zr(hhzz(kE{QwN%?>fslHW0CnjRFQhx*p|wTo$eD~wxj1_v+n6OjE-d2W z*RygN<2S?M;F;e2Dgi?9i?R*y1C=aI+uI*aZQSEa38 zuyN5YvfEw(>Xo>VQHfr6r1hl=oh6I}JTS;(QG?&;Y0!8?)UM=@Tkh`SJ1=LL4buiA zZe5AQeFgM)R@t@*#X2h}`jq0hAk)fVSPIQ{)*9f^L4*;?Mt%TqI*OgiH2jG1O<09&P!>kJx#srZxW5@~e4Z#6gQM^Ts0j#Ty;4n@ zror7pdyoQB8cz(H#5O_iE;$rmHT8IYQbjnPUR*cwo2k>{(AYKCtq}}<1`j-h+&f${ zARfGR)N{kf*2XCF$R>$^!it7cF}|*bzt#mGA3Yx;bwW^mgIrP)1AFzl?JHpnEV$vn zL5-$Nf@&tvb*n}HQ{Tv8WV=QN7ZI=fqz|^tVcX>vvk^-!6ci4A!g_pwtW&z*UoDul zspGZ23`-FM1Cer(*CWWUS)n~F;~|(+WN|zw#6PlZ3& zm46=j<+px~o*TZ8o3*$X&(Y~Mj8npW3Vk8ypEvT}E&?|e3gJQehXkAky`{3yGgZU`CVBW%4iehGkocU9)tAfioRT95=p{W|61)dO zzJ^}oCVu=Moc^gWX7*)u0LkM^rS9=h(FhVcYQ3~E_3p>`u`Cis4Uuov{~ZEWjuTQWWdnu3y27zNUt)raTK-1gD8MTsvT> z49B%u>PmhRh8p)Hej6W@+9l3>GVphZ0Ci+^5{c z^)C+gwJfEgzOByl!G#|mjeWaFj+4Af#!=bqYUzU~R{%=}W=;$jM#$Y@PZFK0WQ0YtJYf1XJqkxl=c6t=L7tssjm>9ZH8=HzC5c%i_Zktq3fSa zC5Cz3fuGehOGF(?`k1oSuF74R`YzuHRZ ze;me)Ufw7-lRp^$F+t?N;P`mjtmWc|o&60>-uMf#dRxexxzsImwSahO1ofSf{aO}u ztj`y)4F87n@|Lz!C@u9C4FtUs);?{5&uSoB5OMZA4UfqAvSm{R95P&%!EBam1GhnI zE;=Bew)f1PHt!>x?rzSyi{8Hr_Wds89I4pr+qYhHME`oRzO!I-5Mmt%Pqd37R21&} z_P$)KbYE=%p470rvXgT!^}!i%Jyw?K4e%@fCtPM43iz1pV=7KM8zBTpWhu$f9w}Pm z=ufRrF=gq@^vag+#apGSSO+8ra0A-D5Oo|;O{Fw#@%!Q;_|ST?3c22is!p9GwFn&^rbY55_B&`$|&MQzu<-CQn5O7D0Tz%kM^Z&TjJ=LjkHt%yZlP zMTAN+NGx@o0)g%hx(q$C<>t)vahGc@KD5~xq*Vkpkl}Xn2Ha0E`JIl+RK z?sYb_eHkE`@`YV%#C}r!BUe@}7h%=*KP#P>-_tePMMji)mZ1V>p&eb|dg1lg_GIM1$q`+D2r-!O5VZZWV<%d@cxq!z<1FsTI)3+6_fXR)Z| zrKWqCYV&Eu|yZ} zrY{={P{hEObg`|8_*nB>V#ZXSOfv}~LMeLeqN(ELkg$m`6DoaKh z3)PFbResS>SOw3g^=@wOo~N((_G24gmgmf&eQvFzGqv0$a#IjO$H%Qq(L4^Oe6_#+ zlLPdrBFxe*^vB!Md>!{H6JW(Mejj=kAZ(eU)F+Gf4VP6<0DfR9jPJ#f9ZO5J!gwy?sYVJB@PDA{kGN7M4!Y*3=)a z?Y#|VRXaAl0ZXi&a`XZxX(>8cE;1K8xp zMT*u)5uxt5+TH@DP~;+_u@5Q1kdgC9(c$3z#Z#!dsUG+(bAoYlWPHjkdQ-i8Ae(qM zL5%@hd_NtrA#GFQNd()g_Bwl8dA85?zrb8Ri8}q7fveT!FcEDDUUAyi)}Pz^@t%ON zK}kxlv|I0uu};pQloRd97%8x9!8qw1G9p*pM%2LA4ng(3lTRnJM+nG@XE)OirgvXk zFYq7*`YIsJp2-p4qX$2iN%>aZZHZE%75IHN=e@1>cFj`iMEfUONGm1)%GTorfj#PN z`SRFvY`ED4Mx7>(gBzBTj)SOSqszE)dF52J!qRvICUL5{))C^mDdEeb`u?p>gL!6Y zA^FRL#fy=3tiwGSbkfnDlY)69Q#`mfWcz%P`$=pT1?O&AC!P^&k9}Jx`!M`y;YWq7 z4=N73Rt<9go?CYj7?d`=NuZFHbH^{!31csQ9J3;VRF`{U^9TsZp>(deiZk*MT`4Ehn2;3 zNjXx`Nf>Z6xON_DkfB%%j+}D7n2eRHalYy=`h^2Lg56=6TlB|KBLLB`%--2Qi3eW@ z?b&-PxaZy+rz`Rzkc84;2ILSrbGy@&iy@>gRCMP^xne6N`qifztl{(`Jw;E}G}qut zI7iaorGURIWS`GKF#}#RlfgaCLHz_*6**BC_%9IpW*Ccr@ZsmcVJ929wqWbt&9^Wo z#T9j06WyGVT|EM@6CNCQShmBaNJvZ)ov(E(`xaI>hnv6cdd40L#$8f63Fnj=v&}?~ z`$UMQR_L=X&mwo=s3XJ6?61LsvdY_e*%Q8)tX^{5_DpV5`+(+D(XJs{+?&<+1??k> z2mmRSj4Gd{dz8`=#?y@IjTVy+ET=RN`BdJ*x%n!*(4}3jP^dE)D;C4jTJopVaTYel zH3}4BO!gk(hCr{**`3t+i-1`5uzBg28q+*K!tbqrs^Szuw(M$ zDXyt|bA?;@zfIs&ar+DU?W~6>(4?bTQIdl=w`P5UH-Ra+i^-(fe!ND=Y(lv;PqY8) zx(DFK{g3+}-pkU9p&Nhc_x0ln1zF$D^0iHD(8oc^jD8GTcf+a1s;$gS{O)@aIU4(+ zvfZVFp!P4#XNXk8;5|Vh@uK|o8*A688g8{6$(d?^n2vq}f{4H91FM9hsmZ)$P>7Z{ zP@fbwrx~8Kgm`cf!tM`6E5;0{UgG9W)RP)0Gs*Kiif5c>mHTLPe;R1^7$5^}$E*MD z1+PIK#0>-sUb#%U7W6V(vF|P&>b9VMx7FSxFQ^xnPt2SdjHRsH{J?TYsz)g$b_T(J zq+_R#;{b1AHCz>0w2vST!5UafqGIZfR+JQSmjmKp+7RBK#0d3vMeT^q7CS|vj^zFI z;X0$ip878kR>>zquWIWpn4>F~2Ep=T_5t z@T*~OvxY0fB7!C-$JeZ#C47FCG`XtReBH&2H8Sh-(SGY3^EFsUZHlkE#!_;IWut<* z-PtYb4sK%g!f(yko1dG`P_@Il!=V6iN6w?HPqeun`9m@~M-R|H+tsAS5upI|6Gin;&OR%TB3qgg#st7qnRvS@lO zJJyez3<_P=F`hNEX}M7WI|(nL3pt5nx8(5sjGV`z`=FehWnAqd)Vg@9|2!&#btudm z>2B0EF@VTqi*^Bmug=!y>>x{Xc1N3jmVunV> z*q^B!VuznNm-ip*8NmYt{&<9TMH#twV^^VQUdDzwXd@NVKeo1*)oE=mpVE@7OblhNfRkw>i%ri0b=Atx~(k26M4>|{BxrLTUfv1gwsC@_C5%)O;I z=YcOsLXyHX=zY24(6KEDn_pR6(mJrph0oP@BB_Jg=nnPL1w>y2_~}7N{j++bd3ilJ zaVU{8o3rm6y`JqKn`vxiD@gdv#RdauWxvj=gHLwoOIp4WtiscJkRI8b_DF1Kos(|JY{)f$d3jy#rL zyTL*x$>y35&uF7!qV^dT?4jKkCTG4o2At5CLX${x6H@avNz2B_>V}7nCkSPVN2A(E z*ISg6XW^cK6uVr5|8wJaCTqyeUgO8j-Vw49WuE{2Q)3an%jf|F3Vz;~GBx#b9O{zM zFd`ouaj*wKGXvUofiWHE>nQDXON6&1X*B4xd3slaz?@~7NS^hPbfHu+@eAHMw5U?l zhcx{4vnYFSsJc)Ve&EzGY?uFC4X3BKe5ef@MY zaQm7ZmkaDs2TMhUyY0h(@e^!SrwlYnczq}KjVT!~m~~FEZhMA&ask=5Tlb_Z=)V~S z>@LDiN0JG+0pPyPgLIW#N>+Ak(p&f0BzpAz+r1MfW= z&QEgiH9bu;1P*0Vc~iN&j%%~LSa83_Fhs~2Y1TR;1g<@|h{#9!F^R|{e}>Q+z|5m3 zy1jFJ+?&DWB3qU&zN5pUNM>VWf2wwxhofr|s+c+#>#!GYz!@_RazWlW@|5Cfe<1gQ z0V^|R{>_wDIDWUhuqo9@yTdxydmO-+H8pv@xc?Gf1zr*NYB^W-csj`)2^<*2t^M`| zN7+|~HE!%F@=W~ro7;d(v3y&*dq}|DnTHO>-FP?+{DQN-+$oL!JV)MXZT{;dL%~YK zZPV$Pb@4Ur7_1o}$>my89|1Sk<+nK(0hvhgu}Iw$RH@oND~nh(4r5SAg_xTz{W5$S z;XW_ZQ#h@nS8G+y64<3jSU=@MJ+iGYH{#KBnL|#Z`>i)JZZ^DWxW0M@xTk6NDj(P0 z)Q%a#A+O<%mnEthpd* zg5ysy(t65NY`a5?T-H%SVSr_H@!GOl9)8!^#ud(;^yC)KRq9KUIiHljTv2@OwnPsl z1AWkM6viWc=;nx=#$|8)YMD)>Js#-k%FClHdYmC(sc9F4$3LJJ`j82Ro&koWW>WF} z)-4NJ863q9R{s@$!QKEGzXJg&nAQhPwbV3Jt(O7R4a=>J`hM{G{wX=WSfbjNH6_eIRE%r}0&c3oTrZD}F5Q(cBGYmz}!ci8D7$b#Ud z;nSdEAQ)2a+F)9M)sml7z4MvEo;BS0zydZh79n^q)yGCeMEs@Gr(~ zZGQxk@#XBIkZmvs2?qLclR`^j=lkEZ;EW2;?0AHTL>7|e{`yFR_ z^@6={d`@cj$ims~5CU}B+>(_@`My5O_kj22u)CGep+As3zEq$`bai;K>ny>2_^ZLi zitNjejFh$QoW+Xlz*rIE90lHx2w__wfx)Vc?kDbt36gV-};NgSSlo)y&C| zpYJ3Tr*RlrIx;GKvlO5DPNe&w13fE-Nm+H)okWhCqHbrKXP;jI2GR}^=?j((r#jh~ zRN=f5ium1kQ;LUy{y3BU;L}5{u+Tpm($Dt5E|YK}h!= zkAufqEX|=2^<804;&JrXi}p%p=CV5HKX+Auml`Q590Z<5O6PkWW3nm)qyfd5aOL12 zTZEx(hVB3B&JMtK=!(b)XAcFseW3 zKrMaB#?$P>sjn{P8WoQS&F~N+X|eE4H%rSSD#mAr`J%?_=aOpEV8K~T*vqa#*lH9L zbspTZav&{&wpCr&-Sxg?XdJ?B#{%v}T_jJOZOils3e0X`E2xRc-n5RnId8H$JyQJ5 z0Oz0!(c@Zz9&uwgGf#YZA-IlyUa&T(FLa`|@P9@`M`Lm} zXeJ&M#b0lN4Wl^=SnJW1_?1qQzi!wyu(}J#-0`(up=u;0_m+pVbJv5vTemE_HB8Pp zXMRX);Ej}=%;R?6UlsW)K1b*h50BWY2u|@=7aXX)5&IK<7^v?poLs5(&JVaY_R~t) zgvLfHe!AEN`J5xPha_%#%}wn+`X1-lUC6Xy-hYs9C0t9SZ$Ne#c(K;VbS7a^Ff~-m znB>Rx>x}@Txy3V)N4GMI=PPiWCR)2+!0VE~8Fhc;Z?;~wIQV?ETVMC`1P4|(4($p( zmlLByk#kiFutrLPXhzVa1O)+l9iuSEtdOTFDUFz=FgTa79eA0tsr&C76{4PC|2Z%xPqe&q44Mq^7T5b?hgP8 zC7ajcR0Rd2Xufx8$!T>fYytc9Z`YQYs^F(Ht7^uN+H_uF%A2pL!;*je$?PVPj=tOv zfo=|$a_X`L-{}~%x?Z2ARF(dvKKt;ETo}}~AklhW*oGtY*^9#^`y6`MASiOXio-%W zz70e?h05GoBbF&faw2y1mp9dEt8z_$va~N+Z-d?zUqWI*`!hPIQxAVCUGAJ_i2ib` z+=Zk~OEsy@)=nd5ec0!iCBec~L4H>ng$Bp1?-nOoAV>9D%f8m3Tm7`PLHH>xfczjQ zF6im3O5=TE<}uVHIW!*hXlp!~_?^G~imI;@f;ax;CRWw({n7)!h&3TNBf`)5^-3wJ zs1<9Db6)%}ja7*1nr#3L0DuGIe`&1N`sOx9#tsrTPR6Fj4*y4EJx({4-x5d+{e|`) z)&Z8X8$;R(=;Z2bvnm0`|nux?y1Re zKbib8De0{AC?Qo;(g8%jr1*>7CK=JN0pOSL>WUNL|Iuo@oLIM3?55KRd|+bI>ILaQ8R17EXeIdXxc$ele6NJ|zA* zGL;U5_(UL3JcJ2G+#?7*UVXzB2=h9iV~SrkCO(3D_6aml6z_a|fCCbMra>lzMxQPS zdG1_v0`OBi0FqX+F2TPX+&#sGMir0>Z2uX1perl@VDP<#2ncUD?t9QFa7>IHAiMupEIX_D9bnKS7U=exX zoP0+NxP0|&!!!3C5iQmIsa4<(FX+!RTR;2Q?OSgp!NJ$n)$Yf-=0uVDJiXwZHjT2~ zo~3+01+Hr7m)Cq4fo{?PC^_1-uCY0lX!3Hz20nG#JK;)ge_e*Iz^S=cN)6U?Aqm#z zuq{L5MZ+04s57Ess8XIaP{zTmWffOpd+5W+Y$?0Q^j3km{5I&f5aF`Ec3o z;FhgmZ&TVkfsFcAtqgvwNzS;B=J&^kf95N7^%f9IS&x~-LA6Sgywu~cv4vWvR5@wb zKhdC~s_2%M2q(zp0x$;99m5cR1An|i)L`zKXDm9Y2gn6xq8s@TNHiYFAU+~C*W~Qg zF@#6TS1b|oZS`J`0b}@m$X@6x6@A|nWuj77*s_2BUG;m5@DJ{5i7Po<=k`V%n2EKQ zIT6DUM>n!5>xXnB;gc|S&Nm8v?w;9g>>r**yfQQCab`Ft+DDHnjM-7nhqr*>Z0PJ&r{1ac-3otaN`N<0P7xWCv1?|Bw3%17fE~C ztT?_I`3}NXflf)PuC%mSDjhTGAZdx>JVHA6lkz`9gyqT#o>`NDWFxHSC5i6yc<x*qY3soa6F*C@cSNA}Nd^ z2^AR=nUVmQcG3G&S)nSE7%3b}ozDt!)RMr2NXPJg^ioJ=@PP@93951p)= zO9oDZ2`dOIfDH=`-3=Yhzc3B9cHLc=T$p-Ht5`Cydsw{Y<+tvZMaxYl>*n^_@|Q`L zPNSCzgy^~>^$;u}0X|MM^ZZ}MlwD+$EKl|E@-y`?84N;FpElj^@1!6Z<7;OT7W z?|Pm*4B7rx{C0UIb1$RNuactz+^En$GtxhT82#TWb>kdMIzWinrC9DLMILz^q){jq zCNZi}kb~#-V@?f`s-WBWNrTD0I3;PRM1(RWZ5yFmXJx>Q&z-3k==L(L0k{4as%}}y z@6HzSn!zYx$0%MX2{X4coiyPJjo|M&iYsOB>rzA1XvS5vRm7D=2ySbLJZdK+pK@2y zpn#J?U3#rXLGIwnKPOeZ^4g;!L7E}JY7{$r3%yP*PUv6%FaPdyshB++W_!<6t{w0H zG=)_M1fB%hMHE>CzmH4x6hY<;8Zb(f3~Wo(t6aC^Y`8pTDE!OA+%XNwqd&?Cm8Z$> zO$Dibxkh+*0?;>Q@YE#_v{dX>)EI*r#};kL`M(Qo=;HF|~mSzK5>T5t{H2L&mNHLMK93Y!O| z?gP@v)?>wlw}r98VL|mNJ+2VGvs)a%^RX0OU8U4Bi_EO_JI;;^^a`=^W*V`K#XQQB zf2^l?En);pbO!r%p7BS8tZ=KY<$DK@Z^cNlKC-|ppV8R##VPF<#>ylUNFJ0I{M=WL zTQ`;WYX))6Cvz_(CpmW^Tm(DuS}te_&l9w=%mX1d9fC*KHgvLZDs# zrq}Re$hI!pfZExy>EC=9TSmLq*LwOjI`ex_bUoqsG`j$^+@8Sofp(nYrMV@OrhN;x z(bUlyETY4uCvd9XHz+AN`=$@!SY1lIf$-g$Tkts&4P4n_0;ELWUmQQwnRLf2Z#SCJ zwH$k$In2mzHqw(kqPG!E5mDH=KF{3M8XKf5pB1UPBvvP0d+zujam^%-UFE?!Khg()Dach#B>9Ln8yUW8^>k+?}DSy_fDWJ9~hY_mL zs*R50MCG9A$#)u%g`vmqiN^q;vbR}{<;KBOPjhkMp+S-CUYJd7O>Ob?TXlm~sRx3B ze8jrDx4Wq0(&}>brty47JWkY21dB|b+eVF~8PJ&uBoUw*8Qk>sIQXX8*M5KD3-+Cvm zNGfQ-0(hkX;M0Qu{BZvq^8&cp1NQlI06-7{_-(PwSIPYcAP*>`(zdnB5gQx(0|>ay z!*h*`8!RI7p37(YCxj|38X6f64h{|VdP6|K2n&x!Mfwj51qlZYS3p=22M6mRE0TtS zDmW=2DmynZAmf1oRt1O9KO%*boaIR-2|g%CR8wYUVo+6EAt5E4mXWn0uTmMXWT|6m zxod8oc~_ThTbb*bg_Q5dxh!>C3!DTORg_%G#9LO<_+xYylGgvG)+;N?S;d?8gQ54| z_cD?ubd9Bv$L zAZ{!VEJjI27-<-3>Z!0g1T+r|P6&~MQ9E;jnJx@Dbf)NlC^v1Zsm|b!!Tp2em#X!V zruqwFIm8pRe|gj*hlAb}p{Z=f76e`1t(%{2wLsk5+nfbF;Fta&mGqGBUEUvGGSPJvcb{ zgO_e?ZCzbm9UUDF4Go>0osEr+?d|RL_3`WJ>8YuySz22D5lsyZ4Rv&M{}3?G4lg5odc-x)|q$UkK1U-0<&_`mr7|3Y3~ z-rJq-$3JfB!^6Yfo!wv3e+#;}xY*g%{bk?W-27)`+|aU3P#Kg+V%E-8|y1Kf& zygWbe-~TToBLfQy>yM~PNl7UwDG3Dy<>27J$jF$Gkbs1QR8UYbFfc%;*MowBa`cC6 z{e!jsJ>b!i(O>e$#>OTlCI$uuf8^BSV(*tLOc0>_zZ?E2szgLYBqSt+goOC`eWRnJ zf4Po~fCcuOnVFH3lj9?t*b9O<_cL@wEk?ZzJR=U zZ%?aZd-sy6Yki`i3q`KV10-d>3Mffw!aefQN1Ww0{dC;8NBUj`<=!{0PMn7$#-<{M zJ2ZYOPR|@C5ayP5B;ukP6l(QwirP&$ZJ9kZ%Lptek4|<}^ZMXPyrBQiW)`*tW-J*^#zX z5SFcswd$ZRL$h^JIK0Es;t2I}gIE~9EKuV_1!h_gvUM<-&yd4C)!QewE8q%1cBr4t zclq?+^_e0}U+|?1k9t7Uf14|}_8t=T__JI+&BY-QcAaH{RTJa5{Z6Y;KiZk}+HR0k z(8FxCGc4&giU;-lxH*um9~t$>x~QZcr?{NRe7w&t!|v3D6Hofgfy!8_cQvWAtcSq} z5eg$cd?Mgk@@8G-AO!|`-R9Qri~U3qP#g(ljQ1Lsth<=OY8#bz`zusjE60~#+9?Qs zWPHcLd1;qSF44#~eTg_X!aK<^IUK(eoZs+Jq6CzL1 zZZU2Sc-Pt_7|C>BiLzEM!Pr*r&9jpv?P#-W5rh(GE4Xx#ZNG-^glskDqn63hAQ$-Q zDIjX1?F+d?YAtU{XC)W=ICtFj)0xYW^yS2OQ+&;Y2s_`6eNt9teD<)>c5j~tFDcf< zp_bO)FQYmxQ<i5j#kRfAJy+v*+Wo5uQxKm5^Dfybz7Wz(SVMEW=x`N#$bLXznbS~yG=JBj<><*P zm2=yGA#x4X`y3hq@>DqzK%SgYRvLMQYt@%^u}>7%ZJD=3AI?ky<+OW~TPeM5?ZxfL z{mxO=C*zaYzV-vLn1*>PG!ZzHgt#7?jDK^hw~ELa*HlTv zvM+o?4?wGz-zLJOVq8#}Lkq5n(%ijWywuyL+i!7VZ^P=)RZpRy9a+bt&Hu|FVo#Ui zPMY}&JQWc+sk&5FS(Fl`&ZPnQ4Dix-fVn$)2~wGf|8n8K?0X-wMV=%DS_PbZ+NFtn zFgQ1|+bm*-TmId^|nd?7IMm5!^+2FJB(_*|rBQ zZpo;TdxvqT$fv`cF%LmT)@ztI3_4d^hU=13Nr{l1zw*H+(woS!Br0th`$MGNe!1EC z(DY(*;j$i(^hOdYtj6!rgrY@6JxeTiYcz-N1FeAzby3o9@c2&F*gYu`(G|F|pzj~}FsMTd*!WlDs<_n=o9^!_`KZ3i zxIAwNm0oc|JOhG$MOoE#kthu<9)1-VSvI*qM-_qeF1o&h_u=jC>?45tWHg$Ygj@h~KGcX%TP zTYg*AC0tp~9@<__l*vq13hAeB-Oc%z^c=j&tOEAFKZO0v2E}Gu^tPTc`(>JPQ~(te z!h3Cx^S(b~e{PeZ@4Yz`!@lDL6dnM86~OXU8oKLC(FHX)*n3bn>#uPt?}$z})>_B< ziE7hnQ5TuF4_P{@fV>o%#S*vl zU9Tv8@Ek@G=gE|hbX&8}nlPU&zFR$Pq}hx?Y0zmLxUlfwL>UXF^~Uc`M>M?J{!^`o zEFQlf&AA2v{nynMDNcqsE_jO_)O??K?-p(10w*AL0-ck zqa1ERUl1Vw9P+VAet|sC3jDe4xKLMrGBy!Ujy~-4#;Tac5T32|>9KhjVq*(iE79tI zmPR&UEKH2gZ*#_^P(b<&8WtDqm*iBCnQNO3*xNPwuC2}h+daZ0TewluRnuAJ(bH2j z*F$D57nx>dG%~|xP47t@$+)_i8tN0CoEheB6=oT3nwb#k3*uo)ksZ*$*lQUa*b1GS z8*3bpossijn`#(uUY}`!As@R)rj`sDzjl&h8qpuk-G!JecwBs$kYwm|&3*`6=y<(; zaR5{-Y8*8Hc(S8E z^vmE_?_|#a2oGG`!Qz7Gbzx?5XmMR?YHfX|Ls_Q2%D&E~zQQfj>-`DEVo7X>4=>)n z9#s3SN=gn!y~@gpzLK6oF&Z-SBfCmTDH&i42nbNDyZ+~lVGjcC>^CRQtR@4Tn zE!KOqpZrR#j_MANtWM8<^j**R;cF56Rom1O{0ePOFD$N1rx=>wN%_#*8%X(0r2AXt zO%Iyi@B8h?RPSeS<;nNqIJX-A^mjQ0*e>MoH}U4z1H|s^<QT{nQ-O>qGjN8dafuIZdR9`QB(XCOgWiGq98>{DG z^kZ!|sSnTO%+&^gQI)c-q`gCcg^=-C6R)?Y$rt#2>j1~8G4%Th5aIIu`)U*Z-P~OLW?$qfyxC-4erP7Jws(IhL$jn?T)0whwrh3S!g3krlCtpO*Sh%vs zTUn_-Bs}EV{px66z>^UwQ>u^az4HgrK zCHzdhFlIZxw6B`Xenrc%Ne+)lgjLM3F%RdViVgTzR(B@>trLeIRO32{x^9B=)F{5l zB9H0pb0clXWc{PS8w6qWAxYl$OhzP*+3I{m`lZ51gAZBeT+UrK4HYBb=AvI|Omk1n@Am_qH2ud-id z8SXiV!>Oou7>V&MoNW{!@bvoR7-$sV=4_GT{61AjpKOD*RWfirJ@f2sT4zg$CHyx= z0ByRDK3AF-im4inT{rsrimjh$8#w~|i09Cpf{9!=$E;yiPa2Ydb}={4IzNvxu{i(9 zfX!qr&HOO}W?h%uK@r1YV?nT!E z;}9RcZqh%M%E1Jq?7cOBLfZ!1M&1B|SaNX#&Sfm(qe$lT_G7kKZpVv71kK6P4*5Cy?Aq3kY$6yS3e`N zBqmD=1)6O+jSaU`f|_XJ^|M6L3iLwMK4uV5Lo^jK5hwd#Gb%wn(|so*FXO~`wY)9# zALTE23`ilCbYv4f5S1p(TioG;y*gqio>N)*DJ%oQ!GIB?3G!25+>89=o%9S`@=2IyL}u>m?@9ozJynY9CFof&GM zn%p+1pv}ppNEHsK+2o z;oMj6hk1vVymmn;&#^4Td>5;xh~TrUg6TZH=48e`qOaE1>T!h5Cr=(&ry`&MC|og0IG6ui7JX2kAmYZz^8~nT7;W_Y#Orb0K`q z&f6N~+ucyPSinG~l!QKc^5lFCUQ6Rj`$p%2vF+C)_*0Co5SsGio`VD zN47oXes^_fjzPY`LHZlDkn5e>ns znplvCD!1c+37&n~9ccLL`|xn6-WvZR!h2ohuVw;PRO^MZCpXnJIs;WZ2E!9u21n07 ze*K|{T+=ZDbq3YtwOV?WjBXDkAboqF#c_;Jy*H(VaW((QsX zAm1wdv-FId*Zi117RnVZ_IE@VkyOuWINaq$dd#1tp5nqa&~3RDUVI_QZGlRrDu5_r z7JcC>iTapwPAN|6eVKV%_7z$fhWD|jdmwoU^=x5|0~EcoD#;I)={0AJBfxfNj3}QF z>>)b*IOIk5?67C@{7-KVkq#XoU4?nYmwlR(=QtZ92sVrcA zSj`PhEj@cHHj1*E4g(8U4*vDef+Kd+YKrBu88|EV@?yJGdu+UNqi)>?qKctFLr3!b zYP{1lHC9dLYNExkVCs^3xV`KmSYE>(!p4R>!W?mNdWdZ#Ad-vK)H?;CF&G+Eav z(0%bggy`TQBcz75M1tpXKj%5aY3Q!=0x1)yztaqHp6B6 zInsF$f?F5ErDQ>cQDrny2&9aBBSk5NPln6NbH~Rh(^w%RJE(8+Yt^Tac&$hHqA(-J zD06Xhghzx$B@^00lg}H-iZ88HR8(B(zTYoHz;HdNvAItk@ZV7*Eh*?+6JL@^GsZ22 zSH|_K5xd#c3+flt~TGs!g8Z2lsl8J-aiv!1PY5!c!xbg_r zJ7UugK0d<#$8BXo?H=DBA8#Yl2%nO|wlB5WA~@i0EmekJ~BWjpXg;1o}61&5$HlIh797$$qR_4DI z^c2_sigX{?*6$ijdX-M*qY4)^)>bpj3r>XQlf8=udS4-qN6>tLeD_=?+hAcx=H4nO z=<3Q%x?2cLwE)N=&6}5mL6sS4$sR_PHUVv$S=u^%InhT6{#dtIKRwl|K}RlS;kjfq z;eWY&!h(T;g@Jj3;XpzOH=-fJxVQ$V*@}sty5ag|KJjI(EQB#fy_U}-n!-UqIGDg{ zkS9WR;(6>5r8AkmUVBVPT;*gtRlL(0?@(go0H-|3Tkw!OB-KZSkU5Eq+k1I&!8M5Y z`qHob|=Jk+Hb8Pp%3|3G0>IVn^S=|N zraH7nvacrsDr{^Xf|x^|{X&!gC`qJJTf#Tr;qQtGMo!1xv|^0n@+vg6o`}njC0Ox< z$J$pu1@d)psgkLN9uY$$Ej6{fuOc+ic9v01%$3~cXrB#*IYD|%5)xDu@J~zdoz01g zY98K_u&{5lkZR^)-TVi{Y^VrAmX?5r{IZaqxQS06h$fo^r(;!*-D;rD6L zI`B3f4UOc6h{03T`dd6m6q}7^Ki!o`uE!$&WN2^DZ1sI{EB?8$vGFx4dwDSysbq*l z=8pp&GPc+^&gqnVOks<01X|UW`1tVPqj=!DJ52f~h@P8|Hw~j&!EDA;{rLcy5Q+LK zt^=g{YqBH6+(sgQ>@*TyJ)x&Q0E+7l=_iqvFj0pO8ih%WC9X2fO)BsHmppjUmu)AX z8Dq0pq{L_waP-Fu^&cPCy2#pMkp_i@f&ClXO=AN0aO&i3wbz7oyg!(SH1WR0PBa-V z8+h(JAy2a?X|ryY*umZNTa?<(%*n$y)i(wsn~h*)*so%MayIZ)r-|>;C3b0+FA_bS zNLaPuK0cq6t%;cM`WB2l)_IdZK2MDp!MKRVRnU{@jnllT2| zX}#a3o&e$*s=P4{)og!3rBbN%d|d9z6bn>}DOq$>{c4|k-YqSioOIfH+j02*PYnBP zSj4c%A7Js(^vmBv|5-S1=|%@BXOG@Y6$#?B*r8`ucvg z)RiYWBcBnZ^?RbgT8S~b7}{;XOHWFuJL=r<#Tul%NMzA5f(Z=jh9rYtCFs)jTSqgc zgF_xS&Ba{Z+1)LfC5*kYOgpr~)=LwJug}N7_s>npaFD=NM`RZ;jk=|hgPXR*Kb^av zx0TO!D4|D8L>%(6KLs)-Fy^1(;Nt%SQ$Vc0H>K@RwhT9+^pTMf;HsM4$$hbA%}eg2 znpskc{2*F7L~+5WTKI$k$VM5^S2Pbx(}3yH%SIMzoY!L^frSn`ovR0`8KO8rtU@Olr5wBt`L)o%=cf(s~T5}=%ulaohBF2ie()EvJJ+$w#nwOc9}cs@V2 z-vygjOqLkbeoXZcHWbhFJ6%)fC4bvJ;iOWe7v}r?Tg5Ks7)n!5s^TCj!OQEswc$8{PTxyrw{L>xsb=0_)XWHI!NlO zn^w}tO%`y6E^FfEc!`mb9wR`nlbyLJMndx1!;jNe8n1xR>^5K*=VP(8Nek{dZBKA< z^&6dW9!~@Kve*Jn^!AQg@gZPh&d1p>dl_X=oq7Xo#+@ta3xqT{Iqj>U*DK@JumQ99MoO*G5T&;M`*2ATtfa-E+y^HRLz^iH$` zYc2(-p_~``-i{^jUT{WG9*w zd`Eq*uC&<=+jHcjAOL=cr{#XuZln1!-lFr|PRDT_1kE?p68GTIY2_EkkfsL|-4HY6dTP zgjC#hS`TYGx3qu87L1}#F2F+65TJ?uOpOt*@s$M7QV?dWn#0Yt6O$D5rbHXBHO$E# z)MMQ_EO8a7tR>emScb7Bjd)TD+{P{T*xUt`8fuXqmWc&G}`^oxTj=nGx-W&!HqZAUV>vJxcq^L+2yS~1@ zko9s@M$&q7lZS@~33uv+1G+t=GkMp6dsOdFjwEk0EDqyMg1DGsa zTT8pkE5yE8z$G}343I9FP#fe0iD4Ctt-jB7sr^aN-TIeQnzj0kZaW5awDjzN-Q~`C;3zBRjtF?{k%KoV8jZGGU~pAG~ahL zIzNi1>yr%YY(poHXn4w{g|)S{DjZ&;W&Oua+?HqY3tn><239*0Ci+Xs00C{d8q=%k z1g@-H2roeYKZ}brmO|z?(f0eiK`saoqXBPOIchf>ZB?sZ0>sqpYHR=9pmeUmje``| zYUPLZ6<#{-{d@k6>G~fSo?2GcgocJbCSiYH&!783(79HByGO*0J2_m5ol3}0*W@?- z3()D2cLP*6!zX?q*A%*rwjLL?6R_IHvfbGdb>H>Bm!Y1z$GSay$A4}MruQdMk~g+* z)49&gZWc&?0S-`d6SYeX#JrA++ddE{nXhfh7Sr7KFMV9Xc0Vy`N>o6Q*Lh{%EassI zuWyo8(b3x8QpAzV{T_o&x3BRN?oU9CzhKNK-i#22zSaKp)U-4isc2Wp_h_r59*(B) zc4NZC7s5`n79ADNpn1K7$F&KQatLWD1a!vx!Zr?vB%n!`JNa_IKOI`W#<$K<%SKcD z=z+hzwiWM=t?Y1HEZWLv^{;X=E~6ZFny5TFQpk1FS+u559 zGYhAP>;j+#NfY-W=R14BVer#kT!I6>)?*OzrbtE#G=EV)*4U_Bekjevo+xkkr)I%* zVT%Wd9(UljwCU>VW?AI5(i#A zH+jnm`Wc{E>*>d%UotKyC&%%w?o&uK4W>CtlZnXAZ%>vXE`}vxX=I#;{Lgc2kbUuF zL20jeKb6A2yZqnUcI>LCjyAvO&ytjMRJQ?7R`0}_v9+=hkHRZeE> zcfO;oM(gYS`$J~$!6YK|g->Fsee(9K*;OiTdH0^@-a-M|4) zMMY0fk7MZaxqoYJa{@a^F#1T-4q&?H=$j-CeEcU_)bb*`fev7|o9nASBwLI;uk-oO zNsO#AXntO?c5Aq|)vDH%mwe9aThwR2H$6D{rV~i&A%CL2br>*gpB@RfMX_VYe z;B~E{%eSVR^P|lP4iZc3#vSuKwbRQnq&|DTrZoe*VG^^$5-aE-Fs7mMqn<51?fGHf zbd-4TyV&Y+khI(OtSw*a>YpltXIl5M{G;6)uLMcw6mwB9%*9Sa$Xi>$OXS^v=BtYn zioQJb(hG5?m=bBhbt`~m1umen=OBD@PP!u zsq2?Y)GeI7N1Njf1{{w*R$?^;Rkp-2swO5Sy$U81cIn^1$N?em67j6BB!{4_+Taxp z7yTkOQQOvrrQ`NM26@R*mTv{lUl0~^-tljZM~>~-Jm^8617IWGBr$!FR*rUkuZ@B= zxNK_CB*(vsf0k5sLJk54Y2}pj9#E$$b*}86%=%QHWJsncG1$*EDhp4%3OS4K`%H}O zpR)$@xDJpY>|O3-81Vw)^|=9b5*SK-uFqBztk4z}Q3gLhHjIPjneHbNyN)GVrZhU9 z?e9A5hz?oX+G2*5I%rbr#OEsui7YHYf{JhUdc7Uo=59{r{N^lvPZH;*KeO=@{p&F+ zBD_GEE(uV74Uw~uP|Jwaa&mT#H_fm!^ptwQH(Xj$T)ejYBlR_VkW4tk1OFTn7OidD z2YTN19sTq#G0ha=KyM^rV4zD7`a6e&oy-Pr^d2bk4NBAdXx9#*|3im$r|HDtWVT(S zbX?-*^1z*Dfy<)Q6N4KedjN8<>5lkIviVCNA4zt&u>Z_HIlejMDZIsACSbkHHS;R1r4k zN}cn&xiXj`d|-*~`-VUD>ab#ob$<uI!bJBh^ONqs&Jr>7owVV9_d2Js zYlP_`$T>w*ux9@dXW(G9KSRu?PNc4ogu_78>sp`QY>v#aNas%h7U%_I8pqrm?(xuJ zU#h@6#=l+t@*<4=i^IcPy-HNFQE3hDUA@$wg4UD}`p4*;`XiVvaBlz^aK@Hc|C;;5 z>tx&3&Q_QAdn%R+S6~P?mSjlxIC=HB>-UKEw)OSUy$`p}&+rP5i(`xfUA9^wL+MZYw@m8KKx^Kj18fo=U%$v|GNVJNyuS@u2ygWC ztR7_g9_tor3UB_1G*P_^T1zQG`S{t--3^(!-mc&I(x&4bRynf5oY38o=^fj%;>>XH zdxawWp%)=YQeYDH72mG-2Vob$abT(ySuXn0W}G=!hyGhrgr$=7AU_)Pt*2KG8n#da zDY{x$^`%MbQGc47ZilMBn##{iWO-iHA>!y-hd<78=i6i1D~e5y3@%=urS=Gwi2_@< z3zXN%Z``Z?GC7V`*AmcRLKSyVhu+IVrQyo7DKJRZ zF}3__l)4I32SF~b58;Mgi;Ig}TgA}sMu9CY`LetBKy^BmI*s*|xuk!uRO;L#E3qV4 zOYLoE>isf%aUTq%ReNCH?&R8L^A|{FglBqg`kRrFj(tASTRO$}8u^QRQ!r6<5(3~2An0=h`s$;pXGIZD+Kt%m_Pb{GsRJltPMx2jz}@SO9# zz~uZ%PFXz@aoaw{x|6Tslr#5hP=^#3B$hpF;nP_4?mL=8zlKvtDD)#W#<^~?wl*l} zJ`PLzPsi7YR(>haphil>dCQeZoA(&J!sqlCc5jUS`vt-6kpb~ANX~0`Yh}lmZ&;v) zF_hyUxDt80? zr4iyTm^>MV*UF%8+NkNv{oYnnx?;4I-*rW%0%G{}d59His#N@(DRUsxZCb7mrb!9% zthL5$dX+uL$*nLbJ^4FSLJXM-*!lJ0&uX<@P^(b_#BJkTIY#DV3P^H*F$2BIQ;zY6 z7SaXCc|6pvc!MAe6;5zGb8M`weDx`Jq+G~evBJ#dv{xjaxK2`BE zx)>#^h`d5;y3b2B_x$6GZzgjbleZWp&O*xu!aCsmZHwIHZexkZ$tCLv6@3Ghz3OGLN}fSXWnd?KNOW0>45u5d9Ww(h@_d2lpd>3 z0Q6AF?)*E|-m^-#>kTB6A#UB@PY-CA0MR>l-~Jmto!cxH4RVmS%{@@PG>U*Y6;#Us zjfk6Udeb?&bpPz<%o2sL7lAr9NaaU?pUG7lPr3ZzLI_n#-(RY$6QDI$6~Bt#wr-MG zM0e>B5d*7`N()0;@<^?l*#W=EW?+=h{f^$a=9hA{zp)#=0}|XL6bVQ$=fTDi{VWUu z%@Mo%0$J=TTj3b)A7V=C@jEIqOi-kkc>(e-#ioprKin4C5d=pHocpyd>|&;?WqGfz zKg-d!^(TTrhLc?h+xAgr%Wgeivq8Fd@)=y@= zc0#Zz30>@F>geHL@#PwriBFd9f~a>NKJfb75OC$?^3(+cYK$0KAkS=UKM+;m2$fk3 zx#UK+yK2H@bg<|SsLN4L4VYt5fZ z<+qRH`W_2(y3lL4qaCnXF~FVNJ1!C69SxY^*;w78LPg}RsePVKw;NsfD*0PBAPOxq z>4rXs1Y`+p?D)3_QryqT8d)VjI+vsJyA%lsxlHsfi&`z4Cd@`f;0;u8t^S?~SzeD5L`r_KnVTJGWjAjNtF^OnXsrDyYfvmD>bP7_|coTcd6;uNWQAJmKG5+ zdi1E8>_Na&(EPVkenZxT3kw)+c3e4Wl-Yd{NV;aZ+!GhZ{egZ&TNBH26RGMt`_y6Z@p;A!(apnGM9-s}W;=e@xSMMlow43W`t&}8}>JZ3Bqb+b)IwjEv# zuHyaV-?4?P0Lu@Mi+iWQBy(=zxxfFU5E=?34xHxaB2-fjM}Hp>>RqnJRgQXs*NNDI z&{aJT%@PMN>lhsMYGp^n(`)E*XUPInR-=@7=FR08TjXj7hk^R~6F@GSf5`?;TR-Ng zd~{}3dUb?NPc!s;{+kS|?+QLd!%`Cm==14t54OwnWHd7Uu7#4vZVA|gfFXS^yBLo= zebx?z0{a4Pz0qeNGyLk2`<`Clfqt*O#1ExzMTQ67xXNOBbKOK=3Z4T;y`o=q3l3wcltM7^*HR&Dr&!L1zXJ;WNziEc_0@-m6o|r^Hvq(2j_Argf zD@RaN@RvJ4=%jf9)kP>tw%SVP8#Qh zwjoU#?AK#HmoDT-WgTb>6eULqzaDtw0m#7t54E2?p3wvEBC3wST*tU(^!9#gF+%?0 zb@U~d!veh7v%Oxw5{as<8$yT+-czDhJGUV14C z0<{Qka@HS`a}UvvyaQTsX2Q^3Q4bozH@CeOVc4F=9l%YBu*c=|ksSq8{Oi7_H+;)S z1v{RKF$ExfH8Am?s_rIwO-8QEJdlXWdQ3xvP|*j@q>i@ zk3IX48`{?+OMzI$GCzMlYtI-3c6e{GG4oP@g*ZlGM`1SZoGvdNlC!sNo*6U#i)WP= z!sAN{+$Hu*g{Bmr;&{cVi-dCl-7+23ffB*g+Ud&d?0@ph?>{L^2Jpq9v z`iKAMi>IeJd_^jr{kq{#nz0(T8V*`q9OJio45I$5!Jng%|8nF#HyLDVU3cC2{8wv8 zr97|4nJ~W*aDa@1H7$6;VGTuV{{v^*jbh*9Id`%|;zTH;nh^*jrN2{Mv;yTOW6&_p zO{dfZrky62Fl!WKK)DA^4&DQew{*FEAU8@Ns`Gv?G8Qlmxgz1`VF{aXlS* zrHfCoK~H~o_nhf73&90a6MnQ_Xs2lvsTV1%gs}urTLIgDewF&Gbeyvu z8>o4KfTve4uwSc4Hm}>XCA@M3Nh#)=rjpO5Qr+P9FoX|)5F;*sc>S&fUAO2Y|CN?p zipcToThFA$2OgG9_hlyFcH=s(3spxbC3Jlvv&?6)wY5c-lrU?4&vGL9Ac+NfXnZ!Q z|0+{#rEJ4=OZ~c@IA_RsaOF*ctOTXdBM@~sLEM%D_@Yt{%JY1BfY8J1nOKEsjRvpr{G+dBY!MFy!b2A|X2m&u}leS~ZM zRU3&RFL^|OhWReFIsnn=cXV66DiN#KFI%BR4*#rmuFRyo^;HTz6aSv(f=i3`;*W~V;X^mp{ctLYM@c^$@iGRLQ0QRQ> zrTnK6s6`Lc!^Jj##CGu{O9L(h$kXjxeNbme!Z)n>)Jg)9d$# zLKBF-TMZ#S_CyfwDKf>f5e*67%G#`b(w8<gmKgpD-s3> z{89=sNtIIZcXkh@UWm5>Zfp4Y&*i=mR3C9iP6QxWDlMGj*kBYaLMcDSRd{q`!-@$! zMy|9ygaiHo?C;KZQlo{`cbL{87!d-R(85EVz64JbBd5o<_kh5|pyF_z*md4yO(5_z z<8nbB5f;MGc6Nhbzkt+!wr~(3p4uZn;!pTF(#T)kR}$M3*rmjqF7@UP=;31VOmSQf z91iasCAZ8E1e6e%&wv2}=+o%A$s#oY=ZnURdIsPt(BtCP(NIGww7~F=k;QpiaMP?! zb_0OTnr>m^CYDOZYS(C;Ie+eUQ02k?N{Wz{t9?=8Uh{9MGs>2(u8TGP;m2`90wOCud=?o5dg*<`?22Z25OUpUNw06GJ;5 zusvw~U@vqvV*{^HL4H}?pDw=#djh0&iMT;Fhvu0LcOPU*2wqPzwLQBcWOw*SHby5r z=NUj;X2jw~k4J>GZ#R7Fveb2AlQ>MK^sYz(?1?Q<@jhFNi;Rp{i}d}i_ucH-RuNIn z6zf@Wpmc$#yX1MfJ`~*UExYryV!4gdia?=2K((J_PClj5#sY+Eb zu93>Z=>{_W?e0y&s%F zS#eKpA0OGwq_|FDj%U11+%u@e-C~SL!7+gLY8Pqo8#Ih|u9(2zx%sSI*(K@F!KQG= z$)8lx0+cOrx5br>dF7_PGcbm9SE9U(%U5o(6Ao(FfcGfcJ`e5>7!KZ*{1b_Z?(k;Cv&Vewm zx0lYDa;~Aj%aoKo>$tW7ngCLMD>m}y$?kFM0>k|TmetcI+jFaekuonJbS>%+fr4-Z zbHS|qRAf&rBd0SNN;Ov(_}XLQ1^r%J5u5w zN%AYe<8^E0>NA(`eTc6SLd5fmf zk(EwNFyz=$N0j9kN+CA_Y%q|$FSRxfPBVEUQ+(Y9=Z*TVsY=~;kfk=q`$$}Xl{~I- zAI+#FJZ17$fH5jHHI*f)r$5UmSurB#mh`26GdOu&`YpH1cf#@tURGDk*bUg94|M}h zQ7^Ssj>AecJ1fDKa_=W?T+LkGmZ*7l5Zg)R&GWNYOjbb5!^ zBEnJE-Y?%ZPWENoeZp5Z+8_{hyh51ND-&}-xny2gu71l9_kk5^>Ib$K>qnYA1~3X6 zFqh?ZX}8Hmzxrbmd+~s`GY2|M=U2! zunZ71g3066kwSu^LPi0`Q{f0jvti5OHmG2-^d?Y8TS~M9oyob?8An`z0dr?>sRP_` zq?-Qg@4Z{_(>FH4Ruz+Neiw@f&ABx7v<)5_Q~$2^0At+(v{rS9nl`PAtURC%YF$th zEEY(Pa3zUk1lVH3%Feri8d2eKiEXqF)!C{{v5sh;QX%aC0bGeE+$%s!=55{^?vLW) z5qYCN+Fa-)_!V$fz4Waczm_t2!ds8U?N81+tU#+wrV!m5NDEB+PxEaUl4X<_F!Cby zHZD6^vcySpC1dmQcW?7?S;0RiPLTS{`^oDO@%o6R+7%3SBoISDot9O%5ks6Sw+p}k zEO3XI*L4~}=sDxSJSSi%^D-&of!m)4NEowF@^elyT;^KQukt1WRv=IoE*T0|8?H1X z;wrGAq9k%~aDcW#3vsf-b-}N1uZyoZBYaJRe@TJ8W!rAl$LI02Ef^p8;oJFne?6<| zh6=;3yokiZS7XD&ge(a_`E&pQl%=7>TY+}H3{!XHc1^$LXGRPcyv^Tlb7u(4xeLU| zk7~(#%f`+YV<|e^f0CM>Zd(PLEq}Eo`~>J~T)i+WPGmh91@H2kA_mrTnXD{DCLnA8 zaE`ysfHF}%w*f7OAhK`O1BLY7x-+9=6Qm>%=nxZHs*TR;yDN%IHFQm~&#`DB6eLQDTRCoZP) zD|z2v2%8#Un@5d#_DqKX4gMgKEn%%>&or=t7cIts0aXEUi)*G;X1(XoN6#nlxnGqBIXUP+B>te(GhF-^)LbB?!p&EiRfZ31@?`yqOtq2&0iF$;+ z2~SEcVW>pL@0Aw-&%%?PxkEoG?EqNrqk~@5zs}QKI0XTuo()R>TZ8@#^(Of~(BS0} z(t5l6*YJJih)LXZCy&+Bk$!Cw*Y*!a*gy@uAaU)rN-&6gEHc+>%&FLBtUn8+ey~8D zG48X-@_s*8{tNvH;7OXFOCj1yWvcA?G`{4K5VAhWt%_zM4Upk){!$vPi7K@}oq8>? zNnAmoPi-hz7Sct3;%tF6uc1d|$UUsJ!VP%NWj8yMhVj7GpB3t_d=}Ow|Ca}b`3G!# z-%1-KC*ZM&J?B$s{D_rhWlf*MJv0!_z1JE*GH8-TkIi?$=2JkuQ&o>Qw;{y72PlGI z1t==&C(R>TQ*v#AqscRn&!)0nqjR+z# z<4Gm&gHxwS@&OqC8XWyL`82Gpv+@R*qtDLHTn#h5obQI*1r7k(k>mF7T3MVdW(Do3 zG?sF#gtoHA82&E+E5kp8sr=?No$^~8Rw>uPeGo|AAcgFxpaudZz_S@EN+1ZMM4S?k zrc{v~CV0}ODg7f!G-vogF71df_nCyQrTKN+gg9hm$$Ftg!mNW7dy)J z*ys*y-j@PX*MgGn6CWa3h8spE%%~OL%~&E7Ii`mZynCzB_#w<~m(dC#&`S&Bn9l6+ z=gcTT68_POfw=Z41&L%MyrZHx<#D!e7Pgf3n%2S>pw6jwqE7j5^TBUK*b9}g3nnYt zPmB>jkMK8s=J$bUD2R~;;{dL1EPol-)yGaXMF|MZnGHjx!jrE@L{=X-Sy{NO(d)*A zYV0|;A*odur$S_DKsa|BGF`RC$2N}Y(9^2wr17_HE9z$_XYV%x64!h4WjdXk!tA#d z*8C5gn!x{Fz^tlBPft&{yeSnaqzI@g*#<><*+%&)w0V}AOY`xMf?zMB;6IMw&u*FU z>FulWZZo=vhwf82A+2ZLvy0B5zl|$}fiztf^@t8c87)~Z2=>A=?Cpa-cmUkyq$L)^ zxl4z4=s4wZwDDY4y+4bqQUF*k-yeFfO35lg`eTLsN3IQLpjxEMAJ|gfp7Pt@fcAM9 zu|dPeWTgfZ5zSD+m}%mxw-)w*oP4@U?Sq(*lDK}7J(^T*hg6U$&MN?Fco%_}Le9CK zGsJ{*zaiPxpwWBMuKL}CJ2^;FaGJuJxwiLvd=62|k7OlWWqVmdru#riZ)fvN$&Peq z*`QSv0e9TLdnZT{!81KL4B**G_iRPFan7Id%cCeG(h38;0?i*mH2;K9>$jk@72%^u z$A5N3*47d5kqwL-4}hJSm(SbZoZ@1M*i?^FCzTAUvp>WGm4V3w0O7t|?eil7L^=w^ z7i?rRD^RzgO1aM!}aUfIgvl126zOk-|gW@A~DF*=rR^B)huLn?Ktbv7C&t;WFk@=&9An#FH!hS7^M;c1@jlRkt)(- z4b>=wWi@6`&rQdWChYQkbELohZ=O8e4|i`1ZBW*q>*XB3%Z{5h^yNY6%}~?n zf!}xZ=FP~>BL2j0%s+$}Xf`0TnqiofcaFBGLvEN5pw3S7r4FZ?<$;^Yohyna z=bAson(aS^7xwo2cJXhfZ}wELw~p}Vf%ltxs130*n>_u_`lFhV<+bR&iCi=hGg`X# zKPsNm2wr;1r~BL{>tmHmCl{L$!ISG!PIn*nSh*eI`yM22`z<9kNeBy}Zmy3zsIs&g z%*{>G^T;v{f}r4a{PZDt11xn`IM7h{mMO@!+zrJA+#MSmxBSw=&F@d^dW1>6uwNXK zX9z+Ghy~dnggOl7sfSvSqXiWegQVHxAj4#hGmw8gf7_M7T3=N)mSC9=L$;f6A-ibc zx|Q_J>f9-;rE~d&g3o6(jDKOYDi(O&`+YQdKeS2C#-7;!?G~#&Qr@gqBJ%IxY1Gdc7`S_!jIE|_vIO+?Ide~1@po-*sxlEjE`W02U|(`;8LM}x zeKC<2f#gUKK5o}=rL}_q+;1;as3%g0o_9DuTxWkHqUYNrPscBuW+Cg}s#f~;_WukX za$Fz!MFhW|+p|Q%u}~XieGr}`rPFZF_(h%1vNY+^8O%hx^SAv06PF zY-iKaZaQfGW<{QRrCe9-_Wrr!ZmdqL6H@V}ye6B+qmL*?B2gFTW#LceIX?x8-1KvZ zd%tigX}s#sygcwb^A_1}JJ7z_&(ZU{F1_BLyQ%l{XFkeZ>#u?`jL7eOO*a8Vfh+|N z;jjrzIqx4lA^(z%XJ7j9wSq_h##W0No#L?ZSknEb&+j_3Vb&6Zf3wzf5q7hB<8`yz zq{dWE^&zTg{Clm^RH5u^Dn>$=L#wxSYQ=nI5a6Pa5(aZw$4^gBzl(E)7HXF3@J@k! zh=Pu>o@%iYHXaQbVw#%HeyLsuN}PHXbm0*EncCX4HX)lX=UI1I=8JEh-3F9+Z=Em5 zn9D^ls_&^drg-~Z$Pf4PAxF^1)Xa2`tLs+7%Lx0+G;j7W>7)09Pi!~iAJyu7f`U1a zS}cTI3v|R4K;Pb;qrt`7;3*h3`AJpe*L$@R&F{_=d=Dkv*XIN=SwriMdrriw<+4(x zg^6zv-m{3eIYb?iSxkYD^is|5DB*vqPoO-F`aa*ULXw*L)fg zqkj{uL7lo;)O6l+LlLyWwcwvQC2|x5b-p_?yZ%#+Fl-Xw`O;7k3)*V&X~q|JhpF3t zvReula5cdaB#JX1X!N}qxZYBY3q7^JF7z|G+PS>uNNxIX!`tzJ35G8(BMn1*Y~wKy z4pc!Bhkn&z2)PyTHpJw+-YP2kPxQNlyYHFk;(8KbFQ#zkIS=vi3>&YR~8ory1i5t@vyWH6PCe z;h4TL@+XD&C_VyZ%|Gi^7)&AicY=zF$hvc#CbN(?mIbGO>w(1^tGX|7}V|hZSeqnb?v^po`P} z9#sKWi5YY7z-ga`c*YGJR&0V5fH}g z(U(|gEidC{9tpnABmBBLC2*I}8#&1*^17OEbLXS4yIeUHtQekHODJ#E%8&g}Pbn%Q zEBIgaa>g;wcpbWQsxNN?j_iJd$5jAOlb7jcNmF{&#a$np2e)NPkF>Di2RNvg2TNq` znT0g0AXANr{zZhl_4j2!2cwT3H)&0jCFT)Ph37!Z4YSz4UGT^Kzlib)5vJcXg8jF9V1;(e^i=}uydTv%LCTSb)O(+ff%Ry7rn!3E)SzfTpHEx#G*3{HUs(%|_lE4N! zjv+HVO$+N!jzv|O6#LgVZfFlQNQjKphJoJDT@3+gn61)NDj1JsVAID0m~F3Ny>a<8 zufn(7uUpzB3T^6ax@uSee#TdEki;a0k26CUspF=0JTiMD>j5F8z}qOPUi$=6R72*0 znD0}tdAPW-w!|k-{IyI`ex@mB-hJE=x3vi?Nbh?&48&1K!cJ4BQJ>lWgBN?X$M_cm?95V|*|q6A?X?;WFY=4TD{lIa zE^q)_of8v&0+VE*>fBv7KXcx|^MxE3Q1LDh&+{CTRjxb?WpI~T`1THuK9wyo;Etu{ zv*5?-MPRuP5n8Y1iT{Vs?%X;oBxvAQ$etCKGzsPeGc9z0t+naAO^LJ?h7|eQYDbzE z=)Bzfy$AxCYA`QXO>-4x0@%w&Qul@j@dQXhgk0+OPB-A6RMFq~DL|+^KuMuGiDFAE z4|3PUXd>-lxuzOb#nD#8FP`&u_7sV`Rz^4(*g@Ie@>> z+HX0MJgHPs8e~=bWA%Rwz}*rfV3sfDYT^F1EZQ`aDFZ8iQHopePYcD_7rKNMd2k~H zpvcab_A*8Bxp+ph^e=uFOej5S0A>uP4EyunALLIOCseqT5?Pb(#e6*b9&7oy^U{VeWbObH&%9HAgBok6PNgMXW(5PvX-~@6kv;Wo~U% zTyeK--|n=XizKf&1O9}^GyH%%GCbDnvsQfG(eXBtTV)>TPsZm5Nm&j%Bd_4G^z!A_ zJmJbf4Xu8|{xGmcj+HC@>1_zqf(1472zUt&8uZ`t_)vNxep}as4id*QxB&D)?njb> zFbr)zm8YSgO$IH=8oK}lqGcdHB5N66X@slf=((Tj6XE;=L}mO$iFUWKz_zKTFwEDh zV!RI(QS)EaSvIL{n=WOLA`SLq$2b^GC&1!pe{n|Z)I2|2GE}F)zVM5QwIwZn3IcH@ z1f73SnSW=A`0>~7P7QMs14LW!p>#Vvxu+=?N^)||YxEJy*#^|5(%gReJdOqftZ6Iah%40T$Lb2YD}q>>p6n@0BIzE%S1iCwy;HP9P<85 z#03RWW|`d>doBsWRmyda(H`S;|91rfN!gYlo(s8%@gt{=`}dLV4BBvY0A)1HMV*k- zI@Mdv3wHeeIh@;gp!W*p8ij@xjrbW*dyaoQ(tl+rPy;_a;!3z&XE6E|ECJ+Z=coYmc5?}L zQ!Yo32Nz`egtCT*+T;1^u3ti50_`4@9|SWJ+fK3v^00HB_ZI}p zw~b_xH}8q5U11W9ll?}lEolIZF>?uH&(ay;t6D4SDq=P`m|c;xz7&99TsOOzo+gj7#(wsP~Qxr#gMvB&ZOw-o|qlKpO(H z_6qW5>dv`XI(Y1?18Hawj|>pd!pxCJvqpOYNZa%`3NP?x0RSqV-{nh=phXHMjKXJ? zqX5AKdKx0!N+v&KDj|yev*Xdt`4hF~|5Qrl;k?a6f{C8zJ=4&aZm48RwLV|uwhS%E;VkfOCE0*~*%R}LGQbTLq0{eG~AAupQLQwIwgsU{Hcv`??Ee>1LpkrUiK|%D{8DKSo`rAUP zoY}Q`N1lWKdVu8i=dP~k{ptE4EX={evJE6QK4s;pxZvknI?V60!B>w#@wq?JOISq9 zEZx`z27i>4K!gBh^qviQAo~^CJYNCZk@g4b{keV{{J-(|;Vv)F{pIC;6gCZ=EAylh zsDRT8nX7ltXpumM6~Pkwezidq5Lnfma7PC8q0dYaX2jAn_X*%@1@N#noYSPv9|cT7 zhKQ|NrpUf_DvaaZ!c05_Du0B|ZhelzuhO9UNa(&c1u8z2>I7aS>agFfSqlNW&m91$ z>3@bi ze&JWl0bry?!;UnRfZ^cjLDZX{`F4inY}G_M*+ zwA?Ra#F848&59>SRrs4fz?}5b(^1#v$&Z%@f2K|CcsYRwxRyITYrM5Y`t8@uTnnTq z>cM=<{@WKMP%#1ec<9*~$i%q1>MrN!6XMU(>Rc>zXGaxcewcXsRl2}c( z!D}SI4NiQFxKpQHL}Rzwd~@GY0OlQ&8PZTjs`P%N1D0P8vf<5cJ=xvEh{uYZ0|H`G znYSfMLA*R|OWGQepV{6yR-0?a02tvibYc)>KsqU|icX9yDDZ!802axK zEXE3}h12MTs#iGyk=#{eRaWfLsYdp_A$bTUJodF4>Sigm!A*eGWsdTmb*SZsLZ(RR zl*d5hxqn#u=~N^(hEu+cLR$JmHabEjFpg-@QxL7fSju@|UDpKX- zwID^`HvKp$LubI2A<3F$5r%>B>l4WCvGXrTSRsys2@So!D?*(pWN9n_=y}t>TQUA0 zhL9(}4Y(&;#?~2Nr}dfVVtxm+fq=HYs1tyP{F1%D{Ihv*-gb1fcr{K#O-A`X38eB= z7GBMiAP;V?sF_v(((OkO-IRG3bov~s^;_&L01IqM7`Z#zzgakMzj-`? z*ZHhHEd5o85@MV;#%!zrHAUOBl^ty6;KWU^Yx3}3B6pQ!UgW?@d``Jt-S69~!j+MgeE(b!LzqdU8dy@pkF@kxc zK-X+hrNht`eLn|!M0kHKh8S2s3kWzo3K6?V%Dzv|dP+Iiel@3kj9vFwaHh6q6rJfeRnhMo5p!cI<*MR}|TfiUB0PYu9xoPLDJ6+3}9hzwsbMvL+LgPO|!-hh&OC$5ni2frb(P91#^s2ZwE z-f}3e5%}MS^$cAqHha3v@&)enO|Nq}Qq;gFq_(Tw1ch9j)hX1q&B#f!B=1&p;2(`cYDq z7a><wvUeboZnrt7o9+&$fW_+$ ze4VM$+fI|)Et88i1AOW|hm{2S-#3>wfh!Gxn~e8(18B~lwTx`eJmmyNo}mK^ylDQo zF>mj`yEz_D`X9D&VeTU@4 zv9R3)7|(m0x)!tf_fJyqOn3Lja>oifp@FK*+cg}*HUT+ApubAs>$!%SQFb&IJ1o$9 zcI1hi9QamT`_#$U17KF-4_&qJtC5R;$N6qwyfPYvo+Z~b2fE(zkHKA=ak^XZ_V zV<9mHfFIzd(YZUS8NFg35oWgJ*@}QR8Ugc`|0}2yvu&;)Ew2TEeyTP*s^zakeT=XU zl5s%q1(9m#>(Hy!w=AB6^AquQ1J zBe|?S1I6HSD*&|sFy-*^25sS|SMWTb-_3+w>ca}Xjl1W7*sHU316`S|#*6y^mOq*u zLy62GFisq8bu}FTNkF#0fXLfsX>&HfX?$2`Y|&AU%jxg|AGcjo{HXp?4G@%HuC1RT z$9MnPk;70d16Z90p(2<%?$Rj1>KidANDpCFl~^9PkobWF1*Mycr4{=jL@yvV0{qMm z3rd9w8cQQk3$$i$J7Un#$!ZQL?7%qxx52` zc3F}AC1k2Y@e*&4z`TaJplY(fKB<=Hd6W#M9Xe%}T2x=+eo-NGj$-KL>E!St{qst?kVK>DkjtE)#z(Aqp_Z*N}5O+^9Y z75h?#uF@&(Q|cW+)#AO0>)q3q{g1SC_G@r<5>Zts(XijG=3Su~r|l*4`~3U3}Y&13O=0qDz=L zb*gIeD)>)8U~kP4b6Z5xr%fo59At}7*XEdMqRL)er1<0^1VpMQEuqkuSzu=pTJwrG zBX^qbq%v?}|FCghcmwJdK(n#l)|Tx((p|%=oF;a1gd>?@;@dGjhGTVJtKjBdKo&}$ z!7QIdbgY;#Od~X`Q_iMvwBY2}$aE}lj{dpJnVvKv)Z*~HVDydK(9q3H`Lp8SmBqxo z91w~yM2>?y!~sIuGoivsI;RXqnzF^dcp^+Et-}&xSf^#H#fsF?Tol1i-M9=I+WUcc!%DQH&VN!IBI9 z9pRlh-hS;eRY5|6di$UcM&~)VydcoK&t;^cRWDWh3o_sDyD_V8{?`r)QxHj0DV4H&=Wf? z))1v;jefozkCdEi{{=64K`}1QZJ9?H&Cf-llSsW9houmUqf?e^3%gdk!V=}`lOa#Yd$ z@LuHGhbius{Tm7s3yn>~5K~BFK{kFp)QvQ>@SgC`eSL z&2YrNJjLxp73)vR6!LJD{6dY019kh3chthLq3Ab59LF23Z8e#t`PfP3{0@CtJ!4~I z(>?$CNkep|!c@RrV|%6b=IuSXZO+L1Yho@DJLX7He0IFH7pkx3Le9 zMDhzWdc*c**vL17XA&c;6H+W>E_zsUQa9^Uy}gHan$vPA+#wpT+Pa(OCG%DYi%4#+ z7uYaWx!5cgI3+lcK|Jy$L)E+Rz6cQLU>E4u2Eotnh(n*_%T_be3(A-Oez?BssJUwV zK1v?S`W*Z1=tvx{G!p!^Mzt!Q1M0Ipu@#|Fers6@M0MKO_eBJQOp#3}W1%hila?p{ zL>$G%^B%)qSoH>5MLv+-T>52<&FtDm-6c~_TN$b<_!;`aGxig((G;Ab)F6%q8(9cj zNz0_n%BDQ=zN$cKaFcU(XgSz9wA5y?&jsFR!p=oW)4pe>o2*v7^$ip@4wRL8LJCW? zV%UXoO9Ke>RQ?&YrS$IrxQZa<-tAsF`UKtykF*XywTN70C37`tT@U=TQ~!l7frFiPH`|Dq?!Fkp{zrPa~_%8xFQuF~d=@nUVR6BN|3cy5qr( zCpnyv$C(oU4FXX2}1zOSaE4-5i}*big?ZXk@b9H z=VNF^3_fGZM&D45@IZB?E=j1Uo1K@7P+fJFZ*5xJVNsy4Ah+xGkawBGHHq)5pX>v2 z;1RlT^Zggs4|5>3kSQa<@;(enNsCOq`Sf0vK+S3sJGAQXV(DtYUs)5T5wWJ37eG@# zPeanVq<4FZHZFCsxhAV4>6Bcsal-maaVF~|!Y_At;oJC>uU12_;wx+7d zSk6f`TNL~bydeShC6sQOUr1)ldx56}&Rt#eo?Cm^2(kQUdi@DM9x9O&-#+^Vv4a2K z-+yuvEvNtfUMESg6CAX;ueq~Cl)ve5rgU2yTK)BB%=cV?dcHl)*ubdKnVC!Q%YfHS zd+f9{6=f>al3}yE2Our-4)WCaA+an-sk}DY$%?6XXy+#!3y-zCzV2&YnaQT-l&+g4xFAR69>|2Iqi)K5w6H( zNw0s{+v-_4G)6%F5YkyN2?)yP>D(T)H6UX8`qh@VXCPS?YG3L2zDMJmfqL4L@LqHFiecvy~HfRoPf)@(nA<2@py3PYRQZF z1Vbx!@b~8s9}G@?E?#nQ;NkzH?6i=8|2dl5?2%hW&VD>!@aJi1b6G#)i<_DXE5MYt zs4zC*XNaXT$D3Gi*d{!?Mm=oOurnIRp~Dce-!O&1h;YzbkR*1vBV%P#d#xUlwgN?c znlE3%KA>lp(KP&AJidIHOzpTT=GW@BqIkb|Qo#D7Dx#fLg5J8(5La9Z;qoG9_M;fp zQQjmqAogP_h;S&qB!{~uRG3JIENg&8cV2a4d_3Q8_P&EpC8MvrB3ga=RtYzzz+Avl zwCVaRM&nJJ`z3jI_3iNqS*%Bkh;Nu=u!Xzyc(>aH4jNEr*1A}|%NVznc>MX8VcoM} zuAPHF^=vpiJkwNn1^kJ?SN11yf3%06Qptjv)VZb z>~r2`bWg<6V?69W7S}Vye8HdNI5%BswJmFCZ#AmSnKRW~lep{4zEjWBX=?S`?p1UP z7fP-c7PuOyV@RoJyWTLF@v5DWg)owC%V9Z!U}Nq^T1lW0Vl)t~tQPMF_}Q=i=Y^T8 zdqw3)0NPqvnNH1wqJK41x%)R%W1MaIA1)c z|4sRN1>HGRrDcWN@Kr4nz?zGuw?uL2WK*HPmN;S6NFOR<4Bv4rWH3dgNRy|pCDYyI z%MtXSRCB-dLIVyb=F%=B%=wT1rrb+y29Gc$czt(m8lbYDcM1RNC|NHDde{#Cf%ST@ zdMVHNw>4Hsx2**3*#x9+;pV7=b**NDq)^nuEZL0dPtR4db*M>mHB;2D43j$zt_#wcFTXQptZm&lw=WwtUy9=_9} zVUs_+Ym}EDmRG9G((Umu=TmvCE6%DX55j3(@#C`Etv>#DD0-s&v2Urq^nBN{4vnAJ zMkdAh&wID2(JOypEOSj9$u@UyN9)&hx2xkA0>*Hv<|HxF*fVlsQuK<(c@MO%u^3L& zEQr_KbB}TAiKkNqSLsFPZ0Qg>%ydrdE&6#P@8+wtjwU}Ajawrgv2!SA8KknTRqqF! zs`B-IVujEhej!^WHzJ!t>>*m-V&#f|S3n(kLxx*}BB)w#Ps}Fpl;K@!a<;kZkMxqv z=De?EeEdBeeNIBKYj|U_p5j$;ik!@aH0k8solUi~DXJKp5XYR8Jk$N@0b>Rb0<~K} zTlglt%XIAFk&R&s91PHM#tqY;w$0GHu8hhJ&-!E)WkWquNpVVRKc=hYHME?0pN)?u z$@vvuvw-#s$nKbU?wo|InB2N*b4>2~#tpQyb`C`p4F7zQdVS5y)U=Z`+PWZoB6u=) zq1zN2(m zbQvVG!V*1xMG-6+9K3!m)AVIKxFC0ASnOWEPOs73+B(3F0L|s+C%uCL)~J%#9mkU# zVCDlU^N3icA9xPkV~j$`STj;Cdz80DV|#T>)7Z4IZ&33p(ovUTJG4oRQqE}n1+Q{_ z7Q=U7H#S_A_GG?oz~Q;qa*jhJmMj8MFJ){vpBD{1aft+hbG0 zs4AqpUcqBOo=1YF;K=7s?P8%VvjvY2`3BR%1BKtn~ko@O^B6 zjVNXuN7K$?CpM-|=&>Zvs|Pt)G_fT^mmqn+5vBw_l#)o6s)F~S1reSvUGI}{gKah# zH{NiT!c71;z<#+QE$($+7q}l(|A$B#O>(JutT(By5-N*%EkYzD4k$rQCr`pKA;?DB z#K^)xlh3mltbbobTK!pTn(76?^}Jst_^!s(UZ4Ex)kIpa+)i~AQq(UVzL3g$4E{>| zLF=0{h!Dkxd8I!5t(9~_yz@iI7ifIDgz1hKgH$HY5G&=3_(d?yLAShOnMHCHnF{vo z5^aU^g#h^8C_}o^K;%Rsk)e)3JA;4$`$ODWrihB?H(ll+FeDU1GKYkmxbrvjS~bv$ za3R~P=VA4OuCy`zOv8!K z2tB##5h(tf12ii%mQW5H&>=>E`7c^s(3+K|b+I_P@_Xhp4B=vQKkVcjljc@aTLgeQ zHIS(K9yKRA>zt5Yd;XfKT-xW)@&M4uU(Jx{Ty*1x!0K8&ir{v3ETX|*Rw6G9D8L_8 z*9&FdXmDvgY0vv_)c=#!h0?`J5%+b0XtoQDG>C`NbyD*&t5eRI&}g$@0K7(>n<*BF2HV zdO)9C7dHrrXTxH?qGlR%olvl(~?cg&n~K*)2|RnW6+*Kkr-yb2)DgWP$j1HbkL}ogOW?7CQG;?|{dA{k z9$ed=kJa~;3qezqGz`?=6jtwo5<>2>PTp8^7o+Q>XKSOab zTPMcP? zL&~!9hYI^E{fEs+y*_l%d$n@bXNmTq*cu(L(rS6$af!p-`LcV7A3uJAS=CZ^<;yZpdaiQSa6Hgf1_#gk*M8(m_2*zfxpWjV%)OoV{9m=QNAIJEU#` z59Si#)oRR6hR*-zSB-wtspwiRJBP}DMDOS3dfqc_2D)DtI)=S0wX{pMPF2ba!M0JJ zlnE{%JIO)^(K1chrd55G+lM3qK;k=8TvEb!&Fh8su_R^ia%g03^(U+wC~PA3x602X zZ2Z?gozk!U1-<4FlTU2HtF)4R-|MFFm8t5?pHH=+T4f@w4Q4R8tdB&rrCjj^)Bir(MtYXT!>)(4K?9&m@mys@O*n)l!Nfp8>X<4Yk$h_!FDtw24UJa|!WsQ%MObPUDg zIGx9j7N-f4Lpl!+eHyElETJDYYi?dweOem#X`%Z;UXf1xCtX>4GIT5kkV@Y(`x4kt z0YOJc_Y*Z?i0id?2A#S#sh5tZ7N}tfS}WGjH5WPvd)pqu-f_RP+NI`*QM5)Y(4V{! zO_vfQ27%1$OO&&xKFT~REuw-?Pp6JS8la0fpfd~PlK;Z6Y8<^fU`0IJm-D%Nr3e>J z_dpzc2mk4>rA!~fl-(Xks5*qVTQqxW1$Ep$T+Ktoz$qq%=65Xm5yU3IapcB$S|64a ze7gxntob=Y{V;8IJ0k=|z^^0bfg#pQvoW?QRX#6nQ%|T{I;E{mA)lKK3=FP}mig&3 zi7&VlDz6hT(Sz3v`>c?o3SF=N(ukUp`k1{Koc?D?pZ7^l@aO480$^qOBzjQVLCbk) z^BJqIuY;Ei#?NS6)R~7L{1RRNk-gqcfGT|@Bur%btB7VOeBsqx0q|{D=nG2OJaT7^ z^)~=F%Tq7cyA*F0S+Et(s<7A@k>93bLD=_7ia%71^xs1RSo7^>wBc z){c-7`-5lI20JCMv(qW1nEyRh&R?d4If&HzRDRB>ihwrE5?C2lf7Pha8Sdms@8m|E z2GU{0?dDvMwI-WYFUWKjq>PYZy(}}^Z2WS-HLJZz`t{|JZ|;)X-=oYKnKz6riCVTEF27?hodJAm(M zYyWxW@>BtLYUk;MN?l*gt{P`-m8LF*7SXx)E_r<`bmk@nfygeC#}e}C zGN<1mYI*qh*48i0eXyrqv>RD}{JPSp#r;_$NctyEW_XA~@}h&FsIS6QT?`9!pK{;8 zwaGppTL~BS4oJQ*`{dA1PLFRH&{%%t7%xx)IUi$H&*UFVg2O){gOwdrS*ax+LdwrD_9?$AloyteqXJD(tK(?b z-2Rfp{yTK}(2M>BvkkntVk!5RW>dNH!f??Gvu}^tLd-Tl=@ow;*1K_uRUYN!ZPTe( zNu-K1Z<2ujxu8WcUxFI-A8A}&IM`<@;KG?SGHq>aTWMSxbyi|@^Kc4%T}`t^9Q`h&Z5 zuoD3SSusXN9iB^MD!%f=IB?0&2eusNW^S#bvs$hXfJX5ewpGefy3!J*C18h|q!gz+ zm8LsC1VlQ$!Xb(Vm8(-o$tw)jKd#TUgTA z>8~<%D$|yzu&k-^v!bdiwU9-d=Rj|^XNXb~9;e7>Se^HkHEH;@DvlW$1?t?6W{Gs3 zIuETNBQkY;eVtc%&>@%DqoXuAvbiJ%$DE8pZ|Xf;Kd1d~prZr@vgKkd?QoT+Tqa{B zie??4Uvl)G-abPKFpp-B9I%*Jpnc#nS3%}w)4Qydql}%#zS}HlBwDD|irM!ujAW8$ zm*h}E67S_dpGzPVlO*gj>ixt~>*tUYMi7YBra+BP@)H^E_hcyQch$e|*6P=pXnA&bi?FLyfVb6qh@wlp-=rOWSeMKK}I^>kWj2z#@tBWdA^tLVATN z{)&`3D$PVC&1R`N{{-*HRusWGYPNz&B`J~f{3J#vKcF=^EJvooUo?VxaeF=!DW@oU z?}+_L_(2wXF3kR4ub6r$s{u=kx1&4lCv%_&a(4Rkf21oE45|Gas5>)#n8OG^8wo#s<0I(8XWqehYy`3LNsIWd54m)xQ*Y4lb929lkiy!c((Y<;6|9RG~xf_7iOIE$2k z{k$Q|d(!~Rkc-Lxh>KQUEN|-}G#ncrDLqdaW(Rnc;Dqgw)6&@JbrX2vQiMu&!))fF zVM8zJvUto30{Y~xy}$@XqrUVO@JNI!$yK|zxEKO z^Y@q{RW>9ij+-5{ewH{AOwoAYFTIOZ@>*6>5Q4G$iW-lUU3VU@XfO5GxSn9L9;?nF z*91=@eUp|`U+|}R8V((RZt*fO0G#ysKS2uBY(0bvvOd?E>`jc$AOAvQ=5v|&agf5J z`c9YHsTD^)d$(`He||ya69iaN7rftW`7KzH)}&590?}?b*7uB^a0z6I{;pj)^eQYY znjN+V$oATPo}Ni57tYT40TbG^bmxAZV%}r;zy4wl(f|#hFS|9h>eR|Z{Ia_Ah$ewL z&MhsToeX_>9%1Ti3qp=dA`3V06TO{#RvsuPQ*^pc_7{GHvZiB84$r^ z_$%g@ERWHYr)*?HA9U#68Y_D@C&oSFDM;lF@@a5aRaKQt`9#?_XTlT3>U}I~jyKRO z?KfYq5AM3#IFu!yRODH$yQvd7oCL|fv6(Yoq^r#pCF0pwWzo*gppjojRW`S!@+{Nj zkXgsOi~UNV90Tu!*IXS$ex0Z+&h5=t?0>Q5%v`0py{YuOIu@%vpLFz8i>D(#@paeM zw*1YGpPE}7F>~otq-pQza*4;H%f?(HBqA)O&V&w3FnlaNZTOJc{WH-}LPhYQmmgD7 z2{Cr23{``K7(uUNXIPTGX=yFt=Gw7JsZ}0KIKVE}?HC`M*s%S{IBvHRSQw^Uh>m)% z?=|nd-dml}(9j{XKrvwWgdA_+c2D~`<9h}lJ9$b^^1a=J&EZYUd!5JDspmbOa!k1& z|DoAyUCJWY`1x9wDM?y7ja*@ZC#| zywl-Ff%k<}U(?Q@MV@=hS-a-gor(LAnKKDg%8TFi~nB-H%SUmUW449*A5#WJv;J{*4MooQe#1xVg zoXl-FBT(Pdpicgnn`>O#*%Qk!fmi5x^{IqK4s0q*2`k}O0#_{TW!A6_&cjYdU_6Gi zO$$9EyPKE~Jimg1wJB2i4U{bbYN!f0XyF5^;+3{~hwdS$k;`Po-Q?5uNrRy0xU7V! zeh4BgAS9yM30N6Oip*tG#eMURghLJJ#{>ss(=P-(Z3jl033+3&L2jC6-) z0l1M;=-#i(RoQ>6CjLl-qRCBB#}$QYUhI!q;*OIfvHQ4y3)p=|$0a_3Ik&(+8N zgNJiHKbl-ijez=Q?l7v*`$lB-hVRQmKt+en^{djJ`0fbPm*!{Y?$5;T4?7AVLUtauY>K7n zF@!6BmS4bp_pA<^ugZryUT#T5Y&6bP5tX2_PzH%RT3cFLA{4WLMFJ8V+$O31=gMDc zAGA9dcn-gRuReJ=z7%-)vE%3AKcs<^|JLs?0psff zFd~0(0^S<6WY-O0{wLX8|Zl4Mkc+1mL&mH?c!ou zFHir+dQGDdrOcET`Mi-lYZA*wN=o}#f!M{T{cB;EoA3R>$?}}jU5&{_%l(R~=&hC5 zxnhS-g_e4SWV_TvZ4O0!02ZO!v18@Fq|(0Mmozu-g6h#>)k5@#Dcu~|tW%aA?CmBO zS9@$^)b2M!X<#qh7zXY$!|CoFn{JRyUEII!2;9-_Ui#N?U)pi|RqSq{$YlEZ15v@^ z<@};-6JD4VFj4mlf_SAz*)t)YEfkY)*f+C~_B!y>kVAFy>t~NZm`zE{WG%togKhZw z+v8ulm$rWVfaYZ_8p4#H930+7(Oi~F2LIkabGl!+KhabTyqnOy!&%$5$@|LF{@$5E z_b<+qNdg9D-3oO7tb|WbQMr+l{MInQ=SJ#;x1InM?MhjI_X&$_1rJ-KNEgU*#BSgrQ6Gv>XTwUNiO~gNH=Hl8yHvl6F{9`gT2$u zhRj;gXfoD-p|B(3e^pB#X@I}K^4DcdFG@oj*Ms)sHig-GOOyN3+yZ`eZa$B<)-Hji zbO9M7B{3hT@C$kRY@z{;zLojCdH{#+-bPeY z{a3Dz?9B8|e_Wt4FR8uVicIn5haa^{%jS^yDdBV*wmOSzYE$xW7kA)^T6Hko9fHBj+RDJXvX0 zneDje;pOF}EwBFc%!~Ak_lReP~^6DH>b}2!mrF#5Rvqj z&^k1B_G~XVQ)FC@6z$#6PNVf0o?X`7nHS7vLor6D{q4zY!4MHvV%ZQ5zLyuZ03d~* zd%6`=l%)nkS;gdb3NwM;98XBl|DiXs_s_Z-oNQ&KElt&5GPy%@kG;_0aSr)IMk$wT z9!ATIH7I1~EZpLreD1ZEALV~~C|Rj4+itu5z3K4z96%PNYOU7H+RgE%hQ+}XBd7cV+9v-Ys#^ zbq{fv*m}13PsaH8GnQ{%O{_90k2jV+0)=}ywfxIva%*%vgh95ZZq=A-8-I=we<=^6 zSx&Cz`>O&9BFApR42?6aZLsa8e%P7^6><39A6H7YCfeYpM>Mp__CE&KuSFq zU~N__wKXjya^J?DrgiQNW~I&NN#CD#Tz=)a`xkij7c7v?|H?!D08k+5n)&D`a`J$?-S}E+O*S}%cYv@iJ0v<|+gzXeii6`EQx=Z@JiIMrZAGUwJ zFsfZzcfVtDcX!>e7qEzbXUjyYL~mZF-*)y=_4#en{c&KM`yu5v)HZT=sEG>xs|mYc zZloN!yg@?g`=>CsWcKp$XjRnLmBut6r3A!C@p@iCPE)*bhr=LbmC5nd@hF_P&F7i~ zK|D>gzZdh;fa-aHmy9Yt1ox?**fme!zU&U6x=Vm*8D<}~mq`wkX} zCJny9ZZ5NH-af{lyxbMc$~Mw>^az2iHEUM>>l=wJv5Q*Cqa6Gf07%#6OyqZK(y2<5 zhQTNGvZxndv5$`>irSi7@deVT(#(?9F6x77kISqJ`zpmedvDUSzMH-~dl|S#b5k04 zIofeBqv|WXSJYwcYQ9?(uw2=3-AChp|57Y0QY1>IrD0%@21n@hS?uUgNN!b<;dlZP zi@e-AM?VhzmQeD^gY*5oLSTSevk72qK)r{`jHox)22&d98{n$c_%W*9!GgpK0m9U( zEp$0}qnjxKcY)W*4_soH!$=^qpgL#g(CZs)DdJ15kP*N+Uop}Q`K%w+HQe2%I2J@r zF;dm3=m|tK&O#z{M@E&FQ~;kP;4z*Jt^wJjl*zN3X0z+7kCLsjefQqYkI~Hg;Cp6J zHQfe?_soqX+$tCT$mz0V;R`R8R5OV8T2O|oh~_YmM#K((ADG;pk(rer{m7WH6FH$| zM=*@i%uShZJ?OWZHnIi6*5tsl=H`BWe)eVRZ#Vd-oV#aYr#56&`G2Ow(l)gj!^DQ0 zYBuJL7m-TpZUcS&6-;|XQKAAJobMuMNkKv3`no>fI5H$%+}=A@$~xAJvQ?UNjJV8Q z-L{mlt<=}NG@)e*pMcB!2K}8PX|`7Iyn$PiuAlS{8p$`OlnSnpiOeAQ-7UPW6ANwU z`T$gFZA-Jz`ztg2Y&RY1C%Oo5@ZsVbpN%(;VBcr3<% zh0`gijX1PF<{|~AhzHhWTE0fgV&p!b>jsPov;Ad3#=gT82wMi+bc8^d6Xb{{W|Iuj z1+p_IRCpa54U>E*3P1*%nAIgE)(ZPyH(K1cu)2TlJFMA@+_JD9=?isN?apjHLz%N& zAh23fX*R{{7#44&qUpFrJ)_|W*w)197H+z2FDz+9Lw+_RiyJlghy}aiXC5x$@;fXtjPgSsu}8ONGVQzWgND$Y8pNH_d=__y6?1Lu99B zDyztLy{-H^lDesk>EjmLVD*No^2#3CgO;SR-xz+?@a~{~zvkyhL=Mw-!Ap~T$kk!_ zIj?dz(iS^GPa=6WHYmWyG^`eGhtXXX;QN=l(&=o-Rgyp_lFwJ<=oCpMt*sgtXNn83 z0%j+Nb@y)0usMFCZtMM8i%8f?QA%>Nk=ZHU-MyR&)V*c6rllM_2%g8cfRQa}?blEebpvaAQyR@q|;~&R9wt&&%`R z_y<6-8rXqp`#E=EZXm7O9x!>nVZL802|pR+Xp`a@>NeP4YE?JDl(DEoPge_`Oe#^1 z8{LQcULS8=Kkm9*JH{1nOkp*+9~WJi)6qH|T5TL%=_=>vWdbLxiHXR~e|ELj?&ApP^iJFm&S z>aRVn%r6uYIiV)2S}_UvTel#Gb3S`Kd2r#{+S(_}>TiQY4FWE~`iAD75H)H8&(2>% zybF8obP<->Q)ZWlV>VcOOVYS|RDkd}ac_)LtWDan+h#X9=)H{OxBYzV^)UpcDR_nK z-7BOT(dp43ha2Vj>WFev6gn)K1T$ow+NsYGne|^~KDKuE7>2CObt|4@gXiHgvG_O9 z{%>U$7dTUSF>iSyGBYw=-6;1AK%mE!WuZGUb?#23{ev8{&G;GciCAV*9OE`uY3<3R zbAS`sxs0!Z$cclJtQ0)57xzyw)FS^(_l#{`SU08DEHrh_HrXo@^d(kl35T+x0fEGr zF<0I+{=dfFI;!daj~*YQpritV!U$;r0qHIQ=^QmuKw@-r`1A3!-Ta*1TlDvBGeWGSBFj1^Unoq>i<&T1=0S85So|z} zAHrukUH4Crdp}EBTT-g~-i-^OS9=ODo$!X2skv^k06;dh%wBkkk1oC!s3E>zEV>)` z3+>%@Gp-sjcz)C(EU4EV>oD7)%T6|&w#)v=P)p1l{!%ENTJd#uGz)$Kl}1`7;<>|q z{io)J*8>AUxjZTv)|8WPcQ@BpUlG>NB>h&MNxB!Or4^^oM!J$_* zq6ywh)gCM2S6E9+ijseuIpS2lc7ZGyE4Kd^aSey?rp77r6-$$-Gv!~mK39N#y3-{Z zY^_e$)+~R8{EaS$S4#|U-xCVk)@X~c70a#RrhfS(E&Dw$%ffC~9 zqGH}oS7&EuH#Y%=D1Y}o$%O$*0Wm>@)ms`v z;UkKHO*teb@!zxpR@dhMY>9$OT=XDYA+tas@xS(BeryM)qmoqdy@WgH{VVc?-}>vv zSHH$)Y#P7lgea69B-=%F@YQPij{f(Dkf*t?a^INdrIC06u>@Mf){AYpdT2A;DC1WI zEw-pQKKnX|+mfUV<5YJpH)P!`*j@1iZt**3n>YCs>Xok5)@DrpwMLFPddnw2D6`<# zRU;~>{Dvm?3%uhu$fjc6fuh$%Lf=o+q@1gp3UiMP`_fKRJqN7F_hnqnK{7rXc@*vc z70M?G_77^iho_kf5e058(v;+_Y}F=L?dWn1N-hn-C|uXPPXvv=_i7HqD6Ze~O7Mx+ z8I}phuRhG~%{0#A%Ar;!mS-xG!0M?>ne8JZA^iR=t=VJEDU7Ykx7fIBQI7)7$DD_) zQJM2PFH)6B;NBDSA&29c>9^0AA5I8E3R(upuL=%LnO|gdtaH!S}p9nO26u~Kk;vd`e>IQ&+4*wht@AH z5l)-y2%Pu$D>4Oc6tOFl3fI0E@bdaFHSAU-1Zb~zP#%ay(&mg_rW=^UuL^bu7uiN9 z(BAj((SV2#vypX6-HEVNJ|Rita+HHQ4m^ZBcdzG4Iw2h3xF3Mz}LH^{C;+~Rztgm)$DfiEc_s+kUGBCygta(07beS zgiA}vmF#V!aV!xW{3b@HJ<4$Lb^mvXmijL`z>|ujv;Dpe#{zILh;gcFrN76fkW+)0 z_!}w7f4~04vZ`z+f;`a|LXlm8=UqFk{!MExS-Wp-Boa}LvI z&nPt7lZH)1QXluOv3KXbF>NJ_V>_^o#t4Nf&p{nqK`veII`}7&ir)OMzuojid>{!M z?r?3B^l4nqK0wXsp`%pn|wZDT;yoIj2WADd9$0OaxfJ(0~Q<=nCMsZ}HZX<^(OnX-`ct{1vU# zM0h?^blXA($5ibEzIC>)){gw9I`MmU-XW5t)77mqcCHkQu}^N^v>yFZZT!&OTFXR# z!Q=k^DILP)Ek&TyF-82yLjZso)HI&yup`6p+W`9HN(_Crl;U^ik#k#y2|T|*_!oz? z;py{M*OWo#aQBx&t&(|!Igwjk3qTcFc@au!kIjZ!_SS|((XL=_&fPGim-;kMb_N0d zO%WTGC*;r3quGwSMAgD)=uyVsx0ssF)uYmiW=p(<>%-<*r@EuG)h`Joew?Q7x%8pULc#5RZ!?{Q;mr|a#`9Urq+zS7A2^yPsygJ`(!`&0f0efBDO+m zHkASeJj-~u+={?mtQ!sR_5HhxbSPmA{yXJhH)iwbbdYN3*=S_xkEPJ{1WuGg?AF<@ zmjq4kzGg@U+SoY;l$rzvBv3kO3e|x>^QL}-Qqw9D{|hHpOuFdDTdvc(_hZJf#)QA7>xNM>$ha6P=79K-f2&kV(AjoO(1Seb9uNHA!1|}%pfR* ztkSh3BrCyr-^FXwiis|1t-XSN(y0@NrkoQ;xSN_vJU{Z+dJ71#HF(w~ zJmuXiwR{<{O1Slu>XGamMl8P93XiUCzQuoApCwIJR^#dRRv}gD30$RhK}Ik{L|dP} z{NwlH#J}wfC2o_J{T&s zs)%kos-}AUdN?l=X5W~bYwLX(w9xdaki388F`jL|ex>_JZV3qf$$FG`qIyD7{X1~U z{L?o_35laL&k?^;4K0{H0FYBYP}%nPms~VsCz!AP-&IdR3Z*EifTIvH0-tF!y%SN2 z{74C_b%GQdE8#CX?Y4Cd!9%Av8%P><1)rJgMHqi|H#kuA>=I3xuJ5pY^!3B+PDjwb zFfriBh!=PX<5^gnC#9Ea9=cX%Lf_Dpq8jV#XL?WP2S+ne90cQ>4?-<&cF!TmR(iEO z>Z6y>2hP_G3xe(B%R#x+ru-s8Z+ZDrxl+x0#{=2k@9oplp)$`ZJGZ=MwCDjLn!U&9 zoPb3Cqz0cux|hHIcfZskCn?DY4;Qb%?Ljw>8Z7klS@i4yFBmO;rv!_FC9G5%1$|;q zRDNGzs~ydqS?}Muwoh8%G2g#%r~RKvskmB1e+Lc-53n+EjJ`;MDV2kn!VKek!#*>h zZ)kLrlBx~L1*p$`RNE?vyz%zZcQBb~sg7NJ06b*Wa+}wze3G?%Sa;^Sl*-0s`Rxxx zMPOuPah5`1gH$vO+h}8NTW?;QOi|nBaYvKqKt@Ek1slBLzXFDN4d-dJ&;k z{vta=+2&-`mkt%82|`RXh5qPX{V8Tzr060>6RL&Kxi}6e?#^@)0wQp+AeVhf>TO_r zS^s^NvjiL9a9SG!Ke@VA>To#nNIKN{QRK5pz}CSntLJ73A4Ng9QpNnfR17e5u_*B8 z6n_U|7{n~$YsvB=KDAPa46vfx5@mb41GG2jZ-0)GnZsCIw%yI`cv5<#Lk)PYf?9ky zJcrMIp(*FVvm|*GM`Ho2oHoXe%Et+C*75AL;}9K zBQO^Xj+Jv)krCRl*6G%v*;-u-BHFPSyd~l57Vdq*rxtj$ z5(@ALOZ1kaR?v>8ljNh0-7)kGwtDnvCu%k7HFT`Gio8tlB^HIpqjhO!*X$|+pH4YJ zFkx-B73qM>2y2@0)Dl#%q(ZWU@6De?EoT2UX>NhamqdW}$R`_vd#m*wcFgLWFU$T> zEk~Y<@*blZ%=dz*SZU_ohWODAPN>Dj1?>rD(?L2KhkgSsTLUUqA6@JM)@CcwM{2-E za$4`RYx3^@8gHnc3`@N_UzdFxiVs)`%Nr?`0aZ*V;c&bx_}|!UM*;VLtMp4_BOg4L zkbITIiRIO1%;p<&B2k5Nz#xdAo>vdt#snk)z^4j%7 z=A&e{ZA!ojsR*~e(&U((fVEw8QCQ8X(ffJ6+29+@XkjQ@B{J%>XHF-&>ayuFF0bG5 z2`VJGw7fft<-I^0fI-=ZD!= z53|kwW8cNd{I&}Z2v8(!YjzLgP$*AyJ*XEz8-cx^Pf?~3q4*zAhiFMcuSJ$f0zMy^2M zoUwUtPxT}ZiS#9H|Ago%?FxKgt4uE5Yui#DEq&Q<6_%SgYWj*D(z(}458eI ze?cM{C*c!CcsEHV#kEzmlbLVU4a#$=7vseW=gB03&i-JJ`MUk|@A0~R({0)a{>}N^v|($qol=#2AXg1n6#Z!cP?AEg=5>c zZDYl@ZQHhObH}#rWW`>wZ993toF8$j?q*f1c{SUpf!-gI9`lgJsD(-yj9{&!uj8~! zvbAzvIu=i6G&$|?p&shr?BuR7pgkBANz1h)pK{nfKSxeS^%XCMR1K)vn$NF8_65*Uoqk z)zl_ooK5Sx2C8grRSdz~CAg@Yo;b2QXw+tmlEWlFdrJ|p*-CYHX{dpS&L9S8bNG-+ zI2xn)oSpQg`-KQM_10^I6Z`(Lm7L93MTBDyFC;pB^~e}pLXb3RZaD{-embeY!I?aQ zeoRrggZ$L(QCT(%5)d+9aP>;jEc<5U6oyzj?%JoF`q%GFNaNlvU)+9mm#m!q&Y)y@ z=R~a&U%P3ljXN=?gA!@RIv+JT8G5VMmt)zbW_G$%2|v@hSQ1B?+=pFqnkd+&STrdG z)^MpB7UFs_2yuGrEUY%O7L(cYatH_z@JyNy)b%94?Q4cdhdHf8G#g7gy|oR}zgnHW zDC}Nmf@+UePrTZq4{Huz^XXw>w~SWIa6f?W?CNKKmJ8r~c?Hn=6|mW=C>fYH%<)Je z?zQD)!jgP$$U)WP;G({Azai3Uwk^46XsD=EKHz25(u=9EX+s|??IXtGLxfe`rW@}H zOcS(ZmKzAfhnk-n^EXR6btP9E`_2#`ROL#Hx9exbXt+d;=piOcv!;mg$2eU&UgVYo zJBCm~Y?UxKXrVLW;^q(~pAUoGCh2=hju0?Tof;;%-~TUKylw-+&1?5YJlqk zd9i(j3=foS{KOINV-S)NKNwd$McCU;Il;;;W--V>eHy0|*$9?Bc4?x$Png>Q!i>5Z?? zt}JFW1nipl;ynq?3^gw$WyDM$6HDe-_v`X9TBHM|Ega-eV%djKH=!On6pQyGoP-d| zUd47952g>pW)He5*kGoR%Y@e<(}$Ug9hCS48@09(_MlqN{bP3G*0Uo)w;I+7o;k|Q3l_bUKW)8+5e&iDCuo>v;N`iJW!l>wyy##R*T{(!BWx2m5V8U{nA`9Eo{xX-nL z6US{s>^@+=uPIrk9p}@_f!mv@#3IoQaE&-dG=e-x{UQ|U8IwpaC-o-t{`C*dK5PK4ssyZ52i5x$T*A%d~na21`$1P=>@?Jwu_+&E44tAYM%E(pArYkB9OOe^hvF z5ekg8-pNBCfB%%saEIG)wUrmmYvqtW7BwIbpuQErJ$@YX@CnXw=|lZT-}z{bA^sp> zDUCjSYO#I0w}>Bo^vG;pd!86F)&q$%Z%{pM%V2C(O>lD*ep`Q%(H1S5%MUdmU?BWpv*e$N7)w>N znM;vY5C$7o6!tGCgCXR=(E9j{XRLce%g4)Jc)aZ_t*zjOn#Q=%^XM)%o?nW~eJgyHc<1^+Ppz`mjV=vT z4e5n85%$5{Xye{DpvK#PzG3)71uRn6-1DA-qApgP7$xCmE)H-AUu0xa?jWVNz1lGp z8ZmL*d~Nwsz#4Yl1qZ=YOUmBOK1ZrK8_>U&^!XNLj9i8!3Yc?m?VmASODBqzbV`?M zc_fMTp&JVy#cLC1=$CG*^e~qo_Bb)qKj&tHC0DeMf`cDtit}?o{ZU`4w~SjJyDw97 zMn*=88m|+g)@u&M82ucxnAmMn)CTetFB;3eVb|&_u}2z%9JFPMFTZM5{o3Eu$NchX zGPoJ}dxYf*AgZ%FW1y;!ZRuakV>S=*$y|!ks}*)7K&vxKfD}?$B{pS_fiDY^N}jN- zNe;MPHV+X%mKWPCx{Rfwa=p8TBCaHnzpPjKGLK~}e&EkTh0GDRnNWn|&9>wkB6h8k zFeFZXpiZsy+GkO1+54h0**WkV@F}4TE-Q3qvC4!&X;(BAD8)-t?s|N#aOr%m9f9Kx z*(o`BdR)J)bUDh`ay#}JVBU2@aAhy`l+@c2#08BaGz|<#m4$j6ftF8|7nGB$iju4V z|3y4z*(Wv4DGij{=--wbw9+R4Zcrs=O`=L>lUW_C!H|pY?Yr_ktn8>rT3Y8ihD)+i z#Qc;PZMR>PjU4QUw1|(8-c;TMknz&L4<&kcscFeMQrl!u!>8^u*>$kwp=*0=kq^AA z&ucum``Ft`_Hpo}#1;SB-<-A!_Gll&?Ca+JwO{50 z=#i*7ta#VsbF_kMzb-bZ&5uP>N=G*i9XW1GaRcmvpVb%cKhgA?VW++F73JdlV53^JyidaZbNw~A0c>I1x`*F%pOhXFHXglJ|FfG(OYM2{5|U0a)F<- zJ#%DdA5+qf4qAiaSU}{?-lTAzDIjBhTPMaO4`<@>+g^(y>Sg`kT)jAp+Szt-5%gc5ruP z$p7@drePkKtBsKe3&ds@wrqlhjIG3yY&jN$9VQ4j$JR#XCt+c zSA!jvY#B~;i;j$nxs%lyZ7T$coi=u1Ny%=w{Uc))^FDXOJ6qgtVNaHR)RM8j$M=Rs zh8X_}bT1Gv!npOu?uSdr+l5T0PnTQwDQ3EyFAZIMBAOJgh^_nLi#pAy9UxGek#+9P zDsVT3w^bQ{WbI^~b#Go`54j-OPQRLpWHI-S$={;Pr8@LqG6&`_to^4&hGTY`z+PFq zKTSy8$lk&Ii)Qrq;4Hd8^<W@?88`jtk3Vs4Q>J7_ z5!LwwrxgA0m>KOv&55|zY$7gBih{nI+xK|}yG>KsHN?OlOYQiNTz}y(L@%uN=bGzQ zyU*A>jPh-u_5d-72bpQd(DU`)?JS&wby7)kzJGMpMb}zvp`uZ^;IOc$mdp()xTh8p`*YK8`i&KjB_D;zD?4Meb-HTaXCVxi)vYE|YzV;l+U-dP}ET z0cfEPHMci?mnJswHmKGU?X_&oDuis;D*03Px@smTt^ozw2_X_ z5_)!aHj`}yZ?MXUYqQmfZQciaW)J#jmpT#L@!!Q9_m z`0(v{43q-C=8hCdEL01355_|_gJPl?=bwV9a>nv$W%*c~Wd=pX`w+$4zwpW+-ro6~ z4r5?sd0}$={-H5@^C0P=$PT#%lmVs6_YR#?J$+9oo8<`OU0bmILDWXXw;NslKi8-z z%J7e;7?>~->$`tYQi~`z59?h3xM8uJ3r%I`;QdeTO4~F}H zT&#IkOx}H&_XXp@0e*gO;X0*N-*@Cd4G)7yPGr<)pK=z1@2`aQ|!lqp&Rg zFF)SGML@7}(YP>rJgXT_1g%thnHNLcq%X!zi6zr_>u znJ?AI$A9c+>_GYmA-wSH=;T&brQn=ULL%d6e@+$*ngsXz_y!KOix+{=61qZ9I?88e zdtw_455J~)d2b2W%Qprvxj5{x7~Z;_G^y10JDQbN|H^jKHyDpq_Wu z2@Gzfr>FNxg{hlwsQQf?U|V=L)sFvM$u$8zJIb^V4RNVIyot0kQ;|Kii9L*%+B4fm zxoogo`Rv*+{?|Vj$D8LDB1i;5F$V=6klDhhBI=IGztm=iDSc+d#6bJjd9Gf6e{{mYUF3Hug6x^U}0&L5-U0Us<*PSIN4;l@MIK%rW=bol`@ zHLG+Rs5S5kIOhZW6v4`QZ!p*%kH@qF? z16X9Tm}_#=Fx#-9KXANF5CWel1|?X)bSEaFoHk`E)Wyfa!y&moxNo@TLyqf?d40fIF5HEWyxavs`CO|H~liP z$=2@Jb}tga5dsMAzqW~aWq5o>O`hRF@*Wlf^#y;$shKbUZ$GU%3?C=_YgHx^`bQ&J zLg&L0y~iHOU2e54cS>wGAx0M`vHr4u)GtH&C{)JK$d40mb8~3ul!gFx47r}IspxA& z0Vm!UYW$y@@&mq&=+`twX(RYc-F1^DKllzb8XoH|0%2G5M?sg17s|I8Doa#ie7 z=8U3pupM*BVxV!^8*=g67QzzzScBY^i`t~VbjKplt7l+XS5#c$I#o;IR5a2AVmSD6 zwv_93&%MP?)KXnvW>I<{zvWyphhIY(PBJF-OqImSOADQAfnkD)xv2?DS^t8kD6P7| zfV;`LEm1fa%S}at6@b%$Tl@8V*717_2nX~z`hA;{PbrURJ@7`s|0myg8iB~QQh?g4 z0ivCvzwzd`_4RmKEm}L_X4(neX{`n$!7JXWMZ#5>eDXFAY8eAY$iP0Jh;+SdJBx;H z%cdHvpvcL^z^#^{ehuBu`Dfst2JpF!T=>F^{q0U~wTr&Ay0JOsi2XW^-i*103)7$I z2s)Vh^7)db3ki^*%TWp~bU0!>SoKqRTzq^z2VKsGyXTt9+B|18ra=+NmdgGMs3K6? zDYjYcXdA^pk;6Q??J~6Cw&5TRYWODSD82!Gob-jWQIiwLxdO!{gTf4CXN4a9rBvWE zfQRafH>~Q3huGZ*iN`0v_t0`}lU$0tifyDpK<|9mH}F8u$dAczCyE3{0?gxU0L2SE z!B`d94bPa2s-8}_o7Z;1(U(e3*zR8Ol1fibi582rRFUJ=tRSNhX1Q9`GhP4*#XCZiY|B=8pcwp4MBn zLjVP&-~v{uxC^D=2P0|@*H{_LvF6IZ@Xz>o42(cB(c}nsZ1a3x@nbH_nlrO0*2Rb;?aGtXm}hH44NM=B1~FP3Y|(;p&r|w zD<+?eWjLF|Swm_Mo3ZsOs$AUM<8UjQ)GMQ%HMV3v1A(KMRR6$nqZIy2;fWRWVNnp~?8S6j>WFs=Lg5Cm(_7@tRvake1sM%m`q` zmlpjzrTU1Z!$2<6lRj)7;skOFIp}S_hBIAm+^Ez<0zRI#kST1y8paV}Ua#ibjrD5M zjrP#zV3un0D~a{*?{1jaAKj44(bka`sKn@3AQ$pq?nA8_|Fx)Fxs($_n?Elmo-pss zY4EL{EVNq_hBjXZ^jT@!9;d}i@cnSoR5rcs?C5tD3w$nRfp<;y?;dsT;sTdMzqjK= z>y~T-xK#a?sO?__cCRmedeSWAGYq`_{Vqw!t^%j$#n}kH*p{1F2a<;VC@l&6&6VHw z4aOEew=O3jc=je+J9-x26VTU`r0U{Tkg>vW*xy^*$z~w)SA4o|su_sBE&yR)oqoEy zij6g>M6f#DzK;0(jF*=WesS^g9yS*Fphgrp_^O>Fu|P7Dp~GkrIg5dXby(_6e20uk zB_3YN3bdJY{X(a(g~roui;cdZAeWPsRirw4DBTY8;Oguko9Q`>8E0_G@K9F-_kp|D z(b}2XsAX?=(;_(2>y19oEC_T;4oo8U*RSM+(cucfY@QIaFeXUCatSlre~|)m=4uE0 zT6ycU><$SMTmumtNE z{u8j0^aF?3T!uP2{=gZI#5nEg@4u>4uzy~_`H{i;&TpXb4P?Bz`2Z~U?dKq|t-5z} zlb(KaV_Nj)fuYl!yivNewp1+<#U<}g^vjTv<9WVYg};5GyRH8&>&Q>e-&r8e`8wO3 z*G%%zvR5)A-~2NOX0Z3#fC9UZ$S1iZ78rT<%DKAJ#vm`0_=Sqf$}pnb@2;KKa2a?> z)i3>Sj@E5Y`gc+6EwmfU!C&6&(xppxx~q8p>&IWq!jgm_eMUgj4vT<5-8g;tQAOyb zW^vU&+LP;0asVH9K!TEb(4I9Ppv>fwSx`_=7k^?>K>;pgs%J-U@WF}nPim}_fn4@l z=LGZLQ!I5)dWitIFouBG)4mbzDvgA=)6Xaq`kTUZ80syo1X*T{r}K?tM1H#Tvk7t% zw4`zBvCEOuX9UKbOK`+ak~${n9BTwA#D-nUie`q6V5#5rb-Q#5I$%QKdu!J4xtXi| zXY>_9qQf}VS5q@HsFof^**q>sfmZmD#Ms@*NlClJ(tGY>Y*p{*gFh!flMIq!rS4yH z-q*F;a+mt_IKvbTp@s%7uGrdIfUm^<-;f+AFyZj_TZ=4~;4XWQg@Vl1y2FK$>;kXB zg26atM8YczASk79@ffq;UOvv`MB3P3tD}rc4pO?|KcI-i=}RT-}U(g{L{P zhocHZSOai*Igu$4zfaMk$O%+RX}Vq22PllHe<+g?uggSii2q)v z5?(+TPWpm5x~h*W*BTsJ^mTJCK3Ap5c93nQwAnG&ri9>f^szu4*qR16%g;jWn=gX= zy=^hwvvd1btN#~azzFbCEhaCx2|BJS>EFHnL4akoL8_A}_`V&X2cx1B`R)za@A39$NLyL zHM5CR{`?AfKlb~*7xZP%LBL^8-z zTSrHG(y8R=K5Ti<9+y>xah7rHr4EvB1~K|6i4nm5BR>KvoBEVl2h;{*rD%g* z7~dLv9JA#16w@W&3DVA3&nP7&&om?W5NJFs26I1_TqhhQvq&NKCnppC)vhvpc7;%| z>BSGHMcnY~Bb51*`TEhxGMY*&&4HJP zm$bUN4e1haQ*_Agnv^FRLXLab#B}=is{|{Iq^L$>-_ug9ic2^hjGtYdp3T#dPSkF_NV}t9bYCX?8bMw6}$$3O`;=o55fm(tXS1&_wJ%9Ka#g zI%ILBT}|_XomXVOBN?J*vp9mio+g9H51%ETO0;L9eP%s?CrKg!w6&>e@mXVp(X_T# zi15DvFDLBP!M*VT7?qHXr(@FV6hfJw_&mJ2%PaMLc10QL#vf(6FJa`*9*r6}6Qe)v z!_S>mprzC6K{Y{NSb4gN-mA49d@JQ22%A<@>r$K$4;4pP{r9wH>9-ypLWhi}3p;3U zTY^W}8jST>D1?ZQT@o_`l#wjGq7PKsgb$_uGSu*HzO{PF&~(ex>5hG0kL8lZcX_z# zBN_eC`rj2^gOrC zNGjlcnWRy_;USjq#qP#Egbi*GUH~~nCr}Op-_|ZpLt~e75bnfDH3Z~wH*LS8qhlI3 zTsIX>6B`0dtz+a_6QcDv7arBkTYHRFTg_WePjem$V7BM2F_BtL0p#EN-*Uzjf#2%A zeH7V!qsaHgYl6o|t^y&bmDN7#i_@m}&1hHY_;T>`W5<)sMaDL$WbK2gJ7{U&Nc}ch z7{ThQUQWJ^#vImsAkgqPm6v8;jQGDUZ-~n#cW9XU7MB8Tn}m+YCyEt_BxJGfUU$Am zP@~u%?o&yPjCXJ@(HIA#)Qz-S^5oJn8l3X#k)oi?=4`N#t*AfM0(HO#d&y8ka_=<$ zDsJ&;%!a!5_V$W6`_%zDDJVT>+JfPKnH0yMlu--j#e-l%<5r|#GHhYi}cg>iD3ovPSoW~yu$d!xHpG+Y4x-xu-rs(*C z4fS*mb-9(kS#aeCJFeyWo}%O~Py>#o)&*)pBVr#6TaSr)X?4n_|JFz`c;|lL>YJCh zCY0`;Nf^HCu-{}1)7k9DBco^naZ&Y<@-FOT$Wb`&nge+RUfGo~^CBDS-hOoUQ-3aD zdV?k5oH0j8<$))s`wEyQ=rCX>?CiZq29pSzY^uN+B-hmdc5}DtWw){O{nbL5cmG9> zfcG#$3K`oCDdO}?4&yVaLdXqU`SMcunu~BG%CUUbMIZ|E(&?f$`{|*QnHB*l8&={e z_b{E{+B*0)l@^1Pqp7AJNUHd5Kf;KvSU)3gZNmR$#a{J5%A7MH3{+joaWpX*s)SPy z0yLvXnG`+m6{%auOFJnz{L}}G0mW}9mBZ;w`{mr<1^t!YG=bVuzTj5qyD|Th`{tPE z0}34lQr{BLb6y@I<#r7rMaud zGBPZeng1kwhT+#?`#f^cGM`pvVkclJXtZEUL8ZJmH$|oohOZoPTw2#qVZf*l?cSHD zeOiy5%?$pbmqLyH&;auz0BBm}md`Pc8LU))8jo}#IcRYT$B5TaJ{d#;{yQanD6e0H zK($C#-SchM4HDeX(uULK&EI1(qYdgM{uX_o!&4NBT1YK8zu6j7z950}Yg4N|V(!Kf zVK|AyZt>7UoGlQ$H(b`JXQ;Bhhuqol_iUu}0V!sn?LSq7%_2yXk3@I_+eOOCxmx9O=gIzqL5BXNDK2eC z0r>p1q;$&hY41LH5yi0);l?mrfM5j5a=WBY_!C~Z2vpojXr%bc=!IT*I}J(=6~AMON-s1bT_W32{bEsz7l zv7^UwUKnhb@<>y{=yF2zK)mEify}vpP zlYE>d;FI);WgYERdPW+)Vu^I&n9asBG!uv5M3p7Hf7S9W!yZ;_lPg*&A1j(Eo>cC0 z_3k6bYXvXo%)4ktfFC5MKTZ_sB^5r~iRrb542jYm0iYFVss*8qfTA&;#?!w&)@NkP zY|}J3k;C6i2cTO0?2s7y7xq(!tOmSIM8L1EaT>u_xHXRK`D9b^N*ppul~%mC5k}mh zZN)(4-l3F7LKV~1Y&ax67h2;NS{j&pf_CMvlu~9|aZh-5iDwxw8bN?bt%0k^nD}6r z7KkUVz32uhhp|x1EaLXrR$j!$nOu%w56`LmN4*3hVBK;@kc;g~!s3BEh-NUwtiiDc zJAO8Ca8yU%Rj!=`j-cw}(kiIC(wtu5UkOUdZP*E?C7(-1CNB&HfEGQoAs^f7E^!Kc zc-$%yZJ4L#9mOw;>R(tzqy4r#V@kQxouXEiPWf7BcP%{Y{-eqhWCh<8it{)bSo-3~WSwGXZVI^jzTbVF#3!vH!IS76z|VhNBS+ z`m4*p#5vu?ff$hjK|JT`X5E9i8miW*KY zcEJb!YOf_3WPhX~^wE{<9`oc|B677+ArJ6~B>avlScFYu8601^S^gXgtA#qukNF)C zQemWCr$auphcdA8=e+&b)rVAq8Jo$04}!RNr?Ciwv)-#Hx&5R+#+WO)c^StnUx2}3 z{pI7d2uP9BgVoPw!xDhU-`hS0l-YqrfTLv_XG*1k>^TPc_Bp^*SkQ_&=2dcNu=$1@sl$+!KbXLm4 zVX^qL3e%#EGLFqYKCxCe2d39SX~}=M)hR#A$UsY@f>c61jBX_4s7qA^)ZgB#sk^jM2v_~><~eb1 z56Q4WsLnW#PA|%Nk1g`Z=N`!niQV;ZTj*3AMlmvlf=EDVMo&7zANxH3yVp8^e;RbufCBvl z1czX!J0R6_`3N~UydQvovif`?V@C7aR{)Tr3@8{H5D*X)&|xgN)Lg%L_R#vWf3!W z(&VtEwA3~vRjx-Uyog5^n5M!BXkj_xBtJe9KXy0^foNiLU!-(uYiaX3c0MEnkTYN( zJ~MKXa<39-;xT%Tg8N}6mP?K&LhY{NCf2al&fzoHxF@){umf%J@M`c}O{Zo5aEMc2 zh+|NAn`1DjQ!uETH}&Ik6S5pJCiMQtoDm$kw(FEgtM9BLA)&({E{=(b34w_Lf$M`R zPDDvbNs7u!%F4=L0?`|i(^}j|+uI5{x*PnZfrm^A3F^bDBf*Mm(`4}Pg9w*WLf_fh zv`KJ%_tVVmbC<{_qW=^jSxj8RPe+^x6!p*`3J(59$K=w~;ay@04jwCxF0LlF1|Oe@ zXV2imR?ZI34o}wZ2lSyo20)6nsBLu)=-Ug%L;Kkbi*? zFPcrPQ~Xk+l3+DC?2mt{J`!x(o>;jOobXTkk{f$P#78Wt*ByEh|A^;!k>=n?_YKG~ za|Wc5vKZ|PnxkW(g0_5XmWLG5@q1& z%E|`7JhW#6P((Jy=BL-L8I2oQT$r1GxW@{te{A3;U|5ztmH`IQ52sxL(I%DyX0|2{ zrMD9n=A{nCBbGLHL&I-~r@ybh_8g$JHMTTHu)%^H8-3Bf3bw0gXUhz23@Ytz4E&;) z5f2QRSXqyZ%{cdb>mA^VIE^h#iY$&z&HjT73JibBwY|DR!Yn85?)xE>16aKGhha1_ zJASn4{}6240W8i0{{rY+YI?Cv>zCTU1Vz8ZG6O{Xm|Oy7IXL?QvhM?~grmjX0axGk zATrH@?&LatK9I!*Ht`u>{l6Z~{m}kaKbqaT9}xX7tO6l|6lKJShk{;!=IN^d40{RwwfIl+&;@s_D)%awuN|z5vbz))_iba0AyxlDgVEECf`~c9Y0SHR~ zRLX4}E?=#)fXQ#lmHO>h2i`!Eqe8=x@!7Glp|Rn&`kMf?iL6c>t*WR@q1CWqLTq3b zR)F4fy;uOX8bIRRhhwiG?E+BtwQ2c%UiZ^Z3VOIZ2bXvVa~M#d@naqSz1zN<`2TkU zrjU*Tz90*eT7OSAEVrNm82=><5D*dTTOkoVkgqo^(Ayg*Q2Sistsl@p6f_XmJSb2{ zG7u17j^?%iGY}925oIYE%mSaFppTbNL2f<)0sb{1-qp>uoxNSHgKbS+Eq#5>G$Y-# zA3%Vcot>GRTY#DQcNCS2?a9vZ?y}th)S&<6<@x#P#ogV_&DFiFrH!M#WqEaFWqDQo z-?FNjhK9PDnyPxbhH7ehT3Tv41_nAh8pa7G+R^dp>B;f&(TVx#k*S%5g}IrTsd-sx zd3jlBX-OGHd5N!-y!^+*v5T_u!RZ`yRMb5*wA1~4qmvVJW8(rdv(mysl9Cc~Qqn#$ zveEwjUPFT-6Bij98y6WF6&Dv16%`TFydcrQ-0tqbxw-Lw|2D_R83%U9=Qz3e*pTq> zFi??Epb=o;5ugyB5MexJUK#ipSeQ>`OpRSdg;fnL75_*Y+KU)jJB?)oFISXc`AZEJ zsx~MH2YU4MH^f>h`DjU5h?$$odwZ#CTbcWc8|!Kd+gkg&I@>C0ItssMG+a@kYCIxJ zCvRVZ=2iRQ)An9Z@!Q30*TU+>HQUJ(*VR7i(eLu+obqIwZwiWea?G@7Ag*ZmRabv$ z>ujiK?P%z&DJ#$G=I&~y>KG)dWE807(;D8AHI6?T&qQ;!Q$OO8t?q-WI~`$&8mdn~!?9IDz3o61~Unmqru!8~1z zY^0=>w6&$gmDQweoj{g+3{CZ8W~H^ivue zoB4k)0fC*}-QC~9zJY;(zJC61p*AlsFEHvzuc)3N3pT7Z*FcF7#Mzq*c==j6ciNR-rm;M z*3Qn(C@3hw!NIw?xqpZff1gH2N2jKyMn*#Y2AbdRqoboEBO?O?17l!d;NalEz`(FP z(oQ-g0s&D476->3JOVZ$6nn%2uW;$ZP)LHM>tH1|7(k?}n!h-NXm2=?F`qP{nv08Ol8@W|4p{-~-wV0<7`DmyfgM;fKzLLIGU`_>nT9pxd zrr<Q+M2tv{ZjD5g4L%iG(ssuYDj4H#FAWsEqu7f>8IcdL=*n@TD~_bgkHo?Vb(K( z@OKr#(6=z@jrWz~QgdrVX=#{_%p}#9z2|{>bwhEQA`CoyoWPsZA|2Yq>_&FKI-qwR z9pT%1dZ|#vBvYJNG_PN*UGF1Cal*}OIcX9Y~6?TdS!kP#@k@QnfQ93mIqf-46p{CfD( zu0*=zGp>ZYj5H5PPecvJ42WvW!g3ND7EiLYZ%8t=mqr7cUnc}(=GfPGm28+XB^wvN zOGM(DZkP`i97As*zUCPA*ol>}nwh4jvH1*#14@N3u3O@Lf8>y=OEQ-0Gv)GWUF;vV zgb@FZ#Ufke_vfwQ`xw$`@Kfdf6xi{S*St>WvcBp&hl@QtCMdRu3lv8$xD3W`$2Q(rPGYF%~j zujCqkB%Y2oflf;Teidub93-|Z*KjRJXL!rf;RwK{}PdIsY zx1D~8B{z{bG8O?yk+Osvd_+|Gpm+3A1g4um4d#M}UD0q8dJdp?%0Yuk0-HbBhC;wz zv~cx38gWwvx8R~jmrUxqP|lni5w?|wO_e=VzSdC_o-9qUo%K0BPbXxCmD9*T0=Rm3 zx`GR$$Ly0pDTxHJ$CwPRV$oCM=KM+`z)bV4r&*7JoMD1{k&`B`T0li^g)iA!y4Mq$ z+x3P(tq*HlXd`Q}xT!@C(mgenw4?6jDddg8k|5CQsv%xbS=kdQtV2zfj^o7oy@yLw z1-H$%&X8#06Ga8=VPJtrANG8Hco?DuO!WqjeXQKYAh!`sHyELH)I>3pDmhtNri}|C zbZ96tDBK4?yk=uL8x&y6xy^yq{OLV7pF({OJ^OO=5Xem!=)W~8VI;PWN@|9NSY$V= z%2aS1Tj_x@DH+*ZF)`MVOnkC+=@XWu(?~xVW`EhBkQ1SnDyZdma25wlcZk34$7y?h zU7mw|3R$UW{;=H*QVldeCR`STsV8hgABOKvXq1$3$md!Su3BXZJnQ@DZBo%NO_`30XM@d5i#6_niu9+rt#wL!i5= zqdT!cvZP5ppYqxe8hYkCl6V0NaL5%TJ@bFy*o{<)S30Yv(kI`*^)NS?V3`BMLg&wr zH9zsP8drUY9MNlBE|#Z*-2)EgleNwDjO(FgOdnuu2Er5~;Wa&dLVN@d2@Z)p2l3-V zI6zO>Bq6k-^vKWT++;8a zs@_0@t4$&tzsjC|dv55QzJsSyjbfq_Fn!qE-bCnG`&rr96Ou>9aL{N7nExVoKHg1P zS>I5EAeNHap42{2rvI|ApKQz})oo+uAAxDTeZ>)2C5lmEOB2C}HnU%bQR;~o`@vUT zx1h+!%&Hsyp~QPNg!+>vVa5+j;f5;S7u?cMV=f2565^*X;$NphVWyH*tXFd+l8p^p z1mV!rfkL&~Us;rK2pNJEi`L+T@vb?J*3gbzgJ&!xlt;;wAhs;D)wx^^rTUHK!8%BT zRv~W1VAr6%yq5tIk$?d&sha9BT~}dY7rsD*6RIIEUj8~E5cjYK zfs!b|IFxFTLhzRYTG+1z=Q%*_2B5Y>@m$JOU*UTR$qwyBUPLce%DDz}-%t^Tg9Wpc zjP>wq!t21iG-IFxZO1e;OZtMgls3Yy*0&UvCUAL)_ z$#`g&EvI&+=JmjO+*(?@j}l}2AH{%R576Y}8GC9&hgO|VWV>eZWvuoY2Ap*|?2Pp5 zYrt%Be!$*sX}^VuH9WILK~p}%32@^JvL)?$=kupW&^9!0|FmW&GPolX zLq)~1hy(10wFb!6aAO4M)w}8XiO;(%+EckOFw*On{g#2AF>^Y<;oU{N0waAI$^GLt zoeQ6NX*0P>je-u8C~?hxK$jXA&`aU6;sy|t>{{y!*j*qm;Tdjj1`S@n?ZE2|g>(-8 zi9Ws<`N0-K?UIBw7@VHN!QE8HPNBE4i#$w>`h`aR8B)LPFlb^Y$ObaddB;91?X+TB zdcU`lf06VaTx_fnl{g?|h_VrZ%d&naZ^V$<1wHA1_N{-MY%om7{O&ib!d0 z(EUHOmTQ-FZ8+=jU~aKq_qJeg&kr{9ea_^uJ*auSV~>tUj+;ZfUvMNj2oBehlStIy zj9yXibeE(;&+GN|XLOwraQZCEeRHzI+0pR*LX^`nC=ee-bn5;Sk_N};H0d+&Rh!44 zZeu)RcXH~&LBYaN?Lu#Oh$VQ|<WQ79;65T zv=sg-5&!?+wL7IEpdpVy!NJ)!v+++2W5G`(wSYAT5ADf)3rKoDs^3ghf+O99GG8@o&aj)NqV&-{8Ev*v~9@1YMFoY7z6T z(}qZ|l3&qb4v2wPt5z4zTUuKYiiQFRl{zmAdl^U99x zQx%Fqo*h{vbhY6Klp^aHT3x@O-Ee6!G<6nC#Qflya^t%AMlXts)KE`2u-M}YdGq#! zH?^UtlmWK1y=Aca2=iFwIaDNyf<*tiu#(>enXVx&Lt46?eYm34wy{|5-WX%bK%eoS z>Hocu%poQm5s*u8*!^udwJ=eUB-^W4np)+Z*8NcBwYRp4VT!_fVI9{D<$EP;kL%;7 zv%!g!{VnsDt5&;;3U=8V1r=;`IsMCT8gT7h;Q2V%!azc~s!S%=A@kF` ztGe&ucwnd@l@0Wtw6b(mBA>gyt?m|u^=AEq`F`&KOtGc+A;qp)i>*42e3F9wEhbgrK738(;QEy<{rdx-6HQr(jQ=|> zdY*Id8tYx|nuA~Kz)9bh^ivJY&z1|EX`&8vI>v*fd0WVxaf8dWGlmH{Dr7{?mSU`}=(`GvfmJK#`meN(~x>aLu za^=>Qj3rEr0X}B=zupf`AYpYi3`Yx}Rd`IA zcjonKg=_pBwDo?&eLk6xrG1!nc^HVnt`*B({NV0_-8A}UP!i}pmo63-09)s_w_ZOZ zNrAUOVbx|w6p85Zr*z-|=O>eUYX>?vf&NHSgcJhS(g(~Iwx0E4%9R=xG|9U{Qn0r7 z89O`Aegva0F1S?pf!yzVpJ3io+^L8Lg#@dzE%>LxJA-^sdP4(Rv)Ka8@i$4Ygu^_S zL?7vhn16#n0E}93QOH^l*A$4w_Z!V$8bF?UE>|a)2iC!Q4iKm#cfD<)NQBj(HKf@H z;;iE62~8$}tSnt6*C^Ng;k15Ow+H!WHA4+X$EMuTo822P8K`Vf7t z?{jY}LO5s~^+X4T!|wEK$mvtDB8_*;%`(5}8rpaF5HTy1G*H@L>Dr)@E1h;cCDh`Oy9!t{tkv`y@p^ApQkRzof z6zq%9XpCTx|It43J_O{xqO3ChVG`%-whr0k_bjdgiMksriZZQy{Pg}DiI!QbBuw}s zd*KV2tzf_x*xy`yo+EjX-oxmWnr>&jBWH3(39~;!YAyPU(nM&8*l=lTOPcAlJ2kH1 zMqvsFg$?;LHOG_6W3Xui1B>2Vj=Kj@aXiOr!N?+>Iw<^*rfMM8Q=8b89L@n%#yb(4e z%SP`x3lDvB-{7e1b8<_gT5bBt>tFkjJJ^!w%@ni6yAVn)AGFE)YEXr4++_DT6f>GE zdpE9R(Bvu-)x%YXQNFsaad7tb#n6SVpxma?FW>noo?;ys1$M2UCzQampdoG%itlOn zhXG>MknFB=Gxb19N^ta>s6*tawiJOpRB^6;76p)zeE+@f0ldnr($09(Js-~|opSmV^-GFwiVMxn5BEf%I{Wi! z(|(kZ5HrW0sncf>YG}ZVg#s|l$E{f^T+?fZ>sN~!a#xE009@RfR3)%7%}!A~SAud4 zBS64(@f+L3kJyOeuXq&&B(6>!GH(D!(F?=0&PTL0Ck_X+q?k7C=D-qj(w5<(QVmUF zNb5!DNl3I~h=qWg9kykankmDZP<|qKs(p@*&eFUFr_-DV>Vok7RRAb7q4q}Yn4vh4 z9zB?I5udeuN-x!c11iFez+41#V=MMZ7({Hu+YOcKPeN1kwP+VT!v;{@wN(CIi(WZT z)ZPkhjg!<9oOvlIYjYUwwY);UFkguBJuTwghymiBRue%RPwXkw-reRP<*Hs75=_7o z8YcaQ^NXw`VE>wmHbsdmA`VjHP_`k*hYd%k_msw3h!3lSi9^V0UrrmAmMqf%S<<^a zu2W1OHo9wTrH5THlw7LvzGZ~lyrt+L*9%id4Jaa z*d8chXxif@A4jY_wD`$Am<@e)<^#Eg@tgEWsDVjV=GrPQg%1xblIJa!Ba3F3a4Bq` zHCJoDba|RDHMOOwlI7N~OU4mDvUuc-;3mpfsw*ZqOnrjCE^@ADns9>?Iv8uwM)vqh z9hBD66N#QaL$A73(;fk2{%%Hqqp)mSB}y6u+Hl4SHdRwxwx3t!+pwBoY1jywexkv~ z+C|+AqtM1md)Js%+>Ek7w`Jec-ydPZAZV-X-zZDkpa^7Y*zTI;JxdMc@G&)(0@@GvR1y1P=<_na4958uH%R-tH-I;HQRi?48D{AAH} z47q6ej{hNu*CB1haOlDCyXD%XIrZHAEQeE_7W|1Knly`j?OFKnbzT>)CmIDx6Iivt zUDX3_HbDy)p5GC>hhy4k?XvhW*um~r6JO5xKdi(Fm1O`9p={?;G)GIm+bq`1<^m}8ZE zy7>FL_F2Ha*V*{x>n}dT%JfxSdLes!xVYl>4u3&cp3xtsO3Rgmt)T9%6O$4*k-wM* z@&k{d_#whkIWx0(^>PNWRLr%A`l1)B=>L~)U{=+I#|}JiX-Sx&}TW zC*|Wmy>Jiyiu2C=5&x4;Z6DwLSDZW(v!4WG9u)@D#nm-LUlaypQrzUz`DdcbECX9T z4#gexqFO{zgvUxa8r=wSRnv3Kl77;^YD05h?!!e5EztEoN2R;Z3tFGytig^my?6Cn zMVDy{XOA&DNF{XKt;LI=4SP!3(mgG~%h~8te||Ez)wkl%hvlR&8p}?i$JGIey)uty z;M~9Vr$AE-(!LvLeEg&%9S$~$*74>f>+qFV3=#yd6Y?JrH#Kgk?xdk>P4P0wfBZNq z+x~K9Gu%hMsQ++ZqhVu&+}zh$QV9rbLyeZdZb4g2Wr@b~ds76%I@&TeGD*ks@fGgn2?hw|;^h6(XVZ0-sUNMg$} zBNrr@-kWSLb?Ex$qvt=Zh<++{6{+%QF~Q<#*NhZv-Exz?-kpu!o@D*};XHl&l?H_f zMO5zAu203Fc;ZLki?M#<)QVs+p12ZSSWo5rz3o^(>Y#=>Uc1`{TDi-fY5o|? zGVZR>Rsiqj}c8&`e<_>b=?XKfYZQMI_3g9&LQ#K>2*MTWPDd{)h?_}YcRZEylz?L^E zVA`ezgBt6{2F9MfU>5j_c4HbF@~-P5RSTlNr`DgiD@$Zoetvb&Z%guu zvewg^ENT$TT>Ez!%Nm!<+TYw~dSmIlu1M9qoIjWs20r)?Ay_|z&kC%OoXXWr)ly4%6zn!53rmS$HLwEM^#9U#=<)xN4@D{5IN#jhT zLfejuU5W6`Q_)6_u~2O`GTKw?@hWMJFX)CLxcS-NW&WGPr}Vn|Gac8aH;3Ry7uOs) zW}Vi9yKOPDq|N|!y#||@7aC{ghfy{+V}+R!DU9axW;twzne@*}Mp;V(eoNG1BNPT* zpIsyFt5I>QCmZdh9>Ot6znOPY%>8D;h4||6(cVAM zRT^JK&}g@VG=#hDHnv}ktu~#)lon(4M!wxZP_*3T<4s3@^4KY})Y3V5kKP%~tHY*b z?oy@w9-7O8J^qFAkqcPAd(=t(8LPRzA*P@XZH?1y|Ck@gc4ML>wJiNKb&+L)TPf7` zWe0CmX(@M&E{`%!x!%?2PE@P2KEcMWPTy6Cx{6Old}e!6l$7Zu1?t6^Y}Y_Eox7Vho;SCH9zW(QL>x zmuN4~ab;3>%(pHb=ND;A^HyD3zCNW%b<;TEc6=+`k7>1f_l-8IZq-!UqHodfmtQs-g8%>+KL^dPIo%2_ z&aC8wz3X^$ZIouz?5Y{9x}3pKVI{?>4%C`zxZlKJ3143gpDUD+w~%+QGS=iox584P zoDNM7gNI&It~LJw>5#I^in*6Na*%JI&7AI!t`bm#r$*UNLX@9b_)iYq3k@x&R}$P+ z<%`n}LB3PRZr)(QMetLU)sW6dGE}Vdcfq@%_d;ZJ;u{;-@Tf| zukNYsfCKrIW~uNgGwg@dKsPFNkj2}=Ck(qXsG-15D5!=H5p_ep#XYVFc5>FY%lreK z!iZ1n2eMLS<6v>+4BID>S>ezJemg#6nJlZgg#C9j!N%`#jm3biy9YbF>(bCW3$w4P zW7={LeFhZ!yt|2fyQ?}J4(o!MQpoOP``#&^;c6C9b6GrpIa(|h%$Prs?HK~H7r*=X zE6UdK_A7>J?jR2Cs9odx(1i=+5|?MA`FA0Q@3z_&;?FA6@CnWbM+$H^a4N)39lrEj zPzuetjhSua$xyxDdD@ri@0OwpdIkx)L9IkPudHv#D(7o{={fow6!m!4?wsaSc4Ffb zj8r9F&95*(t7A2@-!eM&Xcsf2k7m(ob;wx_qBPKl$Hsb8NEap9NVtE-Ngq!33Q^H1 zJB8^bcG#@DVx{Kc3E_^t%!1cBI~W}OGECOpr{p@03LJ23tKWDv#c0Us30`lR#~vFP zVM1eR67)hdkDSn0y*>Wqs)lj@X$K)BtY4m?hbR<%j0TCVXIf=6T3^8Qp$1^n{nFGc+RbpmK)+c9^(0Ve z8ueUjAC&+e@Y8~jPw41;Mq@Sk$@a#>K&Q?3i@tgBDE?UEpij|hG(0H7X7_OD88}ka znS6}FKqorPv?Q8`P;Kn-SyW}df~-7!{4Az@SGdZBr|ZP_vKI-j;##P@Q4$$MF)ZTaoC!#dGt5iMp_7thB5hi6mhl`t1Rl^$AB zWuIDL@R)Vc@hu+K8DMFN~8ju#vu4izgV)EjvSd<>0e*T{sn;TXp77Lf3 zcRU!N=6;M$g%H5swO7YLN^^eDCShsKq_=OfmsK&*gPT}ZFKK(V?gxlH{kT91ICitOvBy5mh-ph=SA4Q=EKgR+YLRMRx%8Y)b8sjUjJ21G)vipzD;k`=G1hPL3HOZ1ONJuR|+H+Z3 z)gNKUor$6BL?m7)P|&k9ElYRI-Zp&dbr@<2myCOn)Y9l=5(wO2UieWIWS?pkl|e_$ zBuL!7WMuN`i54DLQljG0knDwo!DAo^`Iv_{5sG&PYU{|h$9g-L$uV>IU5TZ8?`yOC z{U7$14G11fpN251zFCfWT^4UpQ|>6&p<{}di@WdLd~Gm}$rHI}>jhd1ifcyZjwlC7 zoKDW0`Kq?|*R+|n+qdP|XdH_6N^s(GJ3Yl_nu6CKb;TCUTe;TwQrZMpOxy_RW}a9! zPVt{h9=*ThtOF;!XEheWRa*}x+hw=ff{t%<5gc5lYFg@tvq06&?nAr!GM)jTUD^4c z9VPQQqtBwP{`qxPcX4D%?rWqBUBuHUldAa{TD(B8mNDt)askM+z6rE65EP>o^G+Xn z#%Or%M{&my^zj=2r(!fTQ=HFYIZT9bs@cC}=`n0$?ht`$p#RdbifUKFCYwmAl#3I0 zCo|L%(oiz*l^==BnH1E_;4uet=3Y@hq6zDOra|P?hGC=HV2He`_*E^$Ys!*im(LdYYDWyfg8NSWo^Crnyd&(;n3 zIq&u=DS3`Db*~R3cJ&G$jeiUpC!FGXGW%Rp42SbVdXkXB@jz;9oSG*5yW;Kz}HXT3b%}IL8Tq>xl zGd`lm89WnjFsYiB*)uAw{Xkj9(!glYdE~q&VpjWJizhkZqRfPsy!C2gJ|}zJC@Jj@ zoqxlM{~iDB?#V7{Pvx=oq*yA)xZ2WBU-G%UcQONq?;SU-yrb+~;jH)xJawfK(wvDl zWX!Zn_Oi+8zsx)fXz>L7V01Gn7a6eq%o8||3Dc)bwLo1o^%RN>f~z$oZIR~S3c3=K z7$}E~o#_mzieqPN`$(C82pid>N&l-IFeb}bKRip1qo;m_X@OzNW5zj#g}`e64!|lb ze#hyo#PgWU+P-vG1}5-+4ey7xubYMI*@KaWgTKCl?ouG<@Bq`qy=EZ)mgY$_WiOXn zt%Yc@2X)YWsTl4?2)}OBSW$pOD+4N0y~eO zdiT|tFvQvfYVZlA!BzARttfW>HuHQ#BGehio2bK~uusoYI!t&}{nSJF=X(cyBVX0_ z?w~KDE!ao%IdS*or5;d9!k8H2biQW|eDxnjCv69-p_3*!JLna~JKwBH4iDuT2K9F@ zvr&V3KQZyUCh1^ee!@Ply+a#L!I7oJXTd5qY_VH|8?LiQnX3@da`xL{-giq1R%$b41?R8bjxd zPd{r1jeA=p^f1nJclw3aycv?nXZt#h6AHG4f#yRy2IUE{9GVRiYh9f&{2?DhmRuqQQeyW?l%b7~w_CgrL?JvR_>+7Y5RTJbs=9mbwzd+!%M}o|XqIjEVZx@@)EBW#^oWl+@WM9|m`uDA)}w!*v^y>v0T7T%jEb z9!PGe;+laeK-#5@G$Uiwll@&_1w0uoWbcsxIQ+{nUe1J-FK0E=$gVn` zQMrJ;yFs<;D6>s?`xeZ!*s!M2i$V8KfiUJaQoDz7ZU&S!pdGj@cF+r-&&;Zs_jm>? zN*YxjXQc~D8_m{&R=rEeD#i@95~o(fgP2x!+cHC73GJ}vS&|eM*`oarUU5p7Tv`Io zp>uh>`X+P^9=W+@3(v)7jW1&jMYlvdXphGoQn5y?p*Rjcn?6m78luV6m$%(a)7wvn zs{EWOLLS~7SPrfPh(ccS2j{XunL1aB)uDyU(KKAe4AS6I9@+mdoOmu$m!#BO2o z;$%^QpU@9Fb*2W2E#qkg>wZKf#nB>17C8-B_r;53UG;uHLyf2NmDqzCMlL?<)0*9R z3hboBnx=gHo<`lzJfyFbEKZuenlU~*!|_~jiE<@wjJBmZq$<*Y8H5H$G9;MB&q0WU z;sL}fvXW9;$T7s6rL*d7ZLv6LArmwP&y%?}j|} zVZ4ptblJx)tv=OSlXa1-LaZitw&oMP6())ETWmqQq1F@B6b#z^;?D#JW+2$R*mroZ zaVvh%qkdw=%Y4x>^sG`L%1+x4R*Yy;JceRH6*k!Q7?#x7TxaIKDkHgK?5ER#*~NyY zmI<5&sZ4G>URBe_gS3%>?*zmcmjbhPVk3-k4c8)gJLWIp1S^y61PHWmG(-YYKYmZNvP@uEIySn!t6A_0@10Q^D)?T?X z%So9#19uFVW33Nge@Xw`d({1~aM)DS84mm?*F%@S^)u>yKlHA*DpLj@iaC-ovs}2- z9>MhCo6ZeVYzMi4bgc_7Z2mr;mqGI(zFM||2DqW( z>A_Vfha;rjU7{rPa#(;5zKPW^tM=3}gD5$8x((`_y`rw(0o4i&lq~LEqOQnSN7IYR z<3>IQo~%I!ey8q_ZNRQ^rN>M#H7wf5slQJANoT4!92tFH$o;GdM%| z%?KyMLC;a@z=$zP6sSHhQ^txKAf-%s;hY`WuGscKoi}STVyI5 z|Iu*z8_c);#_+z;4-Ufz&48e!K9)@<5bhWgw5r{tgU9gO{j4|>u`rMn)TP(t3)U<- zf7AI|w3=p**=)WY3t9xH-eQV1njw0hmZX`PYBO4T@cfVcuqFad{YKoA*{jIHkCgFz zzBgJQj$3aFdvd0D=W=3A9uL@u531{3)+RHP)P|-C@lIqHUTe07<;bT1N3?p4>@Kk^ znGQ$ySS$_JFGPXHf%9(;rZSU$#1zWb0z_Yq}ZWZG>87{1}FtH(~0l#t{p1 zPMY;-(ZE3DZVx>aOK8g{!87CO`B}l4E7!o5s(C=oG3t0k;7+FGH1eW{KYZVJWq5t- zfFJCR3E$D^Ql3D&byd?R06-li2^HD|dF$O}#e(LkR{H>g6>$SDrj zTPZ3GuO#aYOII!gF_ke6(81S?GUQd-BKJ3pc9n7zw-V~Q&99j+nHcPAoEKy!HL?!B zqZSA+Vh}2trjSS2XN1c&@vzz{GMG(~fbFj$m* zIARPYLtB~P!9(1iZjH^!ui5ie4b->c;nfSpUZj`Q=xA2e@W+udr4wgMz zrXGHXH%<|CZbNnH=U7c2RidyKxpA4D8$PcZM#^lMx&>Pmbi6&=MJAthI|se70(b%} zn)Z$0^Y>tda#E(w(t6y~c5>dzzEZa952-ss7V+H1b@MB$^T#>(o@$Zm57K0!)T-|? z%d=Pe1)J{Bd`X8jN`hX*+tclm?EHZ>RYr?|h zd0u3$)TjuzoKHY$B;hmw-p9#F;g)vNwZ6c9oluHZKGh;O*VW~Fi=Qkb^MWr;d!Q{V z7g?<=iNQACC2M;mh2xL_uVS~oiYXBU{rcs(CVBwchqpC|+3KWajisgGZmSlyEZvep zPs9epX=N`LVkB{qScmY7A5VMG!wB%kT;rbKVCRtT1>ctG1{0TN@8|HbUYt;^uCv+0yXJ+*QqjL%e2r(dDD9r?nn zHT*zoS@Z-68P!}!xp$p|Q}*6BO5K5%hs~1Q?s6{s*pkMzgkMKqw2U*O>U^0=W*;fwY39dH2nM$XA;5g8=ND!KfZOE`HJqGy1@iB;^KV z)~e84q`oA!dVCdfuM}nxec(wLHS{GCwHOHxu*1p8R)98zBy+TN502l%2FpqQ61kIm zxqq;mX!ssvNtuN&Eug)l0duMWbP+(SImi~8pkICLB(3SE!F(0C2*;MBY{Ku%XAt3e zsDmoeHL^-(X?AiH9Wp!dDmmHbI^3yd+=5w)WOIIcg@9V4A3q1dCF^6GT(Cz_x{{(w zOdQv$otJsJPdjd^yka<=;Efp0>^Vus*QODC`t6=1k_up6kh1UYSV&fbnz+SQNcYDT zH=_MVOWyaa`ksd{@I?E%mg8~2#(}o{uU}r@E={-x|iGE%^-VeEt{5|Y(soQ27K0$KBD8{ezCibk1x zg|_B(1C=_)dFI-(N#D`slCJSVg&*_4xV?(Gk$rWbuWOVuI`VO@r`1y8`Y7&#XK2=i z#Oxg;uX!m=mQACPyb0RH^&R`gJ}*AY9y;kbR1yo^FW5}-r`_IBMq8H4ef;(vRkP(h zX+Gpc1h2HBYfVL5BvrN-kazNk*hzu6zwPqb8Cu7YF3)oxkMNY1cB$OyQAO_Lp(q9O zj0!S-l%D9qGzS)#?+{=B@r2t>rceX^D?-$Wj6FUtJi+s@PO5Q$VYUTFfwV0ANgYR( za4yBm0QU|ShWZk9WB}W)azkhRd99zMS`u}B4T#T*GMK}>lLQrRJw@Prb$Gn_2_MEO zyoDo#AlCnCiLOB3{aYC(V8b-9p~QfXdpw4(Pasa22_T^Q?JYpqI5y=aTP3xWe-;Hz ziq~Ed41PFD#VEjsRb#XC;N`}svqX@vNeA(Tq@yErCy%jMwDS^Vs`g{_S!(eWX9oyl z`>>Zal=llg%$DtSv_0u7dVWC%EEyTo?1Dbp%9-r3&XrGa3qQ62PR6SP?>WeiExj&i ze_WvAQItHQ>Cv)CJY|nyDTXVg?v+3(nc)~IP6#~AV!720g`JAe2EGIYbz8TMCzPo! z<_838@F24qbT~524ISiVlwMz)QqnnLk@9?z2YzQi6Ov$4A-Fq0$i%}ai)@0w_PDD! z(P68r<^#}+`5EN;lsWpD$1!S84d8JSId0Qtws?PYl7l4M} z+ZBw|sCfercAJAKMJmHr;bQq>b}R-Me|hKc?#K_I%O}F=?@vY0fv;^K^AK=GvCfZ% zt`2+&*N{|{m{~&t@EWRCn1BY1djyon1iCBh82PKUYGNs(3O8EAjyEg;wDfrafa9rk zY#-DC;Kd{gEZBd<*=Oi1!PwJN8^EL{;791{y1;L4JP#P8`T-b3WK-{gHyv&>NtF`T ztRc)|%Kt$UfPfvs3ixV^f2&9o&oUYxB)@+I1js$v%7r89Id-8e?AtoznJl3^?exK1 z=)U2}6u5!WYHrvmI&}NKV8is2KaL)ty)*nVGd%F6dx$Z7R^DS}+vTQM&+{TZ{8|tu zsT|n@KJN!8q@;kuy?w6GOSHv> z;?IEWbmfrMPjKTeB2(>X3a;-;)+svxPotl_{B^swzrC^Bj~n9H|`MJJ&@pR+%-UOci*_XI|R27LU4E8xJ&Q=8{fFQyF-9K z-+B7)xliYgbL+KcjhelxYt~$&yH~TRzqq@xot+61?1$~n&phZolxJ#N&sT2f-N*zR zMI;!5;`7shp7L0R%l|?VU_}&xvDJ;zKnd+}YIOP#{6DXs`&t-qA!_ zi07-zQ7mp_NK%P>5NvQm7{PPH>jg7n9wA|2NoX3#yo~=6*B%BCd;#;kVS1>sd&iHf z2kb)6{$|>>j|2FvMIdJE41bn;=SdxSLQb}9L(5_pq1(;I7ejqDQ>Ti4JI`^Gb${^^ zc`&n{50oBGnvTr?9kM-gbyM14tE0m;b>Zp*6;e{h(mp|_0l}Bt5e^@y;PW(OcYz+_*Cp$cnCWd3BbLeyaPZSq7)f-B zbo+5?{u(oDF84ArcZRO;n+mQvhx59Pt&@BTlZMMz5N&gL5m=v~FFen%za2D0M`Zc= zWh4Dh%#lTHl>z&28seaOOXBV5V#8)l13)88vS&C+yOgCDoEx6m+7e1V5dF~hpWKqv zSNp~bq$#S|5Sb0e=|btOU9nH_acJzWP!~emK*C})0#~huW%xW;oP*X)`SXSg19-Ez z(M!V!cIM4~Y5phvP^SPvff(J{L_O2NI-$n;D^R1#NlnmpYnl=A5VH@KFu2y0YDgH= zSU9~@gguvrzmIHdZJ`baxueV%pfQz*x%%b~DHw)bU+icvOG(olo|Vx4G=r<6Jm>{; z;X_EG5~u5-SL-Vg6OAAWDe!|?_gGbn>aP-*`{QU&GZ=oOyl-MyG#hT|1((CE;z+aJ?Q-LElnztpp#pOkqWh89~Q8dpr-MM z9zxQvyV(SS_0%)dBFE>rl0ca_E-WEJSzpAh3!<_dw}{NsA4ZV>q2ks2Tcxq!=stfw z%TfMv0B^@EI1}_db?&A%-a0Ig*6sX_v#Cr|%Qi}jOOgqiQRxs8%}~P0ir8@Kk|bXj zGel4rc!G#LcrzqS*m4NMDA_&PWc|7EDg7HrfC{hSlw2h|rB%5=q~e<$G*r3l5E=T( z8siHneq}o5OIJRW2%8gS@Y3Z%uO*C8ZRD32m*rsiHMU-9c2r9^j0yE2O^O1c%1V&! zLpD0kFVM1tQ(iMjqBi1zUR=;}&>|E`Bws5pn;ihiBdis;3XY50PU+Paloh(pcIyI%=Y=;-I;fHq=@(p`Brg`i%%(0rM;q z4Tomq9;;!lVT7owpnv=H(acf&%g63M|E4qUGMlBEm@tj{jb+u;Vver^sh*ixQ(?Lm zO=pBAj4?K$ENPjw@R#`Avx%Ldx)viS*4fjFNo7oJdbH@>E1@g+g_KKNbc0|2#(c@#-k|LrHL-|GwEC~ZzQ5{!m2$tbjWQ=^?e!Fx~ zhGV9wc!V%M=n61Cl_HCiq9{$?B&rR&rx(^72L<4faW_vi;1UA*U^1VL&|YT}w}MX# z0Aj=})h@%j(f-vk5iE9sLGp;JF#Wu(>JK!5v0U3bt^GnjeI8IY-i-i5XrqFjRTn+D z8pB!YtVvr~P^pqTW2v9WXZ@-5FJri_7vp^EkVMrSDkLDjU5`K^5(J-A)=*7KjgTUQ z^9D|vOL0C!x4dG_aq4Bx2`u7g^nuU{0xK)`{?g@10u|p@fV`5OFxqMxhO6iBZek9) zyx#~+2_~t`kr;hE?Ip(lNabTRex`4A7ugTR%=#e@Qn)6n(Mx=)KB<;mV|cAljkV(5 zz@CNColfv9>*`|B3~c<27`Rht#9#=oFnmiKRM|X~NA9ODXD0grbx{#yij`E2N zg6#$eD18W?MgINQmN>+5I-SrF0P&^6f^U^RZV%cAwUeABU02O*hP6GS?&Of~5W@6yYHa;_2UVYIg1R=*q z8?_R8M5#X?$5M?+pg6L2bP>7u)oY8yn>4h(j(4Ozd`lL28+GJSK~IZX?>)6R^j`yr z7fVTA;W|d8K%YHBDi!|G0>6;&D=i()Mdj7H8-B&Nq+5bHj>#>Y?-DPQf8+@_P5YYV zRUlHG&uU!&!=Ho?w-3t=Ij~;SeT<#4`%IMeg6LMhf0%gUW`#5u{0hQ?PTi2tbx6`;x4(as<>P zgA_MUmfZ1k>m2In8qz7C^OQR|u&)D7NV`d&T_Tb4igS3tknHOQbDs8$Y>c~n=um`sKG%JW%V9x9A@CeD?iSnJSMk`q=F)dUJNhYm63PH@`@HhE;|lOTexZG zmFD{Hl64@-IzZIHS70Sx`R<070?*zHX@2<^PcF0=|n#7F!+QdejzL28r~tyAhn zg_19WkX_d*6A}XxMj#B4Q8|>)QOih~d*-oaqCP4#ODlvO4zqaOxcd;h@M2ptlO^R7 zE2tLlFH zS&G`qXv%J)q}AZVA+q?Sjlmo?Gcc94zmB6qh$Bun1?D_ja*6tvYjhJImc2E!te|Pb%y}(&SZpJC}X{_=n=Idg673dIP=o;t<|u zSjytlR^F0Hfa*HHycNsPHlGD;vP+fG?Z=Mor>HsCxiQ4Mh-diLj!jtzkJ~(3iQLjW z(9Yi&txoT{C!5CKF-EA!jp95_(qH&j)KBbf{k2-`JAvJiyj)A_ezB)#UxB&nfOlGHL6>@_7|uoTWu>N>q{ zF%l=rwe(758BuC~*I7NAE036GSsQn03y1^s`ki z9cD${?mpNKW_Hrxu$8c3(7s#LZB9eJy!^cG{G=l-Td~`?(?5Poh9vgiCQ57FqiC33 zKm!1nvXx9&J3p=l90<(LE|Hr-(9L}NY#1ZbGeDa)7aS1Mh2j$u;)I^q!*|3Rb`Px= zoOhJ(xLbY<$8a@a{W(@zB5yb1Wy-<3@;$lNB(}#KhW4g+x?H{>4S9Ux{<)ZN_vn3)WdsrQ77-;{yKiydx|0*#Y9&-vO2Yy z(RN+MX6mn+2Dn)ymFLfuXIaZ-SU;`MAaeGtk*U1+f+-hH)1Dax>Xbxs2~Bczi+GJJ z&#UE)T!tX*_E-39eimyuz zzsiX=j!9wCQe{`Apa%^L3xZJ{f&6K)m}vJszo9x&0WM=00~uxATVAOX9(dIikcGF1 zXO;TOi$ky}JzvSC9rWabq)QSm#B-NbJm9nLTT24EW_FtKGsQkMqz`|9h=ktlH)$`i^T>@wni?!rwhw`QbblVeei)GwGf}1m@^M_wGP765!g<6 z5zdgJ;f?RualOU>53mgaWX6@RI^_0W?grBi@Uf3$_HJGNExAx=b4%6*;~N9od4Umq z`bAIExAheFh6BN#PP<^A^4lf4!Hde43*+E)Q#Eat%;KZO2eateKnMegKu0Xz#?ti# z#cv4v*~`JKIg!b%@He)`sd9gSQ*ys6k^;U#KyCNpE@jk7?d5xc=iNb@IMBJKQy=3B zU@}}(69Et|hm@RM|>8)gWMD+h~|eGqo~=yQ&beIq7=Vi4n|?GG#4(@w-^+Kc%< z9@z*^)x#^EZzm;n!fw$Zsw?vBa02f^++Wg@Y`D5hboNa7Hf_Nn#3Q_&SiWFWvdiPAb~DMB zR4CxVJvrX6U&J0alWVDfnfW5xzs8A=b@JC63!@TXD0k2hfFI`M5b*cQ>m?08?oaUU zbKr+0pJ_x(HCv=<|Eb=~Wf~%%^@NzU<9GL%n1&Y7hi-tZb!bK7p+RI$`#yU`2je zQi;SuN578AztLU(=)@qTN)WMz9KOf|+lwZR6T$&(N%c3Rgx1yG9QQw4y`-eD_y-ZM z6S!feLin{W*lT)V2qn~dvc)YGep z01ZPG1_N{$ahbav)f&!_ZnCS-TzG70X!vCGp$^=~&l*dgP8oN7L?dHL31}Q0w-$Kn zIp4S@7zh`aL4hX)*OM>1-hvHgvFsP~tC!c0_L!XL{s+$<1fVM|5q*Y9ILa6%kwFN% zu5m{oFNRD%SI+GjtPG_07$E`tN4fLfSnDt8)rX14*xh9Q)^vBQ-uF9e=}r&fyryBP zz-?kaN-goftk;>T?_MNkrX*-|!H1&yrBoB&_BxjSFhy7GRqPrL9L+HVohWB<9?juW zohzCt8+LBbr4I*Em9}1Fg6#yUL|*E+)o<6`hx**Bh>(RCZ^aErg+FiXuwA1h0u@jG zegO7=>>80vKS75Jq-?Sz+QFZ!_j$v9V&1DyDC4KGBuYjfk@?Sy$n_w=_Qs5l6P=OA zK)20qG3U(+(KYGYd00ydvs1R0cJHdpsIev{O+q4Ym$$n^57TbF#o!KGz5Hl0Ajnv- z+E^(WM0Lax?OWqK~3v=x}!HPP@e0 z_+XdHXMGz^i?o*8P#`Bd`0mw)1JYPc6#TPg>7sh567OD*<$~A;WpJTmL$VV++OPk! zE-V&WO_vQs+JyX-l+Pkx&Vh2XgDgf zmQ!K0zn{JKH~@PR8SMRB*|@Hhn}iXTZMvTOrjyo<5BL4L zNdy!j>n$l-jzK|hT{F8D@rdq|yfd?F1Fo1`$PE7%?VZ@_i}BwV0=O|DyS&_@dJ)>( z(O^=YHpPq5lBCdGR>*1jYm%Ul!IaMM^}LJ_CYx-D;3q@Be)tE*T0d!uBw|(ckKHxz ziG$uLxbJ#Hg|o|gPO>M8;s&U^uO3ainBI$d%~}C0+x;mDv>7G58~cBy#`^(I9n0$N z8@bbgOOVfq+ldApVSJ_x_mjLO$y)O{Gdc5-Et(5PlwXfRBe6!D4s|-V@FzDVHcDg7 z-*w-ZU=X9aY<;*LF2I@7eNcRTM_1!fBt^r{Vw`(7V7m+4%_yr8IJrewPd4yY)?#@r6&0%5q+|?KLc5Tys)9D4 zy)#LYccu|uE2CcK?5fRP6_X9Y(nZSlntP1N*j;(b!#T~#SUY*mr{*$rgtcsHLC~Hw zpTsXOLl2H?Jy5naazf2=-t!E<@?U8tV?-s+;jeXTXz|_1(O>5gwYtEI7$sISJc z6(2=%3eTp}53S%dmre)8@?EO*PmQs|yPS=5KHn!=BPN-@N!i6?uK!B=!aZie{3jel zb;stbE4p>|JR&obtM_G?!l7e1eLni3*jThr&MrKXeBrHNuQ*)0^H;~XwvAL9QMHR+ zJl|#wZPyNM8+>m4E=|JZ1|!0xOyS&oyB7fkQ$=Qm<3%T(Hz`}cbL{%@GpQ+&&fP); zZ%xBgOzB10ti9+RBJxK5k_H-EzlL#8;THHB#i?|6H}Bvz-*NntH#x_uDAZ}4J6y7) z`}L**wo{YQ43kic@EHb1?3T0GFZ)u!yn@B}>hS;%GkrkRFvyfgY=7>%CnZn+w7d8CopLaEbTn>M(7PINe|@S9k4wN>#i4Bf3h&|&Bgl3a*dFIR zhRmh)Nx16+7~jPItl?S^R|#22JF<}8yWvNfpfPyzyRmaA*+OH$g}`E0c7&G83|7^< zzZK1i-lAL4F4&uxe%`~hf90F0^a_eoN1&T#oL7GSQ&#^8ZZ-rGxVAMb(1}jl{oHi2 z;)+gLx=X_B^J3vS@6stK-||*;Udgi#UGOa2Sw`t}wezt}mYRW!Erw%S`V~b;s>`zW zPNLn}nF?he%hvvsazXTqZ4lsRqvVmqrgvAj>iXbJk@jMHk_dh)<<-kCd{=3BJCvhp zr9291f3C_w(7RF~HS&Br4iP(Dw2HlFWfx;|@7k^8e!u;3!m_6T{O#tS{~#JWW&2(5 zLh4>GzAjg`zKAz)fE1W{rS|;SiDLa{$jHdTnhEv#X47#*Ny0mG*W~v=)mckyBT6;> z5WWK${ugzIHmj6!mPvz0IwMK?y}{G48|iVHrm+X`>!I7w)ZWFNBRb7&$xdA>g6QFEi_x z>El@5Exq+dU)|m^;QJNg(uSG5h_>$Rp{yG{K)>Bh=n9+l^5JqGJ`eaPbnOAgwTGoR zYSo+jp~@n6hlTI^wf{uTI1K=h-<#V7-ibem4=7mWjUBjA>g{7Iq2TB}S^d7++IpCP z2M9jP=<)buge%Sbx9?yh#`%fi8z}hTGUyb1Ucimnde2rSGCwC_i2Jbdh*C`$(cu*? zz5XzO#))5$jfwHdoyUz?p*<6?1? zimKis=RXDq$IrC&7!Jf=fV)lJix`Q?(@so&UOO4<;Qq2 z8@%*AG}ub{DC5fje~WI`=&7tHs+9v1ChN{8V$=xop@;(0S( zmva^rCaD=3tLD0F6uGP8HRanNL%h7&7xftCaFTZ<-Xm=~n8Tl=Eq<(l)4<%t4HoiN zAF|wru>X88J(5k)N6HZ*-1FH!3}8GxzWhsWo|ldk=RkDLsnjW4sgtB(0Qmr?95y#^ zs-2W{Y@^Km?;mtsYGR}F4m5r48~@)u&rLtt6XikQiC^1;2)))GkxYq*sk<^&Z)_C_ z>m@kmgz1KD*Xx%6r1t9-{8}?%_BIp86+TV$J2e{llPdPOoj06P@st@<0tLa94-a&& zz89D|?#<`ta{`|<$o_OaE%2mt_OR`InD|bdL%GfzP~8eQjg2s;+a$xt?Nki|2Tg{(hn(j}1F=iI3u**WDBpGl7g(hOgmppsSc zpVvsGpY+tA(zpZH9_;SipKr7z$OIR;>3NlX_Fn~Tn>R)3`OGNCaE5JbmW%E=!A`dL z-Nj<-ahmL z($AVgNwtiiy=-G*l$g9Uy*5jseOS64F2?cU@7+$+UPsDzxWdNOx8-G0!w7P?Y!(|d z-NS3fvQ%;YmW?!-Q}G0&f~Znz#xTXA%4r6EXL+=X`iBgPodjo(e{2uX&^+_7 zt7=zt@2VnxR^+n7sD<_<BRf%fbVvfq>*Nq*?52O{@2CyvXfH*s~B%Z zR1Q5RyYv#qG5GM5LR-nB>$|CXgyF4shmGtUVjsKfH{Jn5Ctq4fVd7DzWOBrcfm5<} zX+P4#9)4AAh4(`VjbsO%i1!( zZKgJpn^K{4*R4EtaVb26b(mqO5E)dBX&$Mi`8qlf^U*glh1Tor-PYWsG0hN@zxLFe z9G6tV|0Y|h^Ue!FO#%rOc5Hw_7+N>>JsMv&J20Pprr|aYUHFq@qM2pcNGJh4PnvBe zw;XL(On98tt;#5}hFsILq3c(vafCt4ox`(zCI5GtUZ;9i{~uob#SvQbSsP_0flKFj z3RQLWziw!Eb0?$I0O3p>?|jqlIJHpQx>fu2A3KkHXNnt-ATA6N!Uw2w;5H6xrl z{knBgUWk9Xf~ec1SF&*>E00;L)TiLKTlD!ZVdW-xmFy7u*7R<5T&*3(5v0z{hSQyL zhp`yns&kmX6X~!!u>F;^|MS=K6C8r@?>uT_qPDunzFSMQoGZ-IN0nr$eGo$QCsrQj z_}ll5(2bv*>8f&QE&Gm4tGS3G7F!ZNNN?9IB#Y)DPDf6C#ONmH^Pw`}zV`Y{X&2g$3iN7>4zt8J3LghQdP^8z~)Lvw46 zHstsPrA}*%Y#HVAbE6KZSk=NOp1SD_PCx6DhYA$qywbl!Kn>l|9H_Zu<%xfDFIDVuxVu)I^HP1xMY{al{x76#9 zDl(#Vj1J}2#J=WqGgIid2TMeChj=_Fw4{F{ncKd1zO1orFFG9{N0l_P&5G{zy!pJS zvj8!s;ICd17H9jiz=0qk<*}vcy73{An`hCn7on&9ve*!N7KcrQ`O^Rg{_jd25W|v) z8mo@L^RJSm+QE{^X0V6A74^?Rj}+S*S!8UeEbB(HugC;ES3>QDhiXoZznU#;Lu}B0Ker=4Frk{+ zcXtPtrMrA|{?_B+bGc#@TUt(DWMM*rR+}&4e}u1gLW%@Jm$+k51N1ePrAVDP&aTbW z=x3c~aZingPyK5DW08ulB}C;buT)kX_|e(D{2#{k$kAqjRn~KY zP{7{xY%QFiwO<$w_%KCdlc=9EbvAzCH|4ll4qseR?xZm{KbMFE2r}gaSBHmek#@N+%XNnEU_$Oc{A_6p_lI zrm$Cwd(3ky?c9t9Fu%cd=@-}uwv7E!K*>=I&5m<$VJWXh0&8nWDOi~V=ARX^$H(Vx z%EwU?ul~_|Sd-uxA>-7T(A?frQ)6`c-CJ0=YbS<~nSWtpt%;*P@@HzF0#`l>35kGj zyChq@8T8mMr5X_c5T4;isUTnNWrNkDb1=-Fc0gZ21PX*?khHhAOPYlg&Iw8jt(8z; z!Rr6(HZ)8^J~NNQ*@YzYip}( zYO3m|9+%<>e_R(ccIrER`(oqd<>dt+?rA`t&f@aWH0F_yuP*2VVR<#{)|j zw}!|ODl5+Mnq}KoynnuWE)pKG!}0CtYV*e8l2ZInHMj-}=7RrL8t#9$j2!&`ckF*b z|1a!+LH{r8|BLSb1p7a}wExvG{CB$lt6})>bpJ$>vXJsJk_BImJ1>}-ZaNbpKBfKV$yBCrmy%nMPH?WLUZ>Fp9Ta))8M#Zrc<%=d7-Vf}DOWoJ!XGSwo7XzOF-jjRgz8K3tV@h49-9SrhxI9D!*sgrsLWr7u!g!j6ZE zvl$k~aIZ(pY7sLiJ`N6rvg~!BpK*3|7qgw$n2k!0?R>dmFvKSC*Zt#*q+DR3g6U)a ztyBl+5Sc2XJ(}<5;lTDyo~xGf?>Ie4=;*LM)KT{-)6bdoZ}nyJh2M05obZ!+RBfv( z)4S~JsrP*V06>S{01-fiXQ{_yd`y6)+i*JcpSHafJ4-^tY7}$54F?ErnWF2eE99jy z@y2mh?Qyk*W{(Z58IBXs2IZWsKJyV1HsES6@HRbo%9G3tzw-Q=otayiCL17G%hkfX z{{*mgI2pv;;syY4^Hs_aTfRx;U(y2r=BVL+Gy9mju$zDYS*9;Z!ot|0N!%EjwnxYD z_FRYn!hC1q;4YQVctfxNF-bEsv%;6Da105_u#$;bmK((P-I|{Ur+5}%`zng|M9fu^ zE)86d`$p!21a?iN!#p(}ZZsDRK;McVfMocI<3k2ROhMUDuM^C1QGg+!>xotrL5JJ@ ztXe5JiWT63E~WYt`Ph!2t9-?ASH;r|x=4-w4+)MIGxkObj>EBe1^nKo)?U%Md@pDKx<01|*SAyqyDcnV@svfl23)v!OFaR-g@Me| zR;<9M5~I>+E!%<|F@bZZ_~WJ~H$C1ZHyDw`_;?3|#KnJYW(zFudr&%%83PbwWK@RE zD-l-U55oY;@NMMcxIEkm?qPqQEiQfmg#8E23IHtr`o$wKHLCNYS+_JL1qq;Hf%+!9 zj97)ekjvzr=!#7;Kx%FG7*am|M-GK63ZGN*(g!*;P{zBvo)q_5Ln{m5$3Lc=@K}Qt_K5iBP;D>_ z;1Pw365SUX+)M`m1R=zWw@fUH0CYCEh0tn$2SMjVumK+y5qTp;4{7SA8&(^R=P;zP z{D(tEs?|jS!Sg&*6z_IHN0){X6gaH}RWQM&Xw=;RKy64wuwW=m9_(T!432vq9AMM& zpf;G9h{(fcI1vD-qykzVhB=B^3_&Ku`x>0^=UHtj$LR1kVcFo&k?%95Df6!uD%C zr(=lUabnVmw}rKbd5a*D1b!4d*^+Z=rS-WUPnDSgU?H3YDLU?QFyX~$E^ zq2tqUg~3i`(sZ99w*lV>do^@drpcA&=C=P(#{U9>Sy7*Q`RKkKRY9d zF|GD~86$5pBae7eH88hlTY#zvuqO2)pIA8$ViiVb6{aJ)IPu`}Q;W+kS)>kuo8tQW zbi04U-7iW8H0&EP9`V6?wKJS0j{3UPFdegH7~XFY0x;qE8|^416+SQgcCh9ouLNMI zZIk@ML~`+>Xco7n006L4a45itVR$A_3ou=MYMMXA2mB^&4l870WMq7#C7Z>zs#Grw^@|lJ#JbJHw#Mc!&Y`FiB(|^idWf+l2vN#CSi% zq+?6)O1_q90s%jlmzFSOxSC-Ei2zh~$D|&T^hkis2*j*^G{9nZKgosvNc>HDAOs`i z{)dJOjBh9m;NFS&S!`@#VnWFwjzRqe(SZE)W0;xwfU`F&0KgHk>IL|~@g~_U8A=HV zj`^q52FI;zbT)usEz71nv>bRq6y=g%8K%`)&qDwz7QjT*9W7EsC6ZkN$O+ei6$b-g zz8!kGCmZ+#Cngf_Y>)Eo7aTxG^2?m}hF@cS*2QZ|5dt8Zn0=LnQaifhW1)xEwpZRL z0>EgxbpuluSvsty8FfklJ~%XKf}j@(5IZFf3tNLnUp7gDxIqL6UKZyJn}vv5ij-e<5b>Z+UN zXuX|J+ac$*)%Y3>6%|#-xi~LR4DGijddtBlgKF-GhoMhJ>_jQnU2VNW=gluAQC`vn zO1Un7tg}-d8;zZw<_=ewJp6`UJY8lb6h-_-KOq6!QO-r z4{vuPh%#XfKN}y7`Gn0Yfujt3b)hhLIVL)`n1*&Vlf4uaf(QUI?GgVoju~~OMBeApgX^$BM`Je}7 z9}?}#*~%H-^zx2 zw#;mE4>|rfr)Qp^rXr4u%KYWfk09xMZRA+)Kk_&PC+nU!)il)FG!+~VrUAgOEX1rd zHAPE7t>%)YdV9}P`NN0_w`0mMn{e|^|D;MX+pD{~G_PhLE>skKqn$XyX=d=a)o6hR zTMu0@%+N!hEQuIc)T0>MI%l7K75#CVQ`!kmb&3ojmGhpBRR*&qo#A794Q)6qoY#B%I{_P{ zX67|0TN*sP+#9_H@7z7y5gCdbY;0}Ho@}h`Y!s=Cto&rG{3l0q%ETmq?p3fX*(Qns zl51Z9$YwUgO*VpZ@}~^tI{-AmbGcefg|m68Cv(?Xjwc1+cS~DwSPxAoHRFNpH(MK{ zwMs%10GXx(?eI3kz>S^l7R!Mrd{Riz{d8o?q>|&><#<{Pfn<>-CKgNCJGAnx9`)ZW*=y$JieW=7A5Tq*au02e0u3?x->8hzt`*o5J zld4q}k1h!wCx$ro+ju*{zQN|9?Je8kuRCam01G#gqcEjJ_?>EjX9Da%Ebsh=ZEu)j zM&*mIZ=A*7x^7#G5b-r1Wc+M>ob@5ie^MKD7gmK(VM)J`XJZF)yz%iUsE;iQAxe;(6t2?peFGsL4SopfF!e)}nK5+8<4a zbJVW{oF2+No27>Ib{CH8QB(uBkGKtjF^1OyZ&G8s+N({x=$*5CtMvD1a%59R@6qZ#tFl)9u$~>iFW)qt`gq zZ)yM6n5e1cWi%1%s3i+xzL1^Q9JQI8^t`mF<&wh zG7kPyg&q7N3flS5wq$Eq*p~|}O7_4MQi6`|rfyx-y2SZ*FX$IJU)^pOm6~cU5pSoe z=Dk~_zA7#rn=xuVCda8E5K1yBFN~T;f6+f{iZux649xBul&|;ZLR)2;0A8e;W`Up( zLo-jInNOfYmk1jVZ9b`{o@opjxwSKr7InLB5y|c7rdigApIHRo4pY2CsH^(Qv1qeqv5j?B^T27W&`19X(!>7?4IJ#7;- zG#Fd=CMi9Yos8ZNNG~M9&`RFmsH+G=~F0TuV)rHi&={)%jD zbjzg6He%DfzLiF3>y%%bRjN%qmm+@TLTv>y+YYA1%eB{-2`ngSlK-iHgiw+*@nO)J zB`_%2jAW{4!10qkp3&u~C@EK9YF2K?$bv%Am#gD=H>Db3E%L9ArbC;$!b!xIcD6-d zu+gDG(K@PpZ$Eqe%*8!7z4lI0J{yI;CfDU`%yDoQ0wsW*hG?8#B&2$u+fL?)N)2^$ zy^cdvAx-{5f{>wsFC*KUepwx@zz0GJ4oL54Q&P&0!70N1tlQ`2=YP-!AC7?j zIysBd0qGTylun)tE?j&7Q65pw-0YElXZSpFJ7r48~|KLkC(ld(?vO zN!Gje-ZyhgG4|%kj}9wye8FNrZIc_B{`1sQlA}{tUaj+H(xmLHw;}NQ_!(S@#}?Da z5b^S7JMMr*isx&)Ns8$_-3HqQ!!Nrxjd_t@#oWKBXL9_OFUI5~IA+Os{C?3>cJ1&4 ze<5RR*@}5sc$lXZs@FYNcG)@C``LCrPb?K%XdN>Wc>LU5toNGsY??VgX4g|e ztYN>e&g)f0uxNqAkgV z>sYJtU3=E7OE4Z(Q#e+C5)>w_PV$iYH~Hu&SR3$B)CkYA+9}+jY?s%_;AYQNf|!Hm zCY@A&-Wr1{IVOeQ*>$9j8=#%re&%=bvAI0V>P6xD8Z2zZG&t}Yh%z?RfMDumZsD2j z_3HA%!RI^+oA0e5b3Ss6>eNTVL3NZ!XG#h`k4#tTP;QP7)nPk*tw-O1O}lXZZ25+T zy1Jo8Hh4*4NO2QAfNYZpO%#N2w$|iSyRy}{eQ|m{R89+{FTiSVpp@h{1OSj@Ct&&f z6S)al?(_VDCS1a&bNeP#XZ-bxUU~7W(BV?5Yq4}Rbp{*sTK&!LkProtl)_f0y zF?5I#xdcq%(jq|klRXi}YnSKMy3#>fhl+JZ$3Dh_q)|ar z7H~24b6%aa-l5~;u79JGn#QeG?1Zs9R|h$$E@m;+4|kQ2e!L(YXJJ3QRhe{JiShe_ zyJ<@@gIJS~S}u49pas-jbAb{{?fU;@AlSuxF9nsF#cK*3XSBYb^oa!@B22nlwB%`; zHO^8W-QmVuN;8FmaB{~snhmh3Ii$vo?Tv~BAA`b9C%qgTzA#njJccjCD@o8MQ{BDS zm<5JOtCk9jP*(7y1U^3Zu?1Y&UOOiY2jPFGUT1#aU!kim)O%}3dJ3<_SvEN)NsYq&^9>>Sqm3XYy;Og_1UJ?SZS3hXYRn*n(#TJ&B4dC(wwb`lT8ii!`T)!RIO3?2}48A`1`XE{la&BfDWeAp}(fM6f zhZ}FQVElCdys%T!Y4>+D6XdR4xx#uZQ`z54YUsJlgSE)5wv*yLtZL*o98W3Rc;Ve} z9{aPdjYaQCAQ`bfaf6V5Ot`jyw-5s?cV=Alrb)eFZTzIBaI3zT>4i4USX;97xR1YM z@5Zh9*Z=DVUiBi))xnsPT!;ztHYTA7kLZbhkAaUFSuE9Fan-1xcWU*dB~J8FH%G zS$o0bKdbQ$Q%tikPr8-sDkL|GC}#_7+OCdf3Bh;LuGjm*hL&JWYPowNM~`OA{F8h`yM^T}bee~v)gUuO)by1k-u z;yhj1PC0{PrDqt%$r0bsm`4HEy9Ff`|j$9^Is4v)^bp+qFH*)TsDUV9(r8l(k!QP0e ztOWS8!p`#}OFQZVrNQd~vRTxTD#rXO3deTsCm%Z4;{sD0RSJWAPR48Iq86T5T9#)& zVgdUN{1oS8knT=o9g2h6YLtf~MZEQs-M&0;F~Z{|zY=<|ISjD9dUn_c%p5L=*bO++ zg~%_420kq1=;E8m)XYv zbt|{N@q#b}X3NLx?`73rB*B)2ENv*icqZrDuePY+TRVc14bsDb5v+VdJ5M;#b; zikCbi53jZhF~sM7GhuCBcZ+$8Jz`ffiNg^sU&6Z(; z3oV@0C(Ebd*+r@t5!ZhBtB>PBd(9TrI1EGPO%~0FT@;>-aoD3K2h2d&RUndcO{q8*_?bdqe za6D+97cB)-Jodl$&5zKqmh_?@e!jXLM-kJ%WJ={K#hOxW&Pw&sbYh_WEp2#J=X7}+ zABbUa5wMPUEPfzc+G9UUrl=%Iytp4CJ%I~1X8Zflufdnq^5+~^bKs)izh^9{)Is|? zx5v&XQRl(2Ipt}VH^a(g@FyQRkJLE3U+E;f$%)IgJ)4mrB7u;HTJ4m`4xSo##@kC!3clma6f0?aNg3kpBYER(T`xHhp zl^0Xg1eV9ixDB|ALBS#KN+Y<*@#fVW)tC|C0^u9#D!$!?N8UfwH<@yRFHngA$;tl{ z6h7<0e82tI9GLScc7DzUF~js6sm_zbik0tXlZUu0E${iFA}0nHN;$9k&qK^Gt<~%% zdDNB|@IG{`8}Zo7+Fju~_Zi06`Jg6ZhA}&`JYOC@v7r3rf4+&gnZcjCIZrPFWLj2C z=G$sZ5l1~6pV1E#%jZ@#RcD?+oD)eEeStY@OD@pafZAYgPZPcGFP~e*zG0Av_;lgu zBbJHNIRR=qR*cGP+B*?5i~$!oa$*>;wm(|ainpl)ntMI!wVKROOq`e6wr0GVsJqa-T7KEMmd&aehy$3d?bLiUVGcvZ$JhgL z5}d(reINMB?QXswP_M`1ZLI%?-99QzP)zhIdOnB~>Z>cRJSNYQQpUUCEMiZ;rMr>$ z96tOcZjCC(0P%EosZ*{crF=fr`7_?bPhdkTdyVXepU6xx+~;l>A}%`yRcD?O$n}Pe zUVV3K5YM9=wbik6m0|dQ(#JfVQS}!;k#9k%m7ioE##=KSdOp(slgzPLGE>a&i%%jh z(*?a}Kan>9YOgzIj=04l+jQ4CTB3^k%*_p$r?c#zOXa;6;8uEf0pb=f&$#)FtQ08g z+DdnYqX4lA+R}G5$h`=I#>xGd!($dbWn&F<5{_k`VqOGx9d{{|`%Md79Q6?&UoNyS zo2OVSCe2&T196Ok(N%*53K(vJgU8wsclCvz)a1`ahS7Ry58|^1K$7hFx%>kkIiIig zN=Mx4V@v;}CF62Zrns2czZ&dDd;~~sQTJ+vR6?!qDBXp46RoDGJFXk%8j}95vl#Ja zo~X1TUaE*2vp4qq)gN!Wvp;(Eo@TDDk4i4ePdt+#2< zJ(n;4WvyL^8HQCX{)a*s2BiPceF3p^&F^D1*<8LdSusT}Ph$>P@BYhfFGbzE;|;~# zTMlS{bJ0KNSVp8n#fOMb=K}Nn#q$+)Z;J-Zl^wuPY+tS*E9Tk@2QeoFnj{^yQ=DJm z)3b4=}@sg-!}S?OxUK`?YF#HK1mi5Z*OM7)C2E5OY9vOM&(mClvdL^SP-N zQoI`Ia!IeDdnz;Cg%bZIDh#nBhKgXVPyxB5IVS7!dIeHGnxIbDizy0#v1>>2c&vsL`*;}&ig#E5lZW3IAzZX_!$NOD75 zzyZv!WGddkkY;9J_DlF@Ceh8MqDe6shYw+18=J--Wg=Zp`@olZh_%qT@z!H=fnjuP z4`?G6ul*HQCT1G(!e=oLxegoKTk@nB{tGNa#LcD7QKpO>xMJ~qCF0sKptftp99SyF zdOnZYhN;c;|B{ghebJ42sq}--3-p#s^eE!iC(iZ?}ENfYWX|7Rm358C*jG|Y7!0{@lpr2Hr*ZTVr$6&wtcjxyyP)cy2J%t_5n z>u>F!?F@6>_5fyIujKe5rs~DJxjlCku_jj8meGnqrb98j!vmOY7>Mg{W$au^!Tz>d z%uA)CE8<~RBl?AX8xf0FeIw{A#vb-%-}9LL_dje{L8l5RozOeurjHTFgMitiOoqhe ze~bErNRv}{N@g|1l+Sw-@quMfaO@6)tCvDo)Mwb-axbM(pNfVR6SsV;I^uTLo!`&o zw72N+3Ct#)(6|(H2HliMdF~KqhB2sJRn8>eu3FAQtc|6vhiDwiLZbzb$1X=4bO&`8 zv=}W!xRQ0H3b8sYcPzua4>1L}&$2OBhK8*0TTIr>2>v`8bpri2{m)Lly)gAcDdQbK z%sZjRr*+pbZ7aWz*-$Wh6m@pX z2N4j)^f1_xjoIUyz4!2}_4r0Fdmi&{QgvqF_Y6PsyTC)3J-($r%ck`BPHDyDE?*7Vd#eo)>qNBs8O$Z@Cqew7J(wA$KFOz?@rRcCEQ>*`lch@zO=UArWyKV^yo>p; ztezvvu(3=Ie4>I_DWa^Z+*wI64i!HmKKl{O_iHQRtQ+0763i}NwZOb7cz23=F>$Z2 z!rVUn1ZNFB<{#VP_`#!yEBR{mMQQcI>_bZ7a?J4n2B&l?l`)GhPb@{eqbrpz`ri*T zStvagjoHBu8Rz%dDC4=SLopk#ptp0;Y)n;pd;oQ46GnZbl;_^zp?0nPum6uTStuoZ z?C6ZRb&b~p*~%gK>&M^0y!Fv@M5lGuF^qZ->bPms$6O1P^W;SiJj4a?z^YEId-_() z@3`KWJLO_-hmuT4`%S2icol4!g~h3yIjB8IX`w$T>B-+y6_^!sBFK6A3#BBtPcWxQ zh)!-*mMhxW;B-4;&DgBDin$)bxX8@2$9#&6@t1d%bylC(-KSF!YsT-Zyv%7+%t6Ww zbEjMszDjA&w&&c$tQzg-pPp@IjCGg+X7R3u{!eMo{tAn9Z1e%k*8di(xcuY%tflGyd}KTBSYQ=dNoqV%_-Pw#k?##XK5iiMdmX z!j+l5VZZ4%YUONMIJ-8L=5bIPG3oG=5}*E4%s)gX3V#RX%l}t$)>es{c+5-uzO#9 z!cCda7hiM0yrExHR)pGHbRQfSdSDK_yMA0NX@pom*2cFoW)H(8xcXscn8s#zAnPWuxI}<*Mw4D9XnkAx z(dKP${X-Qq$2>--crywZH@%1X{717#3zUBNtBDA8PKZ|Lgk^0ev|=6$LtX5y4tkU> zgYNSw6k-)M9(-b!RPp6HZ${nOE(TUBU53+vsH^y1@N(hGNHOerk75o%7gZcq{xWXB z_A=^ZL+3c_Sz^Rw_+U;ZHa=GnpmZSu3T~w$))D7!hOvwkQyhu9;)oy;L)3?O6J}=& z=x%vzc2LY-4r(Jt0H+a1aT@kuR?_KUOW7!f_s2b$-#S&l1w$qwKQOnlQtU| zCeB3pqiUe(l|HJMc5i)l4tU;u)PQ3`8MF zVBu}dXC}f=nO9|?m_1RLEBS$8coz~$T0>D+YSRmw1$#<6LrpM?mkt6Xk~Bae>XlOH z4jCxMVH@W3B)EyDdXbSydktbm*%-}_#m+Fi1&)|4!KzwsEc4k#Z`75kHkP~cXj6!qRxO!-GS$T$`-py%!NE` z_3YvSHTX{RFpnFmedRhd!mL~Q80J!jfyGXIniP|o;e)wTiZ5v+IvuYk95o#WM zIr3;xOkx&ls%&i4Ms5=|J76v5 zX1GP-8q)1>7qhzb!nR=+&nz?#vv?_R5tTd_0d=@`L#Qb&iZR^w=f!G&yDx_cSJ~|Y`w_ky|6;!1Ovckv-;GF=g4m@4zKdmv%qq1C_Kj2I|lXXXA(38C_z(^k-ZWMT*)m zXRJij^)^jy#q82Xz1)-R$95dXfLVDpW{p`|pxw6S*{>PEtU7jW05XXJ>M&P122Qy> zZ%T@ZHN!k5L#<>vI+<+4QEyw@M4~O0pcjX_LbTB-eD+^mY7%CZiQ@F8q!^P()QNNY z2+NjR0ctBo91?<6w9UBl`f4E@olI8%^U1u>3Y({-n2=D^b=;~DcFN{`sLK&p>!Y1C zjP{{U@KWL66R(+rdJj&z!Dvc~vC>0r#fUL>N{=SgW{iOu(v428tp{ek!S%X8bTS3j z?M1D#6SmwbC??u$E9M4Nw`1&-ec{Vcn=z4Fa0<35E(f#TnoeCnDAjLiahR3n9;ZD8 z#TY~tV{X8*aEzVO8h2z&8{Ebz*i8t=thai=xIf$isP|*S9}w?;iV4H*fa9X`nwdW8 zsF*$54F>y)rFpFP%aXU)6q@ayiZO#yiQ7pYE4a{0I;YOmAD>5bwv)YzM=}k&8 z`p|<}d~GO4DVGnRHeTBSW!4!7)?wCK0<@x(s}(eHcQ($X6r%&EqsWQ?=Q+6Iux!j~ zv)YU@!$D^g?!Y_1nQ+(wI+)cK5v)Ba#c+0_4o_x<;w*MOpt~Bg+Q0^7KC=-UwYOJg zgFi~S{5POZi3@Hto|IyYQTr62M-8brS~Z5ktT$;g#`s<{)axXu6d)C>5%n41aM5%! zis2e_P)py3wa!F;6zT(R1^}UlFfLY#S!cDEqmW7#X~4&AAwo;#`FD1 zC0hWfBV#rILSIoB?yZF-(2i8H_DIyunD+bTGnFxa>A*tF!m9z+d9N4L=v`R92;es3 ztGyh+m(K_4UACCry-9#IN3#ur=v^4g2IyjZU9t+)J14ecf&g`iAZOTsmAN<3Od+s6 zaNxj7#>KPVf-v?jCsd5Nv#}r&sbpYaq>|Zg z#C@)-0mAnhhKVqGM4X&rJ2dEvy@n4-#Y4rk}$Fgt!(RY7rwKDENmiWfF0`j3~{zz zH|}bI-Jm)l#i#*lZ?6j!Azq1eU{+lopexOyj(a|V$xc;4%fE&Y{UQJJG=%bb72I&330jj2K&Q;({(v{lW`$yF6-%JM?- zhKTioOmEX5v{58j#oXG8H#U52%pQ$;`&~v7t*b@sEhFV*BWvjfYR?15Myzk$Cdiro z#YRcrumJuC{ZIP}nWA)b)t}TunMpXSZ`?F*rktdz6o>X+d;LnzBORV zkkLlBqr^5~<~bhUZM%2I%OAJv&bUTzBCkm{h_k7r|7#L0Bwdyy%8P7sAn?ur1n1@ zJ674#+mrgY@B0CMM=!ddq7yO2bkQHEx**asHaAsS-3OrmE<>Yxk{u<6vJ4&G_*+{? zzbycOWz}T>nlU8!Vl)`4uh{VT5B7s}VQb#@ zHGm3>-p?>snC+Co7t@^W3jo2H8vuaMOpJH8`ot8&(8MA%8+9IB#ud60Q?UW@Ti+%_ zN=xTZs+Ie109%=<GOk^&^qGZZivv+1EvG1Bs(#nE5e05qRw zM7-WftQcif?6c|v*i1`hjn@#r^+Yc1xWJB)D7|n1@Mc83`RJmL)s%5)LpLAbF#|m*GrJWiW#M4L%J5+OhG{sE`3odaGc5oGduX{(r{La$;;o7;;{!yjK`T;-*(NW5vm@5FV^4`&AY7bkl zzvtwKp8>#t@PGo5004wQd%w_suai^9$1x+vN6Or2ztPD5;z9u~E8+M#Wl+pI0I0Mb zSvCbfY`y-TlV3vvAY4dzK!G?2(A|A+*`yADduLMKxOZ5=UKW6w5)PDB2E}m4OeALP zhppFtHd4Hz5&+IK^wjn6P+|aJRGn{XZZt}UX50&Kya@oyl_1_2is@tK4eSHBR~S`> z?Cu`SvyUT`(7jY+c;}ER0$?a4t`g#L>8l@>GV&Z1fY6bcR?R2r{>%zBC9k7<6vVz|HD$mZ#@s_N2{(J>htAi0m4lgn#_@f zM)xyhQN#eShU+q@+o;ku0zxrwbf(L&-Z38<;!DB+Bny}^m?x%~K4vnlJEZ{IZ)gAj ztK9q%pk4ci%|iUvm&&joxXGrR0x;6~6adnhIpER}8^sLJxB6xTZvc34Kpg;TZ`p

^EE6w}L02@mNv0Pw#job9Zi{8uRamO#5# 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 z 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�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 z zvL@yby1pph(4yt-c?EA>XbsukoXQhKlER#6>f|WcYBBYtl#>vmRN^!U;K?LyC2YA? zuzBul)OS9LAtHyrna7u}toeRhwx4U~Dc_reDLg69EtBg?C(G~Kd*Kjvg?PvAG#svwuaIfK2q5jj2lSNlzlGxxp}eF_m1^3{1hT zFgw^G*He6@anC9_ge2*(JzCC{D7WrE z#Zb)tHx6YfAY*ig`Zi1N0%=OOTHG9y+fYAGUO{e~KaDPWXy^S<*30`E+CPd%6l;k4 z^4VeIiMj>o!s*63MW(&S>c$`e-!@-kLzP+WJh7?b*d2`$Uq7(GXl~P{>j#oGBok-x zQMb!sNg};7ncR0RAlVIcfaZN>QAe;E`}V+T%1Y|pqCMD|+l2zI9NBnh$Se9|hwoH~ z*=W(R)6sE`d$PO8Lw=k@_EY1*c0b;x2%gvN@{aL)qEluzk$7L#YmU2q!a@xhUf;V_ zTyq-PN_!GY7Q^AM5hNemMA<&jwsbz^7HzuD=51N_1pGI8Jjd(^kbNIezjbLy5y{VQ zK$s^JFLZ@9SQGT5$LYV!+MJeJFj`dW99o6N(k6Ue`dNFG`p{0sSNbB3R&X)D8=q37 zRJQb4wOyC^I(?hAG1GYV{E=(F$5ey5BWv2A76mT7w7r0K4X~X+f)>KbfoCJ0<;IZ; zPD1i#iobt%JW#xNI>DJ~P11&OervdFs4vAGpEOV0+l!WP%E|sD!XF%6uzIBLeQPHu zi)ivl(1G*L z`cQ|pt-Cgn&>?2!`txmQAL9m+&D~Jf3+2i608Zy)bY%mHRcbzD4`*7YL6RH6D1ddx zq{URqhf_#&bX_Z_^1)-&LDlo1Dyr4xT=K?xAlE8Q?3`RsUot!_(0^@MEo`GkQZ_|o z;CbAEq*}^$taE1T`6a~qQbA=2i;hy6pOaIM7PDu$go$3Ey2cR#p8#M(_M;qRLV61W za1xhIdGAAg>+{C8fAN5S+DgyJmZuL?)J8tAKX93w-Y19=M-ih1fO1rI%R5dd(C1X& zAmLs*A;Ga$%)-WOXpC)d+Li3;!Z=l$T$Rb}nh0l2- z8?HnB6hQjl<`7gCQ6>Iug^ULK%bx*4U}97tRtBYV{K_d6>b{(KE2s1Vuq$ zvK63056lM6Y^4$|*(Pm05IlISBcXUk7iQskazahg{%R!%LQRa!d7as@3zpr;N=|ec zkUuVzJP-6tNpv{@3HW*@QY^1(&|HnzvZl&8QH(wxBGH*F0^hLgSliDFlZgu^I;-)I zY~Q^XRE6et``J9^s9jImj*)%i%e~35rgkO7LG*#UnDROAgrd`jBR+z+KTb-GZI~yt zPX2+V^s5i*?SpxK=K$qLU<2TAp9GX!8wz)^D;x?C@6#-&9rx>2fh-SI5`N!?U|^T< zOu0K3!ihYbg*7=tvXu5$a_kbE#j-6k)OWPy$!Sk&2Rdt?(=AjphB}NpsNRACD`h(D zCN8}eMC2P}<;G1+v{xaCFHmItI(yc-aZ3EYIi1IGv`MvDdQL$thYNcHJr;>!+45;Q@9gS&gAX7!`IvJo>sHzB(jGRac%V8%{z*?&YfSrFmBC#G3+L< z7r?lxt+JNIdmhiC4*L^B*qBVswK}&ozM6)7?eEC* z+{e1;Iyp}En;L&!~n&>8LQWt=6=HdcX(=x$zeK8KM90DBIq(E8^0rEwvlyfC?|g0#fD(P`>*+FN z-HCqT5g~6O#7s*K{lF7VLaFx$1AwFnRHE3GkkTdizNBO0PxnX~5j_H&qLq7!guZb!c&Od8Kyun~F zM&!U`(d1iCVL0Y+2i4tQI+5wFolC8&C)iV61CR%s{6vz@VSm_87;Ih@dWaggl?)B| ztMZfO;Kg%~y6kssHzGNfv~7FY;}XaT$dprxm$PwR^*k#HzrDS^6OY`xuY1DzFwof= z1_4*YY}UmRy2dLrX7sUr$}&l$hJfMJC~&#ML*Cqj9W{_zf*MH>(Nx5APGT3>hFb>Ko5JD`uA;b*X@)^X6Z?f)h<bmQ z6DCwMZKLh7dRyDLpR0-0NHkHG-X07!0DJGZs zb{Ds@|IoF?=~?f_b+p7T@@kdyppO z42k%FkZ@Z~1ksIztz9C1%{(l9hgLhSL{Q5)wDNui%W~OOBTvJGc#4UeT3V#4WZwd+ zeP^EVpb`1O)r5&{1h0K@>fNSa=U~?$c5!E3Oke8B2Yj2fSX|(pg7lhxukpR?w2L*C zq$`QlV7reQHBfWRKR@-(}pIF0OMYn>V zdr;cb>J*29d|n5wfG-AEGy?KKVP`m$9>F%X%n%jniCQz0o*g6a(Mo8VD+Nnll=bwV zge^RNcP5G~C{*J&-vzWSD0K$}-X{K<-5okAn7QP18_<=mc+K=~1)jw_!F+At7yUi9 zQ|{VU>^dSwBzzx2KFSL;l)=26c5>iUeW$8N18YaYX%khwFjJm@={Ia!p#~3KuziZG z-)+L^8@F;g-LY561(8#F3d>~GlpG#Kd81$V?tpN6zp(F!@vERVgv9&$UnK@%Dm4t| zq7BCN;Lzvq393s4Q%6+9$(CfF}58J=|_m=rM@@C zl=GxGb*@aRA(fSs+#dw2q0 z)a=`lq*u#Bj9Df>V)Yc=L6U{?hSSc6Mf{2aD{13lhrRO`y10 zcb~;x7f8EwpYuZp>4lW10H3*=`|Ri3f7)OpId)7gL>E1`ng}ckSsHa&`Ld zDN(n8rq>V3u?Bs%PkzcQLI0l3-{Zkc3X7fejycUq*XKZX`nc4b%6e)zeZa%sO!qfq zv(bku-9e0TJWvj1t2w}ztV%uP2966{{iHJoSuVDC=%0!(=~)?e6sH~Z(Gx6{jjNEP z`bHW`qZ02fmINpY#7Y9f50`@>rGk2$r4|PR>F)bATt|n3;xu1Y0*AUzk%aT%o!*~) z+6t8^u5Qnap`A#4>tlDl*}%EF>H&ZwQy{Z2vHRXUz_kKb6w07y0Hn=lA;J=aAO zCRBxqWf9DVgs@oFh+6{)PgETdIh!rHAMlYGupys__t1^qL>_k7%fQ^zJbinLztKhOBib;l`dQ@B3 z05{Pa8xsJk84v4+QP2Yo2aPj?C@!m&w5iZFUIdmmpdxKRl^FpIb1U_S$$gBB;rsY` zpfvW}!rqpUHzM=rO1KZqCj<7?^ZB8&qJXjkm*^Ri&_^wg zr^^D&-#s%$5-2QLj=CtxyFK$=_Vqn%8KC$CA$}xUo^ZcZ#$>-tXL7YGs~7+C`>Vb$ zcUR)n`vK?fF9W{mIa>KA@!&Ujx?vTIvg?ng+QKkroHmmP# zw1~|)V_~_BEd+z8tyAMEYHA=oZ{7i(j^&erg^)1jtIL!0bMjo?pVQFdQ~<&q*r|mq zAgd7!jB7CH;1Zcapzga{*s=$Q3*$mh`7!sjn2-Z1F+%+`e(<&?-lc=fuJJHi-f&7~t) zv=ZT(>eW~MiEu71791tSb0>6UQZ%WinDh7E%ythdDrL3b-v!|PdHD|h`1-C$O=U8= z^4bHvYq0kQ{@yat>hZvO&OC`%SrgZtahpK{qr4hj9^xDp^q*!qpx5n@Pm669FAb97zWwTS_ z7Sj3h8yn!#*%35aZDh5fF3I|IkD}Ip79k3r3K&R)SF~`QkTAd8lShF9!E}RsiL>5v zLHQ$GN2{z2%oz)p8p$5TYY&XDM=XF=2#NFvC2S&NgrK$>r@Q9yc{&RP$VK+Ix0*=% zF+(#5B4uSFegOSNp(%y^x&s3LUM>2->$J#Mw)f?w^VNFw6be5tQSV#iTjHUH7P!V9 zkF>aC$OREb_xtvB>g5+HUZ!7lZIBr|`fs*IN;cw+ zZ{z17KAr!haEv&q0fd<>5ACP_JbDpHMGd82kcs_YqyIJfU!(su`d_2}zZyl*A=C8i z+VRWFevbQN!{eWxU&IZRn&Q5vOP9+wKyZr4K)lWH;NYCYR+*(a&M-h_XDSM^I?)1| ze*f5<7`nGujJtV8D8k-FhECy$vVr8SlF} zmlh|i_lEn;cLfw|89S%Tc{%iiSE_!y6`k_QcV>-A}=%`Rh72L=vwAgn?tXG^P7h~z2wP}FY`)Zujg85 zM-h@*H<|Ix7OKR-izJcgta7Nb)ZeVzH zbTL)Zk^9~DVF8uvV43-xKK%zs<8<`8$6@StzvMZ#u*TKqWr;)lx*sXBkH$!g)Dxc4 zs_w=U=2Jte@9rzQ9W_jb4Ww=vZqqs-spFFPE!OT{)*ipN-j~{ohZ_=fcP}vRnDqt2Vh@VdwDUi?tcV*#tG! ziiAPc$!#_HEz2$Q{gwNjC=+kXY9zUGFLzbw-PR#Xn8f$mROn8f>Efh2=fpIue2_e8 zwYXuQKy*9wN=E6iP8c6jrr7JSuFh}XpxDp8RA$*8UuU{{co7dZR{8VS^hqrjOZ?$v zE3(V91szuw)>=TOOzq0R-XqsGY&eW>3x%HeGvn#Wbhu{G+r)BW6R8`seTF!Si1~b;(r&RA)(s=9vP@L>d0^GXi``YHNlRO&FIu5O zHnHp7FaNK*?+j~liNcf^lqMim<$wxf@)X^81H{Y;3foY6QA^EtJjjpgC-9UH5n1B zHYQkI>^Jxq__x`zA;i6~73bW@20^4L1%HQe#iqnEyi3!pPc!ODixqDjo4e9#xd4~w z-RkzKm8#|U`K-KqX$k>aga=rbxg;u|Sjg|&iW1Rkf*ac8_U3S~1xX@6O(#?{~9xU{#EUzRqs2Fi{-P`tOf>%F~SNL=dVx91o+ z6E><|i*WAd+gIruY9|Nj3yt&!PQCkLzDl}>-8i+iMH*kuo<)%Ho5uSO_5&3rmIAi- zPej&J+d3XduQix8SH2-DeBzTp?3cCj?YCdg+y6R(*f)-+{GFpxi`YLvwEC0MSZY<2 ziKJzsP?b$J+0ErUmW)~;3JsSn>*YosTzOd zu%3+n^q_1D~7kU(R)hs{#XL%bOoYelGUjN^w z3H*P^D0iOzJsX2l%lGjJ0(SzAyMyn*%&HpPlBzqOzTi zEw*nj?DX;WF6WdmMo%}#vtZj8fko0_Ov>h^TjXCN#a?4VPVfvb^yWS}DPvLA(wcBV z$hQWzY(0B?qTkZ9RW_D_2r2>y<)U;y3(ymx_m)=y$P$W4yH$>sME=$h3AV9GvnaOH zUfCmKQ)@rhC){qp=uMBF7K-{c1V2x zJjG$MCv|fFpfOcU?cIx2Vfq?h=Y{)ig5Z8AZ+zd?{g1<5-P+ezAa40qm3_(w+mqMt zx?w*}KO>z0c0h^07avmh9*U>w&AoqVP4mfWGX=FhQArIt*g2RPD+eqY1YE)qNo^!x$7<~Z^HmLK=8g`={+0|S5e6Zs! z4($u*`!Lcii5}_<7%w^XO6&XuF0=*6=y@5|8DFft5cc@7Yi~ixnbt-8snU$9O--5# z-sT7L6qhb`=bNMb^*o+&7Y^Fd#xuO${0N3oSqEjQtb?>o3}C4-=HqSVOWz+aQ4rQ8 zx{5qLTKpm5V4QT<#!;uG41be+%lVB|8y8wm*M1U0&o-YC#Mwe}lsOaq*tON}dF>qs z^2(j^1w$n+7l~knqvdnzG^mB%fS5&!=h_p8J1+h5RR+=jiD$5vsn7%ct!~-jHba>a zhouF^sloJh!B&sX6;qR>*dYU3NREhcyzrHkcXX@L#q;qwVI$HZ1Mk zoC0Gy{b_x_=cItJZ83^Lm@_jZD3#)`CySfjiHB5|U{K~wA^#;DY*t2X?ZIQ5-cPjq zl9nY_`dfU_ECr;Gr=!gNo1gF*T;GOdE5T2$@6U9`o zC{6LfK{ZTDisyCR-xIea*e;)QPyBU07g+uhPhPT9>kSFke8YmQU{iv(vgq|@#!q6z zid4*~UD;)Jt31=8m*kpFtGdAId8vcdYwaPJZ5OX6)_W@6E3=2l>aVV@uA9-^FI3rWFvEP7;pj^x*XSF3<-W53#~Wll*r=(= zG*mKPHYgIL1ejOr;NKSs#Hxbz)i@HwUl_I(r7gU(?di+lis{SP3Tw4=KBtsykayal zHQc$=%#s;09n|jDEtqA8No5c`iMYW{`HHF>Iw>ZTQU5nM5 zR;2kWj7_aKH(iEGa_lNzjvi0V7Lp}A%*pJQ%ljZGyS*L+Bh_pioYdA;#4F%RSOUGj z`^f*!u$jSKN{chHu|q~+YpGW^ul6DemquCD>Pi6?TKubcR(0;Ih8CchD1qG(w0j~ zw)V&ONSal7q~5?J6OW^iJQY~m`%&#Z{zUInmA5F%@Lsu35@S>c@Ml5=a_ys zC@BgCENJGYmaHY5PV$_BuAl$^2?MYT{!zk(VS^h zPE_Re`kg?!0eD1FgL3(P$NY(FH;*9oXt_4L!Yg#UlqgSEO6T{Hz#hTEf@M=y7u^Ke zwiLga62%BxZeXa?%0!q<FX`uoZTvM9I}f-2R9c4xz4QR_e&pg7~k79aBn zTJAwPw$I`})NbK)$*H*14Qskb(1>9*zU@r#H#C<6kI!t^3B6YkRA-G zRQ7hVr=dM{5%7wBU~#M7Ue|RI10U5Q_2J$@Df2&**`+FaMY(rQ zU?rYeJah+2 zrc7y{wr1!6@w7lmXQWmFzm{CWZGd(^@$|c^J1JFIxAIq*}IljL@fV4j(&v5|E*gEQ? z8Y0uYX4~5OU%jJXoQ?CL?_^qmI3V^yGTkTYPMtM(Z3c!>^^1328x1J4VK8+?FfBq=ry}yq(I8k z(*!^eYtgk0e`;;XwChx&)jToVdEw7GU7_~z7gVL7D`OO`{20roF-)+Yv=F9#6A9{& zS6*f~(+PAG0p5-qD{2HNq3Rt5qgya%+2`;)ObbmGiZ2zlF}#Bf0{omt3>EZc>+Xa( z5lZxnJ2Eev=dE&Ddk;{iNPlT~)uQ_b5P;~=F65;VGom_u2~l4xrK@vK5g{MjrqZOIv&QlDsIfG zni@VJiw&kj&rzlISpqFkc{*Dls5yE&(>II`Ar>N$^TG=Xf44=2#a8xm2A3$|g1$`C zfNshF+)TrF)uW{~QSrPfn`~qT1;|gDWwamGF6Z*CL4oE#G_ZVKp%mTQlsU}3F$Jsk z2N0gBNXk7qoG`)k4k1a?N3@@)1DzO?nbGTswRxSYKAlr>R!L6ItJ2gv1+v8fark+J zk+8QOJw*qZ^gUNxSIXYf)RN8f31G?;c~GUYG20 z26~9eQaNG+xUKNgSMU@6Y^6#I-F2a%9Ts0&a;*=s-Jt6^pMIJ!Z^iDJRGW8Co);?d z^Pr2U!UG&){}Bl*{-Etc`JEdbfuoqo3>nYDf?le|4#Ok&o>ls;E~AOkm37{wx{hUv z5tQKkl-62o){Px1dPmpuDo3GLRIz7rt<=^B03<7NF21@c`Lw~~v@u%p^&`ju+6^~? zEm;qhK}-+0zYcpWQ>|cq&^Un2qAm>8Y~38Mf;puV!hb}Yn_Jl0+RlwOFXk+j^ErIu z))x1s;C0ICN@SpIb3S|Bk8_TYJjIoAHAAi#$Cc@&yxW3WQ{>ov1s(@_)jd>KH(0lN zR(u~r$HdIX!dfD1o2vDVhM3X52bazGz!8;*+o?8}YZrZ0BP2kR1+DhqDmikqU;i#8 z*OCBnwYWZcK~hTAbGnCMjC4Y>RY@>uJ`HqorTuMREV3KS%_>%g$$ZI9rRlAUx3x04 zP8pmF;~XJM+)_4iY5mr6k&vvc>?uph!NI$v8 z&mq9{pd=2;lC}(!zkl@lagFnhTYm3hgD0;b_A;AEi)C^=%;;iIhB=B8+z#$VZvP|j znja~YwTUwNQT)jSp>sxATN`66mZ)dWCcB)K6Krv5_zx+r!ySwV+U#BC1%)l?GEB+) zW5e|-OW}NfF$ILif(`0#a?t9jB zjj1By2;c-|O{hTkgYX*|N~8y4AtpE%-hZBh^?;ID4=vn+2+!|eQb-0rf3d)>ot4et zfaWqWLB}6jx1HXKTXK|@a>6M!r>Lyv9Z<1uad{lcA&u~ z{h4FwR-{OI1oTG)B{B`rzx%~vl_w!s`drk-Eq%j|MsCt;D>mLA$ zNzS=>$p;SKN&DhFz5acmNGSap;Xq%rv8E<4``!tW=tm8)sfMh+ghZP-l#fp8)J&>! z^`2srXaK@*V1K%S&pXB7Tserem{s>6X48QBD(|irjg?$Z8XP!Wz9;4~x))CRk?kf; z+@I-LC2CN$UoVFq3Rc-YMb)@ zMmJ=CcayNU-VSSym*Hn`9L!SEQ7PYl-7Sfl{uq(-^~`b5YKIAqoxIX(8|fF;?zv3* zj=Q{-f6zz0Nn3jw_Sy_0_C$A=Wf7JXv@P>;^G;n^DV4@a<1{O zu$kf|sjhgLAV>xYwXDM5a?!@4cVf+Dz0EZM_u+&RZWgqaPX zd3Vd;sC=^_t_8Et0NbOr<2U*_Cnf!r_icaEg$57_-WDjx352}s&{TfSu9Je>NY#gm zouR?#C&8qScgTUGgb^!jGmV8oin8}>TKI#UCl5|KsDW)XMem%NO~v76^C2G|hyU}9 z38tp=bo4~lYq5d8J6lq@2-H6=SQUR=nsNkThvWc4FcAI_(Mp$3vB9=i?xCpLcaNI6 zU=6%5v_wAoYo6(s``Z!TRpxgoDZVqU(PpQK@Edu{KGJ-St*r&oRkWwzVzroz&o_=a zVk_pe(oJeNw~Ez)SpP}XNR7bHN#jp1(?)S~cVpz=Pd<^0I>ub)2jhNOY5lbAOIJW5^%11vcB=(>PeNXuug5Q@)gmCM;tmn)fShuzU?auJqrIBL$$jaH&fX7vkRv(ymuL8-= zQRHoD(#1z&2``G$dY*wL=;uaXWW|0K%QJm1ljkP^96o*RK^a5i5A`&dmUOCx3Ah5< zD4`{EwIC+6NQw^1c`H{;O2o3pgrNi$^Y~tCOndU>`V+i7BhFL!1~S5v^_B&0_eQ#k zIMg_8KhT2~nDMg%|6hlLf$}zxvz~`TJaUVxhC;4ABWNI85ZRp zkD&La9WuJo>Ywy#YEm?v?=$~K$s-@7WxbuUv6U#9+Y*hF_0hoL-gZ}~WihDH>rY|) z-tL)?XDE)`%T&YJvCyD@%jHK!mjH*0^B{1Slh!cmDI(bw?3pWrN}E)jc8RG!6@5MW6Wj zcq`IL*z_wDoA2}0A1f7n#QLmsQd8vc8Q|yxhfjo?nec z9(;>LYdGn;KU&IKLAucWn;J1~lx#G4+yhAQ*>mY;%QZDMW9r2t<~LTp@gG3zhauDN z#7l2Ed+=ZL{XVZd6VnYazquENvJCRS8EYSj*kP<&B(~Zho~BoZ>Io&`z5C(NoTNu|m=9anbbE{YS*Sl6AFQ-#AnSiz(&~G8Kkd$7Q({>bP5b$* zRKuojzUsao#JRT@OSS{6)!UQ<)T%3sY=D3YU*}O7om+R=Daape2r$0^oo!2*j@ACU zXuL=!+-0s=M3f*>44@z1pB}6%s2;{0bo>~* zOm@@}Sj_k0#o^XAn+wEDwlg-Jj}mL1ke;|I>RQ>~@#gj=#lRxAU)rHBcjujk;1;a< zuTN!7WoP@Hd{v&tkbk*2&x;9nL>&ps3tUR5G$`Ix&Qdbbk7DnjwRAIIX`4EeDMDGY z3#MlQVs-ATYS9l}d|cKVWQa*OgW!6EUMlJCy4vrQ^SelRkN+SYK)x@Q0;&{ZA+UoW z+;*z|ks3VaU83@Htp1>=EJd{B=~xhHdG4Muqd83@wX^X6xJm zC3$*00J?1eLlM947;@~ZhO149gI?kNMh9*kr%}rC^*9ajU|;=y_4>o*Ff8ty4O&av zu7c`m_#6kjO8r9DqlIJ3__Ug<1Gg})7hi#P32z5$R%_hCx1%1EF2HFg6=Z_6S01U` z_&yApR)>7Cx*xDeAV6iRy=1o)qO(N+^ymkq+j2ImltlP=nkbi)7se*RIqjKis3qE2 z6xi$WQKFZ7T7KFAD=tydaVc;-v*s?e?qSSC_JZQ+n<<7bj{q*y#uT`6YdNV;LnD2@ zJVbw8V?$^If z^{~X~wwJYBx2ug0N1^CRD1PETxh>ky?5u2%#B+tMoyO^rvbN2)U0wd;V}=rOb9NWY z7+%zJq#aYr;K(IXRvA5OLu%>(=$Ci`5^#@)ZZZg`ndy&;EluS*WC+Qq6M_IU4 zUp7s=)$3RqMLohX(KbcU{^Lg%bd2esk_f3paQH98h@YYio2j+ z+=%G(KsMpa_*><$Dd+b0ClL9;=KG|XPom9my`%+H-;sVr9Cb|~5DBONn@PMD8#C4$ zdeMh7#^7A^%o}SVO02^R%K5#TG0~(N-C>*|H>h}R?L&m~hJaPcY&V>6^3D9)Z%4iLbG`3e>Mxk_>q*HrJS@xgopx1?I zV9NIL&)_kd?>TSRWLGMsn%n8(=8}iyz1WlW@A5I1ZPpme?ev(8a01Kym$H)waANi` z1ZlIpfyD~)fkT6lqFMt!>8SpDRV7usazP9VQs*K9t@4A<+D^wUrKLLh8e z;{2k51GZ<+85D3x;&ooV;^H-#f85;N%xGNjC2>-m_W|__Z9d1SbeWhxQq3AnA{z43 zEK{Fy=izsz<(U=#a7+ZnmV3@t5UXaD-&lWiarP)S*VveiJcH-{2=l4be5W(5D~t zwl|_8xwrfD=SF2&sAONS=6eFna`U{=xUOb1jl8*H^+uFhF%;^xs7 zk1QOu3D-CPgloxJ|7_`@-1>`x87elftQ*~Qlng+)i=q7@yY4N1ZTg2fQd%e&TnCJk zG@H;#y*3{wWx+M&(r_U#EB2#9NWkvKyRfel4x-K8yLCl&TG5)iKZ`Wj;OjUZ*Y++A zFH5!^EP}jfyi5)XfU)y57#%+nxHdlI&KrJ{Sx!t3`;WQ#s-B*(gFg-D$15c)W&bTyi)S|CWy}I>}w7DxlQ$C?*a0_gMzBf zp^+3^q5>%(sfK6Z z+Tkx-K6;@nTJ^Q+tEX~fZ~5h>G*}UXv5LbPSA=@52U7$Aw*;V{;kiVyHx0`9)2sG1 zwS${ji}uTHL80mHB%cGEg>5BiD+_>H=AG>FD^5n!bbf69 z{{3B5)AUwXu(u3=P!aih>!biU7&AZ@=pi%)DP7FuoVCDY}Le5b6C@RFZ<# z%i-l>P&DG=&!lM=CAfWMz=7b0$%wRjBRhFFd4~-W#<`#@9(F_VRIzk1Vs|rRO3Y!J z*PQ&HhxSUhkr!eExh?|;VsFHY3@UB|;a}jhEx!KM`8D;=NcEoW5QH;powt23Zm>xa z-S8~>d<#_T{QNb~J)J}I()HXBcs$E(v#-9jQO>`F9<~I&SoL=i9gwyk_`3Sl?I0?g zRQJU3Y0>c^d?*3`U}Ied^d{wsd^9=cQc1*(V2l7jArA5=ezY=Gd2`Nlu-gU!d3|#* z{s=OZ_P+8sV=dVPF_~nLJtGd$uKpBh)|bW7Z(o`5C~dbThxh2Jf9bWQzFP}z!qSKfQ7ni{<7s!4RL0$^K7+K4-u7c5Nb$9m5H%zaNb z>ODPr_Pef?))y|AWVYFC7EN_A-v5{*H+5u`2Ekxmq@lhha9H_yXV|Y2>Y$IYvqD*B z?A-wW7AezG>iAXN{$&$tSF$uTL|eqxIq;vN4g)X-7v1oGU5q!Usby8Hf-9tAL_wDu z+P}%vB~7h)N(q_Eh_Cxbao#WZN@n&`x4;1s}BWM?{l!IUmx zoGR2C zkv8#kJrSfdvb0ob$J0Q&Wn5)_3{`YoCs2?qL?#4rS12yi1AuBmg=i0@fLRcJxvtnI z=$>5cr)Niy?-;5^nb9n~in2Y5|0IJAfN}BtwI>xXD4CI@H#bvy%SD5t+CS8r3{w18 zx;k^~+h?RUn?ot6vq9mG+d+Veb6(yf``WD=2ZCq~cn>#VQk<2BI5qVh?PF6*zo;c3 zoe&=NRa^uPx4*1>HM)AGM{BU&1d(i2vrD`-m+B(Z71V!^adR1e=gS483NREeIsxBa zd;t16VIfMT9UqFPkpiuqN zhXH-_y5M0AP6m#7;qGpj(Ex)H`)zew=Mx0EkxKxASDTcS2&D!xgrVwkZ4A-H$!V;V z>5O=$1x3!p<3>|9+1R}$hw|V6=e<3(!-*z-Qp^sG>#Al$#GX4>h(;rjUxJmsAiFIO zC&=9_40gSFr#?zL;j;%vPf95GBs3eUMf}>s1QQ&8b2xHC0oL5;@2b&V8sZp}M^OM( zjBAKe<9N5jp#)ifWCAXN(sw5|_kuF==V%1uxd+}+LhSP`JlWk{8*TJbzovX8LshkV zU1o5Ai8v4IPyJ+E#65PXlHcJZ20sH__{OVHH z=>qwy3sr!dB}uHn?7&C$X!=klFm!O~IU!N!6Ry*g2Ig_|L)~Fa0wPTrWGT4%Dj4sk zaPQXUy#auNTmF>MwZL}VxBO2VlZkVlLFLFnWU%^D6{ zN%{nHiWTMW4{1@gdd2E%|KKWSaInPK!U0&LBP?2YxiZCCQNxxI9j!DimvA^Z0oF^y zZ#3^;#heTOpu%J!V28@M7GtZZQDTANWnefAn5W)>f!H_Sq*5L}o%^I|J~q=jeJy2b z94M2(Q1r)f~@NDKs!lO27F3>>a}Rn-5>U@rlxiZ3g*;$AG=eZ_TKIYs!GItDjq zU^sg?Z6K8YHZHoDqdw#(Wo(5%2eWr++|L9KPrBDEh#aO92KU64c&`6F+3twZS27aU<<1IxE4sI>x(?jDtf`w&1qP2sq!yDt7G6~^z ztWbrCm>znn0d8L(+mujPvukV3@>`GK2rvC|6;QwE)07*{kst}OY_f_Mv zilHU~NF|n%a2HfDDZ6w|AnJ&O1y}q@_Zv+ENOO9*(ZUyO&zR+4zJB$vCdcdW=9Tb1 zGLjyX*6MOUOgtE7z?X{}pYO6cyYXN1wSAsvdKC>aZ(3#F=P8l3cr{FKKIsg-H$TYXsj|yyb z^!)65LXU1cyO>tGY06Y*NM`iYFc`wj{`ur#N<~JV^mU!Q-{|XzILL?`{AvKC;{dq7 zd$@N?T!URYPI6b|uhpVx@1Ms|W-nW=^!G>#njrw}&lGal+RLyEJI1$({sBpcp5X`Z zKsOhA3I9#^RsaA&noai)9-w0t(*@6aWAK2mk_f`AE+-EX?>b z0000s001BW003WUZDD6+b1!psVsm41X>fE+VRUk7crYSU^ENm@ z65N7oU~sqK8r%u)4uiY<5Q4iCoZ#;6lEK~G-E|u!*S!4u2k3vQdD{<&M`ibZ-Js9v$m>$=79ytUsHbBHX zMzjbZA_)V|N~2Z<HlTwSDipBC9g!FE&`Jiyrw2IDeZ&|9s@R)F|2XA2y>s;F9P4KfMD@Om^S)C(9j00Dx^*|LHeImU==k z|0l5B+i$9i50(bVxo*%%P#wBRBOv#9Mf2A2Ke>^}i)&q8-rw6>k{uA$H6GFQd$Z^> z?9qI+eexH0f!=R*?NA1?>jz4Gc--n6yOS>@o=iaeX|i?@EA`Th{Qg2R3mlL!Y1N{~ z-c|nW6eFGQtH`$IMJZnm?@_zWks$qA^j7J~7KXDZP*g?o^r!O(K;*?|H8 zH|-9+bF>I>V9TKGNssqS;a90#DgYQHli&mZ7>H9ctBuqP41 zJ`wkRTLqc!FGABavwMW@9B+(I#xlg?X zP0$hjuQ5V)FKtI4;)icT2w2ACD`7Au5n2>62zbAOAIW>AKYWg)BpVLHRtCz&b4s(R zM5vLeOOxCPI>YjY>Pfc6^A7>of4qcrNUCi6W#-D39*dis zG3DGqC>X_+cQ{pUiM|pmBsR#}bA%7iF<{He4CxoGo$%&*5V1G_7&4GPMP2GoNQ9XY5rdju}fczDg5PBo42b z+0?=FCNYvR3=Ese-{>M`nTR+QJgV-{s*G6666|B_f8GCNp2q%7JwIJ# zy(CW!lQULFv@)+rrCK?(1na9?I`4Q8u8dq^D>vI|+TkzsUk>V8^iA}> zIPoJ$$+F4R$wc%lYNcgGWgBJ4>bL5nYO$pTs(w|H>Kv-OrHFGWF%l9jZ6)5M{8t!&L$dFA5>OC3BZBWZY+yXfVsB6cUeckEX z(_Ts1BL&M!^LWKLWH~hJRc@0&!tlFkPLG+ciin4_#i_Uc5gXW-bUSoJMPKDx+06B9 z%2HBOw92K+mCL10JGrXPi?fP4CEB&01JS+>%F^i3NLj>Ae9SsjT~=K$Mk>Zt5aheB zVlJ~OB+6?S_vp4SzDUdNG5}}GI}~qtbsqjD_G5Wfd$s#pd@qHf^{F0(^3y8H1iru@ zPA3Ne5|+W$Yh^M0ei5-k<7DI1?Vs_j(*pVPlF^drQC1MWUCLcMh#e%K`V%!dwVc9< z!bQ4@LTeFS5x+dY{NVW5`0w$BUz{0&Y>VuN8HX8*8Jo>UI-WX=O(jh&<}!7AIz`$S zO&#{ZI=tG2TIxFb^^%oYl~fDumF>lt#jT2oisji07X3BXO~Xy4%>*_3OP^M&n(UhV zj4e#?ESmpR^dlFrW9z=cu2uw$`Y?x zxmeR&=urkWzQhxH5OU7h71|Zx-eBL*HXP&bX&!1GRqA)hHVobr3!r#6d-r~y1{8y- zU@YLm1HT38!ahHG`;vFZ2=lF)Kh!Ose~Zd({f6@`_DAK9{oYD)%b~NlN^ z6-c+-+amgdxlz?Xh{SEG-#ZIbvRB`YJAa+pf)*^V`s!tR3WCAG|b{A$>=$ zyotWM;9}fT=Fg0LDI)S=iabeI-!SM)aHFVhuso<@ki7ax`YeDf(_GVGOJaKTq>4Av z^a|byXYn1JUX*`03K{oXf6|o3b;zU2uV?UO_mXRwYHd&ll z9Dv+ME6juI-u~D}HnWf>!w=ik$5njPWli}R5oMB`J1Kubguz1_T0 z`MG9lm47F-w}MTeLGQ?q-bNUkQ)G3d{b0Y-wZ(INB`p^1%|_$DAz4I1IN=dh*sFM{ zH~~wvYo7Z=p$;S6zt)l(O3MdY%_c!JpyPuLrfglbl(N)=R5W|k<&_51O^t^0`v-|t zmeg_D)%Kt!vDW-y5^XkM`3SL_Qr4U(e=ObvvN1 zLc?9F>M-gG^PqY2XPM`EsBl$y+3{n_vz>mWqMg(EAlwYxD?9~S(_-t~Jjslpno8^f z!>JV7;FqqqtV<6jR4!EY=uF5Cg`>FF-Z2z$6H1E8x8feQ?u$G+Q*&tN9G=PFzm}-V$e(2HP{+ z)2mwbY+5h8I~#pK&|{)(?uqrgPOod+_l5avUcvRwTW<&GAL#ui?z+D-&FjQy`?3ek zMP-LlhvA*b`L|`U_0V}?-M6)+%e4UO9*^AH=`|_nr{JK;xA^;5bg_@IzhXy2P(x0$ zd4za*cZ8i^k6((#Ce0?Pv+>@3zl~Pm;j;KY&Yvz$Os7rfrQW0_cH8+DzMk})5>&53 z`XHoT!=4;$26r0I=e-_l9we9fo9Ie=zGMNk@0L%s_o`FH&xr(yiSHla(r#Z&Iha=e z-8achrBxIF0BllO<`)p;<&zW@larEGQB-22qvv2{`^v`7&%?{d&BM#ZEi51?Ch|>QMpjZxTuoU; z^}Di?yn>>fyrG`HzK*Vrrk0kvhK8z|jir^fg{6g=xw(m{iJ_6PfuX;Tub;P%ua~!n ztDC!vtDCcnvxB39t)0D%t(1hMr@M!vy+dhnNl8(0abZzjPHt{?PI}s}U#V$nDX9r@ z@$s>7(UDP65s{JM5y3$}fBp#SXlrk3Xl$%+sIIK?_w#>we!0K9zc{}*JUHCi+*(>( znwg&I@9XdE=zM#Bzl7diJlsH^pC0}`KEJ;FeRqP8cjn94h@aT9rLsmp|21JkwgY)YrH?(6c$-y)ibt zJ2!c-JbSb@f3mT3y0vk!zjJkT{di|vA8ywW;nE!I+7jo}p6uV57S@*=+M5$KkRSc0 zAZe&Hd8jOPq#|XwJa4k0Vy>flp}Tc;uzhW)Yh$#3YZ9_OJ-RnPw!biQv^ssbGJm|j zcD}oHd2o7vxpKCBbbEIDbpQJH`ttfhO+mp#PcJJarKzU&O<363(a{nFDk~`|`29OG zJv}8UDLytfA}s6&7#tW7p#1&2x0jc#jg5)1@x%T7@zK%I;o;8q_V(7++Un}c^76v` z{QTV9-0bY^%*@o}rlyAa`ue)M zy4u>>nwpyG>WcF6qQb($f`Z?9dD&T6sVON*iHR}M(P5#XA;H0KZ*R}f&ySCfP$=~F z_V)Vv`ttJf?Ck9H^mKoJe|L9xV`F1&ZEbOJacXL6baZrJV4$n3tGT(kxVShXB0@_` zOHEBpT3VW!nVFWBmYVus=oEN(c!-FIA3uJCg@uKIf%#YYwsGi@|419aRYg(t{r}$p zs6yfYof|Y*GUDIVJXg-Lyo_+>ms@gfK~xx@$wXk6#Sn})&5)VN=o^?ZaLo}-8k-i{ z<{O({t?e2&p{0%XcCYhFY;5A@E*8q#*l`jV+DS}42#6RdfWWhE;R8_6TJ&dx;pZ1l z=mvDc$Ks&XVuIHN6vIXvK@@fYD-o?chyULMHm9Vr>3_tdMUMzy*<53s)DbjBU1sr^JLy1U z^gpAuW2D!1Zng(rK4jz^k9dz$QEG~tL3tex$M7QKJ}PR~QuN@i+KfEChK!%vF@#Ne z;CknVGBxbp-HtYP#M*tlb?1p*-#3jUsl9tiV7jZXG%A?IsfcO_maO7CtTzVED% zPo-6m0)e+365_ag+WkD3nAJ@{AR_PKEmo6fgmhVVm~^V%VBXU=An>gexYM}p>#X2a z?f&s5C~;{W2<##U0z26!X_kMt;SBI=_ofB{ccv%A#9z?$V;}{QLp>}C2MZTKgHYnC zEyptHb`ounjv*$2ztFpPKztK&-PmEi_@3-wEu6U7of?N%MXWURmTvkWa_Fj*`tc3B z>u?CZOG)(5=TL?)ylXv+C^ovBaL)?YcRXME9j^g=Q}zwK_*LTID!h25Xg0{$6~2GnU8L$WlA09sTI(ZM2i_~h1S(AD!$Q-+Z-`u2@L?}4AHJ04{OuSD-CS&IVfCE z&oHl^o8^liXiKQdYGTGtlBhF^?|rgyQp#5swD6?^VpaUH$x2pH2FCvj!xTwH;x|hT z+aN9fY1S-pcMU{5;;t#hAA`o{6b@6{f@I)3rd7_-1^N;*@bq6SjL{hJ?r4gSa(>nk z__y(4L(LZlBS@v{H&U4KHY5Wvc-LC?$t}0y1;wjA58jw`C4!f->G`6$_B7}inA+O| zX`scn>;$+kfEriqo^dpjoDc7ZFtp?Fib6;Bbw0T^ngH)TSSmD~PKQ)61VD2(fM?6T z>P6IZeWiv05J5a}5qw1iXfei(%RY5ag%Q{3e%My+854NUlMoRCWHiIMw%5F}Q4K0` z*0ROI1$@Y@OZ(2VUE=d$Lm#Ean=h{?pf$r*xC0-x#sn@;gyuO<$(RE)lR}9IrdbLW@ji&rkd(AqSl*(E=B-SQ>mBn>5rB{R5i8YyE3@}PalmKc9lP+&+-?D5 z!9ont<#bB15d-=xzz1C_RSB~kHV7po;;`+uBnI>tu4nwOJbHIpnbr49pKCS49?h51 zE58`h&8)9SlhE&ESw^vKhNJuy5kKQTKo&R4WP|MelvzDyc4f~TXUAMNjbcmWm&>34 z){PpU_VQVw;x6Mbem>jKrn7+#W$D9r7G3Nr$bjg(%u)XjhG zyQKqHH&5>mGoy(S(V5=J0qAFJHo6k91{naN(QF4FzH8q4eE}QbwM7w-vrpoiK7=!} z>x%D%tyfQC#9vmd7*CnqW=peh-{M6K0n6R-(@j5Hm#;-*+B`#1F@72U>!W>p>QnO1 z<~A)HPG&_~dDIl3I1u>QO zgdBzi`D`HbvH|J^d#_zz8X!j$+p9zjAr{r=-Gdl?^Hbk*hMP*ZT43#iX?xg!ZuFJ1 zMyPdO#_&wVrbnW* zB&9{s><62eIOQ~|X;J?Him7wK1U|4nnvLUj(q7*piG35F!v!%KU)7)*<+(?}G$qWH zm6}aUMU$XjS)6P2^{)ozve_7Jc{7)6L1+fQdvq8hD=0*I(>qvXS3GQhC=rYK{5E=- z3JAY052E94t@o^SZ8GK;H;ZQ5t=Q1fCEr480@|hyg+kI|fVby^5kucikyfP5Qs$lF z_LtH=O}b0V+wfzDrM0v?RF0^}_jI@rHC@hpOoOVJTC`=Yo~E>COX(tJANOBrY4-WV zWr>NIJvyv+E3Hj)%7Yi)733nsuoEd+Rjcl=Id?6`mBKqqi!h<0( z)%`p7=H=#3{AN%?pvcFU;ocDSU1TiT@eW$g(d|pVW>PHhyvM7)K7p!9F}wr$KEc1E zQ`tZ8lr1OxF=PMjW<$kv41~FC`CeBawq`;depceK;uwnauVL0`oz**MLrB^pK4er2 z7HWpDfoj8u9XYfsq?4ZL)x9m2ywlDN0h>S|(YVO9*1vPy-~tNLrRjXzsolUg6}9$( z5K;X5deqNrXc96doG9uZV~_%VE_SM$OEtWy{Q(T9>2Ecua3+}v_>Smt!(5e?-g3(l zus)Z^hTp@LxaOq?*x!DPou3WQKz97{xEg!@p^HGZ%-1lw_TD79{nr?rqI?_2u#GuN z988A^_t(!?>vhrJ5JfboKD7NhZSF~w@?dqQj8jIiI~(-w8_r~NJ#sk3@*C?U?Ff@Z zGs<_Zd@85~Tfv{EoxLen2-PR{W&ucHP0m6j;T$HaZoD`@rQOv%L+<1QwLPf4DkETK zltlQSYXiS~Ldhld;jd60#an)zSpk;-a1y`zTaLnRLRv?OY5FAR-I=iYLxL#I#RTl3kG&NAD zPOW~8l+Z2(c4<5>o!qxAtk0VK3~L_RSuv>o^B@)g1a5pzUaDCfMHRxpbdafM){n-$ zma7dw9aSA@FS7O(7msQE#lWFHuzKRn3d#zzb@L3I8_h4WCU#e(T6P-u;9N*1!1G=` z-0id#VExlx>->8oV27rB?X341fnE#qQx6+Ld1Y|*1%jiqnVsbvEiJ_X3E&3Ie31=o!*hOC~xI*_U>6p|Zsm2^%S|I8>Y)*vqN!beWh=E)FRS^mim+evwQ1eq+ z;fkcq8J5g=Ia61Ka@4)#8Y3R2Omm7RH?g?KdW~^^i2fm?W>@H(y@I{{gNdn zqMnA&H(r7Khs2=%5L6!$jqC}>WVMAqYwL+&PXG;VstK7*18@Z#+BI34ov=&)iO*quVff>&x*DUUkNodG#1b%|BaS^ZMGV_|4&b zeS=nq+rG_Emv5e0BY3!8_KoJ%aA1O0M{`40Ti;d?tD5Y+Xa!B(-j__THRHMmtQnL- zlW3t;`iK6+bLRu`jcQ9HtE$f@LaTmdDM665waF1$VQto}IS8^YB+U~uR)PSshl26% z#?)&#eTE%hQVK~M?*dwd+o!UDI>QP`SRuZrG@rAMN}`65K3@xhqJ9xl?RYJ<=tIo9 zXmNnwr$(C?d0U;R-N;5_kP^9s@B79j@{0xhF!&Qev527kah*TLCDH0pZC#T{aqHR&L2$?lP%m(yVUV~ z6Y?6$f%J@kp}%QZr_15^ z-W}~>cRDGUQptbFw^l|?POeDx1XhDp(=2fbY4vXkTv6CH(Cl10=6Vn(5sjPX?NEw%y$=$Y$>#Fpm z2#V5whE-#Rd})C8{LMjP4QB?q=1mVL*9~fXH&dFJ4l^LC^38$h?!Kewo3=r09LiJPyuX#s=XInBS;+oCK_;=Q?TqC_X0Bzp)b z6Ol)s0Iy$euAkjX7vE<2R8QZw(%~N(-naR>rXY+7x>qDPmuNaqFi>g3n8xP#T-`U@`Ob*{&l@jC`h$%_*Z95#|N`k7e1+k(qgp)Ct_?tbnbGsc;=k9nw8`qL4^nC-;?sBr|WP-b{XIJqe z!bUv*on_78<>wM>R0sDo&y^-b(yHFD=o}Y<*c81%x3Wlz3?YMk|5BBaFrgF#iCkl& z*}JJbHk4qy;7~K;VQAA&9&}%6+Vln_jR0^0&w&p#P@(xYTl$l#JVywSnqKpTa=uZ* z(yNIpKI~-Ys2-w~UhY4l?GvV!PzsrwHYfU4OpGly|7JE)nP-b9kWnL&e^AZZ`H>)> zmz_%|NjCj4rIZ4)n%FH*L9tbHM1Cj6mT`u(J+K%Dzv6*&PW=^%PpU$#a{HT0o(o~D z^JA5`)yq88rdbW&1wPU$)y!+GYAc)g4Cm{)^b!m-; z+Pu1l_J4#zuecveoCKeGC%+Z?cOBOc+G)r*$;ild_wPh<2rHD2QR=bX-~qt7UNsuq zs(4dqkGgXoFerJf#W8u{Rh~i%-=UsI=u4>tZF@S(_i5@m?&GPoNe$$nXNL;Q&q zW>_)Xw+)^QX~*-TPB1;p6`T}RG}YcB!_W!WS>3f3PGfX1VooEk@7Usq@Vh#W6>pS6 zvo#q6@fhANgTK#7yn?z<^Sqp}i&s>;8{gGWlO#FPlrkZ*tT65EoN_9QstUh|GQjCa zQ)gqK4N)Sc(WABsnpANt*vQ<+mB8z-n#3j~Wq2^zMLFU3X>@+$ckh+*7UxO{|M~0w z;88`Nq=a>i5140JB#|pz3ANx2)_91fMht6%%IS2^Q|YG-SdMWG_uo#=GXolT0Ux;EtmT*pY0IA+*#9#pG2{lDixRfz>Mky0lF<6T{8j-KSEQO6M?Dhjd$Y z=}3+-&$}C}^YMy^$K@hchkR$7P9+b~5%diWphw3VFj$w?zE)7>Zq4((E~JGn-MFpK zWh|NJA}|`O6k>EN1jq~urz~FhihMNrp1b9CaQ@9bZ^C%o)3%}3o4(9YbT^p1ySyX| zc75fX>p$@QTWJf_bhb@S7d!pt{X1CPNFSsxmVDYJaM!6@$K;ADr)2}us%~9(r_T-L z2am;qa6yx$7~qXs9eI<(5Lt-W z&6c{{5sgyhO^{Y)R0Rr`Uuk&IdHLxVjn=v0YZiG0Ky?M?-F$&>AlZ*p9vTJePCoKN z)XrX%pxnTwFtq4s4r%o2C6^7sMvZ3JE}B>sK(Ju8)rdEI%MutnFTvl4L>V)>u0}h6 z)H!%ndIu~pWeynO6I;z1et*z!dl9pm#^v(#-ZLgpBiqzKO4jrC+4`d|_6`8iIaU9* zyU1qx&g+`Db=ICK(RMN?8tEC;d8Tbr3(RuENCvJqbMiu;Sf9_9HwGl$+F?i zKpz%i@Y8IVn&M|S@Me=rEZVZG@V;@{WcO7fUZZkNO-MLn+q_*QGxSnH&f#?b$uz5Y z&7cU??aVd;1?5&=!>`|~@@j>A@kDv#ZpIZLu_PQY2hqP5+8Ou^+W(c;$(li;MR8r- z^@hFjkPBvHO%y=o-Lqz%_xV?A?GSJ^QWcitQkCjQVC#EBT-!E%f}!22fNL0G*`P$p z{ybO%s_MA^$?|BvL2{^L6p4~At}=r%s$9)}a`qu%?9bD<1xL!I4@;m$2Wu?I{QF}! z3-q1`KlMcoyPy!Wty{ooX7KMV{X`)FN?OYx2o}-h=N*O_%?H1)FwC+0!>)`lb)zmn z_9XC?m+L>q+WCdh*qs&=An#j@w+O=qC5-M1g^Y@h?xfCG%UzOqlJHqVJM=5wAv2%k zn_?WWd~7^yE{JuR<`bC|fs`teTCvURb&L%?H)w8&(T)iit=NzS>Bn$RIBuY~sg641;2HvZBa($?rD3Pl0qtmr0oW9ex zdd~7$olouTGql|DRwvBC^r62g!+LlGep3AR4)9&MNt<8hNERIvW9+(6UMf-v(Me$S z5g*18uSXnp(<>EDS=+J9G6b18FVakoG0ul!SQ7rd^5QM9%G>8LWy+BhKV3Q z8GTFlw_r&bq3eDgIBuxGQ5}gq1$qeUEQts^??)e~o;Q+k@pjI02F=UE@9-=qez*f! zSN#GA)&QY9Re#fM`?le>G+1XjCReOV-}kpNF%d5sTjyY^S}GyXAMMuwuU)F@$CkH8 zr1nv!4%BhE?wDf;YNC{;6CQdwa*s!^^8F<>*M!b&svJUl%Y6fQKU_xY3Wlbdr$+6F zJZ>C}Sc)_)Chkl+sl)xokbwTTXRX3LVFy?@rFlrSfIDr1LG-s+60tNXQvK`T8OF8Xgk4)0UOnVktSc@U#V`Yv5V>440B=gzD` zLxrcrw1pl8{Z7yx*j9NOxl84QJdsMOYxTm%8HV!2huEmzvrajTNDo>GjkLL7 zqq)m_|?;wW5(BDCy9o9Nc8GR0)Wn{Cdt@$CgT3(^1dL+ITsh0Lrcgl4eBsTJb_ zPPHmCCPAxdU%vkDoC#$WGvHcG)pGh+F8Nw__<534eq^oVFg%Pg1ZO2irEIk2^9 z-SwH+{e2EqznNj2TC}T4G8{lB3aII>yBK~lgjDy19G{ffPVi}?JQ+~k1*Vjs7Y|cu z`n&6%y=YPn7RR(R593DWVyCg#H3TNx{wih$wnRLs-a+T%Be;|=qAF?c((8|^*GR|K z!I<%7oGc@dmSmh9N?*pMm)KJf`2PCllNadMXM98a`Qy^Ir~#KH0)loB+eqWA$r^TE z%{@N-PTUDtD*+<6Cg0-N+n6dBm9vWy3i1k-Cc}6gqQj?Ga4>@Fu`3<)&56eM6JgF8 z5(&f5FTg)uU)MWk--8qEOOf;k%%Z0tn-%BZ&&);Nw}cHoB4NH8xL|(qA6nfLkRA77 z1+MJcv@M&?G7b0myr-2|37H5s+GlYupq-VvJZ=3-z2UGIzGfCxFgc@y93Nv)pqx z?ka&yK%fD}I_i^~9mPAPa2Zd<5b;3Y7&Aist0&?BdQCFfK1^z`F(EhA-NIjO^>u5X zvcitf`V0W_BH-3rjw((5l~G@Qp;)aCiSKpkK*tEHOkeEHvBi#^ZPm&k)qFPm0=q#! z^w&-i%ZT?@(*1KA0wyW*${dqh?mr(O7soe4M#5Wb7}+w^3!kd?U1EDc={`trT@%4{ zm;O5DE>bI8fZ2w9Shq*KC>G4#rCWhZf=#w%0M3K7&_!UVA8oq9_?A^Xr~BZ&bRYM5 z=HQLz6Vh}{7Ac@!+-__COLpotN8%7*1kKo~exfI5XK=WoJ(W!*wlj>BbVo_N5sZHn zvlFtv?5kVunZ3vmcyqy*{@~)A#2mRKFc^FtPp`~L9EQ*Y_3;zFItN@&3-^nlFsNPO zZz?PC7yz#@ZfGw26_-p~zl^t>v)QjImEI0`yk zz)HHFJH^U8ldczn;s}VYilaA9`8hkijbZ-XP3DKiXX&~BU8 zSt}{@{el?C?WDY}K{d}2%}8O*m?L7?(G~Pu+^B{zwNJioBpes$SNxv6LW0B#STFA+ zQ$Q#7Z~ugR$GM+*+M_Rj;wK>^kgbm#C`3&P(#F-vf4ns~FX2n=JYx*!OdyzM(``dc zoj@Rg>Bk4Nsnxi+a>L*h*FRx5;XCkR;0!%N zPW`uD*==?{32ug?j$c72xK(&A%Lg9K)PV#J=q0vxt9Uw^)9yjbCfNjzayEMedfa$;kD@n@*mXP##0B@!|3FmaH7{9 zhW`b)8vd9wa;b8gbq&WcCnh-E>%-d$;H0@77q% z>JEaC?zzb*A4Qb$_#LNIapEnLan&mz#U5l|Tn#2zx%R=1WMp ze9Ty+11-`;v3Hj*^HjFXlh`(#CP}n|nGp~j)Tm?^!AT8Vk;kC}67aLhlO2biFc)#WR(YAFV#>>^cb zKT{d&mTNYVmfki=RyRVL3df^4gg4V>uG>uF`6tG{KS?!_lIR!~700o- zydEnw_Ql%j#evCWx(*0MW-{Rtjw186VWT{HoDm&Rwy)G#b@k{PHF^pjUHFWX?8w$t zpQ2PGZnw4>v}UL;?y6D^AbNL3qH-i)Mmi6@J_(g!HP-GW4@Vyn7EDMKq6w3#@?QtO zx!M?>`#8#@TKYRRdS|?D1Ot|#1=*kTv@Fw}7t_S)4YWof(%IKZY_&Nv5k+D1O*-+* zUc+n)zSnP|{AxHO*Q0*wyE?G5@zng!99_`acD1`Uyzr!w-jCuC-lt@==bFvU#vN;E z?8RQ}{00S1F6#Dbd5M=*SMOe^147yFA+BybZOf{#A=tB*x7Txfx+#%w28x(|UsAhP z2h_c)P>`9m8!+>gJOoFl(!2)81g61Qgyk-wT)E|zW01q^z^hTM;ttP!oXl_-y(F~Dx!bPZ-| zQHvTfyNqM!S`G6IU(Wtt_++8ke8|8n0|MsX?uxh-1y4EG(ikCSMIUR_1h+v0CG(^x zU4IGf*t@HBU#H4#AI^XcFUh?4;}B#fJTuoC7f(y7`>B?=Yk z`V!b6wo<>uAL=G`BIry%$a03o>211s)dY8n?nr>e2*iRBJSSBg;Egr2C0pAVVr*NA zfgz0yausv%GFte}#!oyugj|!~o;FD}cSPWh$%E~iepSY^ar9Mp|2+(QHqwLq4JO0( z5|=Pw;!LE9>`t|q<=ql-b0VdL$_R4Lk;u;9kQu9B$GtCVOiSm67B5D&Vhk7-rXX>G zjM?Gz!f#dt5kon57lCN1^c@xt1vci=BoICzwb(EdP}><3=p;)qZ_ZN0U@Za_BH6E0 za&CI1vffuX36uv)edT}uB))sQ{o*T`j`!J=GAnWCk{39>YseA>eosfiL~gLl3oKjP zw5Rg$Wo7ij-JP{`ncsbEWe$%i!WTE}nRljnZ`3jQkQvYdAHC1~TEVEa?6l4Kkp#-a z|0F*Kbq6mEO|(THeE1X^O-hQC!XR~ig0!F@3Q7-ylfA;mQVzZE0|GpwwHM6KRKGE>2L&UorPQeMe8++7Wqd#P zpMEdCe7HPtYV<>@^0niXaiq+1%mT{E>aR9v<%-a3&{d}3-FYvo)O_?dz1VR09-0l~ zg%Q7ezWJ_h`QTx`|4yvCx%;tvc>b|YzlGi*G$utGEEkUQ{UH2bY6#qB{dM{0+T;iN z|4$7u{U0@?YNEVw+5CAM;4BgD$H*e|b03Xah;ouhoPscDLT*~){i1Q2i$YXQD;VgRlO6~N%(5)}EoS9C#ed}_=2|}V z;E80Xr8LbQ1c>0Y`!57hT{bXK)sz)DxQ-5_8iSe~q#C;?D>%3(JEGeAvfTwxkK6BI zAX9UDeqxtKPvUA|#MhGDGP!7(Y6e0~!K4Wgh+U-eet}om15X{f#016?$h(~rXlUZw z1J8_?+Ln9u^_+m98$tJrnMqOp+5#6J4uYi9t2`g<4@EBDIg7#hJP7w7@$Ompfz|+wOb(0tw2&sJDV0nq{m#$K=6$3 zP`|{+r65iuE_cHH0>R{2ZSl&%_&tD`yrOh}>u164s06N*gEUS8Sw>=2BlHYGx2vmsoWKejgBXvQA&u(cu?~3ch!rxOlg3ILO6HobXkV!#K|RAZ{brR!U@|BN zR3O!DZ2G1uf8+)TpC6L|{Y#eqTDg49yv8z^TuHGPM9l?XHlR2H4QzZ|`kZnvOs561 zb_bW)a=KgKLyYZ#bLe8w=k2w34^Do5qMquC7H>ix`J*0`(f(N;rRa;|XkcLG<)z!H zwl!f1h2oBQ-o!6(we2)AjpJMs}DjW28XPY->!@Si` zcgZ4DoyLj+L%u#o;vgq4Jdk~l$viLu(ElFde$;Po9r6gI?<5CX;F8P-Cv{5fY!LXa z?3ILj6tvL=?$JoMT6SZzen1MniE_veRZ9Jn$ZbkApnDnk2dG2Qc#jRQEctX80%)*9 z-o6s=QDm7}7L8nHIsTBoLrZEG%A;t@*2B<4dmRY}QR=CT(W9wkR#UTvY}!pjQy?Kr zNI4vr*sWOsHa7uxR*&XlgTCoW9uKY+*jkZh<`>>17sgnMpG+#Y2mG1hAkkl=Ji?&( z)8FQ#u%&mW!#H!erE^&l9v>taHdPyGw7-FFLN`Sl%Wr((D(BCqW7y4e*@`5RIwD`%!7)&L=7Gw&hE?bTvm5tJ0N;gdI*A=DpZ zUB`_>DknC-liBw5ycxv>6XiMjuz2qtR2dGGbJOH6JroFIE{R=`o2 z;K0*X%6&iZ)*l^5gp@flO~sMM-628tpnHm>h#R84Xv9ieN?~d-KUWSVdy0+EG9q&PW7ck_rJwGJ>ueg5ZbWyk>uggqTEuryBHJj`LDCXv zk=)B*rW`h-M>WpwO`Tv)t(Uo7@U6kn7O8wgCuq%*At;mI(njR+)(TqKzj!|Vu3IUm zrl@CLEXQ9If~fp7|2)g!eFL30(*M58$W~TirarB&%sb6%W}YN3Gpz84dl!C#Z*pOR zV$y~q&?~d!b}%Z`QhHWOTe_f6(0>;m7rqF?o$r)y&_8ge2I0>-CJF+fb;z+jPaQ?= z=o|xA0o;p3e5p00@QnD@9# z5JMURDI#PkcL`ch4_2d3_g5}e?kXP_lO`iqI#mMMAp3B4a$_=Ua^sS<#hKOEs`Ao; zVXZa;j16pZjo=)l?*z?lQMV1xiEoqf@ z=9pIH`GXBKbMX42AXY&6DW}A#IJ7mqH-I8o1gVo>UBXHd_h5BLfZUe0D;#T_Hx~NC zHP*EUG%y-9W*XL-H5Q@%xohh8NSdm@Lf^lv-Q$}Utf(4;D`$%<+Ow`i|7aVRYN_XB z+%KhMPK`&6&0!O%Y`Gvg-E3h701ooUK$g|79nM+ioSLd;W~#tvs>EfBN@{U20SdIG zmf;bj{&=|3ta2Orr_z=>uEK;by31P&DNiXy<3zyXfT1whBKHh;#r%Gn6>@74(!`7Y z`_4BbbV3N@536V-cqlme)!O<5fIO4_hpbokuG4H!it^xNfy&d9=QO&mYvyCx7HYb4&7%K6&W2QJWATqn>$VMIv4Cso{Y}DjP^}kL{(+l z`{F#n>r@KsUr5t}PlhR?39e=G)^aH$YMR3--^h-`Vz{w`W01_Qw`?0TozL#XcH0C( z$?OiH+xB`GcX#z?XA<}&ZvkL6AtOtE_p zbF_oGW>%(8_l?LGw;ueF(gls?bVWp>J|4fu3eBQcH{e8twDmCcp}2?dy-OGuzi~*z zuSq3SBeYW0`D~x4W4!svp4?)Zg;}Z|DEla(A}8HqpMD_q1TV9C)T8dg_$SQg*nHxj zx~2*J@X4+C=Zs>U_|s`|s8O74Toj_rpaKpOz2=FnSYp0KH1SE*Y>&IS_NqA{$KsD{oNsb6iPHvs!q%F@e~Wdm)+oi z3EI>~y-f*3UmYev=DD=m?AmsP_R{XS(!Zq~Ewb$nz8aO67rq-YyurSqgW@YJp&z_L zf5=QqvN^^b3Itc=o*#LS7eXWWQ+iH(T(`;d)AP2UdeNuW7GXhdMXq1`%HS(3xa>5s z=wkA@_uz6fO#E7Y*RxqIV#j7>@Mu4Ft7znrjA10O+$!<0<9TsYLW_gY6JK(x zSo-{-*`%4+^52o{2MZ1%edKU=u?Azl(^YDz7OMiV1G74G6ZTNJC!mO6(ZIN z_Hi>Ch_+PBGkIrJSr-P-3o|IcI0w*&hx-61ko!0+P-qemQ5G;zLKPux7ZoTFS5CP_ z$-~R>?yi4qbk<*j0XRc_6JtXIePbg-i29m3=6d_OTBn*ihd@qu&Q^C04sdt(*H(|0 zmX_d`7ZLDaVKA`ZS8!61!GWM46H?N`L9&8@0d$kYghO-|W#z|47mn3lkPh#?UwMXo zznJ0_9p{+p6z9?`&&njnsKX`4V8TV;AVNIfAlf|NxZ1eVG}my_G|zA_ju<9oq$hL8 zi;znG{syx&wzk$kIk;IvKDt>WIMO#mtZ%GutZS-msB5Ze@H8=ay;G6zY3Kj;bMyV` zvg`Ee*z)x9?0md&c5`rXa&_?8zu0>qM<75&#=*eDQr6W}RaN}Kf)xKHXMa;MFgz=% zl7qy?rlw}a#wLB;3Q0=dg(6Cfj{cRn-rw6dG|d0?i=?0AS6|<{)_NLldKwN6?m4cd z6)&Kwse3~Mx!B~{*vQDt z*y7+)O-MvXM?*V0J~lNoBSAVXEiH{mJ5rC3GO$_%imQ{n2j+O66zNe z6buOP)zi(&%D}t0zP`S+v9YzawYILPW?-PBqob#%r=6IZ@Xr1Lc+%3a2nh*sadGkS z@v*V7eMz}FI2ajcwzs#Jm!B`!n|~;utE;Q3Dta`S#nsow{CxDk!c7egEbQ!j;Rr14Gj%7_1L&nctk`*csLBKlau4z{M^;g9*+aF`s z`|))4`T6+|(6ikQ(9_n=$j;8r%=~e`y7 zj*gCohK8)$4?Pu7+^M|J^1LYfcX^jct_AH3xHSHt&0&zGD)TS(RLVaxmDVtY<c zcXb<6mKDBzIE|W#g`H1&KmMNh@Uc-VePREq1G+8`>WXXYJmJ#Pg2w8wm2@BIJFzWa z%ymwGd|BE3Xus*FZ%?tbr6S)oQu_iV#N4{%5`^sL^*JSF>o7E>^yidv(z#VPh=(xd z=S^V?sP{i`5U;zJ?JSkm_Owmo)_rq%8sZrug2HqjSlMq>#xLR9sT33C-WA}IP7=7J zxZ-0)-gU{YxK`KMlKQ2dVrxN6A%!}y#3ymM!+5(q;u`2s@LU@75<1m0@s2|r@2s$& z4{cZc=f@zY=)XJKxsfv(rkIBdxJI;PIG-rcx{XqR?uMKL?!{$k0t7gw;{OT7@@gV8 z@2@{|y0^uW-76Epo9my{eJcJ1|7ZU@LtSoypTX=V5Q+tFJG|=G%!lF^zpwfSd$Ki$ zVC|@M6ur!4I;>Y8pNkW@obTUHT66?y={jco#*%R}ERcTud(BQz36WH5W@58N%1_C+ z$r%_4;;uuZnDn)NZcH>MG9Tcy9O6?dq5!Kq)#et!13#o}Scqd8vda*KX;WsbQ8HO& zfgS#=jtdw$2!F&RnoFq17-f^e#6NE|P-6n4>`h{)D(tO?eIi5t$IWP4cIXhgrqe63 z?=sUsDZwfEc8#Neoh4}*FMt4hCcn+c;4&_MGv30jz46VhU=EdH`xKo3wSz>2zkrY0 zg?#f@shL!X&g^CwdLIF;@p#PQt$>)qgk%uL05DgC=ES6f(?euu#D-uErJ}%h049YI z6J4FJyH8Ue#*OtlRmWfP2mX$*NzJNbsH(!^X{Tm2yhTeV^v3oK+ov||9FK_8KR7Kf z-j);XYaL!_w~`@d%dr^fj8&JvI2WKkvy;A;tDc<(Xt|893#jd^9J8Y92rR3RefJng z-&#!D^$$3RjQ(XxGH)tUvf*hTc7z^7P8+({f)$(;(WX214Gx}rtgGdHSxsBABruk&Z10)x5`)Uo1^7lg4o6fitECNPek49vwC|}Z>122 z)vvU15^0iyXYo#hQsL6He0dnkjnNa!aiyGR0FRwbgl`&b?Xh?#VanLBC#?|Ngh{7O z7yOHQBtmlJ&`EjDQQEOi_B1WDoTan5%vYW+2%mqRRozLUTMP#O4QeKKEeGmx<;BRG z;Ap)t+^jXXd=<5yG@L0|89!SMU4;KR;5ba>s{3T|p?nB<=@w)*v8v5m+u zZPxdANGqU9^K-KEp>sy3fAH-}xWbCOKb?c~vS!&)w9wg-Itg-oao7sp?ZsV`pk?16 zh-+&gWc`6Gq90=wou6^ds}*$|s+^*UgNJj=_=$0REj;_id0m*3sT&Vykgb=0z2jyi zQd)O=c26kM){@GP@BT!+8iz+-V1n4TADjbT65jzKfjsXez0YmkuHDRJRpCuHBelW= zhFI<|YYJkov$)aD!`@TU*j_Rddus^1+am7fpPXRT&!H`I4~m{-meWF6^rvFQOKLUj zpvj;_uKz}D-2U(>uo%GZ0_>~CYkqdpx@s`{2WAQQjBA|=n{NjRHi<(vdD*CaweD)z z@J8?l5gr}*$0PYR^*f5MoYlpbjt_l#f;@)L3md6~OrFLRGbH_-|H9v@68!_-z4~n+ zrP{G-Lh2uP3v z2#DgpR7%cncJk&1P9_qz7S0w1))t-y&K7pI|7BD%QPvTdCvQW9yeEg9s1q#`R?xgAWZt4WIgA?BQGT)mmeI8Z4KVPYMU0!YKEb44FmSvw^*_()1 zD3c130s+aJn2;(116?2j<-ma5oM&I?e?KfE=5J-dqVI6^?+dP?Tw8c zxlXyt9=Sdp)a~sZJVm<}VJwjY?R34cT1+6UgLQxFoFAHV=D}(b!&TvIG82)jLHfu+ zwL4CCfm`R(wDYI^{T#Wfg>3!ALk=Z zmcHPp5xXpp>%bx@yC3%E4Xe*P;M{iqyAWEeE;gfVf}&*2HBdh@lL@JohPGmqq+obq z_YanSS-!jJL~hTVY|aOJpUXSl`vipilz?D|F(+R&BNc;=_=Z`!wcso~(uNCKr>BCv z_hFyya{t0G5qY;XEIQ76gPys5qB-zYH23hP-Ya0K`5HGD>J))){l-~Z(Q_#G{N;}@ z@xyi{_lNh28|olvTY*zYAJt)m-&r!?p+APZ@=6k>gO0&SJxB~b6Jkzw#vrVPy z9s2K((blnd2G;j$m#QRoN0S9bPDsO)=B^cvc*H&KuzOmBeNySDA(#2L$~KYk;ajef zn-OfP$mj)xJ%zXocHPIq;_d0N+xFaxUY^={gEaYew4teX*vCVOpOo8hVJPWaR)gWT zaeW%wv9z^m+noXQbo%tN;a2A3Rkdjw@tusDyY>ZfjEC@nT|rNy*OJ*j;gsq5&Bri@ z*L`~*Huw~r+wlu!S8u+HGvqPGag%>uE(wbZr-rN=I%9!Cu zNik4~#TTM`s_Sn}9RMNospO0zANwTOXTvNmM6DvX=PSETR{NKE09Q-1>{DhaQRuQ_ zV=0+*8NfgetY{PCrIfc8m-fbK{HFQiUmRB8L@0CFQ;|rPPuj_;GDz5RGkW`VCfgV< z1n`2f&m!IaJq(<(eQ{}(sl>tpZNu}LJsmXegLwc1qK4vO{1;dE_VY?I9w#t^U(cyJ}3J3?{`1YMY`$9%#-T?&6fPlnmcljIoWB%-3@|X55GJgN#5b|-r(}zC-;1{DBwAZ zqTG$6JdPuU?kW1E%=XHU=W&x9HC1sS+{jhsFq;`v-5A)Ps-qdMs%#0BLE2pUykNMN z#(ZrS9_$uBw`_6OFEdu&Sv&a{0W9?nY~3zhbzUBh9?d?^oo=39PS5VoHxDllk^X-h zyFNn`!bKI{>l?x$SV7}c)%YzXR1|$3q&=6WZZ*c=W@85V8tcI$B?7BQ%>a1MfPnj#vQ@+;R-pCf5qOMa3 zd3OhWbqCjl65wP8v$gGJ$?0B@Ujn^RG+v4EG>7|A4k|KDy$U#{OOsZRBHhIq`6zc< zZB96AOl7zz_b`Z6-?oGVc2|Tb|Neyxli_V_fQN*LkQHC)ZC~l=h6?-WeAlWVetCS;Mbwp{;APXD?ZMBNvR2 z46riD1V_ceZ{5tSYVnEfKHKboBl<=Y;Z|HNb3jXK880@~yb6ktUyoeF0sMl=uA$LU zq3ASA0m0`g5y`-yuvlmqN9WR&!0b>oU1=o_fNU|W7b$% zQU57-fBsudO-=7bCj*0@6+accsj2CY4#UvU@MmdvclS>LT~JU^Q^Ux|w>>#IIW;vk zGV;?4Kt#A|L{?8({te=Dwa=%Gr)Ds^>i*3NZPwM2`>$8Nx`$?%#;GK@q2?qhi!E9- zenp-!8aE~myV`P!zkd$Hssaa*7Kp37Ic^l4B!Yf<8m)L&or@J6rP*ydC&J2LOQTqU zqFc5&{%8}}=q?8Y4ImBo8|sK}4fRtDij?V_5;O8e5^d_>d&FHq!;Po0=@Q=|fjU;5 z*fC98r1DU6y=C*HxgmVPJ6*7!$fFnO>mn}6)Bd2YI^%#p!9N0Q9j@(400HWE)UW;N z1CNuY*jRs<*+9J+M&3ce4;f=SObV{D381l~(GDqi-`aSX!W62aZMAZl4>yxG~T#i8j2fsFz3s8MCe3vs#RTFBp$uv7VypKgHPNlbn_4s;mW!aX-({Rt~S|% zB(Wo0XS3Yvi~A$3vgFv8Mq)z{yZ4U*3-{IbgOh~RI1B#O>gch#q4*97aIZR7 z@1y)iSyLT=b}XTS&Jk6GUEYU&3knp-`+#2TEwdL(R++|>w&O@!oeO$VWMbpdD(OV&SExzM6$+9bAHq*7?}HA^O&^vw{6+-t z5fI7j6-%^^p7%Dr>p8f_TtA|7Hq}V#r~QXUP-K~jYAg7=rVAIf$6CytX++sgk$4Dv z^1LT(F~SA2V-8`!Xn3*-LdeS;={&)tc1KJ@!z$c=h|J(!y9%~2L$TmXhmOcTdrcqS zHVq2huW1*wR2=CPhm5-+!I}L}1_?RRGkpo8-}45*3}MKYaKR=<;|Uoz)ozjWc$L#^ z4cMNqLdzqmK%$+0%9YW%hNoAXa2Iot;U}6x_y{L`rQ&>-5lPa})WC%Y8if>VOPA+h zLP>~-!*M!3AtaS~rmh>1UgP$uH$D0uMOL#iBn`6_QdsiMeq!{!Mzg78P@a&ypwgqM zJwE{SiXTZ26ooM; zWiTQW!(-b%+T`#ER)wVxsDNMh#9MzYq60^FoxG(D-%LmDt}{p5+kp(f6km};U&oHr z853W|agF$KQJnUmBc?M2@MMv^c?}+-YO1i+oab}z?{PW$b=2VTl%H>>=P9v)URR>w zV4y!U=@K|97_uKNtLH!+!>2tlZbrS-Py1l*56RxIbtqzEno4o*hzg&gG3-MCI@JFH zS(w7^s=y`i(R(=XMncyy;n}(ThS4}t!9r}H7*Hlz%$~rM4f>FPJ<5V!kz#B3ArBdD z4E+)I$7|N3KF3A@6t1YQ5rKSNf3=d%ZkbXfczj9TU@dgWEz=61HBy)AaEmrH!(ZT7 zx}y4q;)aa2N`SBCVYzL@U7Vd0G=~%i5Jo4b+1I3+f-0TQ`~&np61Z0GV+pJ-ag--U#ZL7s2`yPI&uUVOc(E7z)#oBy z1L?0vPheI}QC9g!2G?sQua%@jxN1D59$)qU%KcWF8#cc`F~;ry$9BD8NSyJ(X1MYf zcClYR@Y7fwW)ml8@+rfFOQ?gx*R0E;svYVIYMC#L3~l`<0ewB!S2Yq|rHEn5L< zcogho)ClEfs;$BWDVxG)-?buN00i~7`-;>RU{;gEZ%(Qw zKHX&vj;bqwSSchkL7v-c=2;AhC)%m@O@_iDwU;aW468(%B`us)? z;lJQ}vrF+EZU48qD_biwwP4o00i8Xd#X{9|K1Rz^urEelZlX0I-u+n6SAOojfo9#o z)ivRho{{Pzj}ps?>_V5i7fYHLv{1UrUMSj1WaC}6k>Fm9`)lrFLHkxK$CL2tFqdIK z{}!>OnJK)a(5bJ0^{l@k7-Ag(VCORjbZFDc@v2kqS+p>JK$I*}sMzQOb^GC?i=SCI zXW@UPdh8;0_+-**c9icFF8^mT=bn0ZP_b6=(kEg4?J4jZYF#TU{aQE5`(cU#b-_2+ zNJo`*!xh2{`r~$(c>aB;Y`=XTnGE~-NdzxCR!r#3V>H(`z@K6vHiGYCBiKSf{LnmXm#I~d#uoU}AF!080eEHN}w7+RW)kPdF&=(#9$POF5(-MDZxy19D3!l4mY z&OtH=Y|LZyK*K;vFMPkB6mMJVtp+1+zKe23<9FikQU!v8uAP+?`zul|(=sI^UsZ*h zSOr>zq}VZxW^a28ZYhsFwJ4z&Z4H)a{hP*!s5twUblqHEi)Ex1G4T}E@AnjqW(~{81g2t zdLfudBp+xQ6dVZaSP?3?mgwp+mBhTX%qjXmpvPt|lgeyB*)d&L%k0jwr$NBq zM^k3deTUc&ASpg<7Frjb0M~W*0_7WVDCl+W+b<4}!l`-#z%j}**UwrwT5j1*jS73K zyY&ge&1)U@E_<&|r540FR+S285hE7)W69e~zTG?A&E!#IlT;2w`I|7@KntC5)uWBI zNs6opU<+FY_TC|oc!To|vwl(;buCPhyJ7A8oz0zteK9rucp)#->VzQ>i-WPtsJD>C z01e_=jCv`ZL!pgOk{w@@n7=Qp_XI_!NpNnXBT~jw@he#?jBx@Kc6$0@4#(1@a2p0+ zOe<%a#iY>5APL6tyJI#n8C}Q$IM!C=E<5U-L+8=(e-xgO8_ocSC8Y` zmC>p^z-xuPfweHsQC{Cy5t!Q`vex1jk@Dlia_b@CdsSlFFO~) z;37%*{=?Wk#OT6=Z31rFwsqRJZQI?ajnlSm+qP}nw#~O~{@+X{lgw^5wW?*MDycm8 zbw?kaMwak~p8MXq$$Owd@OQL5o$Vp-T!R|u|HJ8!lAtgn@D6pfk}+qrn?1bYn!hJ%M`?qPvtx8SB>E7?8zIM-n=HObKW zeH5z{Cmf?>HSUelQRqJzZmcSp^0o5MHx)aD!q<4Zxvr!Ar;fwzQ$&|>l|C{WiNK`;h5`(3^Y0Cy};t~aWG2;#n+desrgH z#q!~UYujq4)_I3yX!PZEX3mwf0U%LR+6fw&bERw$}a&3(i ze^!mU1SLSk>kOr{Jk)bUbNnk*yY03VqoX)|pH}v-X?KLMjUDW3@ec0{_wjk^0(b7EfE;(r9l7Rp|VFhR@ciB5wh7SInV2?LZ3;ui-vgugLQp*kaM{8 z5o$_X+CYe<5yQzCypvPTL4(LSw!}yLdR3to9z5#*x(&y!HtcuE?|hh;$q=$#A%Gmu z4f^Cz4TleOEcR85vZdV$K_Utm{kKWGcDh&+)-K+JMj>~gP1MjU*TPN4wkN;1aLddl z+~r}8yN~Y{*m-2SiSO;n_L}p7x4CTAV9ui0j|p9f(th$E964VwZQcdnj&jpLYq%qL zS*>$kuoIz0CGuEeTS1x5NP@^5QqJb6BdDCA4RhwYi@t%caLK^>UkG4f%QHVt%f)X@ zi7xyx|0oA3KHPK|UqO3KG*!U6-jn!E=sc|rNaF|z0xqDU+@lTSb>))rErqr6#n>@c z`#~rPE43dbO1s$y7VDEdwD+t}aj!^03VygSl&@!X;MOEC$by^-6`$CK@l>cmK@R#n z)TYY&heZr12Xd2C4^QbX=0g7%JcJe*a1(*vA31y|^MSzM-cHaHQXhO4;;H1h%A*4` zBzR6Rr-n^>f_Vy+)D%t+uL<4dx2up ztRaE#P5l;QvMy>_U<7YlLJCK^cQxSf-nV{UQuilfIT68Kw{PrMe& zAkC={@nnxVq29(EeWf7pkK#Xwzid(NMIo&4p0uJVwyM;3s$GnpuQMMY)1uY>JKKbS7!FYX%&&Wgiz^vo=63K6jDIh{8#0 zhOc6%x@=DaNQP;6|H{_s#(RDH)Bmt_E+qYxhs~4N5=jchZ-6 z6M1X7Lq?Z_uwP+BzD@pg*%d1di@yKIyctu-iI1y>g_VPRHlN+f1 z#~3%wEYYaY<$j4y1Watw9w$+mJDeXInP!3nSyd#^KhRNV+EjjQMjK>ESy}>b#2<8a zXcmVW)pV5uir5eP-ADp;6N2+qDt`NSCKKs$-4E}3A1$ShOQ5riUd#>Ucb$CSjw= z1)t>7Re?T{Y5&Nk!q>zl!yOnOa0!drE4`ajZY7bz9GjcuRsSwUY4m2&LDm9eaDmQj zP3r9mI8(%OXMXevJmVuXL-{ZblQ1N#BR*}J)Ykphi{1`1++tnZ@@%UpRxWF0yaL1`)$7MFC7jU0C@>KL-# zEsgNKpP+^Bk#n5qBx(=|rZqB-aa;Ei0t%{pOJh{=E8a3rNbiER7mJ_b#WR@Tc0_u- z9osvfQfKjkH_s%g^3^((UD3+-9W*)Vl0JiA0QK9CW=lH0u>r{tiKq@M*rJCjVc&r0 z-h$TBpLj~AotCqLY;7N(+F{xdCmbYk)f>xpT}9&+)Vm6DML6@0K@0H*uES{b9UFcL zDAv5#H`nELWgy&;*cRw_Si#hrpp(^}AK&8>gPs7DN8jmttDJMu!=S(jbeo2-dIbZJ zrt)V*Gt!8uWxtG!ebi>qMKf>>rFiQ+1ngdT#xwqLW7*3$M3>vx+J_IfN{14(D1w2Cl)2Npk2h!n# z5=U!bxcZ|@$$Uy|vW9uF$}Bi_LnfI!jp;X`*4Ot%IGWtII|!fg#vt*t%6VaGJLa&D zdjSLG%0pVrN{7@ak_RUjBa|yqVR7GtyLrLyxN(m0mZ6(@|vA*^0UDA;`KJJ~Hgm=krGSIxyr@*+u zQn6?|8DwWG0JMm|(Nb+VZ+e?|%9@QwUf|W?x2W<&P;1(A(=sX0Q;107OuG`8|C|1t z#*tgaLG;TS^%(sr#o>vZ*Lh;lA(P@A|8#CR?L55no=nYo>F8&VTTfr;^SnLhaZmvS znowMMRm6M?hso4;9Y)p1Q+CTJWt{JsVl!T2I( zn1#`UR9sP`$=zEuIc!}AB&3RuJDXVq>U8qfXy|wa0r}3$A&g0(s$BYA+Y)KTPrPxU!^hM?$UCggA)4W0(NqEYh@c;YiHRCA;n(dA97qpch4GZBq?{>#UL-i zsDA@#ItjXa6>9Pb5#5rF)tq}n!pWA(UVEnLNe-8|PKnA8CVu(sN%C-S=AV0^XX!4n zAHPN1w$3hwJ*}b2fS&n(-*YAef&=L5o>2oRLLNV2H=fxx8odT(&_96RO05D~E<@Bo ztb`wrGS5!;La+a>U=U>K+sU9VV(J2;eAU^6wctPnN;(SvNlW6wKd(?hBHBpphKb8# zIR`e0#-s2rQLCOAM!$~0PD+21=>7bx$SQ7@s1j$fI>M^pAoK zQ#-N8<%x;__K>(Up3J+sY)hK@EWV6^A0G?V`CcI$;`bLqd(+?h67&GkbEc@)iTiUo zi*UL$NOJ7=&zYg_^pFK^<2p!}jeQYT=vclgT+rH*gkFCZ@rH1}R{9|20f!>ozlVKr zuw=$eHYg|V1$Ja{P5|5))Xzb6x$0VE(@OSauKJZV+&@|Y?95nw7&}Ymg;XCwkXAAZ z{0-{pABH^1U9e{Cp<3vG{Yu$&tk+VfR%Z#5z0Hfupr1gn)p@OOANpwI3@y>+f7!pk zN=FhkPsxPmC78)cuUZ-AG9;LD71M-&lD{!bQ})HbiwuXQ6Vx0_1s317A=1yjTc=i2RzG8*6c6vaYj4MgH6_z+=1i$9y~lG>3T<1 zhW=rY*GqqM`&UjN2mXhS>dUG%GQTXbM<{0lsQt z6jN?xqCLb*i5A(X_wV+vAK61gTeCggIV0P=dN%zmM}x3J8m~^$B020s?;x2Rt){yO z8Jy*eQv=GCW?j<(3_WbfA$;0Qm9j+Sm|6ngC4n@E`~X{25aAe7)7HpCQHSPgGQ2av za)UCz%t~~^9xH}S9Rv(8fWlE9Y=*q5@*5O-AbugyP==hgATKiUB(24)`Po%(yb#vT zO6C36JA0O;r0aI^AWUE8(g__;B5?@%gyU=d$R*A=ox$=!6qaxVQnUrBlvc8m3X~EC z-W?Fw?V%S6q#!WpPmktYt3Iq5W~$y>AqTJ#Y(MG$+CsptNG6B)TH;kL1_s0jEFq0IqrsO{*9vKkFdqm_hgNiNPjwrGJREMSgTGh-sF2opy1u z55F__$o-hpsmHd&U#niDUnpCpc8VLa+yn;O=3c4yb;!HJ!K)G0S`;Z`&8|<){u7Vr zjeQnDx)UO6#!-?qp$02h2c#$Rt9rFVnP`l_>>VhdOws4oYYpkh$=`C|C>y)edF!Sp zrL(a~&m(irKWwd)F1lz0O&#_0&S0_(LoLbc!|+`7#lyDZ2sr!cH-Jt|nUvV~Ck*+e z;@kN*Od~GLl1vbfRXzpjchEr4G9X7ZC;Y&eRD7mt`7BX3$_YdrWD#kcroy-D(5#yE zUQ73hOIZrUqig17nkC#PUQ}Zu-`fI;i47&v-)r<+brV#+R(1<8rLWqxiOF!Dy;{|Q zw;@$KPqnzrRicQ-|Fc*WAl{)H8M(N&F?FuIA;Hb@mn%cQ7|P{Hd-16kulJM`lWgLg!D>+&JNJ4#1N3LW z^EFg*Tl2}9uP(eGttoks#IE#}Vv)10HNgnvBzl*e)}HK|F(z$0_*-`_mz z?amHmxvKDm{UGe!DFENA6uJS-;!xr^Q6)w2P*;wjm5Eo`WCQ6^@^bu{#V4L#?)YuMo4A}8v~s_M^0OF<)XJ0-QDgleV6d!SIWunPcRCC&-8O&zFFi7kt+Ecbu+ z@Gc|hN7g|)z8{p)=e|PoH-6g8p4f}Yg0YcnV7&nDU45K!K#-d(Tmq9() zDLc4i(%^k6NA|0Wsua9EKW+0TQT%QI;efpe5xG^(ye9T{O=uT`@^L*Iw>$-$hbdjm z*(PzO)_gDs^=T}7^WB8CV5Gy2kq6W*5AL2>7hbn#hThPOjDZSmPcMHwEoyMJ?r zXEAqoBPKMla^+C$a1A^2uUYg2pJ7X|x7G-Bm{*#x>w-DJX4PL*nV-ctLa|T&zDSUt zKON6`2Lc)S+0ZLnJZral-tw{O@RLz+RX>fPu5GnOJ!}@4BW$A|8=s5|TFpqyE`=#p!Pz$KaJ2&dQq18sU?po9?Dwq-O z{3}zDn01YgW0{CJ<&y!BOx+lGT55(5ZVzcQ9OBF6MExN&?qEg?odPArsm84H^w(qII3+=qZE%xdS@+V2u|1V>xDm_Wbw)Il9&;d ztxC|{9VQ?`^GEkf6nWnKpf#5K)r%-ZbfU57Yfv{06?Jwp?r&&gfdwOxZy@~(v*R9{ zgnmAV$Bz!ldN4Rk?hoKOXJ3J7*r#?2QDv;q*k>zTx-uXEa~!0hLDuBgMfzbcFZcVl z1_scMGRZkxX2{!>T)gcW>8u>|^hEy3?snMNL&VV39Q-wsET#ZA|)MHQ6chM$m}5o>q|mIB~| ztJbuo1M!|4k<>T_Sp>VoX2bO7qxkFf9DtqO|JSyMGjCMEq6=Xujl?;jm0?=j-47-#KZXH*`nsPU|I+wCJ2SJQUP+e(h6IYZ6*Sm zH5yo?KGM}&UUtQ{91}o%##*LTgDn_~86MrQ-qVHZ|6?i$Ir#S1MjcDOdWwikpW$hR zUVraTf+&Z2fBzy*zzd>n(FnKBQIP{-XOo@CIJW_DnZoXeB&CIbxCmL!{}Be<;q9l8x2`@k{(__Uv`Lq@**7W1&eRY| zc(sj*Q$U~H$02+>i%s>yVo`rEBs`Tsg`YCa`;7x7hP{TLtC;A_i%R3STJ6e6Zb@rR zqhpTV&U%VUep!Q9uuHRKBLhzeU3eir^h$Csi3CwK=}NGpFfSZ#$I$0`-ukg~({sRl zs{WbFk^-JgNGtSa1|D|apAbt=v8;aVo4#gjXtVD*Dg5mZ9!=eN7K`EgK|GY1siLVa z(b$FW2Ac>Wd3vUKq%A%D1J{#(QQ*u}=S>(3$piX@DSgpU$n&laC@SPUF(Fdi7d zIGaDOV3R6Y^t@Wi7@>;`4)go;qFiWTTAEnom$c3FMDl z!LSkE2r1fO9=hGJ4?C3nT9`({o9B|bFrg^afwek_3arAt7q*zOk64kX<&wJvk#o(ZQ@JsadoTulWOc-H&gq*wWJAK@P!P8F$0&+svbMSR>BAJ19lJLOzzqG5eo=90CDu zV8bI*9I;Y5O7&2Bl16YJK6|*Hi|{?3S=(h@3<34c{@C#l9WJ7x*n4rZ`yzK6v&tv} z*S0@$wH`8k-C2_>I+Jn%mduB|J1YYM)ug?$Mp(NcsFrA7JS^0C$U!D#H3@ewjr1uBT1Jz5x12)ky zLd^iDO;vsC+yi?3(lZ4a+=anz>^`|v72y-lt*6;A_r}y#WT@CO5 zbT~N@utzX)BF-~I>-VGJu|>G&V0YNuh6Vj&>t5S1q6S?IlZ+b=lx}n;ir@RjXF|*n zmc|qy#YPFOi-L{q4R)7J&P_VBW6hn*`cg0>)_z0ae3_VBgk`^sIxC+d(jpHh!KPQ1 zUVv_0IT5eHIWE)+_Zf$t9F_}RuObFFOo28wNMA|HpGZqYFrHBOoP?JEv z&U9qkNicT~CZYNFCfn44irT%RK=`kXR+BFoUrOO0nvwHm*0MM#f}zbKQJiME~uLdu^8sFscbPlc~GiJM)9N( z7*_NLb;kDjS*HrMh?|umEKVLx5)=0j`=MKGKk)<+C(F+8ug^2M3jpghWypJus3}T_ z4^0SllwM7sZ(Ld=5V;?s-2I!*J940yJeM(u?7ivYMWac0v<4O)Dw}Eal(>-0R1yd~ z$aqI*?%bVYBSRwa}T4-8~HG6SsBGpct}-A?b$UpcBkJE7&7c zVk8f|lR9W!zs6(&9Xpj&B>s7bSvonxd!1{duY7jq)JNeX2;>4s;qbUVvKs;~Aq&V0s#8hLo0tfE3A|-JwIWsI}lQN4m zA+AhvK)glw-oZxbG`okgmTp-UmGMTb)31>w*ubGy3()gb**D1rpjjL-Qlyf_*DfW6 zI=i8%*xYo_BGVBy6V0}Ql|lgI%OB<({zMCwIV|#)2T_tHjM=oX#K<;!rbwP9TUUl{a)f(d2rU-(APC9Er&l|8!qc^%yWY ztS}Y+wFn_g%r@>Ou6s|UFfQ^*zg_$}tGkg3P=5I<$^(S{CjE9JrpxT}JSVczb!O=1 z>S9303u}iA#=^4n)MlfdGigw((SrAW8}qLGL8&*=Tf4Qqo5xxbY2(8?ISu*=OLkGp zcAj95bVTCNL~G8^b^wEvclyrl{?G+Nao|Ezg~)>>^|Y-n1)gRQ4hyWDP%Q4 z0k+3Xmc&Y}Zs(X=pvip4Dm{%D*C&MQHTPlYI-e4A-ie;q)=pnwoWLVfD1J%J78Mu2 z=?e_`ozr;w(Sw%-=6HNmvKPa~7GB(IHXZ0bfZM(@&q2$6PD`>dbr%^x7iYzif8ZEx z3j1M0?R=P3yDfmI@qX~J<~_lcC%v7RFOP5&`KIK;yUzKd>~Its!jk3gejCZ*h`hPveI0r#=A9#Npf3;K)T-V+2 zR-1Flbm9`nw20}+*Iax#L?!J*g11a2SCBXq971+fdkswtdN+RmWYfHCLqqakWo0DBW%lnK}K18Q$zvvw||M*t;r^c%VB^p_I!N&+*_`}(~fgsY$SP(OZNl6D@F1b#D zey!r*_Q)Y&G6Hs(zTfd?2udZZFB?1DlIL@I5)6{9VpIHds5mLvT{k>rarFM5wegXu zAUB@Owa*wENY!mlF^f*~pNTU5hXP|Np~nph8kW6^TNTFS{-^eNmo*QOq6A~5WFwo- zWBERB4bdxOBQ`y0@*fd9&ZW-Y5vCc;wx{W{5CwF@0eId`P97*-%1=8 z8g?-T8AR`=2=+slu~6n zIc?QwO4|=o`u|<7Uf^wjQLdXRMV@Q;wpe?=-FJtH`_*dm4pZ>C;nX+E*NO9sV*!l> z4JM5ljTMaojay@UHXIg$rDjSU3T@#m%G(D#9{d2 zwc=GbIxORnM?|tUOatwl&fLrR`Av%o3yw;+Uck9#$!LN<3UY89rhW?rBZqTB!`e6F z*bgA7fot_M^))B%ejuz1Y2aUp+mXf|;<^p_Z>rl<>g-)di6M4KH&^SCdICrm)dQU3 zk7$e}raNeFx-Z`CR2~Xj+o=~^B$vx?;YCs>ryW)iUrn`QOdQ(hn9NG8arJL0%hgO# zFrx~Yf0Buwns4BQlaS#gpTJ)*OQD6U+qUL6d7``VAKTeXFXMygtRpl`qpu(7#*{h| zTP>ZXmRQw{ZXbLe_Lqv@>dV8>zhHhPhq-EVZ)H;nAk1e`LHUfy%Bhe*Q|>_Zu%P}d z96)zDpg>g?KKnUDGL?n{&6!+fu^!|m}mBTW5XJ_V6UMQXdK zwfoS&a6vSlEq}b)D&Cr_K3c0jUA*sa=b_G*5iUQFSIn~*&l9=vR2i|AxRX}8leao` zIqJa)ceFP74R(6g`FeZXdo>>ZvB2Hl&l1R#XDC?fPFw5zxz?n+(5^byyUpFa%HqSy z7QoZz#nIu<)#c0363E%&)!F73;O^t&?c(a`-V*2;7#{5H^l9($^LFsgRh+DvBvTb3HDT-o^SAMV zG;vAT_^>T@uKW8-W-KjI{FGGYin?r#b=r2(DiZ}}O85u`bdcnQ-p+NFe$Dk&!1@AA zTpXac^YMeAtF3bu8VNBr3@$ceLy&W=uV44?w)z%ehlf{tOX%Ofzvk{PIX+HRULG|y z^%xaJkejP8H|O;D*yQB&4GMaKj_&dP&ehSe!NqlfjSU?Uae$0WTu|@>4D9>!qrbb$ z$iTpe^`A|G`?R&TH)rl)X=Lql@nwH>Z+zzL$H&Hgd|`Zc<9wxH(f@pZ`abY6@KSjv zK|znPxm&qh8<~7s7#vxhKK7V%byPDo1P{lGCXE7;c5BtBSR0lxiT<`%vH5oJP<{&M z7wT3V*QEBkl;XC8zJ_Xw`IlTG2s}$K19s+*&j@mk2l2^0fn`AJfP82v4zo543D56? zVtj%)F7u{zlC`7p6muc0@^3KsJ0YODhL#SgXTT#Sq@kG+(Nn9H2+4r(e<>(qV`HD6 zpIcj7Q&Us_X)2G8k4Z^MMMXvby^sI^ASNcJrKRQM#`?U9Q&AAhEn)r>SVMx|6QIco3vP*^| zD9XtX1&0Burcj4iXm!NOzcLnST6_QK6ZAvFlzx=H%vB2-Gfo;_REG4$?B7`h8sAhI zzZZs8UmTkLYa67~4CdGzZcRD-!KC66u82n!z|_D+tp}U+G9#!!^+Gas!H9PTo5$S@ zCDcdko$8f`ySXPV4?Xc;_RE5K7t+QedQt{yQ=C;-!W2P=O!%RoxLyboNT+ULRJ8H8 zl<{9v>7~e~(~NfFx-zJ;oCW1(G15_r8R!Qh4RIV3McaxCma^1TOBr*lvwzeFmVRYl zvBMdCq!ualp=K5h>Dq$ZR?!Bx(=K1^ZMXTdQbfc#G6#hZ{Dv^^!!r(Neyc(_|Lc4K z#8O`{-9TvBKS6eA`(^4f7Yld3_Vouz@JtSBW!s2g19BjCvnE=2zd>@t&L~Oqg{be9 zxVQBMz)o5$iibOZQ%EX`xz9}Z!guj=?vY<(IPd07u9ZLZus4o)v<>gfC~J`m|Hm?$ z(J1Xe&2+LB%M^r|wGLJ_a=ng<=A_o62D=(>#N4G4RWH18rs3>y;V zoal0ZZjplDO99GUR^B{8V^w_sI6W-*ufN}2T|G$l%vCm%?j=(WY+0+()%RAEO-z*u zRO;MHfr+me4y@1RlfbJp(?%b{V|_3|jolQftBG zX{K>;IyGhqrLw01E6|f_5Tc9HX^1F4oosv*d$3t}J2Q(Wv||b1T&KFjLzvhfLQHmy zkV%i}uNlR2he&?7U(Z`XHH5 zYXYL+-XCg=fnXyuW4ZxvAx8nWf(G|>8lO+S6VPa=$Y&nl72~TLM?q``D3P^ltwJpQ z8a-klndY*#X$&EVOptUavb?M;)_5C6_O>gb;Jfo|N}cImE+lZacG_s*%m|GCKGO9N zZQ@0u&kZHMs}1Zsqym{*Y4?`mI>)E77%R)NLw#$XY*o3j#_k}Y2PZcGj-6%16aQIH z?Kbt^9bDsUNQn7xxP!`&QJ$aWL`P=ziYI6uG7TGk_LYVR)Co92P7g1 ziecXl$0aj3hdVxdyHUrD-lxTs05?i&-qp4NAjJlQ<{BDl^G+2$T%jaA+1-X%t3a2{I&^FkKL%RkK;vkbwfrPYHw`}sX;xP~-PAru`m`eNyfF&J9qC^=>gQvbk zntKt+m}4P$3ROcAnA^}0phN3VNc`MGLI4ngD!bCiqIId{KH5kUMqvp_kw*X zTdR$p!KYgJLL&U*m`=%5&yVf4Ztk=nTQc+!!$Sja< z?bPX?rqCGQO*Jf38)p;hMNQ6QM{1_Ou-tc=;HkZ4lZZ9%9@QRM=GY+_Sw8DhV?;>= zgALy2{cXQ9?KRT7)u=2ETvz%ZDKwgaCu8&Lb+ryci#q|nbr+m|6Xn`J;i^6z7v!~^ z4F(xSFQm-8ZeULeMmWZOiTZIBebF`J5?85Ik6(^|IN=%3CiXH&t-piJUqqi zaz=W4`O+Kc;4EL8@NOo07t5X@jW?Il^oWMn;8`saZwdBXOCVn#FTUo0<=XG$6kjFS zjj-c((_L41&=oP;ziAw9cc<6>;JrW2nr<7`7Obi!l({Yn9nl2eLmkzOCLoQ=dLJMq z{8!7MLPztO-0-!HiSFYP6G;)3e|Y9S=eDpfQ$n5+u+7HIIdg^v-Uq1|w$GPWu&OnF zc?za*zyr|r4MYgqo!_jUX&7KH+1tREVq=E&dyx<%CLb^+<+^Z3;u-xj5?SZsccuo6?k{ zMCD|GzTgpK8m-Dn<3h%=;&igzB=|59&%1jx2klj0l%v)`1+29Im(a1Q!TJ{sVSg{f ziy==kJll}yh*pBvV=O<@Nb`M7Iz!0Ju8>mZe1$0pd#m z|I;rx(>?o~V{TH^DiYCR07i|Hh}T8gZ82QgHn1rFhi8GPC8o+PmSnFhOZ`1APCFI{ z%||2HB%mMK}e<1Gko|h4J&6 zoiNB6j$nNfmxgbCWy{Zu4BQeTEnCCWv8UmwOF3xO?w$~a1B#$jY0@Sf_Apb*0T*2T z+dM45ASVo7P`s*U9C+mk&e7go#!R=zm5A!ypPMRw3w0`*oxHw!4^{Zyy z+1>La}+`ntYciuzR) z0z^oR$o8Ij<{2|KVsFRVrhg+r7aGI>0faxf#c*i%Y531M80VMId4XgSExG?363Xv? zit1B`Tu4B{Jns}DReeUyJO*P92oNikVlVj3vVXx7whc^fSvG#K(MFb+;C*x?7?9+U zeE$~&&<>x0SnQv1EG!vI!WG+6wLK*r20bAY7}u|S#Qw@+?JB$3_QP9tNIKv|L`du> zA#1cduo1RPU{a4I)w5+R#KkVIRU}2ab+Zl%nc!E@n=AYMnfhfSiUB-%1b+H&~w zl;MDs8PdQAd~O7Q9wcD&!c^4M7N`t^v=a+LqYz~&G&>D!*p%IR$B44!V5=l=4)*^S zAw4t%o618vqwywRYEWE+rm~q4xHe=Fi#*%9eFP2v=jfjeE%SO^EsH8T-0C? zN+?K~5r4zrZg8sZwaB|pmP966hqF?N(>7v}Qh)l>adFi8pTh2t?(NWXvJx8<5J3!+ zFlbPsVmJ&>*YL6G3W2+8Vo(~Df%(c5x1<9Ce3wBYA&qNJ21>^4MF$dn=xgcfJnJwW zbZq{cqSlOsSW(P0>e={dK36jT$Inhoue!btTHY7I)NOsr<|o5t^(@1VS{Tu|6eyV@ zw;@4&F!zOifcDOqF@LxYvvwXTPhubB0doMYwOk&J&_05xUl6oE=M+jxg7S8-SaUpc z7VfLKRotQpz2^S<`EaECXKeG!54JCaa|*>$+h6rF`SH9h9-hsl_%Vqpb*Ta}lyjJZw^RfsTA|IL#%&uj}dygg!pL#!6%czh>q2 zUQ2bR<<9}abZu$5HL(<}I%jJ+MgyYyoaFdAkSCM=E(R+g3``lihGyFbivzMY2_r~; zvE78R8P95S!)3U>-y*wn7N~jJ$-Vcn28eu6=lF;@3tx|5oV%1qc&D#vfC1~z4d1Y8W`NXw&STe(Umr0x- z9rp&+*#3Gkt+q%Ujm=6xDzmSe%oD96Vck=z}_58RKZH z`@+nhdIlvG*05Y3e$9Utp%A&Dexoyc>IRO2*aiH!1l?TJ%*$ODy}QDkN;>)d(hYDXYGqt|AES*b zkQgy(eUfb^!doC_@YD?N4fNNfl86g;f>(GMx{9Mhi77u?5;!R(I43Vm5c) zg#48d@U^9Q68DSceiamHf76g*u2H{n`q}2L6O7-!g*}e@jJoT6Rn>qAX-= z^mv4$PG}ejT%$3$s90J{5lk(DTr7;yRo@MH( za#=ikt+$p8WsMAM?%HGowo8{2Jz7eKUH*7JmH=?9eq_OzUwmh<@cvX6sM+2q>yK>u zN{QraoW`ZY8(PQ)nOPD3(CUX<6c)5~qj~&Dxy6)Qs_3=*r<7!EQ&)k@O`QwHDu+u` z4aV-Pc+sO>-4`{{Qz1<^y=R@K9ne%p`<&vpIe0^0p}7^q8Cow7x5{?O#qD~~TUFfV zuD6!HSM)aOIfUi!1AGznttvJ@j(zFG@Qtr32}R?kJ%)=Me*QgC_~jfvbD6^Q-`~N zSr?kE2074=8Vd^M4&+Om8MqxN`l_2g)uS2+UQ;l1zszn8#&&n^Dm+9e1-JOd7Eb)i z=t>*>-#^91XJKdbTyaCKVC($)s4}02&~Z6S>SJ%v$$rou4dU9QxSwdq72)`lW?z$> z2jddG*TNYpt=&;SXW3^Y+<3PbGzif#9G~IQ^hb;(AB6{B5dkc9AxTo;@{~~(LQwbh zmjg{6R-9t+aB9EnPGP;FRm*O8v#CCNh71p-%-Ais4ID^e^P6A3N3m;rZ&O!haG-- zP;05ZRwCv`bFrcwA^;vnv%z=9g}pRw&bK;PA)%rM?FZJ>zN}ykbW^gk@=h14SVq&J zi1(kn38mv!`MCLGeUl>(oY{scOKhdy*rwx^&kk_u%@c_~Bfk33{B~)`lpWJFz57bz zOK*Exgta=68GJeRu8zHkTqq*Go}weKxkAZf=>`jn)XtuPaDE?g2~AtENlQ1_+XqZ& zMnu~!5#MJ9=11CefI^0tV37_DbG8eHz=Vn8?`S=JT>K>Uw%KMUgSXuW$M1Z~lRl54 z)Hyx0yq+rLR^Nl2sCieMxeIHA4ER46GT9OEU$#lLd8}E@3ZEx6}vXf8Vp|P1jI= z8jeKc@~5qtYicoG_7KhqV~W4*XLMEr$s2YWz-zf3Vxwg$AI zZ_BH=8l~5f>aM?T=C4(6`QO|1h%zA${_a+G)<9t8$5awzYnN$e{UR$O*@Kh*)UzF@ z%Qe^GIwI%$sY~tqG99c?YxZH#m#(VdCS>_*Ykz`<>WZGAspNwtV-hRT(6RDNO5=^d704YWqx*YUq*t`+!uLnqy?Ly4&uRh%iTb)`EY~np^8btlgjW-7mtC zK9ty0_>B`)WvcINAZX!d;RIKW60+wfiPWTy?}?y)Y{uyEf-g<#9(lQ3x-Y`6g7;tv z3>qE5dDYMfO@5jbe~PO;s2ZlQus6Za*DgYC_QZ8o3b40D&)b$DWse?@)2NkxzIQ^m zE+}_sh^a3bvglL5t$#)|xTNE|~$)bZ5U& zXgSJ$eSQO1zn6#3pYyg?i3R8~Th^`H=qBMJ(=7ZKwUe z+yUvtM2Y;x0|?w`+KJu=YX@A1&z6uL1i5g%S0S)bYn8vRe1Bmp$wX6zPE3bL<2%Rc`ml{qR!_?K$Fc{< zu)kyazq6kHzJK{DAT)$Q3!W8C@W85{zxtm6FOJ}AU5^T(7=?jg8o-18zRiZyIlbZ< z)Qn>a;|c`znntIvoMi{{9yQ`Tn-C}Pt;H|_ReK~*Bga|w4+nkh2v!Le_{>OO6isj* zq7ks(tK)i*)Y9zTxIS|Itvp$!8Ve#iTbBQQ?3e(#to;319M|_ZGkXQynZlf8@HPCj zt1msEjS#rz6$|HP<|2I0?$rmkGD={*aRxp+CV>a_h@=gZ9L{e|Y?T&zu0M2VJTv^d z)Ql8Si|we&!kBDu`d;2q@`?*8CZw0werMsZ%ZC0lj7^sQ!L$ z2OBr}>I$=ymmhp<6Egqn^(rA-szA=eFjov=nK}Lb4>b(k@k7mV81V}Ah;!z!Q?^r9 zD0p>__;(o(uuVULIAJ95TyR~|4h5Dx^bn+uI~bCX*FNYGidtfFCYI$|5;-@Lhk>HL zC|xy%H`bC=Ek5MejLzx~WmNp&8a3Z6{n64+SXM?3yx&t|(<2WVa4Q&q^02X^7qFv! zJiH>_z^1CihNc@uxV>ryem3_oxWo&;kV`1u+2HnYBlH?ldn4HLRb8*fT#E+KDCvjP z-H`xBmj;LVAs%qHpGqp6FiDls(_ZvjpR%tFz(j^gbuDtin^C(5KafJZ4Mu!t_grDi zRi-7Iz=~R7N7lV%GV<@YX@KC4mcSz@d8r@l z9RVT)nU0N(b>~{x?t6{-S00Y)UGX4u#1`YjqKKe%TJ%Fhjl_AQKi~eup-qrJ)cDII z^sE18QmvswsyY6mE2?v8CkVJDhWg_OispP?V5s1?!zgP~^aHv9Q&7A=OO>xjS{eTx zUq}~he${^v*B?9E^|vKlN{1BY^KMP@4m{BTkfoTh~ZR4vIy{=9xF{hrfFkRcx_tpH#m%!akHQjXiN)6 z`7W|8s~;fnW5VzH@iJI=H}Q19Q=jKfI|x%uo3Qnl#besUn-s)ik|RXeWC|558+!tP zS3?$YE7KC(0mV(r4uAaGxg`RP**g*B2zBBV@Wk(l{xAcr!#xqK4->%VDJ8l6VqCK&q=z>z`|`2@jAY|+iLu4jyC12hQCq{~bN=Acgy4f;l?uHtmvvtM>QyJIOP zn^Ye3c~uVpoyf%dt&lOY{-TAs|9z0m>_N)n66STTi7=)_vhljnvTHB?Od`M}L{`FB z5zW_Xb6t-mq!BC8>yU<2Mqm}Avkmlr~WyfrAeYD-xno;u;AG#b=-bFEL^&1 zs#V3FXg&2iQ`hR=WIr#4zQnt*FVi z87e!lhh8gQP_iwSJqxZtK+h{^Ek6IZ&q6)IHjr3`n1v`u0qcGkeq?e@;=C-m!ol}r zreHQj;dnY1Zfc|wJ|46*5FvzW>iw;>2w$R-9M-3RNTHXuo7|Y_aRZMi!ENjmG;q@H z^DA94{3)mN{(1}w8a<}pn>>$W#~z*?3AXq?pe*sPi_UJ(=1dTX6skGWXr5qmqMshX z@RKMjx=Tax|7Pcbo_F9%xr(+}Go>g!#+czN`}Jh9tmj8FS^J%#&u-mY&W8&LV%{HJ z_Hpl`D{Y^^Ge#qYsgBJ_S(A-ZR}tkM!ac`GDgAfsF@>MR_R#Ip+n!+;_U82 z6Yln?n`!oH_k}Mm_Qf76f3Fm!VvZU-M9xPI#98mV%L*M{4{xFfo8GLNZJXl6^_uqe zKK{}j_>@0n$?ZPyMsDpc?;zJz&M8*@(O)(dlRXKjAtsv+l3t?0P7xry=zf~O+jbf* zjC#yBEEww>Ib<}{a$G?)S7Q6O?{k4G{P^$81!cu$y%kwmPu0TXD^sY$thFyTI>X7# zU`Q&zRp2gTi0)@@W=uMF7w=iRu6gw#HW&vv=3g!=dB2CYdwKVwVN?ERP3!j?*d2&1 zaR$WC&HBtTPY)v8HR^)vcLO}IP+@lyW@Ya?GqI3i3m#va9|DeZvm`;r_%z!&G0N|w zKM@UFU3c-r8Un;Ee;~X%^lo8~-PC-PIAlTER@+)QO*_r7;n-XqW+if^5^2C+%HI;cQoH* zCG<^)GI5q7FmG5F^tCKY!QJNDn`K}OBTOlu+VU#6>1*Gj7l>L@?tlN8^Z&eybpk2v z#bLqJ3R!Q?Nij_546|Fm-XeUM_UVSjV1^ zW>k}3hyeA__}x$1&dI%cO$Cu!54i5moVh8To%a=-2{OYaWV&!ASZ;lmURc)U3g5>z zaVJC`eg=`&?RTEox1sjQ)C6cNCX&Wnn(kQjD~^xA7suKb%$8jry@(c9J|6qO#Xo~o zJ=;xr-u29FTRxrz>@Q1?H!c!6&`n(`)Nb$D)?f^p`Z+j!fJiB=`qa%A1F-wb8!tXA z^8?jFf(zV(9vz?R8?hGa)THq0ed~^yuPDGn*qz%tdqYg~(yNyNgE~70pF6m0UyaB{ zMutf!LtrJGs@nQWpsq3NNY;GNOnZ7&L^TQ!D}!Vz^Ae%LXp>`Th(LH6OfY%kTnG#& zpQ^CRSw{%odI$g{TprofWj!u@ONG;1h&}h4?SIpd+P8X(XG2UNzz);LQIjb!rQKWA zms<7g79KMn@M^$BKC#P$3u1ZF5xB}3m8g1eqr zvczA(SHAbJbp(Lz#?{I|cdrqf81&3t8+YYbh!)LS?8GFrQf+=!|cz{66e)Uo^)duhe7m z$lH~}gB<^3Xz4|qD@D=7F>vxLwHL@CB&uU8Ll59*y{+6#z~v^iYNk{aLR!W=TF0*O zO~0>qOwv^?ool>zMuA5*=UR<3xt(1$Zy&28QD0(?9_8Lp04o-xniC^B)!UKk5_t=a z4kgbE$GUTasti7tlTmMrT$yH{EJo^?6fUJ3UB-&pec}%58q#A}=LBm?97+qa8iwvY z5-1U?GPP1!f9*3L2KaHi1A0yq42jt5)L8wQ$kr~SuQU{0*w2Pr(b3ZSwXPrLgH{;$ zzGHI0^1C4V4Q{1j@C;Oul=B%^w}89M9=8b`fjLVtXr2Ck>Zd)BDLIh}Ta8v@xdE`` zR!+@_{n`owEao(%$itk5Yg~cL#_I*H9<%mk_sxp9J=UjcVjdgd?6TCwZcXX0KD;== zbx6GNlGhx%u4QX`m;@@v>-&v$lq&X-eC4_0QxhdA5HOXCpxfNVo#iJJ;Yp0C*9!pY z+0H}M9c4%L7Oi>X(#DzS9HD*eD^#|F_D)yLw6@E-%PEMs?o)g>02FoQB^+K+hF#Sv zPNLGg6A1cY)kKzBTOwCEP~rkNiR{}^kC$=H%G&O?jZ@aGi*Mo{+Q9L-36-kp@83e} z_NOD?+Ux_ypBzyD?>Y%gAhrywU8XbjJ}CK?oM3RxbYWj-FebejAMsCySg-bCn{<4% z-8rYHO7*IxQ{C6>Z#dj>u%-&hqaPa&su!cB7frS z@jNI+OOBiS^-oJQ{J`#ML%219yp*iH>f0Ef3Uo@8IYbyNS(`0n`wHhX90@Q4BD4k5 z0C-rifnLLP7M`f$1X-j5UkVF#<`4ZE-j^`ZAJI*Si=885%DkK9u5fMkb}`eL@g~OP zXH$x51pljq3RJUdk(K>XUeWVSY-O%ioF)zg3iJRvb)FtiE1vzaFT{n*Ehqg?e_L)- zu0E@|3wd1rgFm4U`b}B47{!V|4*jc!cKnSEN)POo*qj0Zt{K|?|AHqzlXct)X)fo3 zE@&;jtr)Svg8dONzVW1zyN?LIj{FEHCR%;KbaSXUk?P2vRXTKOEo(a2S@s9uuuxBY zcjgiNV{FB0L(eLW*{6f2dB?<)$-0sy2ZP0%Ce)Rdd$q}|B|5;li%(w<(UH;e^^9d7G3T7{jW-{C!QB?k=(Hpe91nM?dYaGU_s3?hw!rxOJ*r#?P3@G& zxvc2qz0SfU;yi?=H68dXarox*R;_ zwZj>c2H#4(>Cmf!=@aTI)E2udji%p8z%d6s5kXM9#;fV}Y}90XJdPd5hc--7p#CmR zr8Z3~#Sktbw%c=d8hYF=i3;=q@GL~dKd~kVuYT}B7RCP_r1T~ran*e0_AGczaMiki zns+zKf`F;2o8gMW7Ce0OfZ=I(ed*06j5Nt|7QUZ2oK}GY?D+sx8x2s;eGPMT#walL zvZs5^Yr9+Z>4Jc`#eXMcwA0n$-P^zCq1U1{b5x(8xiKKQdZC@}9?2jORPF8~h6jaj zC7?%=yApw&B-pVyFQm@^N1IUD|`y?}3uh}o=oCdzt&n!X$@7q z8~ik}__c(+Q-#bOgkNddg$ke?J=+y3Syy@F>EjVX&7l6yYq6lpHoUsytn;&&N%;$l zV?TW;o`g~r2=UXAvK*4#N$mC`dgUlD(l>FwquC2WK+jzX7jSkwa>L1Up(6*Xl9q+A zR;J&65`~iO*)R%xay$mX_5~s1TyjutBkOrI=cC_D6)qan$fZIoi~Q61ptMzNuUEhq z$2`=@8y_&>RjA;O0DU}-ARZypplh~32_u;U19XxlCx>nF>y>G|aOTLr3L%s${N-3c z>acd2^^AP1Vq?r#4ev!MDa2q!mAo|pV_nD_|TC8k*^4xt|HmJ z282*W%oGIZF$WUJ6cR*xrnw`^s)&g&$S1;;hCb}@KF4#V|I3q@M88CwR2kwoqfiPM zrCgN)Y2rtqr5D{G315Eis+WAiiv{>IkNMrGYK%;q`fiKeH>32HR-G*9p)E8W+rnL( zJ&(Wv_gqmkybXdd8Tn5^7b=XO;4~T-N#=Odt{R0EDJ$L8n9h9ofuYxVi z))jE=?Rft09b{C!XN9L_HB&{~&iYR=)3TaU_`3Ri@H&)ZOmz36O))B; zJ+8hh?*Q4Pu52x!BDBSq*cG?qO*s?31xJot;Mk#I%&-w49&Q}H@BdO4}gciczr%SQdS-HLRBUhB#Ov5vze6x|n9neG6@sv|6 zioVX_+|E<&Ya9A0EzwwkU+yw;7qfBx$3e#R6+Lbh%BxLrIsDE}#tRS>Ynxok=!>qX zr&FTO1KjGziwULF&r0vdZ6Ait;$sIqZmN$qj{WwA7AuXrk=Ha3%KC6`euXjAzssxi zUDGrfBOF$pK0NVolgwD3YcN(3{##7;`@>bjQapFYEnH04 zey>Sdlh2NAeO&)%SnU_Rl1F)hX-uZUV1QUnnlFZ?=P+F}cS4$P`c>F)WjHaHv?h5zIP|!ZKzj__{R&DI zG)n{8sHOak^Z)U%Spz4m0MBiRchozIwT0-41{AG9k#W1>?a>GPSTXSWy%mLU$qBmn z)`9kV@UOX8+2<#1!P}{e!XD8%rK#VhPsGr;AL0oGhyo^1T_JOEPTe4IZ(NQAs9e(q zwa`t2Hp7L|RA5fucn`S3s|U9fvEv7s3eB}%P-Zo85<|h$Uw}aT;nf- z5N_b5NJ}V)mx$_l|8G!B0|XQR000O80(ALESj?^;dS3tlWnusTApigXUukV&XJvCQ zb#8BWZe?UrWoBh^Wo~0-Ffm^;crI{mXXLnLP#saXExK{H;O_1Y!QCB#JHZ`-%f<=r z?(P!YH}38Z!GaUqdE`4k?)&lTocrqjyj|6!t9y0Nt~u76W6imKDl1AM!Q;UL001Nz zX>nBm0P+9;0E>i$_3U$mU@(wtJdYeK5Cb6W6(d>#5S9c3W~Wi90rDULM&qU? zdjMrdfDyI-;XDAC{h00z2GC6+#RSWX2auqD4;Kem@&T%*zePv@v{(Qb=5hnPfE7jn zi;SkZG@z~p0GdKY_yvGP1hA-thtL8by#YoeV2s8D0rsJ{&aG>nmOaK6R@tB|9-n@BCA=gYz zam6$v8#12sK!1>#nC!hDOjkMz0|2|OezWfk%nf)zK4_rbdjaJIq@@8u-j9b!^Is^! zO@O@PHO(8xf80pq$F;4l9_;V0$PS3=8jorEzFYJef;8W3pZxe=AMSR#e^Ugo=?6$b zKJN5Q+{zadOeeqvn`|7$O1-uqe7q9QlMTq2v}w^{?5TWliV@FoonFJ>Qz(AaWNqwwAXc!g%5YG#ss}sS$?ZsgLK@;>sZS*3%8gT`SQVjHoqKd+s z0STOqXsZH6X+kIK2vGOu!oEz~3qPX&pW-2XF)?x+4hFL&= zaA4R6Y+0Cw`bFz`7~m33$Lqb_M$bo{(CovwF>{1PAmg5!d87bP(!5|P%D z*HT=OE+ZkJ;6Pi0R_UWAODvOXq-sZd8o)7OV-3@iW*}es5{u4^>K!gNz)kVx zrx+V`TO7DdeUbXympREfdsXsdhVo1fX*}}8(KR!hUogB$3?%d;A^X|;{rl|u`1_>S zy71X1!cIkxYQJez$E;;>4^R&{4xqoMv59CDW~gqK<*TD{#_EVx=Qpd?s)UuHbNtBQ zoeaW~kt?n)NS?>D#I}5}s{P~Ij<%Uhq?kIRIX8YR^(XZY#H~9bQYdE7aJU5xZYB;4 zjs>nePHmce3GRF(?yx!wH|uHIQ94SxgN7DeGo24+{1|+)Y%*0cJ{_}qc|}RZRt18_ zjmEfoY`KA&Z;hk|yV_nk+(JsFMn$&rsT#hTMLAztScOHIgSt?WpZ42NXzhOaekHLY zmArbxz0M&L1XJ7w4+c^jq{`4A0h|L=^^>bUZgd@KZ-gC@0u|-?ykhLK?3xX#H%aC~ zFneiEk6EsYa7Q$ysW*NRTNszLziIJHION+{zw6mlq@<>3RZ3T?R7#z8an+ocW|wqH zbZEZ>Ad3vkQtMGmS;S63Wgn@ns%@6SmtrXhe7&n-s<0`>&+ia-@3AkvNXzLq0OrU$ zlx}%;9X%8HGQX+6**%xuNg--MHy~0#uOm+3@DFl2Iq(xQ53m1K5!3G%7ArPRHcs6Q zj&GagFI<$2mPCoN8q(XN*s~k58!DuNrXr=1Q#et$$WT>iE1@mnljoBko}8F0m|RNd z%oJc_FpSG!nCLr1?svO2q(a;c-b zqZF;QO)*iiGH1!6zwU4IXmfcBZr#BO^mS8S3DSBVhi32I_K^Q?(uVP zv2AG^PH=--Mq0*|`W4=!c3G5GiuWi zR|Tcb2;VGP@<&~VW|;@*7R|WMkjzxec+oY{ZC9EQoLxHE@_Ln8 zCq~KQ;Mew)y-^>vT00J$Pqet6j>=BX_Vr_W+Avx#X!brbo!YiWaky+pb={ql_=r5> z>*Sl#yKZ&8{cDy^yj0C-UX0Kgys;OXP@ zdJF*kU;zM5i~xYIX#fDWLxSO;Bme*bP?lGh`26PMQUaWN5LPY z7SyK|HlQCdXc{|Wn>?=PU+t1H>6tU*oj2o~KkHvG8&RZou2cwpgVXz6rz>ry!Y6jU;wP`{Giyq?{*k=L7`kIiGc!ALM81LS(Uj7SxI40;o-Sa4YRGuHR*Q#j?(I~6m*n* zyTjd^{p~9~84WqnMe%MCp0q4a1v#^UTseB(xcfZ#2E2s^{ltfZ zWJkl4$0NT@L~BpR=}#w_%%qslrdiFVThC?M&1E^v=Qz!0J1yk7E){w#m-wxe2d-6y ztks0C*G6tO#&5T#?sn$v^%flrRvwMk{h4Swo@%{ZAG`j&crx97I@f)^H1PiZ{`U6v z{QUgz@Nj#3dvkMhb#--ld3knrc6@w%bab@8zrVY?yS=@=xw*Nvwzj;yJU>4_Jv}`> zK0Z7=+}qpR+1c6J+S=6A^y}BJnwpx5ii*Uu_tgI|6D=R80Dj*=h z!^6YL$;raP!oa{lLqkJFMMX|dPC`OLL_~y-kB@_cgN22Kii(PYf`Wj600##L3kwSa z0|NyG1qlfW4h{|m2KE{G#?LTSpG_OURaH^#9o>lek=h=6c^%i+jM3*(gDKJ0dH- zlT={?N#sosRUrdO!pGqLC!nK-{eOXDBujMZgin@n%iAGFRq$EQtrtv+v?)d~GZd$v z`KiO$_+wM2rQ^^-Ww2%DxPxD*uB##{Rm<4<`{gX6+8RbRwExU8=j-%vu>gD@#kV$J zdR6C1wPw6m)TrB!TNSIgK$gR()U7Z9`m@3Ka$Tfv^yVGK9-nQ32#(8;%w>PdYtrws zA9R|*n9iEFOR~0~#>*KsuMC|F)w-D`LZx#WrA5-R=vwa956sIE=9~>{l2uWIWy+nc zJ}$20^nt8tv>_z0iK+*4J$Ci7`a4S8>qQul#%vXOP5c`GtwQsTq)&1rliA;Nl&!&m ze;j0RVf%`1wT72n*L1^gdtv*`Gu;&aV!oLJ}6x=Sa8M+1zyIC+* zL!*WUDPr5kN>RwJraM4ud7UYbI?7rbh6y3?jB zOz)o0`>DAG(_{CZ`N#cZ?m0KK*7E2rTo&HWEIYRzWTL@26W7Lk6ws zy*A+`A)oc%bo0@ybiDy=>oMFf(tDAZS z5H!G@;Ue(;B3%&P6W8BdFa6W;Ce$VzDYib2cnZri1o7T0$mf8bOp`%=5DXZA?2toR zSGK;9R0K7-qpkI61O80*stumduGte4k_q$gE=o0iF-~C^QC4Xll1=tkl0Ty&Pa+@*LBFrhlgYI*e zPG`spPya(JIt8}gDJLO(iQi+(?&a&$WhYN-&j;R-g*X^EmCv`yl>SnD_s_@@AGes> zjNk5mE`@#mUIPam@{E-Oi&B#x8UQ%?<;x-FU zPqpd7=IJFn7e^I87(zD?3)sEv&ye^gsl`51v*%;yCnkKUMPnWk^@<6p(&i*Vaf@QU zcWFJhAi*U32fI*6KXQC_=z|lC38Azo{a@_0_H}MtG2dF{vOi(V(IoxddXVyOx4%z^ zVbG3`TfJQ#|2|47k~Shg#3@sS%?eG&5!>_vhc0|{_pwv?#JBxq1H?3N(t59M^;ls3UYE>oT6fRm=lX3lZ#Bl|dv#R5+eG{4aYF>*Ajp4uM`A8p7 zb^CLtu}F}}heO>Eum@k8evc{dd`pn|8ERz2L z3Y@u-p1OphBR@5ig;s;Y@Kno#~7Dd;>vBJa&2Arn<{wXyo2UzXU;HsFw z@$*zs)Zo!FXDL0>7Iml{b|h(1*ghO~!6gc(_fvQ9>-nkHcl#YbTBuJO%>hs6%%|-Ad^31aN9nA5_qX>J*C`^ASJXxR`f=~NzHku$+kEF5F#^|@Y9w6d zln`GL*y(`JR%+|Wl;%YHdW0h9jS(zUy1$yQ5wO)o_{H^Ms~-c2l)TJB>gYAl3iF*M&fGBx`uU`0swG+4U9s*r{K1B5U*Gc+MOiC~R6R=l0=1oFiK5q=>WMG>Mk>L>(*UwJXF@Y8LEY!_tu z(_U-@u#l2$LY3F(rG8QyJ{HYfU__(U;CzlZ2Xx=%%)87ECTBRV1adD`-3GCqQ`_jM z`To%{mzFVniU@;6RadcD%e^L7;r-{6Ar9$^jqfDeHILCL9gtWAwyIKVv{LYuxd+0? z022YJ>Nvv001nGkYfK&09{EcuJ|PxOmfm#f_mC)P&APSU;Kt7P2D zpaSh5{kkulZ1!vYP&FiKzijouRJQO*_q zO6d#bp+rp?L+@Jq18T9=)jwSuNWoX4=`%>3Clo(MZ`hK7BJ168Y|=Sx0&b%WMY-SA z((UnSJ~05wv1nEQL)$@;eG3gsso8L!vwuQjib>0QG+@lW1tn#_1J??Rr4)J_z_NB; z(zHelbf0IRpL2dsLi_q1>a&``m&j=%ehjmf+#);%aqh-66)M~!`6W4;hqxJ9o6DmHx#Irbd4wD zexX9vA5f9!R5@})^xDR6e|-5|4rE68>Y!D4{^{aG_z+y*r1X%``+raHwi5^1&%vVBkWITAQAN`J z;FK0Hw!B%17Sd%+EEk8s_K90q4;}a=nGh$Bq!$Ok_61wW4jllwO%yA&od3x?#t$8d z|Ad$7cvg58iTsz63y-$S;X?{4YS_e(a=g@_%Av!71oTfGpl+I{BcuLQnnayL@qI|+ zFRV>R^;EHwGV-6LB)S?e6O4?hi^(Wlphs2WniXa|`ak{{T|Q}M8I8L;2p#$_qtWF= zsX?Umy!D^IXd?~yg z;aUGht~|&8_GCOHKqq@<=gCVu$jm$F{!5YFVfk~ywrv)NcUo&wt8cTgQ1u?OedOfh-<(KZ z&Nd8|X|iixC8gt6_8--G$6b9*4z~4PeyA+Xpd3-`n4-DNhzY7$W_6R#5*@-8wWrZyg`p7McOLh%+7_uvt*h z3r1||i6ZGz6`!-B^No&k9_J3_(bO+m0t%)RF#q-?C<`%d9)f8?qB>3fZ6|FO+31^i zPzktNk**C)vz}?=bm8!LR7i=k)I=?(WvnR$r1Am+Jliu+8FDU~rG+$NxGXw>Wt|Nv zxcv?%TU!JamqB=bF99ZJ?d2FOaTnnQ77o3aiWr}A;CPHQqim@<3uedyKZXb&g+)RD z9r5fEMfc?b5h4u{m80bQZHGy|kXZg`HeL_AOE>M>B^<<%6=928-dvn#mA@N3c`}{A z$BpK;1Bow`k23Mg((}ue5+SNj^2a=6QF|j?Y9;$Ci~CHIZ!MZ{aU&=FwxYX;4&{fF zJ*7~CkC@Vw!96%A^Se$K`7=B*B%T4(QhUurM9zg$lNU4Cqz+FH=vFx z>o|xvNUou48^Bd7NO)T~E>h=9{NBdcnb2}O;%q&N07#DI0EEts*Mj?~V*`1aYjT#4 z+mew;@4OS0T-fX{8Z`D5t$rSU9XScah1-qcwV=II6oQs_fEbTr2Owk+0tR_Q$r)Pz zEO`;1A)g0B1Jpz>=6#h{qI&WCvGFW&p|Oba<-LUtn_b-d8TQa<90IfE$dwPz1Cn-F z`X%MubFl0hcu9xR0==1@0BmD15D2jwerSkryN9;eMM``%!$}#yGsUzV7sQM1vV#hW zQyx%YHy4QGoFC|9u7<$}HP_G_kn(Y&vwq=hb9)AZ!~^F06w!1yokIwD)#>V%oJ7!dX??`JGdsHAEsYvb+W(62J9?#X> z+!A|@%_xM}#W?M{gNJ~YQg=&UJg27LSsz2XgAi#hOc02#_*UD%5A?+nyQFu#*N$D$;CO6Hh>UI&-->ZJx@=5gI&x3Fou{eIX}n~;g(m$&(O!u_ULFLuA= zl@pk3oprCsn~FMPp@Hb*%aNq?OlOa9=W%PGgFa-Hohj26FPdgp#NIqbsB{5P2lsL zit;jAbHZx$Vi>d-xqwZaMgBgdg%P66TXd=_T123#>Pin z-X#zgv%QI{5n>;)W|VJA@*zLhd2&pJnzO0t2A)U>2tn?4rY&NCGR^}bT2Zqoz^sAE zw{00M@Sj3L>F8aK1imI!?P1(W_Nt;-yD{^YE9RY1RCKBpH#xIzVy6?Gz)I<`PFf-< zXe2ir7(Rnt9c~b5Cf-v~@R)2s$Zw+Fu80X!CxN#!+OC2Lbs(~9je5a2EKW(LycBQ@nr>c|nI9C_qb|M4Lbcmf`=(~p3rhf;e`z{ds3=Hz>hcAOvz{2j?s4VERzj&quqhvs9*D^kI{ z7TU(3=SY#{=~=_PCP=92T@7G0;;^;KcA9*5GM|bw`fNliHNg6+GLaOEv`p z_Ddj*3QL^Es4gR;~aaeLT*^Fc|70X8P{@4=OLXk%)u3 zTC@+fWG&p4*teczp4N5aMw?}-3O$ZV6KTyXJfBeP93-$=5-#dS5gzxX<9o|QK7Akr zoAYG$ZqX#)ioVHxiSY?#ffD+i<$W>u*`K|~KI6Il#Fp!93LsrRi3~efrT|!_f z*=L1~=ZXc~#{X-A@p^|BCNpTA{cC6#TUC1{emjJ%*A>|;tk2z;*8U$UKC0WX+pZ_P zf3K`3LaM30yi4&vmvcw;CffZ3!x=}}S>8*Z=f5?wI11!8L|;q`pWqW(G3$5y4s4<> z;U6GT;F}aZ}>?IhwqP z-y*&c2O|bn`lbJvN`a-9?-4aLBf{LUn^Vp>I%q3weJ3RKC`AiqePkq3=Fw#f+T&n3 z``-8kLp|*FK2OpmmwTa*U}Vnus#=b=|LwSYIq&)$MTj7wJUF(6^2KlFM=sXe<}%e$ z)SQe$0NT{kI6Gocfzxxub977cZ7}ov-nlP_Mo#JPT1DYWUN8g&_pNlt{B=`eJx6y8 z>8^Kgr%5e<`1C?4lD~;+d!OU9<^>0(+D-vYQT!Q~(lKxI(V-rm^GwpOgOhjGy_;la zr2;b%z{c}I^*yBuzJ$JLqm=42;OdxV#4(b-)54f zs>grj_$Isi3EJi;-1~LKf~M4O@JG*fh^3q@>x$2OW&@C7ULsb~;!H8q*F&q;Bk zbGA1g*vww4k)Z9P72})PfV=aHWw&3J05V)+UhbeB);Dka1}ch8VExJg@=aCT_#AkA zNd;F-YKpbK1+nO?yExmH?%4L${aArFC(iFI&5lZ!3dP4cA9C!w%M#A7v6!U-B`ocw zxdcO<*EE-xJLgYLH9jzPH@h)@=8q%0a$5?P8V*awYdu@zkUuW(Z%3A+k9YXtYR!^8 zXjN#CGwaW>5YQEr)Y*XlSY#=xTI7=0q>ZJ=I8LY2m=VexDohJS>ko?a06cyp+s5-A zB;ltmFRt@x2z&!ATYhvHs{cC4^hDJ{tevPA)oIgjI5>|hCAMsVfNcLgS z^m!0=LIdU(rPYj=f;e7o#;4p$>c&J`k8alAr`G`--B3L~qU44nO&X+hCNA8$c+3je4DqKDT59*(Ks1bvnMt>%gzG(mHD-6 z=9XW`GC&YgkKJf7ujTCmYW63bQeJNyK48t0Czx$zt@UQpkzKCf){P9I2afa;CaLYH!~LXZt1DJ$ylBC zmpztK#k>SR1&o->yO-xibN4*S58^<uf5oH`7^AT9xzea+`Nx5e0r zDbXsMNifJ$6luq2U{?yFLqr5}N`GTcBf}VGHW_E&0Y?yE6wDi0zyR0UvFf5M+z6X6 zB}}D*!K&olUq0QiNAQAXH?Px@-vvoeE}Jz#zL6(a^qQ;WgRoJ724@TzGJBh$G{}$D->K&8AKes0_s#%9cfW$}~IJbioT#!M-=6j?8Xd zNy>ej4!6LolH88wWC$8fS|ujf)ob89LD9b}d4c$w$(70eB9^avYZ{L(asa8)_Osf# zull=QjSLxV;MKwZyz%uPPz#_pKV7d@rBFlrD9WPDW0CXDNzh}pvJW4_B@1Defm4v! zvQbaGszJoiPifDNn5fqLT@N3~@&h#)9a2PH5%qt7e;c>|J^W|G`#&%wR3hVu0wY`Q z9bA3$N3YDcUS;0ifAGqbZ=p>}GS|5&WW=SAw~iJG79(bn@H`!#3Hss%>bqlJ(sNjG zaf~SwrrR_@!$5QS&iwOmblbR)hn3wjo1Kl=w@@g<<;0)o?3q`lGIJ}%wJ=1{O?PXr zn3pgwUMXOFFi7}EE&%+So)^D7i{Mfdn*h#}Gatd`Hp*$Dv!~+T%}fTKyV9z!)Z<_N zx(Z}-q${N39)@@DIUR)}zAAzHn9TS59dNrGYw|g*_0B;{mZPXndNX1=NO&LY%Gj_~ zbha(|vHhb+uNBsPa!!Q+2g!8IH6}YG`x5%G3yuw3=)XPNo z@JKg(a{2jQ2;lgkW)4*DKW;r#pUjq$`elYyWaIz#e4oEQmyT2oxVhO2JBQ&>$r-b? z6lmZX)qS6`qRP8&kXXC-MOi1&^OyCfXr5;H^-JXC)l-E^cxP^vVp>kD91Y}udGh`5 z{-*~YF#gU3)JhPx_B@T`T90i5oP*_mqCG4MCVkvV&0HV5Gn5RCr>#? zaQ86IQz_@gS<|QCyTjJR>ad}6nuR7<^*TaKYASYaaS@Fh$S(9gKH=-Xr6yGq0HXG{ zv)$q}z5lrpsUfVLGbH=|=xG$1f77sjnf@apuweJX8aH+PBI`rDvW>uKULFs5I@2%Z zmjIxl6j$f;_b{}g9W#AyQ&0S{cj!@xlkV)#)rR{;c02Ehket(#n9GYrXICM>O+yxp z?6^hp*>(7^7bT{lWI@|8ea1*asl%9Ra)gEUwSK0&QXkfx`fDVkUc7%fk6eO$Vz0OT{SnNQofGSv>t=df10D}iA zUEc4#I#zR^POp6}r@4s>n!|~HfKtqN>D`j%jKjlfnDw`S`!|3s|LO)dB45TmxUE%< zP+Q-&y6%I%gBTLPJ2Oi~>9lvHEi5B5(|uz^;-RUvVA~GYmFA)4DTq+#*Kp?Ly831K z*HbPEfrfBmx2Fa-tK#jA#{4O?9}70K-Q$xm$jvZsb}xyBHw{>t3yTEamFISDp+UY1 zUar+AmZ$E8^my(kd@ailA+Lm`uBNW;MoN<#Mo=&{)|WUAQ@;L6LM zc+GCj8!rRs=eilWUccVZyHtJ%-97H5+B8K^{vZ~5di7j|fB&k-!q%hHS&17-x+ACIYP0<%8tx4rY zj|IRA=zb0cEh*Pc%RP#p?F8|d5?A6IdDh16pfS>uf(vwkeN9r8U2Fz+FazCtRAtM> z3`BjCXY{I*RAF8rpF10OzR8xG&)8qG-%;MYD=n3eO2vG?$F{1BzIFHdNuVrS?uD1E zD%<2JQ+^&yr~8K3s++1-n^aLsU)NcUpktGyYV9qQAJdGr?#Nf=9+arqZ}|)yC+*0x2dJ^A>LeYt=IztiVv*| zs9!)an8iN3w%izRHcBd^b3=DG zKh|S9qu6!XQVFhNP^G#hH-Z&?!zJv_55*7|^c6Dhw3fU+MyNM$W*|_Ow{#KWBthG+ zawzNp=d|hxj5Kk`=D{!@g&Y0n1I{4$c9){SX)8!Jf`9OzbZ@fH7mD4Hl z*rm7`y-ei=cClj9m0n}Mw99ni`&!NSaY{<_an2dF%A|^mg)>f}>P6Y|J&(p^X|op9 zilOrKSWU+mreZhr)sj``waO!!07ltz_tlSem3dtQ|j)a-&h%6>Po0UPY-cP>0%i?sDq8Qs&u{cglwjH&QGz>>h*6XdDS9VAgBW`)X$^8%-Okr*ONkjY#COiPOtKUp+T_g}_gjVhu3_-ff~wBhFiFQ~y{gd`NJ(4CC?+BT1- zvhmwKu4Ks_Ubg42^6ptr9>Q4gCv`N<6vs`;sphV%?45e=sUnWRBNl$Eg|J7&2E$tn zcgVtrr`wlUQgF^=$Y3d+US&E!SdW9Th$gjpD)^$AZ;$qIysEJ;(>&%)-SB)@7;6{l?(#7s!=Gw(Y6ev zV9CwUx->7Xxz3??Y`9&!))0MXl!eMO9FC!33x-AB+O6Jiu6MgEJzc@yoKl;Jjbx~g zgWLlXxkEL6d_9EeXsXG+%_wHL80+b%@!l!d5`Sp2@7mWCD+yU|oE)@K>#d;w07_5r zfNEQ0*=2lq`#QT~>fRx(qI-j!xQmp3L+rpDuB6utxYP>978m>&IXvtjwu$~>CWyfK z;yq5Fn;Wb@Pv9-7xNi>})UX>I)W8&HZA<}=%=qbE*zIf?QsbOEeUrV7H{v|;XPw`6 zt?&2EgsnSX!>_eSAWIqHy!V6V8PM|jbW7tzFvDl8Z#n-y&OvfH^k`Sv%KJCVLoFD? z9u038P>90$-qYh5@YF$^UPgy4^VoTF!I1Jn`zq46<;ValxqvgDlBmHgs5oFk0xJyL z=+rm+=r1N1S46zo(SY?lviV3L462|mDn?((4R&8PTvf~rAGp3y1|12|f`l*IjvBcO zn%UQg^}=uw*Su%f{c$Hcx&4cfnT>r|iw=S-=^Cxs1E5MvoEryyVrQZa%=QAaV#wi4 zwNq5r6K7#HTqdP*dX`2p!(_I>jNjg(#7^;{R+3)A)@*#o<(anO7Va$;QIvLX5az3Q zgd8Zrd+TPuE<4-84XwNxjQTeC3`>41p|t%`x`l#&6pBp2+p(IR0a2yB{z4(_zLF+r zY}Y29Y2o+nXfVgtQY%*;DVx{Ox`RMrVY$Y)j%bN2&5J}$NeXEd&ntV26zx>XMsU30 zK<7`H0rb__On}Tw4t|apB^g`2GNxCP1c~U8r@py;-2svp83KHJEV4!eba%-Z0gtA2&tCy2U*_05UDg7YN3CL$2HcrW2Ou9^Z;XHPIlWE{XtbTZ z&P-8DjRoa0^N5Y-H8J{+n9W9u)i76RCiX`VL!{ZQO$gnjl!8t8u&0n1nRN{ks^iw&;^){zAql`DRi@3fP{>l}iWMSBLS|e5Hr?r+vjRxU*)qgCWXo+RT2t`u z31TRlL;_uZbaJw^nW+JDPAIhfu&6U(SKrd@H^7OM=q!3aXT>fd751&@!pn7pyEJ0w zMx|=QB8nU@Uxs!W{ ztKWU1H;kB`$xa1pm98an6?smrRcbu*@lqSlvQ+xOhqg52`+0B7PzJ7i# zo4dWfx#qvYpgkJQY2&{43Ya&!BOKL-*879AP-_=@6a`&d11j$FZMUZ;CkYkou`O$x zt)J-|jl|!njKsi}SDm!Ou}F59wJImeX{*7%W$^2`i@Ylu-Nf$MO<-!**51$THlCWE zShs-TH~z%r#CjEO;1;{&Uu(ro=@d;DyfmSn!BzTE09D@J-hNHpfc6k;W(RIwBiHTy zW}C;AD^vw6QSNm*U*FVC@M`&X`p2ifHmN;kc=@1Aphy7O8{tn_gcN6=IFYaG3d2j6 zPU6~)g=;8K@VW&&^BQMnF3lW)<2dYIgcn3DBtw;gUkPw~XC#~k_s9Cp2ih`O3ngy9 zv>#u-AlQ{`J{2>F#rPde>9s{3Ozev&xHvRwmu7L*0&chUqXDdB?;;(sS+BN#q27Yz z$C|41X=PRf3naKwN9=^wBgI+_=1h^pp zG_n4Bqfy(_eyOG*uVp`}le57oEzRZMSQo9A#7=(MlwstdCFZH5)g(Po(%!W-{kRip z>GhrHT0SXlcZ~L?I>uX`JAvedFOL2^l-$(tjqVv<4}5cDxmwgyyN?C)4(B`=W6UmQ z6q|(mqNP?kTi0GYvo{;7GsoN-OBm;EQ9E;A26lpkWII z`bH0Aefo4Ogp3VA7oERi^h_FnA6?~d)Oz=GuG1ouDdUCo%@cElliwTg*86cOm7o(C zE|Z0BenmzFN<9lgcyz}2MrWsA=KY9Y+JG?Enwj86?*H&Jda7KL>EUPaUxM)>%mE5? zjm!x79ONXutn**|X(68YeHs>E!Nhjt97dPXYZ^u!G{z{f(*VXHk#PR@?5CM=Uw-kN zfK;>mm0gFE)yukv8Vcn7oLWPlzL{QM+(C!Ofx@OPBqpcn?ap=Nk93t4?oQ;hmEF6! z0QQi5dy*ff1~}!IytY<}T)#xIxnb%vHu^i2qjx^Tm1puIOoeKRp^a<7|Hd1F+GeZN z-O2`$(UiGkK=N>+cu;}P`Wa6N5(@983HYC{HFr%(C#-@QrMK#XZfqiw|JGZ^_xn2u z10aYDTzHtwZbA8_Acn#-T6;nvGN)W0d{%AvMxl30tNkJrT6e*H=jS7w(h|XQ&0Nvn z3#F;jj6xCj;Z0DXclSrUcF4xdtp*nIrLLA~1f)J+F2JMlP^(5F3B zf~7waFm=8^Z8E;j?a<>ljXof!@cDP*OJsCD1j;$z8uV5ncCY^}KVmmy$Ui z|D@rfjmN_(hUvg^hnhDr7a`&A-5&%YXj%0ag-%j1&wKc{y)I2K-4Dc)fdby>gbOLA zcQOgQo;2&WBr9D?4i&MBMAK}NdXvu_k9B@>0RHK%%Qw*wLPkS{1m%|ip9c6JL<@K3 zv@i(ryWK%L$Yg(CIl)T9Y>|*Sum9#VM3Uk~Q9}y9&0+y-&qo{ZG*%jPxtUYzTSi0& zyX*CcbSaT_9<3}7<+xjDHGFC5sWg1y=vmKwXB^~49KCnb`FfO*>FvGB^`al}=ILsW z9+&l>CxLkPJ_fmLm}2N1W{Y3Tu1KbWorY*6cHnVTn) zP5m@iYphZo;w8WN(%J-UzJ@xf*;hs6qnu&)Ot#%oT|QoE?aJw3#Y8ye?ndY)f7IvC zVFKvm<2w#~{_4};DO&cNAGmXKXhfa z-YL0n{)x8x2qMj_%)>2Gu$<0%b?_p85d+V@;5~Y0swJ)IF(B zA%AL>HroG!;RuM$dEST4|3#4ro0d4Bg5Q!bRN6Sx;z(XbI_5;>>^5oc#JZ6+jP(sC zG=BL2Te7|h`#`MofVCk%L9DfTvxY*2KBe<`fblESqmMp=P8X6qX22_SB_ecyqM+lJ zts6+b{O2<9RdV*3m)8Ia0mf{y9Rf60>Nz{Ft`)kAql|;cM0z9y71Q4{(ya| zzdY@?>)x)eb532;BT`$gdMe=w8ueO#BwDx?afA5ko57G+EKlOkH?S$7qTrHj4hK)K zEgR#lJe#kuLA(QGYRsX2wzs*6b|;@Q;)#2&X9G5YQA5Z^6cZ0rpTyt|kHxr1Xo3J1 z_IgVtf{{ZPi0Lbx=g`@gzcCEA5kVX_x0qt{zW%F6#6-?+Il*^V#l7g- zBGLqjCq2U_q*!$mN_jrr~TdTw=^HM^313G`>y&d;RRWlJ-x{P(m!&jiK|WfpC@ z(4;Uw6iX*UTagZFy%uGI!XrSZsRuUo06cM|OZS^0au698UUA_{QCrGP1uF&jkI3lo zPdpz58;hi8okT&Cif_%?PN-fxs5#`$6-jg1PB~13`4=Y;xgr`v{>O`xCcH$!e+YIh zH3rdUOgOoDcb%=n(!|Xg`|eB=e)uWeQqkt^OUauZGQ7ywX(SrQ;H2P&=hNGSSJSwnOv0DWm;PO1Hu4At;MU(z)4PKFdZ%AENB@Dw z^^Nf0Vo)-F$Hri#a8`hv`VXp>@!k2Y-sx*L?){Cq^!A$w-&r62jhM*5ePbp5GYu|L z@Quxo+J^hT29uIucnI3-zX{j(OnUP-wd{BOO>G70H^FOU_8a{|>ykC6E16Aeyz=S^d9wdCiIVyB})PpD=bS!_tHhn=muNX%`K_fkxL_A+!@Kg z3>jkb8f{%}%myql5I5EoJMO(t=*$jxytl$wO8J7(Oi5}_{{hd?L#6EcVWu3Hxy#UI zzondV$M5Dz&1ei1id^8r1U8)Yo2WXcfmLgH2^uGN994ZjpU*%=AM5AG926y%WiN*0#S417)NGB6tF-y|q!U8ZRJ^H!xoTIw7EdEoZ<4pYz~#Y({_<#`FD6^x zyhq1_gIjrH^5RE_5ZJIc8{jZ?lJJYa?znjaL(%tOqL=JwoHJk?P3Fn}W!Jw)@F`yC zINhm_{|~rrznM4n)BSK9zrp5lj`{3L&He(Sg#fMHRdsHLoZRNa-o-$11 zBioUdzg8|->0j#4;u1zwdoB7jYLC#bq4oG=)jjd?h4IEI z%XrtH>3lkOa2zH&Vn<{=q0Z(xdlf7?$4TFZ{|B_iH!?U_(~6+qiD1V#B&YbB7h2*WbdpP)Tk9y3`g`2Z zf!LRepJ8O&mD+!MPf6fuczR+*UwbWR9~@{qR)30@1%r{?TbndtcW-bE-#9j`l<1gC%B**x^6NnV{F>Y8MK(QX zF|)@@XbNwqxNuIA&GJIBJG@%F-pjkO>!D&L^jc*|AqEZYr!Z2@zlJ#CnL)}%fBf`B zpO!sN>=w>-W4&BrBi9W{aR#s$imx|A1Q@o=Xf+9aWu~YahSh?l&;$5v4VZRCt&eo$ zTSm0&WZ2C#KNc3O{sr|v6s)A)Cf;-G$`kqRvn_*)IWqiv)zbx8oT1s$kX3_p5CsKO zvX(rv3qe?$GzhkSZEo@~6LE(Erg8Y`>;sb9wbv}i7-jhuy43i)1 zMPhtmFXn|3oHIr??XWLvMdx-0Gbc*RIs`YAbwB|lngzq)$jo(jpkkZZY(5IE3>yp& zmxaMl8RGsojbX^+bfO9-3W?T2e!NqCHe42HBd_`4A!w(jz#1%W6oB+XZNDRt9l@jF z69QU9h`g-M!*{p#Aq}jgE&k+FLI+o=a0IiDi*E8WjraNHg5obS zkmOb}MRzc$%$x%;PNDSZtht{PGG&n`2!xg;gUX6NuO4VCl-e)XR?NPi1|(i@kWLY9 zK7lJVaAWzqUY;oZPxd1=buEl^lD@7vIJ(+EFnp3hHiULFSymplSuqHZWSf(d>UYr9 z)zxY(HQdWaLE}V_4Ra5Er6_`M<&fU%?yoqY3*`CgZGZhA`)M^l(0X%^lb*;O+Mfa< zQfxy1Hr~$4Hdr*OI;w!tcI|%{F*Z=EH>H5G+P6c2^kd?q$X)D;D%z89Bs(DM= zp~2inn48zT8%H!YAX>$U`PjI!ENx6VGW{`uOts8~dnADN-{pyz5+;Kbj$C$q4w9ca zfN&Vrd!hQ6v!6XSnn#k7ng!jRTa=9kc2}B2Jq9dA0ONn23|#7(c=a68EEZET|7k8I?e~9e#zCz142;`ox?Eq7usuY;p>46dGIDfj8~l8iLm` zc@$B>WxRv7TUBlA4#SZi5;&uSz2{Kocy64jQIMmzeu5!6z!tb@39PEZUywc?3>hUr z9A-hRCX^fx?%#J;mREGJGj-{=boP>U9*FOgr!iU_6v#HxuX_rF%@YuMXhSozw6shE zl4TGG<`~qK=lZn)hP(8<6NkS;x+L+PzF6!IkJ8>Drm2ekXkzPou~}_l+n8*%^#J+# z7G2~MGfI7EH-_K&P8*)heKrdgoXzVP^6~ag4XG|JE@l8OC1Q3|I;0EY28wkYn%e6a zrn8iE(#EJM`jO%-V=Gn+yyh3PGVKHxCr}F;U z>&BBSHoMj*sv%ZiST6#U))GI;AzpK^pFa2BMY`nW(f)GxPzgQk({x!aNb`s#G;pA1 zZq#OmO!f0Bl#*ywCW9K71qv5k+*o}a}8AbGNgqm-$dE_Fnx^0^B$riv4sH9Jc=?5soprck6PUKcn_I!7%5po z)AZN(BNKom-~U4FESN647taFi6FDiBE)Y0Py}vp;o52$AFHI;;XT9kYYnh>*wH%th z>>sXN_}92(SwZA|Dc`ydUgUKxD#}8DG~!gKw;|7#kzX=uap&i1)gH5X^QEaCN#c>Wo)Y|b?~J`K%73@O*w(Uk5=Q54;6X_ z)2P%ng4>!?j-dSwY59vOu3xDK3wbL0+xq3($t4T4_la?6snDJ=o6G)bg8~s6<;;*e z<$y>7QSGwrT|tN@znh(!O}QfX5ns+k?n|R7X=flS|7%34y7;SMbh`qEN&vbGt!%s$ z#4+%s7w9SEzm5z8I}vV$^?q2c7@}TY9!|+%25^v8`Hu6A20^;Rfu4^X_@6@UbRFCAis)tHK9(m3iw; zh{ENDqFc*IcL$3~ZDS6WqLbDFr1?BIu{70SHzj>IS(ed>eae|~3kLn!+5$hO8nJ;D zQnQ^ageY9lB&9#QsYlDdcYoRvwHv^R|X1AC>9UM%s zaRF87s2uYfpopAnfu;}=bKV5(mcI0OFJ zaLjs)Q0OAh8d+Ei)4IF9=IS}_4nfy>&9AAsP}1A_`Ie9Xw(!)T*1b-!kvU99 z5%B3O^K)~Otp>Qt9!ZmBLCLG5kuyNlXyAV*9>b&iyqDOIg+1da>vH35fEto*QZ`GAtnkc zZm2V^uw+bZv!oaNZnZRprjJ8v|LMv!qonp}eVZlwa^T%_Vuj-drPof<^0K?J*Yf<% zcM(aL4zEm6iVD6TMBSlXI{b-K@T_cvHSr7Wu_Rw`J<5O_bq00!D_?Zm2v+A8zk4xB z0N5o#&;eLVs!5T!vQ2m`$&w4eXbE zHy`~O*@n*wF*gvvqvw-WJZ04NC=k_?WT7?ncSTnPGX^sK zn1ZHi03Km!NyL=u2Kh|=A#~-WsD#J*>yJPt-hEJMBz{kYB&3CaLxcY?oqUoC%7?Yd zOdDBD@-v^NPr=F2`7;UhVoSB)c{AbJ`@C$aYotwIXQ@x?;q&u*p|5_56PC+Z(B-3%*bmWRYw<2=lKZICLE8@JReAN|Z5REfv-NmICC%5dQYg2W5F(!AcmP z)!SB|!r&l}R^F77SFt=E&jJ!0CK*$;#7_&`s=xg2unh+s<98pis(M*S(=E;dI}Z?2 zsCNwBgP9)_O;R|BIuiS`XF7V z!5Nc(cAo#ycsm?IAmy)B=N4#v03#2*;6#FjT=BA83+oSeqkpQiAc5hdAesx_YbM91yot z7r;*!HTKYSv*0j1WQ6jdu<{v<0-I()i9nb>iXqth?OU6CcbPEOTKJhw z`zlE{I`#d9w@i69Hz!B68p3uuOj4qLDDiY6XCqf3XO8XN13i$O#^kL{VydO_6}|)1 zP5WV)B$hooF;0Th`wIa0-Q+vO>REsp#-FX$wl@BRQw))o4Jn_{*bGeG-bq6>H=yx} zWnZC*VyU)`AzP(9N=YH{rhZ_Lyg`aZ#H!n1f; zT{}udvpz3yVRYKg09yu3KL+yQxH7MWy7~PaD0bRQq@9O;b>E3abPWH?8MTL+fz!|D z)!=dVO)yAN1>RKE%u3BYW)zVn&*XZTu9 zPIrG?gZ@S><{vhjAal$yhnOtZaS7NW%8BSe5YiPUw+fYF!1=Xb{zN%E6NTVHs+E8q zf;9bF)V#$&u+QBCOqqv708$6X{7+neYyTja{$4}bq=QrCB` z7U;T{%=SDGSW?8N^E4kizhfSf zlymw`#5;TT&S}_6r-(j5&pTIXf0q2zeN_Xi(Px|oOvc#eMnO6x#FSz~_5=HcKaiux zW-aN#Lrr}ZVXEBM!3TTPXPAF&9rpB5_Rjp%0cxG>3TtUju<$j`7A{R4F09=9q#~tZ z@Zv(7jfeZ?bJ>R3K$%mw2E3)@^rcM#K>~hm+o3Ok9hfj|C_(y9zgu`O(Zs_A34UB9 z)?N+h{xUsccmRiy-=U!?UJY1SSktfn8IHiolq5SaMqF^p4Ouo9(~AgZI51gOCH?%E z02Z#7aAmSMZ0M)R7s`CSCTiv>F67IDzZtAjLT(uKnP<6PYKrsFJ`flYr`cj;fZ8wx zd#?|dDs1tgCh!&4-Fh+{fYsx`E9l|hJUHE|FxVaI z@a_AnZi+xrRTOh^5w+Sn_SN0U>mE>08^8L5tml3ffLv=A5&5@fa~fDRu3% zW&^De7q3 z1R3~7W)g))pQzvvl-44}zg)M&f7v>aE)%iB=ABctf(qk%1Cu7gXc*y3JZbMIf0&P& z5++iN_~Ux1{h0b+$@sb4^u!6?PXO3s$0UMyVT+s?kHIs~JoH|U`?vQC^EC{2P{`?H zq6eBjW?!__q9uN0ymo3K7*ge=AgklqNuuP;-=~o9P1sjS8394Yf`Qm$7rEzha>uV z4(Bmss)vUYpSj}zX|2kElHhE-S{u%gDver%ma)VjKH(6CYpreA%WNgC-%n>b)wT&9 z@16Q!*vo<}`J1d*xlWN;gvhvh&eN+&$HAL&8}c1FY^`D|?S#3|Oz)HVh=^i;?{PK* z7PdR-TWuvp5>+cB-=_+OnRd!nb~CQtXfZke04-F^bQqeQAO?50{TbCYoCZe< zd#O3y^D&0=&@lijw^Ss{1VaeZjBUa@vLgmZXx5UFi4Sqnq03P{iPJTT&{?9~eJ@`6 zC+xD%`Jsg=&+Y=D!7r2X@Q^)k41%MICSu?b_p!k*BM~X9#2MNNvbMh+S!0ll0*P7w zz@2#mJ6`F&=i`t9vUWxqeucFBd*jXw@g1~4Oa5HNp8AA>pTHYOp$rF_DL<;?QW4$y zSsU?#TOTJ4^GxccrU1q@F>mZg*)hq@UF*PSSj3BwP_ji{kMXZ=yRH1P`Fojy1_-A- zKIcbFhbt{`&5o)ajB`_Nnz#$|ZFL&TOy}z>o@>ug(k^RG8&1Q{x~&JsaHo?_NH@56 zTyjXg)mm6VNVDcZvo*1%$&x+rrevGu-Nxm3&lqcS!bf(v*GKb0Mvest+h{g+j=E{~ zxPgdw^7!;QOl#c8EC2Yto5Yy975uFF@_B{vjbIz~d2g;P3`O}u*E%5+&i=#Y{JXwG z$5?7y+W?Zxy9wRK%(7_q0@f-$J>J&E>ayl4w0C5W5Hnvi+)9%A`&qAQ&Po?en%QMN zP7^6bW!o%wug8YfS{v!<@#u1k8-h*$;a8u+%`|X4UtvkXrAL`nYmrc_x+%xqt*SFL zQrZfQ8pLN}=;~*RY-3V#klKR7{tvTG#0`y#k&hN{#z-{qcUj*QzW+9r`-VYR(=k}& zP*Idq9hbd<*EB9~$aLgef{1LY|8h_KFN!Tc|BmJj>;InF{gT9mCAAegFkCkS!}y=R zKLhs-5jT5FQ1ph8W2N9qZC7QLXy!YG4VF@iEwL$))0D_Fy0VonFh;rVZhzyIAMVM+ zgC@WGc6za`^Y_!&-s+GLQ<|vU5z3^poTS3bbQ#SSG}SIVsHWLS;5BN(Y-$U119!J^ z8_g4aJx58pwMJ0(T(|zz|2-WKe8x%thxO5@gP$|yPKlbwc$*Gl^Rb04#fO)2*vb+g z+Js~W{5w&}Ht&5?tEr7Mj6!ibPW zY_0eUVxH$u3f9qQG4$sF8RG*>zqsN?Euj25OrFusvapScu@x@NZT9*10ckFo3Kd>2 zALmxu!(aQsxdMvyexQe~|5Rbz{*02H6s!i1u8b3X@(vamj`y3=1ep z?FQJJhqIeMT|BY(#VBDMh5I|Yaw>fNsrO#KH0;uZ87{>#u);6_a5%sX+&l^ZtQli` z8)t-Pi6w~|Lgq&`cM`FMZ7n0gx{J|;v4`VsyJt&_6E6&1`sJc`auvUJV zI}5!;+@%dY-61iQ`)Lz+Z`_~kt{zffmo?K3zhYi5%uJ@a#542tP28VkCgyxPz%3IJ z5XJ5^$$n=vhgiMFSYu7*fdQ#N(wj0gOS-q0O2%*dBUa5?LuWt_##}r7a+m| z=XYf*(Mr{54J-o{qOo5Vs1LQH6Mg8r6k@Oi`y@QuKjsosDs7& zk`#;-%J>I1r#RqDH)MiCuf7k1!rwTvm?)dvkLRmiPqK2bth??+n7YHO`dU`e9-{BC z03oiW*DWYr?l_E~?qJV~URHXzxza&})=A`_NW~{=M9>=qHpCo{S|4 zR6vizZ#1|;D~Ndv0GX^>)j^&A1_=M;KWKVx=;ANCdVhEm`5eth}T+tqxZ z3v-GQh^X4tiyDeRh4v5TXc(fUSIXEm(1p;k0$^GGmUaeyfpm>Ik(XPcXpqr$-BTmI zTK@k@CFYC#*aZV1X^Q=G9^+sEc>Uz1Rivsu8VCOmP)h>@6aWAK2mk_f`A9#b>#n$4 z004Yn001EX003WUZDD6+b1!vnZ+C8GWKv~jWpZV1V`VThUovdMTerS%f9%$7)ppf9 zQ`0@?RG&Wmbj?gpgtDR(8Zr?w003w*(h{lw0J{eOP?3l*e>GiF3p{^MNDk6E&H#Xd z^Y4HH(lQ7D09naWTwGb%!rsN+*}~p|Tt-}++`-A-%+lr?0C=oqs+p^+9pMRr*Kft- z!UGcI>{W3Q$yLQ71K!0^(|tg~lnwuoyNs*SgZ23{Eb(woI81bOKoqVD1L_atC4}7% zdC|f7;Xg*6x4iSM7uv!5#PP@> z2D}4AyrRX501-*3fXozXH6RBTFdjAivI8hH0>(7{`?Ekm=0mDC6rh*z0T(JK4j{+* z7A^r;@Bnk-vA;iz@ic!N(;bx1IELY zlpa7xD)3J7T1()Hz6$ez?r)@0e+#rw@qP}}Lu7PB(9&We{WKwiPydd~1llA`gsImv zm5?ov17q`M3;=TCaR09M2I4V+UNten72Sw##CY5V|3>lU%g*cGWVwR~0BpJVO}{cQ z*AWHq!w1;D=6yVewJ=1!#pZKvY|HZU-tO*_Y`>VE$%vNk zt9h?cw-&_a(NEw7e7D)TO%=#y5GV!vu-Q9yD_{72@)uIbm(~3ksh1{{w-=IGihh|d zE!uSNc2uw(qb1U!ZrBPbBE){t4t$(>`?|fs@C+lg!3oq@2|;OpT3XRkkA=3&xw$5bgNi=k9R<4 z>eXmQ7j(dQGC|Dh`P3eW1S>j>h-30$B^>I@4{ge5MEumyhYvl{u-K7QXbYPCvO2@Z#A8t-^8o{U^!WnSVekp;d5*s}W2r4?%}kyJ5x zN^55HNa`^85a!k$74182@KCtp4R*DiQlz=0a*eV~ENn5E6yzH_}r%R9EdJDBuk@DBV`^l0hf88wyd^Rj9iST zAjo%D#Z+cpNSxay;ofCee4dikX&8_tZ(qFb*>Ujn-j^Ao4zYbIzLP@LhOa}Vf(M~a z5C{x#I@$}6Fb{#QRKyMXM8peC5>1k~LgHGc1@h-5e@bFRSq|#&Q0>?b+79MZ!&85t zmQy%ZI8RemXepvC;+N-_9~vJU&l_Jzty^5a5VWm_>;af@QSVtLkrd0)*{J%C3sL( zqiv(FiTM|N^QM8SzVrBwc;8mvpAbO=w6JCLauQtuD1i=fb`Nw@F9L z=Gv2(lS}M7jX0yU{g#<(>9bPi_~tFn!8hTN5pqGJOvyq_>BNI;!yUV_E_aRwTV6AF zndx=uy=Nt$>T|Ah%k!|+>@kjP+AJM*=c&G7@lBPzXB9f3O^-rr9ktB14?F7 z<~Xg&#hRu<_cE}_1-{U|kW==K(2fB2I@`LA(HM7k({R(MQlEX6QRs%aKjqukH?Oy8 zpg7C}z6(b?gliK`vnF%8Pp^tQZ%8~zBuT8No3kqM zRx`?S(g~F@SqZFgw{o-!4>FnQjLmCjYRlNjz2{}3tKzb=>D+iZy9wLQ+(y~)#!q1$ zHgNFFo#?#{EygQl!e-!05|IyA-juVMJ~eD>_uy{j^Aj@Z0>GmRZ+$#0YOv zc^3Wn*;w5OD3&|pBKz$OyBB-wS7YIKIW0yK?fs4lE8gD%j-DXo9b7p2@0#!x0?j`f z>1^kf%FncttNc2sy%eki4SPm{dK#dtPf#?F_d4sCg* z9&JOj{_O7lGl)5P{1d1xxKX?%ze}LG{af*$iE(~m^#b)<^(S?%^O>~2qT5 z_Ir-gd5~T^7$Wqi6Qlv9p)hYY|Ls}kxehE`6;XEdko0V8P^oC^cs2wx0|P;zL~mSd znVTn>5mZ-=S)f0WLLVaQe9gRYXGG&d)A*S&xJ~IG;kkPRM%n!_jKiN~`8GvORV= z7I=-HRT^r`XiKYV(YJ0n_v&cyHUl3KXK_!g-FA3h;k_-)XYmTIb=-K_g9pHO8+dDe zPBf5-(Y9rGn)AwbrFNrRku%X{@wKpdVZGPYrHfU6t8Vw4o9R_4Fnnn6ND(=d&L7Rdr(LVRto4=4eHSh?b8kKH;f!KjTyE{95L`OcTOAk&!6$j zn+`3W3n`k7EMJJOT#Tt&{8h7*_OVW^=4uPo8>f@<1(M;zF6eDR1&aU9^rkmu*;$Hzx77<_wsdv$en zetv#(a&mBRu)Djvv$M0cwY9#!zO=M7H#avqIXOByIy5xY*VotC+1b+4($v&cS65e4 zQ&U}CT~Sd{Qc_Y-P>`LSosyCgA0HnR6B88`6%i2;78Vu~5)u>?6c`v75D?()?d{>= z;ppgSX=!OC-1lN=kBaa$;g) ze0+RdTwF{{ObiSRbaZr7R8$lc6huTs1Oxln^Pk3azr(8x8e_2=^$9zngCnUu>Tb#;{3PJ zET>JaYI6TsN}C}&)$ivePImRiW0Z@e=!1wd&Ven&S7zG(ON1L-kqITw>npqP*%@Xg zPDp8`lhiK-e^T@GsxwTL=a|lg#2GR;6XbIJKgl*oT(~Knj94m<%#5Rj;>f)T8ZDGY z5iuyRMXqWoUh6jRtQ9fs-YPj+f7CKB;}t8|$B9QiyNnnf#Rai^)?j*cMp~)2NAZvT zsNz*XF0YUXdJ9ENuZM&2C#4+B_@{`Z7E6O3el?m_MGA6APbH`e>iSxTP{3%sNkdu+ zE1L4FaaC!I!U^zMrf?-kR8!e=^V7{c=VMag{cEE$7nA4B>^3hzhc%J)st6)S%yas0 zA$$bsA1G)D2*0%mo<>h(yGx%T29>P7>$XCBgZPxs{Un!{{fc+&K=CSZEb=#|MQnau zbAjaHLww6jti4~z98*anef6!Wq)?TLPm^MsjuM9`=t~iUmYm$*FNzch`53!_Cr&@> zP*m9W7(E%lJiUgJJhTZ%upNIoF5Y-}K?W&3L3z0ia0EA{ghNrt<06(CV8FG;i$dhsUi5z^7n(uSG`V?eSYK1y0z8w%z-l#JS+ zuhnY*PRboea5;??PL4w!I~eKP8t7i%a2SuZn3}0Vb77@nbap<{tIC zMtl$c!#u95Buctg``0)3*_H=kGq<+9%A)4vFNNudy;NqhRWf-dD;zmpO+=4yI3ig$ z`|J^qOU!`K?k_D3I1{#f>fVBdHIVu0!lLMSM*;eXZbBExY!==}!WuBN@4ZtWy)k-W zj$wtH*p)wRY#F-;MAWTk01;t4Vu|{ba$8-mFZL%>5|QAVTNzPIz4O5dGb-^$JuHg9VC&;lgH-}GWtMe)j z%5zH;lN#;14MY5v_kCs;m5ii1oTyC;?MMc9ApZD2j?!^!*tXzHKeJ=;{tIL)9llKU zToAcDClwRTU#e!1{}+(wvA2 z_DgK^zj8zTVE%|^F5>9}qlyy5@=;^rkyeKjKy=wk(8UY^*$T-=HNP!07c3R93T(JB zCH_^?T8>WNGm{dUak^TuAyXo%Y3ya$UD#xvvzZ@X*H^}o(juzOnTFzcA~jl`)qC*? zZg|V{{jGHdi96ae#q2(_ng;?fFmH4BA-7VZDI;`4fxDA$FLgx)mJgHxWqogx*-wrj ztE1>3mIe)UbP1`YR~Np<-Y&l&O?UYDAGrQeSK z_w}#;Z^8Tjga5k-{%1hzQc`~n|JBu15>I!Uhmg87yK+v^ya(JYvERIX&)*p$SNY%S!|SFwr;x!T5_EI zx#an=uZw{9>9Qt#^)}zmY+b#h{^P;t-69gfvlt_-z4g*~zO?TgLY$wOZ7f4M&N+5h z=1)8;>{Issa5JhzW@Z0K=4@K0x8-MSdF!aPZ6Ty^nvEBkO=xFm3t#2fQ|(D zX|XJKW>ykK(NMQr`DMVF#MmS)VYkBOj%+x~fYo9d=_?=8AV+7uG9wIEO)Hz`y255d z;JQR?s92go&U)l9&i#|A+57L!1*lw1hy9={(d^wU!)<28qt{bnwY`@-yI?wS*yY-h zOOIOZ84k@)XSOD^rmG*461?noYE=u;hbYe_(aq9N9LJM=0t-kt_f|76162WBvkX@B z?HIb}E2-lVI)OTYgpNA~*EF^HruRI*mhl7xtQUf5<95b4%k%U5DAtTCIAzYAQUwlf zKE!DGIqle`#i8P#TgCDU!ZD4McZnfJf2PU#rAx7PQRmEixrlBzu%-vCem(5%ey*yT z7tV~6*mm|w$yz8@xU+xKk0tBd5Qq{wWs$LGWArCuh{q308av452pk8xr92@9TABVt zdP`Gzh%ZVBk&*1IhPN83Yr-YY@DVXMeopz()dH6 z;2|JWI(J7jsOOT0R9U=OoJ>v{PK=n;9Y=7`yT}E2EgR^z3Qln}-z&-g;@z}lebJM% z%8;`@Lm0l|e2^fa7QWB;Zf8?RG;C=TwhoIQ&=<1*d$7nVs|*nNn#4Or@E*5ju;{5Q z7z(3KXms=fUKz_6#+hpKO4R1#SOv<|24QvfXq;Uyh$Y85Yb|R3w}d&YfCkZKilyBt zN#A2QAmWUcH6w15*0thL#fZf&ABdMM2Sd?Q_SSO(Ctv3kuaV=}4P)F8G|DzQvqBO@ zkV?s}kk+))%qEq@IkkEKHT+w{GS3O1V}jh$_#t6=*6gw!sx^=KBfV)N@J?R)S3_Yz zY}1EF&Gn)X_B(;@g8=s`XicyYl#Rj#^oh}RIlKR#YTnq%Y9=7M<)Q=jrLkC&`z`xG z%U7!t^~GYYukH;O=qzuN-xzH-^@nafZ2g@$Gzo_4|EPZk?ZWMP z#p)$`0*BrH^h0vI+sXVhkOv|+F+|$sID$^abZz-(w&7lz=%r`}4&;~5-tY4OLcehhd15gxbbH(`ZuFqC zo_B31JqnJOR$Phx`&^2*(p8{6c`5YPG0J|MViU|EQe3q7<^UffUN|&T-|Ri ziczRc5%QsXN4}-=})r)wf?YORab?B{ttUb`di0u{BKUL_ewV2 zIi-4d`Por{*(s^T6VT32<>dJhEgF4bYXO0&Bvq&a!@XK-U&2m0CW+=$J?I!sGg$nl zJ7z$sMjRebWDH6ECV+@VOHBMwfjxh6hkcS)$ujC{eMCbZMK7L&^bnZwo!-i~m+b7Z z325q^VL5o0$O>Vh!B-2>TQ-x@gvmq+=aY$6V1`P;TkzmKc~Kj)K|wAT?)*hmPIiiK z^2o`}4iD^S=4{ey6!Dsu#GLJ9y`KKkAC73>PphIcAFX&`H$K@ey55Xu`6_E<_*&D9 zkili`VU-B2YXa{uU@ZZ6{WuS|!oIoZZwpPzw*g~kPbT5Q*NJ$B)?Cr$?FRCPZQJx$ z*9i1<(XWcY!eMVRoLXtJ8$w^&%)KGXYW2dIT33X3m`AL5V15An_Zn@fIK>Qwx`dRt zF`@beFy4G?1JS<(5?-bw|0KfUkxy$AgRlq&*>m@Ed{PoOhk);yV<>ohN+37WN$%D=3@ead$J`5;s^%{6I&QxYOoeZL<1c!1Mw z+5w(%^LsWDj&5GTx4U48>qBE^&iEGAeFz`*%EAGy&=qWvzZgI!tSuedj-EblCRB-_ z2DM%SJvI1&4s2~aOFs%X`DDgRj#vT__CnFB&v3*+1Rji<`SV3U=BRCsQU%$)e@dqUvQuM9VT zw|jv;JSeXZZo`1i0@~(9Sn5Y*>n6|{%=Zs_UApE<=`cf}o#J9fcQ-jhD_8q)M~tG{ z+s}Zh8Y3@(cFgn-WYb`^$AI_%k&mD_}h;I0zPxfTp-Rk8P*d50G}v*imm|T?fvn zv5%9yk}&FMt{1V-^=iV!ipf_oejX>hJDL{k%QNdhzE3FDBzM5l-rM-w5g=sJ%cGjt-QdsUC!{Ns8d zI?O?#x`#pY-YAYLujeo3_h-X<{o6f$9y7|lCHmSfEkEur?UMXx#lhRZjCGiyqBA<_ zMHIh&1K+B*huULJe69T=~z-awj&n zUtlkZ4?I)f3p`%ByGicd8lkD*XxlbL@{!kKbQ2LQXN=eE`J+k(`Hsf0<)fGx5>g)A zZy7Xy?fC|@5$lo7d30Y-O;1a4LZKgoCsGZWj|MJi^+=Hk5t=!6Mo}jvTe0MuqsFWV zed;yrcC~fbcqzfz7%ALLv~F-8Qb{Ga*=yH0mU@GDH+IApAut==uaJA0KwE&wq1jM- zYCgj}=oyz2-SYi>Fn`mO=I9&4ASM;F_}OSj;~x!O!_dArfXms92b04onq>%$|MXtC zPp$?k)g;DlBsf*GyA`t;gTi%4zz)5j(Qc=y>&3*gA$)bW-?fw4(GBV&+Va#JqB>*a zmmjIDRvIMcP%Ss_0$h9EzmOg_<$f8QQ#wQ^qF7Ao8<4Bw%@$NogQ zoQlwpRy4kl-HzrMy`0?J)=Cz1fX~ouJ}ri$T=&!bfKj{I!Eh5rEAVCG1r$2^`^OQL zD8NdQ0E}2$KkKi*w&8wv}rZCjS$5tS+V?A%pAU&o1dtq ze%Z2G=v!Wn3uwcKuEZGkI&4Q;9qozVX*O4E&hsD*1(RxLIC9#EUQA9*oO3Fg5n7Ip z>wCR*s7!-f;lr3XKK+@K+x))DA@$YEa>=H8PbA*|YP+z*GG}>HcYpg4<-)t>Bd&H9 ziJtS;dB+P&pc&}7>@gSTQuFPe_d4(;J7==hBaqwgS$_(NqoP&EOQaWag1-dc4m0<1 zOxZ3^YU3J38rboa4tWH{?8c0S`oT3G?A;(=&Q33QUUEZF4`!cpeHwu-*u`q0-qG$0 zLl8Dok;fkQ(rk4jl1z7v*#>(ZeoffR#hbiWweK)69 zAWFQ9JtGJxgD$&uKXUD;Nb^oC*ZP3Ixjn=7X?mj`%$JMJBqYS0k)Tlm&}{Y8&~q%` ziO3)Y_^Rulmtei9NWN6?7ytS@1gdIJT@|K-*Mxa&@ktwLCDqtyvI0W~+t_4z%^=NY z$=<`)ItcY**~y0Nd;7fBYR*31!HwkCH^>8BcamBo$>z_~&EL}dr?RfXJk?NE3!!H< zXRor%O9xvm1l%}ApUo&TU5(S;viuGOISoa;fyKSc;x6v5;Y|$@1JoId#&Lv`pKB&K zWm)J6z?|QV)WCh+xGZ}K_Q8vkZAsH=Kfisb=M>xY^C}0%*z>dD)`!aw!m~WRP%fW; zN9{)_9~fnMmEpKAM(qq2knQzef2SskwH)BC|B?Jis`W9z@(LGYX|}2-qX;$h40|C~ zIgGV>i8OsaSHu8DIl`8RWzi8z{w816csbP5Kq3nP4?RTjbF^$#!KO6~lm*dUV^2k_ zUgw1QB;bnX%;n;LV`9D*;6iiUZJ`zRnN?)?^ z9p52$POW2qCX^vzb{1=Yg45vC34oM7!3_`RA(gux7b z+q!h0b1>Ost0B@D)_&lLKvTk+kV^?0FGJc8JFDRlc4FJO;;-=n&%s0Md&0`JMgHb# z4;(h*Y|(tFE`{;?`q~%{-kD?jaX&Vl@uJ+BpQj&F=RAkJr@10!Zq^tn?bu2($mzIS zG!&cLP}O+j=fcPl)reGh|9hH2Dd?!)dPZB}iFB#ax9IW%<;ccOav()1AILEuUGi1l z+?301X1NuzVPfhbo+apLc&1KPKvNX62;+ak2dMrbHn^%S4?ND8I{ObKa<|O)M=NJ5 zJbbqCcO#}dlPy!C#&;gr3qJVD_Ul#jd~8N?P$M`zZCN;}b3)XDuF%ewW_k;@qo+03 zg5P{rlL@{-=F)9XZYw)#Rj^Q9s!-3eksh={PJ~5w3TK<)+-Qc<);dT|0>9iC|L)`j zywy4{FRHTcS8ED+69{CCM$#D zuXB5k)Sy*M#bcj7l8U_sOcS0$Nx>I?mZ4@d^M=@tl#-iD(n*>?pVLSrP0%}->OkNY&!Ay~(E_d&;jAcM4oB%kKWIO@4a~PvcEj;3NjM+NQ5iL-taVwH(DCN7iUomk>ug&{BEM z`&zb=k9x+At>aA=UIm=Bwj?deJX^_=3BMI&p%rxvEu^qYYGx~YqLv}Km%vR%vQH;}RMNLU8?YQ2~HP*do zp*;DMYjqzr^DUpPtnC4HZ0mTnBL90^o3ow&Xig4z0#U|WNleL7%MtzAZYRck9WD{{ z=X)$#gV3%{5f{N5;pq(5dJ>bx6~<`sRK1XkbCZ1(lWqo!Lo_}LcXXo5QlkD_MjJHo z_p|p&lQo%?$TX`8J9N5tKc|VFD<^)w=KvF(rHp=1duyG7S+o9LxIsebuwKIs=163? z3C=3U3efZA5`IOj5qtBq^j6J?d+HcFz7o96Z&R#*LA;Xz7f-`pqVX-j#Mo1tC8*MX zAYlQk;%TL@()9OuC;Tq9mGqu@w_C<5sZZIXFjyuT*?Ujf<#ygRr_R5$I&d0m5ZIfq zVY`W_%SYzRWu@-#$r|Sw;g-^~E-M>~UeBMtb!QE{RxM+p9UPeXl%Buv1(@nMPIvC_ zKL?A35GvpGGiKa+Xa@CxR&TpE?<*wa){Dsip3LpCcCddHNlDB5M#cCe8+XZ*!PTu6 z^)X2Q%IiwG5|lchu3#OurKJz~DX-E*xO+3PHQ9Vq^tYkU(kTP2Lo`6`PdYnN+pwHRPODY;KTm;A6ypIk@i=-Akp_WMK= zk4~B4>SIT7o+dYWh}F;{Gi{-u5p%+85NTW9!9A`RL%PnF3AYv2y*jk0%5n_q+;T6) z=t~6g7q{JJUFpjRDCC=dBV0Jo2R3|15xVIgqr4X0;5y2ovQDW;rE_*Hm(pRb;94BE zQdtgk7u_<+m!4>X_#@34GLW;W2WH}2o{7~$FW2l}i=RXs)z17&t#Mv)WNBTo1xU^y zmj$X;!lYUt>J?vGLngXH^-wY`Jq&f?p(GfZ-hD6lkpw=T1a;a%MUgmF*-{NZecOr6 ziE;I3!{h57nZkrt3AOTtvyh@1!X^j9d13_8P--rBo4n^(RawrN`aiRs&`hYAQ-m+t z+AtGbG_OvD397|D%`3XkmKw6O4dtX>pr@-O+QI}r-hifj6e4%p!Z}Cob2l1==0w#p z`1?<;=!)eSDMmgw&sN8A7Bb$#z70w3MYxiCTB_9vs%6nuh4(url^4Yzovt9hLiLX% z=dXiiT?@bEXbaKZw{7hX2ldJh)a4Y|&)W?tBb}nw@w2=rm&uE_E~gem@el5lI5RZn zC5wqf5z3>p8J6?yPuKcYT$^wE1F>YPXgequ=?dqB@XaN^seMj=&Hbrcs7}l&TWUoV z+?1qBv$a_x?p9^Imy)cB-5!jR&PAg3bB-25ZNtDMcva>K*31fEHL<~6d8Nrw4%XSLn$#Lm?)K!tavIJLv?Gnr{ z3gvt^+gwV&-3G_@J&!jG&<<#&YFI5@xH40{Yxn{ytTr~Z9my2y$06T|@au5*bEoh_ zicZ6aBb-b}=ex?=E?UKP)$vsp%9c8FuhB@gAIv4513(>P!)MykFvVM3U~KX|k6MPR z`nODXOrG{nc~zfix3t{{xdRMtP8Fnn#i$ea88ap`Sxz}0{Zf-JZxh*X;bw2-#(5u) zdZwTBqk_KQVEE|+s~1B@@mI+w8T(^~9AiH*JsGe4X{(d=4pD2m&X+ZA)0n$x?q0Uu zd<)JZ^HY#}&Z(c2ckns+SFSZ-H@pj>r%TiFvU@<{d`jPyo>b@l>snwg&ksj%9 zcH05UQB6(~xZ#G`Ca1^z7=bH~BdW$dBG;W!jgkc95m)x)#FdyvDcn9k*YNWmgfLb7 zAf@tJ+m@Q&Wc7PxM=O=WbwsXuRXTq&e`~EWp%r%M76CNCqEnHlRw_<3@SRbsJVCYa z0fWAf=&HRufzF1QgFMWpr9*MYQBN*Y)r$E&;mB?5V$B#)sjBS!bi15ztADj>@l|Je z!pd?P$jKeOcCYt#p0A_W!!5dT@1;!x>r?|_+KpZV>7$p?sG4lYkX%^e`i~yF?v~gn z`B-I$ z4$9Eb&^WL0G<5f%Ppi5EY^g4g83Q??119zW2v6_(r|jF_Fg_Ws#&oC^uW{y+M*+B9 zH*7(^dd#)zNmwiLP5}CKisR41M4_Y|YYlzsAQ}+kCP}TFA_7wD9zwhbaN;&F4H9Xn)hFhtn=AynOiZreY1*IYjgxg{qjgMZFO2lw5SprPy9ojc-K zzB{mwKOV|b(gaWM5?X$qFIY!Oi5UJQtdZq863;`EVtmnL!EQ$!hU8uG$L9CXiK21K zG&RIFXOX~ViGXF=yHQS-7?lUOM}y?Pb3~i-yUVqvyZBW-eH^yM&XYq7Hnwf0yOlRz zjGSQ`uk+QhgEaRs#*BK?3Wyh=5tDPCigm#fs1PIb^dSI&<6VFEFU6e{X@In=VQXI7 z%cTjgTu6ii$bmCQK5i|=GIN^9qFRAEFg9|9wz1jX*atkKF20~hp=S=5_}1fyVEF08{rV~jQ*ud`wAvmMlhhdFd`X)zQmZ7B3tmK#NfCY zSiDst$$)2SSPI0Q*V2N)dr7OU!)M4j`h0j|0pPrDDp0MuO5XmQioo;7dC$r5iq4fz zSmDwdH0iQ~bjaLZN~j`kzEVe3x;OS+xnXG;+W=#%A-m)4`y&Uo=ew7jm}PgYrqNFh z$Y)OmP26GSk%5`EwGH{~+D?9&@0#D*@r7;Phu2IrBv%g*`SiyW_(UJvF4d89{kC@& z!#zzsVMbFU8ExI(0mux>0X`!ydaJ)n{sbOuGW4WCDl-c`F@eZ5H58Yf(CPC03QjaN z8Mq8H*+oFKzpYVmgjpHQTcJ7`L}hc0-KN0mo` zzHNI0`331J-$M`u zG3!j`b4Ia8wgn4~d`^asiQ2mX;gM=vI1mAyyIE)T%k+uCVp-uyu@FiR^R?^xj3* zubqc_m0rU-_d^rQcT(ekm-QL_@a;l}4~c3h%{8~Ji%DRaj=UfPA+MA@V`{)7NaJP8 z*hIKlvkhm-!xA@uc6G`**-U}ps^IYSRDkQ;?$=58#mtVQJq%{#&3>K%QflZgTgUAR+AfP!akCj`!oL;6B+*>jcm zAELVw`D5^OG2$UJ7E}q=|8g`P@^Fba*P2+}6%KNq0`p_? zkjh=L9hGlCVq(aYERzp8lZ~S)-Qrv@mogO(#yu-6T`D<(tnH7`Ep$J`TDmtKp`WoD z+e5EOJ_%i*?_8~{6TT-~F@QZ?fN>Ay@Y=($MT3P=9-78W{;Iu|Gx7LO^K zjzdwZ(rvJsFVi4eDbvWODweo#lw!BkfvLZ$q%gKut*I`OvPD*mK3Og3N^f|3mb|nh zcy@z+2ciF29%#nR>V>2$HTqCHa6cM3*qr6AblfDaL*!c{%KTIY{GIT!N=U;MED+g* zYhiG;z!k9E%vT&Vv@#pV^VU3@mAV&&Uf1-Sxva24%h~7XD*e5Ki-7Lzw7pDvAd{r) zTHINo;!uSI_)q!`Sx|7Dz;aeWS6XuWZaDLi6vwfBFdSZjE3etmeHP-%J?G2b5C8s0 z9%7{j1~i%{4GGyV^q5!D3hA@NshO9m#5MP0U(^gtyLj1nOOcz?@HZN+(}lc!ei3@K zPtO@F;Ii^t&6J7+lq!VHuJ{e6^W^ilk9jJ%GVT-7o~v$_Iy02mld%j97ALLl>L`8{ zd&eqAT;iFrQ}>WweZ(Gcl5C>8U2*n&Dm+l2gJ8#_AS77%I?ydVSfrC#3`L}?Hn!&* z9mSJed#sII4ZjiNU*;v{=9^AKw_|Ca^6}61dFe4qzu!q^6&TPoqHb#)kF&MoO+-|MqUl25(W8cg@PwNzZK3L*V10RB0Ph%SH?jVm{14C+eR5evT)48ph zs^-ezF?HpZ)%@1>`Ov#AEz+|YNaI6V`sji=>_FNr)Ps4nog%cyQSUgTmPUfK!$Mko zbMH@)Gn)WOQmF|7YL4RC6f5IpZ~9xqf_Z2tQ>LtwZPkEht=3!S7r)I^ zccbXV13V5G{nK!m_J(+6gt-LGmIiaKkAa$kk`nElEGQ0{Mo2YZ=M^EW^SVvPEtcBI?m^moOf6|(NRl19&!;L~fC zNhX6?y@{iq9(qpdfQ6eUW7%IMG4G(4aAqLl62 z;kJ@d--|9^F+++!Zk~N&A8bgvc#b59yswQp37l5LwUtC73PkS^;2`!FFU{$BP}fqi zhimqsn?F9`vE4oKsvZeE*`1=wpNFH#OXyVH3Vxn3t%S0_h|}nfAGoU3+&iK79GRLl z#s9(pWv?`?29VJSB-*HT#`s?d1{8zU`%?uA?K+UDS-Kdfp`qg0Qk&xN%eN3-s>L?I zP=;{vh3sPNX#MtZjSme0e{PqY0X>cfP}fy1!_(LFN+CvLzisVq9w%rO!v&~K+S&Bm z*L)+^=NM*TT}_O2wl|E+Bm?LXi@?F(D-*LwW&SmxauWk7&@cv4cU7udTsCpz6Ktlv zR~CGuLD{W2#WsiD+Fk5I)FUC)J02y$x<;C~)af@gUnp=p?{Orxd|NL&B-A$JhtPJU z=}}bj?%*2mDH9gduzI{Z(de93toRXBC84IjZBM##HN>vUebXOc=^Rq_VEjv6y zy_tVTtgDi?97fylcJa-O`tnZ<6GvyZn#*zzO_!$-_`abK*%#J-i2GoGe=QZ+iAE|* zDyfd<>$kA)QF1rc=|aqJ``2B|w@u0JRV!UC>_<(_FRd{|4?^v1m>m1ijrPz!14i(Bi_m4=|3l2_||3 z3@>(@Pgm2A^jqAk#Ip$ThRzJU${!P`!t7e`*Q|uX%uzuVy3S3+cCuBt3_jft9hi5z zhC%!6qFEo)4B_H(DK~{8$0e#WUn(KS4Z>bF{c; zg%@GFCiL)&YfeH}yt#S?O&Kx1+CnD&{-4zqQx0KK$@pV@h9`ryX-cv}CPX9WPFd;_ z1rYp%m%Q)yyH0x{paZ^qC_VSra>Ezv>l-8Zx=Mcka;11aU$T0wP`kA!RgAU1Ys=0( zpVhwWTvc_u-gQm|tgjZ!p4LNlk-wI}Jea9ap*@g7T9Wq|DL{oE= zL}@LIm(f98OoOY>Tb-bU$^0hTYz>^sAc?)fKj9xP!-`$M2|WKsS*5$=JlTkjqu?n? zG_QF5RSeL023UfO%QkxiWHmldG%al2}wx6aY`v z+@O*SmY${KsOaeW^lk`fDX)?|;fbP*wjyRC4mHuEp4aRB1%)U-7Dqp{ zsT<421?mU(pBe8gpeGjuzIfXFqWda51gxHwH5Gw%eP;fp#Dqe#@6ojJTS+uST#5yRdSz@MAp3UBFk%6ZTU_GyIDbMOb1 z4G4MnfpI9~5#;HKh8?1dmr?xLRG`@-Pqd}?gku1ZY1-)vs2uI=6DHK|Kn0{&h(17nAHBF zXF#j-Rk0aPPcc5(w&UT5C<8Q;@tLdGI zI*JQz_gWYoc}<+01yki*B`4#E(xRK0X;pYl-o@Wb>{%1|7B zVNI>%wG`U&`n&mR-Ij^6|5_?>ye2CYj=Z8;Ke|$FKAsa(JG0sU%b_YI{|&09eTjY8 zD{VMOUATY!nSU#V75)0p{CC{nt;76l{(lW0B=#u^(EnbW(CyU7ks#(d^(Nr8RH`EV z>y}Xb%ebKMjDIZ@3a5XX@L?nzD4lo-Kt!Q+OQz{ROslYQ)ryVS{xTAZm@yid?i!dy z$&5{l=;cC(@u!X=8}LWk6i#ZtD2QM8@|5gt`9!YEpZC3cIb+3Sul_0Eed zI1PNZ_hY=cC$1kaTq}vqk8!(t1Wn%`A#dj^q}9>8XDoB+SnBX3wpKqu!f3Pt{k@H! zB33(hE#jM+d`WtDRaywV|0s~D3DAtgjy{bhMKeP{5nE(JVevUzsXgPf%Sb>bLKdk} zqkX%~{B!%0_@AkIuRNEKZYmt!tmhd6+!o5z*9?B25rZ4HQ-J=yqQhjRuJ&Pneg2*o zXNaUaw{*KUY4rjizn&Q72ccAn#DKT%^_Ji1qT|I05UzJ?-R}{|IUY1@;M5Gol zkPwh=kd~D0?j@I{5m=-Z5CjF3Ub-8EW$9G9OLj@67m@BSe%`;}y+6*G`<%Hm&%I~P zbI%M3TZ>3#QXFBADjLaGE&e#=3mR@AhvjZMTm%3Wz3U*0De_0T~w`Q>y*nLw(&&t2H`~ z8eD>m#=~t@O>(|_b}%ikA`|A5%N+qKqttX+?ZafN z`RQi9!8Wy@{#3u14Bn6H^DBfZGFU9GY|JwlF%)LS63p<&A@`m%vW4-v9EAw+@;WH* zB6=kr?9RFSK-UpSk-6T}dEAi|_;2&Noz!&LM_kT10o)dQitf(7nCerdB&Xd~YK2t! zm_~_OcPYa15wdWli!Ay#LTg-@toJ!VBzfvMvqs5{{W-wvoXoe`=vIf~KjRL=Vsn?L z;+wNo`Q>k}6?Bns(_lsj-KKNJXyoJ%(99<-9GA zf90^t-8XB2D(q@GaG!VaihlohJx$!vKf9!U^ZN|8}}d=1SY*vzDe6u6&f!*z5b z%!TWVCL~MQRnSD+=jo{OujP99ib#`ILmXCT7CM60l#SSzFS!N*Cfl0vD((i>`)g@rZ+E%A0neK9!>}hDkr18{fG$zRVRZ7X_cdCvyWHx&g zHonXS=j0`kP@9;_8H46We#!-$u<$p8`{4uYq!Pn4S-?4I5kC6*Vav1v%OtYaC}*aK zZh`j31w2gDLjQ+a!=V9Q_fllB%jymCwvLuy+c^s$nwo4!&T5{ZtKYsVELaX&K`mWr z`s{$WqK4gCVOkveS_@u->*6%}qQsO)6_Jt} zu1`7@u`5bwhKo?)@R_LIZ`nxF+0GysGpArw12Vt^4Ue0ud>Sph zi~r(ylQEgJ)0MuWnfgB4lw{zzi@S-gO45-PNTgCNS;)CR#Zf>`4$U-F-NV_w25?8J za_AdXMApxAo-Bt-9H+T(FBM_f+RuKUPTQ>wS_c1W*eO!3&qwRU&sr(k%Cm8+a{QW+ z*pO|NE^~IQaNo=|;3(LZ5N|&4_4f7_ zkcO8aFo=idzDTCwQkQe791JfdpoZ zT{SO4%JcJGj-K6_Js@MCP*Tk6`dO_Sz}M`1^H4g?s2R(BQK>-P^YNj2X>2B+W6iai zmv+!9>dUprN&J8*^I*J!3l^WD+(^uz%lN>*bhM&$M#9j~Wd{Un{PyizKi>XNq7PR)T9D+d8C>`V&Gmb9XxqMNMjsO17jnUjE@YF-Zx z)o*~lK5F=O5+-5<+$?R?viQ|QUmkvx()T){mTC_9h}=MMYRA(w4L5Uo8om3~5^os( zbs~kU>LtInD>C+oSx1$lA+S-WRO{9gLIWW)jsGTfH=6JbVh}ByOl`PhErq)8a7!HqhE182@7i$xAg}Y+LIK_~Y zyj%3)-@roq&-Kj;^l%-ErbB(Z7Cco;1iD?tD)blwR77S+Iy#sN^j0|5qJ!>>I)i-> z&B`45{&R#y-likQ`KqBLceK1-7Sk=Bs$tDr-q2gAq=#X(olgUOpdlwDgoUZxeoxh~ zg>FdlZPF#{dTu{(Ra+IT`t~k+=ZgIvOv`2J1X@*zlU`2a1SCHn5)dCSZU&K=R{9vO zj2ZXW{{m^!at9)nISLjKujA|og*G*!7v2oaSxQXp#a?N(>+ZRPW6-5wgHjXGqO@g% zIB|xyY9`_BTO_EtaF_v`JgXp#Xs+1xqW6=PD_@{>M<(zDa!)UP1M#MdGhdKt?U`Rnd z_nQ1`cl^BUlOgk+9|cz4&C}I9UFBy9&?+EfnWK*w48W0C-Arp_LBt|&3POUTHg$|B z0u8U9^kzg91t4O7VxTPZwZT~=mpt=ZV+F1r zj^|OuF`2^BbZj??O9z}tC7c_$DCe#UqU^e9fNn#zgv-4GaXZ8!Tq$<1Bx(~O8nQ#g zA#X31f?;d8oE!g=%{r); zqSZDAa-GSi{cAqaeu<_6HMAFe*i?H=`or_IkdZaRM{2LE%R3@WB$zs**QV(}7m?7V0YXK4=^#jzv*xJ*=E+aZv>Nhfd_s58(x?7Xp2E#M`}B=Y_joOF&+=2=Oyp#g=6Z%Q-4<&wYuRFYjzz z0tv_Y@q!@2(5nWE9Z~-H-OFtZgdn>({5h{O?}7vV#5)b^iL#mwk$By+WfTLU`_fZ2 z!ngZS!yzp%a@7PvqgjDA6Jpxi5H_BhF$F(CF;Sq@y zjRNA%gN)iK*EPDc!h(m%%pZ_mYby?%%O%Jb)}hd|FtpeDwVqYqPhrs!>0A+XLOXn# zZ|)Q>|6DB15IYz_^rwPWssf$wXPk8~SG|$N;B!k;MDYx7xnHf%v@Joy#4??X+#j`l zRa|t2xm>II{KMs(6rC^p=$TPfpM23HzPvxz!;~#<&uM5+isu^;O*NjsD6AX>bxBl8 zqtIisIVBv^c$_;XrZcvSJ8zzTiby-aEWg@1tEFHfn8|6p=b$L#m9C~X%9N=?;t)vU zemyE}k$sPt)mce;rwtbq1=X~&_NJBKk=XEjQJ3&9`PN_`zVfh#DcF;X z^0(f$9|n&E!bIc+Ndth|Ma3880TiUO-tAzASY#0XF5m!~YilzSV`gB{AR(3`@GHw@W9bnmL3_04x0qZiu} znHn>1UnWWvdKukVDL=yJO!z4nU+V{?3pZsBulz(NuZgi{8&_AL&Dwc=$R4RgHMyqz zQ)=RC>=MrOsob2B0ahQqM_X&&jwSM_61cyLW4M!Gd5aU1;RY&OJWZiyroA>fNI=y9 zeY3b!CB&UWiN82Z{Nx7iw~cFL+KzI+UL1+c-R}9?h_O-h(G7fo?%?e6;t^plmG}7k zE=N>M;?p`TOZBMo_#Vo(=VGAGeDbr0X{q~Dt)#0|n_#}@?X=4_?k|e^JOlFxL$N82aErn;p(>>1hRozIoul- zJFy7=xS2Z06yoESAW679m#R%1_~^$bzT$G!-n(V1Ri6)g%e{W0kFSZew1R0*x;qHu z%7WiFNZm7psqy8=S*=l#JnwiYR*T1qpim~=>GA^@1HcoPvb#{Y5~W#?jfP}>63uAP zmBxFp?pG#}lE>+m)BRaCa-UuOd+EFx8gfiGQlWWkz2jofUFY|No>`pMw}#5B(V`4S zUIrA7YaR?K)#Xg%qdwvUy6iT`?$XAX@8TFC5n_7D!}#Io{zM!*@@$@hLl0%q{I`-f zZO-l#9i@@C;(A7AYlOK(sv|QVFq9ARBJGqw+ph&;Bz|2?LWpowkK?dLe8mFNMfQ=3%qkm9`OJb*C!>b0Z;V#eJ;7EW{E z?n=%^kgDI%TDTc8h2!{+(KH6P69}%^d|KEaiV=Dx>aI}|1$kC(jzexZ&3x-+qskXV zW^+rR!+z9k0K7l%JjNXVK|Q{ zPe#a1@!iZ1?51X#!5mvMxIIFQI~H#rJ^p2Dg$q%-W_*K$#l(WM9BL`5fTB0-e`eiT zfv69N>BqN|06t5SH2D{~v0U~&)*d6%E`CrSiQBbpvnLVtbS3i>ot>HoX(YQ(UeY&cI6 z(+(ek?u-9qtnPVMfMExDE#L{y1wV8IZ^aL}y1JPT-x!UteIKV7_u+i2KKs0-xi2M3 zgnp;R;Gw}c{9K(&Yx84MJAIKidUiUVR9Dxgn3O`>{lK1`lM*v{-aNeFhppxad*lf9 zNnsvte7P%xb{4w#?01H{0Hnxit$`(b)yOFTU}RBZNc%wtxd_iBW}Q2dr<#&eQ+nbQ zq8%c(B}+rA0q{QU`GgaY;JSlbB5D=PTS(K297&^};gVjh<0Waq!rJV=@ogLgBZ8{U z`i}4>4!)h=K#A)&bEhV$HN~|EGtnM)!h!9rtSvk+n@RG?W!-~=1=or3wm%O*!$6XsjFO8*glOy1L|IY21=GO@#5;NNuh{0<$@R zmB&5nnR}PFDGJ_^sn*^FoNbqKnveKjlpLnSG{ki2ZtZpaO3^DvD8(B3uzU*R`$l4i zIBvPfr@Q%HEq3KlYa~bKD!Njq@K^L5EG2H>T7KhkaK^LqAL)RWb5+e*2q(yn?A>FD%qFhemK(b%BdGLc#naEZAHefa8qSb*a<}8ytbkUfCfw?i z_4^DmK7LL4$;ZMWrRhXOt`TSe&5P06ILasHUd7L-eRl!%VT*A}8RIgOM&>Tv(U`}9 zuIRR?oO=f|mlJOeUpEKVb%9TM-VEcJT_05FB|;5-zwCG<$MuV}(*@Zv?|&4;Y4EV_ z=lzo0mJ@h-t=(~+re24AalZUF(?r{2AQoKyaw@}@BEf)AYt|Lm9CuFA*1{+WBCeqM zPz=K+a(l@5NmgGt8V0@W*+`bA5;kl-2*R9F9sp}9SP}4^#W77AF{syH*)5?^IWbK!Y9N|eE#?&z}sEAfY zNqfuof(b)>iH+dZ;|chuzj9V)i1R$lfBB~kukT1T)B86SFT^)Go%{e@KWh$+Nl;tV zg0YToyJYHGSbs2T(CZ*$`&Kc@IOoUn$`qJY=^T<3Gp4=BMxv_gS{Tw;atB%;9;?zzr@+E*zi&7HLYW%jJ{$70X0`Cft~?28IgO7mEv4D?M2s3+8j?j8{e^UsMM@F4H6i&yG-9|w-(&+ zn}pb3O4GP>E(Lpz1qS3I=Ag2c9yaILx*FCBl+&|i9u(e9tta9GVJMqemTT{lml5;A z=4?CTx(=Pt8Ye~oT=`ySftmRYfsuip{Yi53;89lXAFV4Ij6vv4UU=O!6UR%NI$GUB zriJu}W%ZT6*+NG6#huvm>JXJ5d=Z;-siIVAb%FRHv)_5a*%y;JqufmcM~j2rJ8lP^ zlj(OTp|qCnL8#f_cw2g#2ON1?=H0&MXcGbQ z4~WS^x{;O1WghIG{caHzyRenTR_viRfHijxV#HgsQxoS4%j zX_7_qx{r;b1+jwp4+EEsm|PxUiVC6%A6KDDz=8XAJ|>5mtQ98oe)OLvr58o$3Oz@a zbko^<1h18QZa})4zbpI34x8$+N8KgHb^Ur`4ilFVQ{(k(U(AP)(6Gm;ldRK`KB}kHZHn)wo~t{IzITT}6G+{LMN$^mLEu#S$C0+ej zu5XqbX4AV^i2GGYMiM^_(a_4@)Jx{iQCX}HhT>h0=2Jcpm9q;ynRl0QYU*q{h2SGah|->_w&c%NIk!Jy@U^aqwtG#QN$x=-Iy}+_ZhA z;kL}(`4i#bf~ z48P($=?R$xL#6`^x0kSS9$$gbqMA<%+V%5GQje&)?uh1xf)vP5B>>%I6rM1-02N-{ zT_YYi^ZAo1EtALu@oOa!AwCs|<7bqQDd9mP}eL+6gjXhfMcmR!1{?qIcYJPrsGfppL@(Uzsg$%h4Rg!g{(7sV` zxF94m-RU#v;a#0Vy{52gd}rBXXIn?IODWyIR7-FTC#1mT4R}v&64-fFSDd}&lIC|q z{PoF@xlVgmQ({xbADn}p#Ht(jigqc4+Lt0i>E)gAex=#nn2+_#%$vrzykofVaxo_z zjgBQ;i?M(sm8T41V0!`1;eAh})mr5Vd)?@~(~KXeD=x7iEK)*IwsI=;zt>SP)E)Z& z?=v8EyPI1a00aa#ps<%e0Nk01qJ~1HoK@KW08mQ<1QY-O00;mAboogA#9~e(cK`rr zfB*m;0001AX>DO=WpgifWn*-2azSKdX>@6CZeKEZE^uyV?e0jle zACy>9N`fy)k|6{+OQ>?)$RZ-(*hASNU{O&%5vX$1aA7cuP`d=VQT}-$VIwbF?s?|( zZ4dk7@AV732jw>zb(2tC&~S<3OmZwfa3zAc$eaFyeFIy&wEVs>#5MpV=sE)e`!^yG zz@ry8Hx*$QR0jaWWfm41&?TMLMgKkc1MyfeMFYeq0Hn(ymR$n) z$w($u0Azy$bVl{{b^t$V06Jve`?CO_jK>sr5PPLHz>8yTJmeHsb|xkEJQr)CaqlB18J+(6#*l09?0PcmE}a z2JeahSX0OoHNV5NLapnhC0Gst(F^-U6a|f*68K2aEe`%QoEU#N1VxTeDwai@K|V|oUr8M2 zn#T^5BUnSUC6;Rl!07iH)F#I8+qYJZ=Pz8nP;)UGR)AG84q*XkMW~`mRF^D5gFOdfI_r!5VhzFY)@LHH77GWdm5%%H?3Kp?CU|HO}B) zeMP#yu!1`a;_KoHi2wTWOJ-5L82>vlGxG8mwl81-ay?{(@x@YqNL!Gf`Y`ku8G?U_ zQxna9js8Z5x}4(l|0cAbx9htI2KX-@Unq|KIub(jo2e%t&7>A5i?25J)}M6JxIf3MggU~RQa{y97SZ7 zXf?r#oCf(Sx!~e&%#NuXGD%Y^Gowdhhe?NE zx6W|zL8$(NA;#pGX&6u##+c3+RmndJF=xXu2Nmhr7*3K8QV>(Dm3~n+PnIl#+Z5P^%s-kL3^mM46O$5u zm5Gj&45!SS*2-0}GomNXuQ1;&H4gS3UTjYb_c7d7gJ;)W(eiP~MYLe=wzHmg82 z4%LERN@|*Qq7@kxB=fBmtwqR1%`)*aWtsEFz13F@!wn^knALlWkSmo9mJOb|#(L<+ zjs2Cq=ke|Fo-Lk{Z#+=&!Al5bIBGav_J8b9IF&iqQzz2T`8@k?6OZVOe@!AyE;8*j zd>f_cGtE#)n-w!gH*U7~zX=HsmGT>Z8e`6)$W&#rpXwbF+LYUy=7Y^jpf}$r_mUNo^);?PAfnT!i&d#usBSE9 zE`89wKwZ1pf3o zoS%Zy-PaB8^@1Y{3=UKY;)}8g`Gqyjki_CVy((nCA^a?yD7>C#%pl8AMI*^V$y-Wm z#=Xqe!ra0)Kx?ErHuo#zmxP7XcMe+0N>(e2j*Zu|o8aw?ZP*=m^kljrO&iyoiJsfQ zBD50Puhg80{69iu*neLNAW;^hMUY&7b0&#`aqYqBF(#y&W}OaM6w;u?mAMwDly-|d zjcsFbCGKY`px$c^AS;P!`vL!BEsZl1E!7F%l97kAoxwjYHpW)4lt4PZ!T8vC-^gjS z+%T~Az27Rlkq$QjYS_FkrW`_*2Btx<@K8~We1Q_G*4R+RsB=7Ygd?#mlWP2ItZrl_ zhAsUf>*MTe&)2QEhJqj|6&jph`|ags9JSoGt}8G*s1Q^^%8=#UO<@g`mUFUYXDUgR zUhSlA(&oNe-6MY8^&sXauu3p{fu1L;3ul_Lzvxsq>UE!kGO&43L&GXjR?w4By%)(> zUG}hptw%ajR)7B~DeG%Cm^7L(I@({S$y7&3EKS-^La>5gTK)sSq5S9U?p|btE@_;6 zrPaSds5!5byQ$5vXn10ri%&6M@mBF!k@b9LtzLKG(Q5h}+r90c`E+hYz3t(RcerCk z2}DVH&S=i?MdGFIfv+;O^yo41#Zt3E#?tm|5NrnQ4T=b%VWIi&9L@}nqI~o`)rlCw zAYR9N#)UHtJS)6XWct81k&UqH?$N`SjR#zK&Sj?v_wp^MSv)5kV;nj&!PM(i(KLnB z7j-@L7TGc0>G|Vzw^y+hJj8TnZdF&w8^vMMU~`PcPc1Rh^aG2KNK~ zi48ME>x&j7hpicrkMIMoHm(Vc>n4Zm+LgU;DorY>Rh-(E#}3Eb@A0#;gRSYUsg=zd z=FR7B?e*?P4@cOUY!hp@?XFj7AMhG(I7pvZ8UC!Az)2m_+kb(Y_@3D8$h(Zw2Dbb@r@Ifb;?7SQt z+kAF!N3TUflLnKdndtAi@1vFIXmnnWb0-TE)5+60N!Lm7ot7R2Z^vCHm{ltSJp;HM z!!Aq=TDQtCXWh=L&Nvr&8;G*I9{AqmA0|&VcM4NQFY%c1@gLw|$v3b1Of)ONd=p<^ zTwWRga3cW#eEb1`rw`!o5dh#w4*(qN005lH006pmoOZt`Fi{2k{GliUyyxTNqmGqB zf{6HhZoWuRjGlmy2oGOWP{>G6Ur$S0L{LavMAXF4C{o_a$iPrfN4L4LiHnnKY;-I> zyZ`0&{p9lT`tJGS=IMu5r?hvMtWVcZ-);r}9tGb{rGOrlpkCGBKDCfO&9Hv$hylH* zL8I7V^WP&j$z%4Z<1U$#?%7jbxzoYLe`Bf^e%CIg)UV{XuU8N3bW9!g%pQ#`pG~h{ zEbm^gAKYvm-JV`O-afp@`E|?tcUvWmI;Kzf70iT}&u28RX1A^tb#0dQZq<+MwM-lg zE}YD5UGAUV@1EWrUOe1Cy*|CXy}rFaJwM;v-d9IlWu~GA}N$as$@3GbJsm=7M!}6)i_NmA5 zxzFu+!0UM^;CU?kWisw%Chc`T_jRe{b*1Wcz5aEp?RB^Jb${sXX#DMD=KXT*{dWKT z?&#z7@%?(|{buj|{`BMN`s3x{{7 z%JTC3++2HGTSI;QpSrrb+S-cp@}$JX_jh3b+w=4D)6>(#!^8dk{q61T_4W1X>FLSI z$?@^=?(XjP_V&ic#`^mD($dnx!ovLg{NKNSXJ%%mr>Cc;rY0sP#>dCU#>PfRM~8-n z`uqEPdU`rLJDZ!E8yg#IYHF&ht4m8ui;9Z!^Ye3ZaxybBQ&Usp;^HDAB7%d1eSLl1 z+}s=;9c^rEEG#UHjg575bd;5q6%-U?Wo4zLq{PL=1qB89`T1E{S?THNDJUpNNJt0? z3Gwmqv9PdEP*9MNkl^6pprD{2ARxfNz(7DifR;a9)RP1NfB+oiWfVUC|NQ|dJU{{C zhON7Vuz;e=@~Nk@j-t}?yM57QzA-+*FdQ2AO6f`1c5NpOOq_6_W0IAI?@vLADa0BA zm_-3O2|^adhnt(a@=8NvdGhCG%FW7hO%w{I5@LeEG<)B?{Xo`2y_E zIVN2<9=IP?-49kDU_hY*Y=R>+`0-=lpuyuneEAvik;EavL5F?#@iCF0iNQd94gP0m zS5kKbUtKg+M_r62gCkb!D^7yscqIpYpr)3CF>=9fDW4=?)jzxO1X7 zDU@{|iF4`_>TF@{DC`Bbk;?byZ6Vy|r-}B{Fi+=H_K8&LaaE0LPiH|r?njUHvXN?U5DfIzQXg~zZmWR(jY{|?g_tXks$njWqOrX?lWSz?{421Ph?l4^TMPy`Q3pnmkwcg4n8_L!;_Pk_G21C-;)$|(e&CMxf8SD+rU&%Ep zjLluxSL+diPW`v0r`Nd=U!D55i14n4V43b~sP2uEIVMsGKhO3J)349v609eD=s*lX zJn!5Gq?N5W_k|X8jquxlIM06{HZ&Jza$9a_n>e)Htuwj_=Ov_TEYd!(9~3NQL!Win z2Wi5kZ2ioXKU1)>Bit(Xi*6WC{k;(#ps~(NtgutrKg+Sg+v5W&3|jY+pfSUpsha_f z>y^lVv1y*~T>_Z^j`w|e@#^jSg7qsgSY&J4UbG>~*PhMZ=_eYNgUr@90{?ci6`L@K zZfiEkNKF`xnU~9M8oP)wfg1cr*p#*PbEnQZZ%pXZod7G;Gd^6g?xliKq^_0Mgu(?B z9y~<+PDHEtk&fgQS?$Fe*M4pybgA!F+7^=!DRs|C$nJtuV0W!(kuJ4d>nTR#L9=(ySR-*AHpn*Y2@4%If8NHI!$(@Gu^d} z$av&wykgHbhnkz?()&pc7%q3Z5yclm@*TN!&a>Qv*5ciao8AYwD_suC6=l%zH10Rk z0Ap-@bA#zrp2k?~5AT>_+_^ex3Ps8FR0R#KyM6 z52$T0rdNl$1CF6XQI(wX7_;soF2R`^NRXIjDoJSuu5KS$D0etA zL(C{BJvu}}ONNpUx@h;>klGoX^QDr^lZDwxkT?w!oIi~pg&@uJM|c4~xbUVZ-+Ho% z#1`bBQaLVz;gs3uRL&uOklj8e3kqHi8p`FjylJrw%3@b+c+3+yr=!)!l1t@;Aier- zo9|@cA{sEd{(*Xr1)+U(T$09wLMBn>?9Q;CBAFM+u)}6+$$|}Dp2?d?H}PPBr9SKMtavuxrXnhzM~fe?HH8})az-$Mm)+pyJchOaAw0h$7frtp6)>hlHm06z z!qJR-`Edq7%!#k#+;IVE=crCAzbyeA<-h^YyTYi~U4UWJJ=fv$heHr;7<6}#v5cC! zVs@mM8ASH6calT+4`^C$73a1y**6|G4W(Xy7cOr(+eXg=$O^~+o8H+1 zoVc$?bWg*O{IS3w5`e5#%saj1{fzo;0+fHZl^9I$QKzF`--~nWw$B;_V20-)Eel-D z&vIZ0;X~?nS?$`JI1UbaE8s(tvk1)a)tRs1)iKe4ADU`4Yqiopz#UuNi#rAn)&TSH z&10j6++w($K+3A;dU2kQXnR1h@fB6o(yDA@@gS3{;DoaplTqfYqyUmD2h&nw6-H!O zf1H{P1-O77m`*b{Fzs)zg4?aT8HV!pZ1(W?$2K26{fccf>`Jh!K+lfWad{q(Cbtja zvqeQ`?YTj^HA+Equ<~Nqz)kTNN1@b_Q{P?lr*X~f-EhMA>H2R_E}R@}`qdGO+^=aI zC|393`BIJ56yWuP<6IQOOxgwuk7N8PW&)Xtb|&mZ6H5cS2OLs`b~o!ScbAN6FlG}W zs4z)~*v3~ws4(lBxV z;=S!Oh%|qTU$4zDcQ6rwz%uj8+%)P(N8=q|8lb6N&=0g@Nm76jA3PE!F0t`rAwXi# z_9$sQsSJFh9P&@^ZzOQa>K4L?kGYz@X>#_Tswp<(FMqI*dcbbVWi-W5sU@=TOPOzkSIrF1j}nM94U=L$Oz6uDTEd_eDEfik<--Q zGL%DD-kM;iyd*huK1fq8Ib(%2j`AP_X;|5O!azHZhM{J4loUwnNjlaA2X39#Wnwv> zk$bWJZ;%VqKi3^?a)zgce$#w}pg=G9h0k>NR4Z!uP!EX2a7+en2-anwQ*oM{jr(tf zo&$~rFvsZuHMOs}yWT={u9_maw+A{LH$7X2mX$&A=5t=i=PGE6*?d$?;QReiAMdoG{&;R-LIpWFC*kC}c>#;BeV)`M~V`70qQzg{L58@P@8GG*D z!YI&V7Szaf>=$$+jqaR<`p`u6P3=H8H?I2b&7%LtdRvUX^6y&TjEzBONEnDp5&7X} zqV@dL!3mTs#jPikabm}-CY-o7KaW=1h>kB>BeH+HQh<_MRXFx2Vq&EVA5rovE3 zP0%!NYh1N~q4-!HyjEJ5d}?u(FCM%ypzjSf@9ka4u?yXpARXNu+<;TL)-bk-U)h+T zsp`H=FdCn)RH~Er{t&u_)MdM=i+>nqZOXrF8;SSDTs%viw8&dzNb^Kff<1Ncyg&Nc zF>aANZak{cVUO@KrjngJ&T0_N6Rxk9ZbnlC%*jxkR?s9#263U>O_$2k`nBMh3Ej1Z zoeWzzcJJE8lU9+fr`N}=YDRfvIE6GBN`YrL#J6j>V%j_z{| zWwG#A6^J7-TU!?3<@Qi{sqhSzRsCGqtPjvWZBa2O=_9KAR?LuZa6kL$m35L6v@Nd= z;efU(h+Q@kn_TU$&hrNny;BV65vUTeOk_Rs8suvu50?;qX%kWvBGH<@`+6+1V zv#6|kI|IdmLU*73ls8sB4 z;ue8o6(S8w-(g2(jM}3T&C{#NN7H~2h*<>uqMh7(y*+0Fdph;F7SPeA-Pqh5P-ATE zgVeASh3+5wYb@iM3;&R4f$qMEWNiI9zSG+ijds*6duVB6 zmkFzm9U;(!tj%sB<7k>>W9iiNa&dBfmC39bn(rlQ6}k%^>2hP0$&B%uRuhYK zHa3UQMUfY9)MJZODH@xRF4m$1t$NSQPOfsIUs|^>W20Sm12JC~QD2zGz8g!&?o-n~ zy+@oIp48TztJD3q*`A(YxQ)wCb3=`tjQ)N|H1P_jfg78rcLRlqX%PT+hfWvCW_V5FU69L5g37n1thVATA)8xXRHY`#;%i%EG zF4vvEGlfSC{Cnjg3O*x#JIBnjkH9ZDAm!mJ&K|3jI7)!|0pE0s4>TOV&sg7ZCkgRu z3BUz3x~bl9w6x`)Q)NQZ@Kbn%z)27%RZ|s%pxm8LrS9ncfXi@jYp)kG-%CQ|hI|WQ ziid+H2u>PtD+6Vp70nVM2F?+q;9DDX*-F=H5y!}zg&vL*@wA}sQ_{t|-mqzohUAw;LY zE6arWyFr~mQzOl|UPcwKrD2oz81xBN8v>N-ED5-JCq}WLZd@#4C-o7%+;0S zoxJciFv(Gx&?HC>qFmz5a9`GLE5a8iMiw}ihNp5-PYy1P^8ObT5jjtZQBe*2twgF+ zwX@Z}HxR!)C(@s8&&);WO0{>gFTr5-T^5qbqluN<1BWu{@$9wkhu7=44auY<=t)&l9l7Xxe!`6%xMGBBp<6_%_e(Hec$7wS^9#iQrb z*&L6wCE>Km#3GM_@AoNH{0wQ9L%8l}gMI9CYBJbanB=DoG`}UIco6PqYE{|7+p$c9 z@ADJSMjY&iPFyd{ZN=I|+}T?DX&<;HCiG&8_EeM!UF#+IFLq*`PSCfN`kkrw4F-0E z4MN(Y_R1=-qHIlZ;E&}QgnsBZQ2a*_S={?KhS)4WPVh6;4oZ;>W-Of|C!KCq%YNI? zNkqR6au1QU5}o*@OP~yEWWaR~RFnu!>m}^J5%=|yihAfSj}sh-?9#7XdqSAr=7(%* z8z?K`o5CxuIKnC~*b3pCd z{}%>8&i~dm!BdRE2t>YsN`w2MH7$%x<}kQZfWb*E=GIE(CBFjYS^f5=X2^L78JIq$ z384%Zdf^ZA)k}Dl%%4}Sg`5x$JhNJ`s1c<|u11g5pO(hxT6 zyN1wOm>vll+9LKon1Kjy4mz|AzByxSD>Q@)YQ$nasQv#(XXY z{bgxKSR{%yu&-WL@atWNZ3QNRG$&%i@UO2O1fsw`T#AuLE5ACz;=u{Lp1~zLg%@`R^H{^_i;txVELu5MDA*pW2-hW5Vha_lI`(`q!AKEdE|XI@02r zA^>B(QtX2V$d-t(PHTqL+7;@aObP{p)RL~^%Dvk|QRlVMJ7QFnMTk||voP%Mw=c*q zhv1l^4-m$K74=PoaTi(7HrngSSBe{`vkptXp0@t1o93Qwa*7UtdKVv4)X>f@S>M?v zkHhHK`3htyyTVO@0UW{PmFZdL;G@p3cztN%N1f`*Uk<6%#YEDB>%-X^JTS>2-k>}Z z!_YMZV$g;nRa4tOO$pyIZU*@ zxlCU%mUjr=3%1k``Iwf@4&b5b2pQ~*I(TVWR3LYJF=?GB)3!5U7g2xenvCKhcOlYv zM}l1<_^>6rS0nD$xl=Cp=Ok0tegjQe#hpmDL89v%sEoDPRP-IUa&jN|blY^~q$bTa zZjn>Sz*df49`M)$l$%UynM^`wCNfz$`-_bF%D@va#`sdPd#lSP&Eie20nERAfR;JJ*^q`(do-O}|dS5*V$C|YTvX{nbs^>MK6QkUV zt%$r~qz+2*I`dTAMfBOl1q57EpI-0YqR4r0yv;znv}I+TsKXlvMwaave_#$ozr!IF zzx)$WbI}~AJl`9I6yrO%UwDL6Nl9)kkBJNZ{O*dS0CpQJC;+J<+BfR~E&C7NaW7WU zYLx~f=iq}0HfHtFvh7{ua-0A zD)#-Z24w-SKM>ju$du4;Mkk?zyh;J%COt!f!1csq%c=rx4ZW3OQk7wGfPrYU@7WHo z7yzpyaNGX*jDlUysaP1eXU<|JY=7}7Gk}3akezgQPPz9o8L?%C@L1w=mrxfQ*OW3u z{pge!_RIh@usDz$Iu%COgreBm5p+$KP&r88D1ngIQcB_%VFra_GOEQxTes*-O$%jK}M4~?EMJ~d=UJX<0( z`LC`CfqFShWA7u?j?j#6%tq7!D~Z)+4K%m(>TTt=^wEQ899*U-4QzC~$*2XpBo)^w zzJk8yv5I!*A#5f446}~9Cxi`k*Yz?^jAbSeOs1%S-6M9Q_44#l+r%PsFS<$aa>_ya z6U78#J5v9L#M=*-_zv7YyU;c4!Z8v(^EQ1zxRHvEh>JN<#q2-Dsohz zT|diHbGHO7>;^*N#7`_t zV*_S)-36djL5H4&pc+^4%LvGyM!NNd>h}4?V_vg|q0iIL0ch9Bm-(ny5*-R4UR&}B z5D~V(Q5T9j$UEkV&y}44`c3&^Ktrbd1iQF~r|MpVqHXL?3oQT*XJdWB#dBi6hr3Pq zXKGVmOMeoj&pb!&ryyZdf?qgLMA`Ia%&ZIqcYy$7>deFCGv2cq-K3;XnEjgUV@#7t z?r*I`e`S0q3*4{(s5NJ1eG^gq`JH8>a@s01aDVL8CIs_pX+-gfFAXc9#>gL^=1;65 z9QC(eSw(o}jrV*(Hy#soRDRh+dXo_6rhEc=hY`=2YnNR#1=y+v5A88F%i$=|p$y_R zH{@EC09={BJlw`49`DkzD&8yToe8+gFU6lm3x$sw5H`Tj2+V^0!03K2F-v!-_#Ux~ z;=o~lii0ohpW+~|yl;PD18TB#2MOC&EaV~seU|Ln;z44@H44rmTnf2e)Q;j1`~Rj5 zCdF3_8be+$J?;8;b!c>ScSkx_Egh_1Yq;i(JnC%8NbuMWuL!ZLw-vq5Ai_F_9^8ok z&vH@EY4?As7de&Ev*|P?ED4ja+LN!II%xhM$b;MLu$Py1jbHvz2UUtN$!I(Fo@zx4 zuDS&iq*6c2M9Gzav z&Y8it?)R3QUT;U}IraZeIkmGN@bdK+5@WaYFxJr>&>G$aweE9gf>}bHEvgv}XOvt- z4UYEcBcdBy9IRZ-(mg-@rTgZox?~P<6G1VP-cPcTHGRKOAfa+kiTet4zU!x0Fdl`6 z&$1G9I{GQJeC)ftNZ#sYOw~2Aqp%rI5L9+QFz=j#|Cg$zk3S=t&YzwF{D&b?`xZtc z5fQ}~@+Jwt067$$pdJDNz*oNe&e(N!%Vhxu; zmOkv?GKhgWf3^Ym`MnHL<5Unay1AME1qi;dDr#Op1b~!*SpSRtsknSTQqP-_krGMV zJlywQ7n445c;GI(`U8FlK?GG`iifF3Ltg6vb7a7$tm4RzNxdEd_{^Zeb(A=QNKP@t zgKn{eKZO-=`cGknz@49>Tq^?vI5D6s8}3UeSeai=eTXX^wPB3-4HbJeFcyU_fu-qk z4(CaKF(Gr1Tu>s+)&b$-7!$3}@a&1PR_mgU#)RE!ASq9^gk8dP(wb*a9@G!_z;(Y| zNkg|A3zKK9zIg$%jhwD}aY_#7zBI*~#paR*T0Jf*?Gpnsp>XB$tX_i2Sx20j2efjE z{wZA!lGE=f5Si3K(i7)y{ZxOtNGBP#8@Jt!_-}Cebz@LxN86fa%Z)j9xwU+G=~%3> z&E`lKkLS&#F>IgF&g0}ubY@ExM7;N^%H*?aZ`E8Ve-r*tGzztN{ht_{dcB!UrQ3@G z`Gyhe^nTqQ#Rf;P=RVcXF(d5S!OVUJ2ATTA*#Tonm{v>Jf;jzX|Mou?^W%C|kXW%i zC5Hb-nEfFuBDC48YJR@mjyN3WI`vb#$@pDrQdhO@p{&YP^RM~+{&+}Q!a+kPzdDvn zw=k0CW6Oc)!VtMs`2P@H{x`voGl^T*m)Dfy+EK4XHoc#;bDOI^Bkd+c40vXAguzRR z7gXYTWFi5$pK*Uq%C`V)B+drTHtRQd1DQDFR(KJ$p2m0sNRfn7$q48hwmY$ZwX(o< zR~dc|8c}IjBQTQtmVjDYT=RfU+9ya|(d>SD57IxPmVdV2inm_}<7T_Sh6sWzxBbXB zg_l))q@@g^HhPE_E)y1L6;$CO3q0`L6>rgu#1A^vtZFdf~-S@orPmMnrrtO!?@f0Z^y|_oG*{+2=aP`+w&k{D{lk{z4fF3~JWTWcV`x zU}V-Ym%t$+V6BZnE`F|nmPu!=hy^7JQ3!d62;_~vfk`8fN)W$PqoF@{SpaGdj9pXs zUyqTzLkzMXZWM||bfqSKm@_v1(c*p8jW>-Mk`{kM?$yQB7-hR}HvC_7zlN0>J!VQY zDYNbZB=AsppS^3107XE$zlpPy$^Wa|B-EHyz8|@v!$ZYZN&eR&Ziv>l>1?-dmX-(m zL34}tiko0p;dWCyO7=Wy>6&;9w{3pwLdMvl3ih~M!w9>%Hf1eMUZ)7g9xO;bMOsmh zDY$1`W}*K7>>UKzq^mHg0c&y|DyDM!i(f;mA~`mp9k$9;PjR++6(IquOTHj8+tXlB zT!elh(zFe>?P~vTp~>GlX~A_UQ7QT3vwv#A5FJp1~!U6$fvWKv2m>}-Woqr|hziS^hFed zN6LGepB*tNTno&mPd|2!z^{?) zOS~!;)_K)~sa;s;5KUoG0!+Lv8B_gzeH_YZ zh5YaoeL7ETT^xhxdhA%5%IBYMf?qmHRJ7Ow3$s7A9CV~HgPw&TFxdV;GKBk2nZ9Ym zhXrl!766QxsiHe1>ZUfTk7sZj^$x4QcUF_Bm?_NoPniP;-I^_Y0l17KppFZA_vTBv zuZ9s^y~}l15!qh7bRRanS3#bS%$5Lt=Jzx*!@qfJUj{(9y?MUtHY%0Y3mi4bd{GO- z@7PWqKCL?-i|wFM0TzlOe}am}1kCDYoLuIa)Gm zYTMKIIz7dc3nS&*^)A*^q{ZkigHm|aufqgp97OAO(cu|Ex<$#u)EiBw1%VOUUtF$H zZY89oxZ$F|9Irx*O*HIP^9kXfr(DEsmVXJAd`NH)7xwMfLH~D<-v&}3e$YGcOgIE7 zRcy1tj2HJ~Wq~rY$M>N553gK^k@tWQPX{Ml#inEVtUn=FEGy^NgJzev*leCfGOogN3@%4x zmng87KB2;{Hz@LIHMgBiK$&jRDr^Co3bK$&Qf_F|XiOWgry%@|>uAdf;vm;#a@8nG zb-EPtK0)OIp1Toz(x`USi33fXIQUVL^rgkR%!u_SSA4af%;$^QpGtPZHCA)Ck9M<$e51EPLyPdK313k)2YJ8AnjT zj1X0nl1bIhG3AyP?c7>Y$TaD7s@rIAUd|wLXhPhg^iLRH)0=vT6SJR4W}AkI=JRNt;E8v!<-ius7wE(0SUj z{mN+;k1C)&s*v~~kE#%y!4sX7$&WO*c=&fetKF(M&_#@xq=oqOH3NjwPB%vF#Nx*= z#%NC;%&IlBT@Q^>e=pZlAU--m3q|SwUhyI0T;c>dVzCqR2@T}i0*SqHF!TIu$}#ZtORVl z`wwx45X9%KpQbF(GA@IbQ&|a^Dv#d8CI3{m{rF-!a{kcbEBbs3;aV*ye*F8zJL>R2 zK|um?%NO3zk#UCzgg$247ZH)hwHocSH;w$ z>%KmdLKrU=JvZUqU8)svd08sSl@qrG=c3)n|5nReQHc=k*OQ=WLh-||0jbu=G(R|8 zSNVq~^6F~a+&mv+Vc@Y`#4rs1>s3OpOh|iqI=*i={;n#c8x;x8ZH4a+7Nc1oTqT80 zdY?OIPE(qCM*3xTlzlnUIRPpH}5{3C(&8%;=_+g=%D???Os z<^i6z^KrJOVm4cdFzA3k50`B%yoGm@qwgHJF0d~dVGFI!cEZu^@jjEtwry;bL*h|Y z#>yxpx!Z)BGQrms^KpEC`?Aaux^q1Od*;gabadicJSA06Ac@U0RENBYsZPG+#4xS) zit%Fgl{>1CzE!FlvPia~Wr%t_$VjT!ejflec8gV!VL#)LkK`2Xf9WFg!~YJZVfpP4 ze4?S%Jf?Qu_9trcL*gnAbsG(JIu3Q0DB?lt(5dOfc8$B;%UeEkRW24qbcz#rPj4i) zneK^^7YbHOqGv!>D_aN5hd5M6r6W-;y2|ASqUVX4(>R^(3w$+SKm1(ve6E|YjFqFx z1>BcL?bv3kElb_4Qyq}?y)##d6EOFSSQS?+iZXoIkS-R2=iy3Lk+Pb~vgZ%H)E{dW zbhE1f6!?ck!MkDCly~mcZudL^cqpGy7P9u*hK(y_SHq1q5yT%t=ub*Y;##Qq{>?d% za%)D;ENx7!D3Ku!S;tNqv5;1qwZ$W5_{VLEvvV)j+lrcDo?QzZ{wb{^39y?6`hikL5rN{_(X z$Z^jZid-khjUJv_i7~;i)P9EM`^a?zGnNp?l!d*_l3g=toSiZkbwDz0`~~)h^QMO> zP8cnU>~$r}ECe7)R4L+Uh)NJ2Gk}t@j56jAsZP)=u_)tLs1JZ^kugkQXN2jmt|8+l zKulzq=SlQ0hj;B)+VJNUmQ_hQG!M@5Eq8t=8E6;}qT%1wt0tNrB@cppGauzm7m>Uy z%!&HRBsy&_I}#eNRu9`K%6d2AksWc32^owuPi=tF`kh# zm2uab$r?_2pg&;#@SIU8ZWG3JKiQN_cg7Dtx@8$uf9jLCh!}Kced6=1Az0BK{U7Ns z7c3G{AFqi^>%PMM(`*2mHYhiv<<tPkZx(3pVqD0n`bAN6W! z2K5DWJw*&uh}p<76h)8<^yiUHFaWnhELT|{ZQ_FN!iL8JHngU{Xp z1;GCPR(9irIg92xFXMbu6$I*Yuo#l~QIy%VSp?h%m#s9=a z?81`~p4|NH#Vi|?U(O=!!TFW#lCx~EL1EOCUELcWyMPOwsZ31kjSY}DJ=FjcIiMN? z=Qe;NWOKawA>-m}pK}z@MlM!kH6)T+xUFUJ=H|%^*j!ADz;4UI9laiMyx#Y(Q16ss zhIM{Z+Ad!BO-Nuf@At&Eb`O!ep|9QQ+U9M=GyZCEiz4C;2he+f&HKihkz>$y1Y>!# z}M$ zUj3QVCOdLv&Ei=n2xz?ciw`8Oe7R^ry_b|`9`Tx$#|J!G;z8D}Ryy*KMJF!&89oA) z9)x~?)P3w?E_}&ECk^T%g`!6YIYZA<@Q(+Gn$Xu2zqJVHCF9cdPwD#RfnEgUurxjL z$XIgRS~hAlu>Lu}{%&5kw9IBL{ahoLhIB@+x%m8n3NUlab!>F>&tpxi@H{!A3Un+b zuwB2VTlVT>_md2T4BRm5T7K^DQ+ga!+&md=4}-S%j@x|w+5oNN9j2c1e7w4MV?fae z6|K%d%xk0Qqe!e`){KYUR?7MO77Fm`t5nKhYSz$wej%xhwmQ4SC|2J1W-0%o-RMmD z@$KA;|MhYI-te{bkB{pMwa&ER$pRjc*#`H3+qN&`AL}>Hk4*HwOkVrv-5<)*EAv(I zbQ6|uaSzWb^xrN6P~ANFJq@lG=9(Tot;`;leS;*?5!@I`v zWT86hpJYc!1aCh-53yT*KW-blqg<9c=J19mr*DIz0L$X7`d+$c3>ON0k%h`I$_C!T(wBn+mK7x!*zQHTU&=XVLH@UT? z3WY|!bLOS?j*16(D;w)mW|y6A4?~|);NN^`KFoannj&*mqCbI}qgGZyq)YFj)(u|u zJIp7>28dCb^9L2$vg&O$6d;A5#I1^k_?X}f1|K-KenzmUH^EWj4kZKR_ zWC`1aq4E%0&1eGPeeBfSo|UU)WfTjcA5E9e_%_W26%=jqLT!HaIRDv7f=z0B+O6XP zXh2SIzBfVu;K3w71F9toj?Kar)89`iWPfix5n}d^c+d>0f;L>G#}(~7n#arcSCYp# zQ=t!Tyt80Y!lJsjRuuC`*l99w1(fPdWIHu+uw46bEh-?dfE&fLKP{c_`Bh5{Ukx_N z1Uo)X!r^HV^8D+yj)3|fUTrJ5jj9!Vf5(>gGp1V(_PncVqM&#iWCmNkEhv&9e;53z zgzTK2doyo4D*e6ROOvK`{%XB>cSPOtZA0`G_t9R9v7Dwe9vA1!p9}MnAJug0ffsbK zAAjBY6(70A7c3E#AFTD&H#6d&%L{<4!F3oRH1U8FYNjq_XV9Cc=jDhwkZ;Jn&$AYu zmSV7TL>=A;tX1=7scax>>2#39Yy#cZ8x+o(Db3{Opmwj*9)U~cr>`FCN(_&amLPug z>)n!0dZmvH(1!9-PudwX+AQy#yq;%YDzu@BT(Q^ultVw>qU2U~=IIXB0M)8&W#;pF ze?Qf={5_HL)|3Z_Pr-83_=ZvJQ_oyFFgsg2MQdHXX+ewZe8Xn;P^ESwiM5`y!D#vx z#kb?4Ak#-(gkn|+H{*kuep05l9=M?B>zQ$h&|*k#(*JL*GW{>#zg{ir&YXeBSb3h? z{0YkcHfTwSVSZBGYCh8#sn%8V(KG*1^+;uXvfwDq2&m3_@0i=oYd}b&)PAzhfH5($ zelx=~8jiARsH$%vj60`WAMuilbSLl#vHq`@8rjhg%a=YWnEuKtv&8NTjEn!aH2ZtR zj&yUcg&psm&MF}kJuogwGK{y#(pK_3i^d34L*x6`B3lNSIs~kFf6q6 z-ERxsz<)2x)g)jg>ABY2jZRyh_UyiJbce=#V!mUr&(n^xb#qsA9>W#;hbE? z7Y^7hhi;wISx|Or_K+oL)#EZ|@^?kNK+%)^d9(On!O;nWl@J6_@+|?$Lx_VD1og|` z=DiIdz9f5j(xUJxX_K?^Am`U?tOarU+(BgXJmk|Q|L5>$A!4u|pECRoEh`W9pJI)* zxT2pUBH*9v75#oV& zgu0g8+!=!l0m^i4m#pZj;^3fp0}u9B3F_%9;Wi15k=&CF_%WtV&hPeEd@KA;qJu8= z_!*($%BxCzx2E}Vb&2$N$$(RTb*-PH=SCYM`oZN7E5L{kmk&cJLqw9T9oZb|8ulr9PB2I)pnTIp2j?(Xi8lJ4&AGlRbG z{$lTQzWqD=$1}s4#mt)LzOVa=1^=w(>D8C4$ok&ZywuEke$Fm`{P$?^WxCxIdWNZ* zPEwPOdaOnn-P~bHBrEET|2Au-WJ<;DHra?~ol0EjEy{m={65+^RQ@lMmxY`3RnpIe z2h;|kDaU!BmYojb)zM~4(~Hzu#xvqot5#C(%q6l62pGTvf`X-*t@N zpoGC&zT&YVAlBOMFX-f+eW*GgYR3c(Kl|8;>4JGL9^@8{;{ zkJ}H7fu@l%4aIP_iVapk(5n*tzULG@k!o)EScv*}vO)mCc z5c2t9sD3e2Z$*A`o^#%br*+HF%7N z@(e+BbPO8r-_l|nV$2u=Qv*3~lu`db>S87)mwF75K=@ivyMsC(4;7IXWdsSS*RY3b^g?HW_H zmXWf_CSIcYlue3@>JC02eboE{gFq3xZ`=v6Y}4fd$lI8abZ7BUTf>I0Vf7!u@uK1P zmA9c(qc+wNV6~n4)tN&?ur>w~&4fk*S+t)hd=-(1$UB$z09C&hRiV*iJ=}se=GJGB z*PZ-rV!)*PmVC*M*9ea822Y79k`7!K#+f*7`-;OC|61!5^pgIiw)sbadCpU~8b;aN~UD3a@tEf(go| zbN?4&{__+*OYL}BLzgsDbhq|I$FiwBA2FjL+UY_W&Y=2~D(o=cW%^%rb)TJ=t7Ju* zXnyhhQT98FXgnHCje_e3Uk31eb`DJf_M?u)S%$Ra#L?6b(s?1+$m>nKSUgp3{}u;! zs(H%IX`keVn#9q_I{az(sDa9BDMr@Nt-1cuzxLwXY#G1*Sa{wB#g;zkFDbv(OM@4( zzDIeM&yzbS7Sx*YF&H1Ia=SR$!7Rd0nnuD@nCceWF|fhH#bB3FTdix9GCr+k5f&UU zpNS<@Y~@P@m+?)}#$VA}0_f+x(TD$~6T#1{JvvO}0e4ga_+%j`jc!UAVD5*CCPzYw z3+B?vHI2b11m%(>;xTO#LoP(#e)@t~6fdso&idcwfxj*AvdqpfBB%K$;Ep892P527 z6n)@~P+8%FsWMRa5VsWik{iiMWR z5kvMKi;jilal8Y+G=-0L;yMN2kC4}5ZIp!$*yVf0=JRA2*7}3an%Vb!P-}V?K}&$Z z@Oxt1OzLuXsv{=Si)dItvy&2(t@l%eFDAa$i2##}zMSQM(QY66TUP-PLIs6Y$n&@e?K2GWV0)BZz;*kh!?wAA| z;Bhzt%p~T^3%i1e+*)Grdmil8{(Rjw@xZmjK45c;Z6iyr<~7!pwwr(;o3{X~(iR5w zG)CgS$470&Vi$%Rf_c%D=V5PQxyTzhi;;MrIJw??)Z~K>p5V|h^&9+Z#qr5r`sC6# zdbS&qoU~+hTZBaMqOZy}xwLzrFpA#pE1=oM6!k1-n4jwPnV8w&a#SDI0NNi~;|WHL zMEZW5Lb{Ug*S0qkfxnR7BKOZHvh9ahD``I5e8i%@K_@*ASTI}j=de`a4t$&SixE^? zLiBJFr?fmS>O6-{m|i=Pg)ItbtS82+Aet456)83!Q~g55yfj(Fh}789l_vS=XIzl~ zji@4hu?ZpXNvvI062n&d;Ez}y4lPA5!G-kP5}05FE%yFX&AQSl+-wd}j#B$)R%&+7 z85)*XjT~R+Z@bDR&f`xtJ}Emv>vfu`{W1TX&pMw$#K6F5=@X44*?dOg+L{)|yV8|P z*68G97P+fgx_QwNLS9~!cRtsQ0RN|)Dea;M424^Z`Rk9?Rcrl-=Z}QqNZ;gOcL7nSqBHphug3`4NPCR*VSG)BgqIFnhCvLJ|OLAoAMQli2!P9wPY6(GM4u9k1*^t{tS>NkE4^N3x2)!w)<=aakRn5T3HWq{X$+_!s%rru*ZAY zna}*}HF6zi9K8gQ8;~pyQr#O3AITh7o0&8yxP`9dH7|$Afb4$zck~HFKj{5hsA$I2 zSI1fv<9cDI?GhBJ>gTDilcQt;cEXh51Kwqk!wIJne<)#SO_xS?!fbvYix25SPoLUT z=0h6(Xd*->Udj~FTLgVV=~~WB+R@^|{z5a*2h3*uXxzq(aqrU9VP4|PYD4q5b<4RDiG+T40 zD?@Iw5G8`wgR%XurG1}D| zg)m^UzIHkD24R-JOMa{|AzOop- zGH9VQ!4nxchHmA3U{620DD;FQ_(2!!hls3~V9B*G>cincHm zqlAcl+c2NwRn{w`kcq|^5feP>lTj66EP}H>fym*uy2mF$onJ@{`ZtNtgh(JqRugii z2d8JivKjo;4|&-mNb~5)G0j$ItwrW|TsVH8tB;6_DHt?0^fH?qE{7&NTddcR#BdN& zEG2~?hfooEtb7D+2~1H~a8W+5SJhNWxc!wQRG$%uelZ$Gz|2P`@uLfFjBS--iOBSY z)UtpmkX5#jGEc`BBVzb?6-)^YbSW$|v@>$Z!mwK$j3IpBTj8EeW`SV{mWzP3#)I_w zagO5Dxa0oRZ~igQegT=?(}!jvY#$}NqKRg&N^T7NJbuJnDAJr*r1H4 z`^H_`OXu5Y`110$q$dfHg2k?VpPXw5vPGZ_26vY&jnRv~e`VzQdM3y^1g(vKL3YcL zg$t?*3@84YgV{dI;zt!{1vPAUlFhi;+?P=2rww|sTv`m=jQ;K+gtvW1j~+XW?Maua z?*AR|dkQqJ8%-$|ENUt;WiJN*0^4vo0l(FR7g9cmv@zL;ERff$=mS z-t_>a5Se4D*O&Cn$n>JJ(lUd{=Cd}Vz#oEs8)#7NZiWgkB`qJ<3Vh=d+=Pb;+lkOF zo(9Ak4bwv4)aywr6!yH=i&9m&pIW6^HZfCPt$k#%KoM$t?%7JAf}tBFRHUqT^qO)G zKjbS#9max!yCkroMZ?_QX!LlvtdG@m7xz>CcR)1w!#CJaTGFk1R5lC#@+SY2hiw3DNYg~QN6lNSuJ#I#ea?nxUYjW!! z?sI%Ef3CQWW|EG_LQ)U;b~>re{Z8yBHeHk758%Ne`3*DLW~t~OTjO->gK-=91F z!0|K<=_OkA3-})to<7NiLw|V)EL?k?2lZ30Kp17yfx9IpwlbfT3f9WEtkNQQ1nxie zUm{Y{e>F%eo~cxz;Xdb@lI}B}qdR|}hBkd7RY^NGKvHyY-`NoCwtcn`cVQz2_361) z*Ug@g4*)5-0TzGHPSJ2li|nP+<#r?{ei#JCby_HasyQBaSLO-7N-zUy!9{Q5{QmaCks<vehrw*lazLz`4TUBr|z+=GR1o zG!jq?qghlc(b9Q*xC5WQkLT3rVe!QF_((EL0T9e*ChGnsE_<<3qrG0-KFMfU8y<_f zky1t(5GpR+gnOw5{2-uf!~9$+-W%HZj&eZi4+6?Ohq)I)0NO$Po$x-bODRxae%*bNYz%tH%xh zU*e|fHI4okLeCBc(dohREO}SMH~TL?Oj7}Sm7g7dkevr2nY44yaP9J$^eDeDfg!{O z7%e2>sBkaeWz2@%FGJNHB_>I$)5B7O28*A*ivKP6l>C|8G5VC1>X}T85k?7ZrmRV< zSFWo06g!dJyI5=!j56BHexuk#*7IjCUhs@oe1;St?WD72zVvQ!AeQm&9=j{A3)y_4 zVs~L2|7UHT7{%5?F89@M6HQifwTGPAV)fy3#$JK(+RXMLY$nNM2c69)h}Nw~|B_4v zDo#vufU1&{OB;-&<7Uq&ZXxJmb3HZ%!?CkWRsQ>u&dIq=$py9*rUwY}fvUhmb;xd! zSPZye^suEUnuG;%KRI=C%P<)YLNOm%Cz{6eEm@Y$3|KY)qkE>1ohjB~wb4^bT!(hP zJSCIcBAbxB3GNJEW6qwmXpn=P_Hn5VXlJi$SRxdrCyi`El&ic4#a~680Gaz0B`L1M z8=-jZ#OHD}O!|)nqeqs7D+s&SA|cb}jSnY*YT~SfeWKB@5Ij~Q&ky1x;aW8GA<}!e zgc))_r{A+3a9#vMU>oJP3ouXxNLhr_t^3uhv0l*(%!uidBobyA^D(m$Yvj$R~`0C}c`TxT~tykgzF>rciUJpe$d@sFX3 ziM}9#7yKo&N;AhHatuZ^dol?#4x!-sBz|a$2$&4B+j5UF*Ofpvo~`PR*e_c4;VE_9 zL_>{`m#VQA8h_;NP9MR-TZg-*DpNa@S}-VRbJfS_>zx-z%y_^T(BkIpdf~T^loxt^ zi-m!Jo9cuje5dNbsTS&+?CF z;|ltL135Ko>`aAp${Cs-2S^rVitlRT+6Ka-%G`Vbm|0@8WdYh`)YF-(#@710=7z5~ zfLC)`d&!kWRb=zI#wgOtmQm|;Fz~xTO*S|9N^zH?MR^3B*H4%RR^BYkmRNR){MLOs zUdkW2xSxccKY08ReR?W7tyn)Mftc#&)40o-w5D72`RwEI^j-Lydw7Mu5Og`Jdd%x6 zA1=&LK)<$8RHhFuVjFr#m^I6sb+RRf@qvqI5{}tBFRB6jVS{Og#%WML%VDOlI#KpK z#9pUre$DNeCRg7DJY2l#X04|Qx0g9B<21crlTE_si3(ZwZD zEujoqf8>B0Tpxs4?{dnt!iC1&@5GzR6T=vCObaPKU$}W@8+9}G@Fckr8v^N8l@%Zb zsMt(|-%k5DOvTw%i|X6ZtbY;sn3guO9B(})0$a#9*6rg9Z4-iQR#Ur+BP{OC$hRsV zzq1SeYEcN+!~=|>3+TL1+Zzv^#~au0zdguAu8K+EW~*vb0mcV{z?$f-BU07G_vQ1n zs$HoQYA&Wj%^)USjg|LYZDmrR7g@6S60Ab%F z4?r^}M_u2Fj|^ovB_`y=9%+x2^cMv~V&l%Vp?LaMb1Nxf?#vr$+jYEV8aI-_3?zZ8 znV9i+5;EP$dp29Oy@F0=MnUq8#&EE2OjU2Bf#|o^J=-kgKS!0-ujSlK^L+!B?SFb^I)`Ih-}WF@i#+-SvUN2>a1JikGEMb} zKJUm<({bOulI#hjv4)XXPn!(N25HQv;jfe@1JXj@zqfc9_HjnKjMK(QPfSBFo7l`u z;=LgE3XGh)HMc0xT2x!<1ef+Z9LY?}zP@NIS9W{Se0MM_?L zCu>-HJCfb)g+VX*V_F(pbmK5a^i$q6R>Bf4`jHosCEjH?E&w^qLILc-)nJ2di3i;* zeK;9hEvY-#110(-0g-5XcmROmRlriTji1plzKc&5-Tc(5o3J8WmYm}x0MPY}95zab z3e)AVyaPYlPCom6^Hh0e84%zuOhb(8;Lk(_C0ycuZ3xT2p?y_FdU5?!_=uiO64F_d zAPprQzs~ZH0?FiQurt*k4a);$cwZ-c^Yez8QTk3~`Z3*j01wTz<1qD{fF*H2P?y2G-m_8jgoxw(t~F!D@BuE71YLB{HVK5=b&UB< zu|)mNGll?SCcNPI9CLYgaY{x;<7B4TzfvWw{0O_JcT?z`@nrCO6Y*ePvX2D*hU^q=({TZJGN2%kz;x>L^|IwSn5kX0uyH?(@)}xR>s!g{>xIA=D@K*Nlvk zQc_ZQj(eZy@MTgv_p_h0mxML@Q5S8-=Vg78VMDqoP1fhZLi^3GTc+R-vhQNAmS38U#uMb4^W`iR4z=# z=xn;(sMypMvEe=U&ny~ zAf}PE+wfTxx4l<)g<2P6tj7a`t*@ zi&A~GMSDmHGep+Ey9-6)_0u(7LE^BC&2QP(qH46YM}Tkr_t{W>qh8fvs?I2-jS ztA*8uE1imAY`Q^a>N1@eZ3i)cr)Eq(Htx_oQZlG|GqxO+-$!chYIT!d7C7}S7ahB6 zYCQ#*u_UOr1j=pIN=$&-eMwLi zTVoJbkq`GpaHP`$@l}+)c)cWhc=AirzYX=}rX3&VV^NMB7@T+-{we5evD1$TRqpk% zYVYJgwD7AiDnDF)zVP4DrN#Zrf!kaVc>%K-xktBQ{Ox5Tob&!62ctvQ%6TcZGXj!@ zY7a2rw*Kn|Ph0dY|1>Z*W<__cry0EKG+?qIvKu#`TA-nqwNoY^bZlviZpp8ia-3{m zn|d|Mf&{@~aIAS9f6{4wP46b$<5LHlHLHt<0+-)}DZ_Y6ZX!XEu=&P6BjJ+zlvwUJ zQFoAWvBAd<6W*Ne$6=5iCh`9I1iR~vYE>IXwB63%(d-RI~6CH$%`@rU7xsp^v6)o zLtw|ZMFfA&HRQ6MtDi!r-%X(`l=G7}8igg1gQHstM{&w47tg5!V*{&-ObdS1j(a09}zRmHsEzn47;Fk-59 zX@zaLZv>2Z^X#WWcBhubl^&&GDtaUU61Bm&?ZbChVV1*C5M6MQXJ;y2apimBkNXG` zK+o34pt8hN_OuXHssnnoOM{z_;13p`4k-p}`KgmV4Es zCzytS@!W1AZnWev5oJBkdX@ge=eJ47v)c|HFoO6wa-P_fFmN{X?Ic9sHR=3muR8gw zc4M+On~l3)N7}#067DQ@llWg3|fL#`B6_2(+ zrFnDylpVvjDM}|XP7Bx~UnS(vbOPwlXB-Nr+;uMOEdNBc+1XHVEJmFOcV}&q)c#k^ zuEKNCRxnv(nd$zM1*#JFCkwRh2S>k?ytcx zUlxl|2Sboo=3KgD4dYzn7qAn=b3_17H3)tA{w=kPEe8n&d01i82cMu49pDhT-33Q| zq9#v9>Aw)2vC*5T9Ek8N;3?dw8x<0wC_44FzhF!YbSm2Bx1JmiH++F(5(>;v4$mSZ zSf8u!QtOEQzeaKleOq&+Pvp#_FXR718}5PmV*UKJ%5~M(CRHTst4X(G*soe*;xOJT3r##;sj2v9 zb~X&H{Y`ivK#C!m#(nCCW#1}Op1=YyN6bXeCtCNJ4W!7g(Ew7i4|y<)VI*AR*Cr?U zP5G6E!HVm5+qwG)>!RFH!_X)jW-4c-^=So5xNKKWy+w9cDW6?({ncXJS6}pjR&B2z zPjORN4jVvL!F-NV89)GEQDL}QVjBHJ%+$M*xp3Z$u6fDkjbJX%d4Bq3&4fmV&HKdU|m*SovSd-cCbY3xc%m+rX~OWO3DMV(p& zbi$Nu?3L{g$KY329pWWDVG{QHC|V$T7My;C^EI#K_L$YT#e}Asq}2{2_`PInSpIop z!nfKUfD}{Zd#wO38TiJ=*}Pz`1Ip%SAF^*KEYOPxL9fJ;<=OX zo43kl?5N|Zk-C3uI7AbKzRp_1qyAuC+~2B3Pi-akCVM$J#ZIxFN#VWfj1v=HbO-M~ zo{Sq?sb)X1@tj)1Z;;RP@`#8z9fv1H7rwVQ?Bv#E%-B8yOlMD3-3N=_ zxsUXQ!k4t+H6j@82}`JX^B3Y8=LtQEX12qDg!c3$Fu@@TM7s|*Z_=vE`h-uqlyEer z9J#A&-sX(Vn85I)|A-`5E_V`N6v$Rsc;iR(cBW3`t4ms@<2OY#jByc|&0)5}cl^3f z*tF+pqb{srcSSVr8wo)-+JNn)hP;Xo)Vn+h5&C3)NY>CGyc}zqIOX|V7{f6W?;evP zvvIOg^GJdLA{YRFJTRsLO9x3AKpi6LA>9)80Mt1k=%Ob0rO~n-srG=>Y|3^kZ$4t0 z^y3PLpT&i@EEiVN{5sR8Xtw~53lzuBcx9oG$2Tufwa?_S7pUX~I1iI)shiV<;nE+& zmFi3^9OfY6w@zJ`Xhw7gvn~9r*#B3n3mZ|}W=6Mqm_F9iu23tbYi^`Z%IqFaRvC5^`+(+)J|HbD*UpMsX0SWM)DK>P?sbGiOwY)x4Ru0>A z+e}`uyN5W^Yni^Q*uRTHYv>lqT8_qi%=?Km(>nr`Kw-LOkq>xp8+uU^#x?)$F{aSg`wX};9uln0%0rGSku50AFm zCeur2@>32ZtQA`@RICdFN@vY*?9$6xVD!Fgn8AX+lomAT>ppT{7oLA9;QUQ z`JqRi9-mQe&#o;6l6Q=~7MfsdWm0zhn-fZLu4NY z1@I#OBxCjM?A3qqs`}jU!RoKX;!#LB{s;B{-|f3~1hjphgzZ>Vmcg6~f3_gBG54Nc zT`45}BlqrZjc778i}UTf^0IjlacB1ZV$j#tLHh~+q(tt)SBN@+Iw?LL?JEp3D2)Oo z$@t4`k;#=mBCx|nwEFb_q)iS^3vNR@0a{2WfRD2Om!`jBAqC@=RY!zAH^s`3*J=b~ zQEnA%FnhTA_TwJf=;=;ez`ZU{3CS5uy#v^6-C6v<|90$Kj(gcaDm`5WH!m`C~3&vGPbE1aIc zQ}2Fk!!g1@R*cpog855*;nc+b!(Up)u&iYUc*1~T)tYRFbIusZ!iar~P`&W4JuRee z1Et2>ecre#;~#GX5z}e>OypfNz(c7wO{P-TBhB%nSV-T4756eDLqQtydRb zll2a>I#`aG7~>mkf>j^=Bfhq1NJANMWO#I|2bG`krC~b&AJhaEm!15n(F=_{C^2r2 zX-Ghi7c9*UK}`Oo;Q3tV)N`xmsJ-pF-`)xWw!`Qw2tHQ`)rFdW&Usa1h2})#;T%JgoO_o%D>RMW506s%Jo%&%(D~z5Ue=r>V{->#c#EW(_6rxnjt_ksqTBYTPZAX^Olnr6rfOFA)#~kkbbLd2C?zY^ z9(3Z3t&ODetM>G$fd$yC7tQ7Oo?lRPKYaq!N}_lGrfGNG`91v+Gst!{$33 zDjia1BEv6ki~%<;T`TuRn)?dc8~Ik)FFlW$iVy-67g%#T6kDD9E3SkqVo#=<>h9^; zh~5=F+_4{Ob*$|IUq!Up2W*H_-XL~3%cN?3Z$@EpfZ7>~SK<+SFGw-(>qdlp9yQ6GAZFz02hYxZ#35%5q*B&Y4u41A^e!1f{M8bIx-`A&cfh{*tyIuvIpEMRNsz`()2oTTaJBHLIk}F;; z^Cy$!%@c6cn};87pYl7hZK5Ka9yS{jZ7u=nf{buapD#G~6i|!}f1x57Ub4qE+Tqy| zOkP6B>rYvyYpVI#w7S23%S3T;>Nk6V!fJBwtQ3?w%w~VP^t@^PmgIPmjL7?d)Pya2 zM)Yg+Q&^H)h7f=j8h(Ld?-QZI@gY(abYB46(KBnFV_? zmM!_deW#{vqUCt$S+B#y@eVJ{gM>xSbC0LzJCZ;j|EAsiiy-iRclcx@NOR!AGd?tk zF^n*L&x9fOBznx;I`<64R^{~$5gNIloQuYKcuny|Ee>1FINr}|GLf^$K9&6sil5F> zaF(!BAJ|%TN5Xzq-jiI)0+lAkyU%q_?1?FK=%jF1`Wf5586*WnGNrQhhTZtw36ICW zEn05Vh_^2in76-69ML_xFRR>o-KX1h7z;N3tOVCQea8v^2^5BZTizXiO8r0<5lGXX z2)w&$Zo#=oQuA5x+KlwtLs)s%)os3Vw{juAQ2LOeOK|GeIO~?obH5UJiJ@)ToDJCT zVaWTYq8 z{4fX7lcDbfjuP0_b`a%%n<+$D9_G5-HH2v{_n267ahptwCaP{Z@z|CW5WOKL^~wV7 zb~VXggo6X$qrw49{n_!J0GbIV#oTUB2cjOdK65IZ9JDmi*1j>X9k)hqf`5Acp7~Aa z6u;B(!T<)d%{UxjcQ`>30PsF|aLc|~Rq?E)FXe{u@L1A2(c$>s8UFEVochjXvx%QU zbT0h`#2rUWa2`z^*h(`!PJvosU2YRRkctS|!J%z))7 zW`QK6hXrfR`_E!EUaEdhh=Q!zD42ISCDYeAsdnWlZ^m_C0H(elB66e+DXU~(-|iqa z)p&hx@)SKUe3aI9!7YnusgA;_S{ITs zKHZsQ4?2SoN&wT41#1(lTS{10;c78<_eILkTl!sbO$OocHufa58%hdB|9Y20xKYAL zr?w_(XBp3D%^0r+&r@nw66RhC^?|pXK`7b*)+s=5-b_{J>)Q*c_oRn76_baOy98&O zM~C=efdi*r;8SUpcG3qiBtC2G^YG4WImQJ)Zu6kp2i6b6(=dyd0TtIm$FAbrIYrqk z1BQoN1r=dKR@>}ne|u6?47)7W8P`hjzscP#!dKQmKk~@xLjT*I^3VxQooo1tO>Jy% z1>8$s@W39cVKMcJqa7E_hCdgk-L0hG?KPL>HfbtkwcZIPcovszIWb`Hu$zxI&1l)} zR6!-nZ*mrn-P6Eey2$VP6la$}Z1!Ev`22v=A;U%e33uMNp}OugxSPL5v%kpf!mek~ zXt>gRcDi&=Qy@K_Vhps$6Oh36Q#v9GRG9~i^`TYD^AH>&FB%`z2sCfy1dB7rpVU@B zT`Uz=dHE*4=%xjAY8hBd>wfImsZ>6=X4VzK%*GE$Pj={UKpJ`@BUs~)c?{ug-FJnXW66=;G8(mh zPQ{TFFBwpF;<)sk(1()L&yBx^Zq=?sFFC!_cExWz`B7aLhpWbGCi2QDlR1<{XzdQFqW;3 zAC_y8a%d7A_-R%iT@qIP#byo0Ggl;+S1l_`6hVjaKDXpxcRLq*3a3hm7}L7RHhJWw zFYj-JKO$AH*31goBCR5aU`M_g5;OZrF#M7=z&bKj)&y7BMi1~#ka)P^KR7dAlm{;W z55t|B=&eaL0P-U#D)+ijSkL$W08mQ<1QY-O00;mAbooeDqi>i5T>t>CUjP6e0001A zX>DO=WpgigWnpVlWoBh^Wo~0-Ffm^;crI{mXXLtNa2_$&HnwJlBxZITGjq($%*@Of zGdpI8nVFdxZ!83LAZ4eB4ojpc7~zK&OGZTuhbkFL zoV$Xq(DOw^1QK^RCln$&+Ak7afd(-gei>$uI4?RdKQw&wb=x!FYO&+-VB({3iTAML zHnV;T1_XW5e=Nbu!v;86eI_8uL-Kl~4S02Q|0nAqu^1Pplc;pV3P4ua_d zz})5#U;&U!I*0);898IrgU%tREV{?-4Cn1n`T3`DLb%DFHcM8(2f!i%3<{w^lmMhBpg&AP;s*Rq1<*uq)VQyyt56TA{>@Zs9e3*w z4iSGXSXu`dH8nZ{ib)AfYBV+jaDy~{x?cBGY$ksel)ty*0FV=l{%^Fm?{1UGRg;r! z(M`yDv?txrpWh7)cR%*0%I*09VB6Ve=7Wa59>{YX_-`iW3>=)EB7*+HBFzeL=sl8i2`*6QK-v8~|`Qgu`<1YsJ z^tX5XPP!0pDh}?q;rhWJvA1S~&o}(J@BI>nt?E>0y9!?&qJ`5UZv)gykMTOv?V%55D!x1sOrw3oksw;X}9Z{r+|g?h%Ll8u5c@Bos~IyHqTzIHO{?GLecn{tb^KI7f)KXj?4TFu)Y> z7Th7mnBZThz%!57DAZcQj`LeI4`JHanKA7TMo#*)V*?IPBwOy`bh$ao>K|UAAqLP9 z77TO0H3QvXpJ44z8n}3)vD)tyh~axq?B}8~XSiY>nvBN?9R_G=F9$zBWK-Tuz{A*sGgxh{p>%! zh6yo|x5j`=)D|euew`JawN)fJrYTKl5yv5kA6YfFs)ON3pdq3j4%*Ay>)T`A!`&mk z(Spx3ZuPgC3|$yNTs`bSf+GPg;wS|Oz58_TaW zj)_1F38})$yu>*ib4>F`i|Qliwl5or1hUD~YO`a zSZ3I+Sk)=gMc8u@*h9(;?2M-=hp8y3b}H&rO;ld!v7_*bl8I!AxK#AYrDa8Bn`H

V+E3+!Z&21NU?Y1qxNXhEb^~;jB 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 z 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

}R3 zQM$i-er)XEo{L(?Sw`?*jK2^h_I_tW^2df-l&(qk70NV5&zPlrjfBUEW`2WgR3pmd9F4c1WKh~Kq zQbDW&Eq`fzi(k9_Ce)^nEUsaVy87_XQoWlVMt{b>?em0o@E`oSZu%(Br1Gn7Hn=Nk zLvg!ZI-v>2Up?O@M+Y1;+=9QvqLP2HwcUJoWR%~O@yAhy*U;&k)}i;yIP_aS>GHYtFk9aR>p=4o z)6Bq!&!_vJ&>nFq{*ZLXCRHpRnwWomoboRA$CGQ%{vYDrGpfxqTN@_HIF4f*f-zuI z$6$m30};J5F8iKR3m`|5?yrBdo#R{ zoPTq^v(98@t$EkUeAjw(|B{v-?PqJ>``+z}w~Fv+oz*_$D16?D%25PGRW*drB2Ug& zgBjiHjpBC=lNwAx_#OCG#x|@c7C1&cX-x>%>iGzy3 zib@;1M(WbCZ^qAo=B!r-4;|>8Cqx)ewQnz-S4Q#3Q#st^Fk{3nF6wF=Nw(ncTg9BNk(j(+FQjWorVTHZ%->Gb8#m<(p-=De)w}b$cTW8!!*G$jUKi48)$VAAgz*r-|Iq1kcPQ3O7 zpzzmBO5v}*RwV@dQRI71YJb&Hc7Ow2{1&sV7Sr* z6vG60Qg?cLiAvQ7#=l1+{tzOXPuMGpK2MRHEhB2Xty1l^s7ON3T-yAwW2%B;mhnfN z?ALmm0R8B%BDCUcnVW?$P8?3{Ma9oT7ID66{q6EsXAqUBr@1YHlz(xmCs+U>_leCdf%HoVKYTW@$*@_KKUFb>G`*M#@H_FMO|N9x~=JNYE| zbG_^ODp<7?e5yBjcz>YfP#>sV*4%WzKSjoQ zTy5Ga!-fBq_b2Y0yM}xETJ0yRGi~wng?SJ{LP}r<5EPUjUFo|=Yo#((QKqD#;Iuv^ z_*4H8%s;=EKNnirp+8PHYTjshg8D)T?@b_m3L75yJ3h-bI4@!=EX_ z9`i%-i0~`^cz+3qarvc=I=}Yhm4Igxl1Udd&?QS@G_3F$N0DpL1y9`XR^_tvwhM5} z@LO1TWhSxyAQtFb8@92~4(Bum8zoXAO9@qda1(vX4!%5sK|tijhCe?HnRnDD&v}fb zL}DCB$2;qLm!&F=vox<|$ga_VTBBWpMdBay(j@AvhJP}F&&;eWUWqqXJZZH$a%i26 zo?RyZqfW5d6J6$qor>Cst)+3DB$rzG(Q%m1j?q@)c4ANAw@qB4@`2Yko}HpsfiY(s z(CRo;H$@vw>z37EV7XQLegcfDY*!uIH>m>@uj=>x`p-mn^+R|trF@!S(7VDmYv2FN zW*K8jGk>qnR56`;^0gTR6dM=UapWKnwEyDV?OGDw9i5{t@VUl#g;U%Jx_Ogl96ep* zH(K4k|2IA9Kg9oEVF_NbZJsR(Sq&S6!YW%syX;8pk5lXH{cYhw-cOU5CFBmQKISxls+h0d3A@ij& zPSKyxva#RAO2%rO@MDgJ95V)Tn7$hIaSaA;`(a`EG7h+TrmdH;pA4vvDCk|NKi?)| zJt^{4?tPT*um40;{O!{Q^&u^yn{hJ9n|#gJD;8{cX}w8uv+HajS4!u?cfLFIf;sQK|}bxmgy|a0u=l z!P6Is&pSmQHiYaG!m9YR{#}p%5AoUd+Fr8F>2N^Jr0ly3p6}Zsjrh_f?%#R7ucoT} z<-qd$-+8{x>X?a^d@nE5!m3i|nr5CVbAL_B5fzn{`#blhfEkQu^kTrKcE(rzq8+Ly zlCc+kU85mmCa~;_zOG0s!2L|zZ+%^SB}?APw!?_rUj2^c%FBo|j;v3tR0ihb>=cO{gh zJkR?S9BfIqmL5!H!j=teaVmHl<#a0AGM9gT0MYXr5?h+4B;GmfYxLbQ$>G9OROA-DUqSG`~IPrEk zPNU~7*c`WfgXKq<@yR00@EVtRgP@?_!p_!*K)yuu8&FS{e3V@ZVjlV$d+tIMUl4z` znx0#MePiOOTZ>gcxH5K9$d=?Y*MQFo>&M|=OHRs`FUCtax(lo`o$2Ac< zM@c@DzMeIP72~{l&TxeQPg(yErV8cNK@4h@%{@M;(kVQ-#xj!(#}o|JB>XCfbn{_P*g;eicSnWK4g2y|KpA zG#=L2q{~Gl=Qu?RgeeD!tHf;mJBnUE7dXtq5s5i#wD=FEpVfl}Q&7$)OhK@XvuA&V z4);6vL38qlXY9tT>@|Uux$NxSd)X6&ip9j6(FKPCNHFhTUTYDkb-1rx8T?- z!F>F@C(x_lc!mhiTF^J$H`9OmKul_w$n||b*ZL~LZrlHZgN9xoHvM^U>klx%n0(UH z5;5lZ%SajGglqa=;F2DYB&bU1j0&Mst@hxVSMsCF0^wf8hb{?LQbYA7ik|u&FWnIy zl&W9*fVa7kSS6J3OBPJm*rSv66>2v`p2648%2Lpr;tVTDnn!v z!%j}B&|s-*FPbkE;x~D{%!qm;g8q@SbmuA}_Eqo~Zoc5CY+^ec2+iAM z5I1TO>{MhWCX&-?e0o=Yv8{UhkA?Z!S0b(jHhlSgtIc%MRVSh-6S}$P;LJfPXZVk2 zeu`)WEcjTm1un&_XSRP-1VgQ!t)+ER-TfDgycE*A16)HD&WknOnaY|^# zfhb1vpec0;NvW44ObD7Xn7W4=hr5$I%;^R%n(rYoS|^=T8*@6L)tDyeyv*w1o*@^y z*;Ax=lRcTXT52r7t@3nM}eXyShxa<)A$RP96@Z*O?0 z3?W{#bY9;1tzp*^hnBM944fLk_eB%tvq^O%2)fey+_WcBTn9BwF9w9~wMXP>CTyI_ zziaOdvyB25+^+9*MAXhS2b`Y*Hu*|6FZy+59TL%%iab13CJVxkKK=ulsh0H^eq9>g zZ>|l>?h|$$%;|sbbFutbLg;)Zc!{N$uyquBqh+wBHjeFLm{go2Se&POnDaQy`F1MQ zbUQny8j#(?b674A9RYM(a6z_G3T2umThUGGp+Xvs(jDd*@brOrudwv8{qS{_^pN|F zZSP2kCx6Bt>3=}vsyACpHvrn(YUf4km;hd5^hlE;UxI&1xWaDS%c@b}+11NR3?i7q z>VcwW(sf%%SjS26$L!5C?i$vZyzb?hplub+lt2?wnb8`e(4bNSgq;NIn})ovnspAD zm&*%`=UgbT8qkb!okry@w8tE5+SLv<2d9hN$D!PM(!5L&)e#mRB}UO?^gcZ2j6=dN zY_;rOi)(*)jHpUZ6u&m9FlKbSkgKj?)px&cr^H6Y@ha|NmI&+8q=@oeRWb3Q;Cpr< zEo%E$=0%W!u)R7(_qLWcIG@lEvKpB*8MnEZ%Mfpmut;jThnKC=Z&nRrj;LXiTAhrv8@0yz3zX^h3cHw{!C7m5C!HWDIX^iaNrqj zqSHL50n6Q2aJv1R$4Adh47&2;k!31w?J*zT=2_&6q`l$Mn-#0lPPTa4t3f6~A28ps zC%I-~T&^z2e@TxW<*rNX8@@jaX={|KQ-~xhg?I;Jos2q0{M-jKtWN&*rOz11_$OX0stiK5d|X%#0mnjnwYj% zwXX^58t~76G?JpgO?G&B6B;za8LNzkT{M4HIV2|AUYwNx$}t(JzZ+ov|KXvojuv5q z(~(i?Syuu(02~v)vymMIi9hB`83l^pd8;C{`*v}&&_Ez9PTY}MG}mSTF#zb@Gr9E3 zvWwAym)29_H=|)8V?D;l>PmY7OTw9b+)V93Ua|n=)gs6U3E;;+` zr)lJ>$kftVI?S5UP@!~i16(mPwyOGNgrejnB% zI5jzwFAI+KsMMxiuz*$d!Ol0^2abP<19>GwEw+s9LhT87z(rau< z%^XRm-_${@9>@R?s!V~KGB#6xEHuCw$A@a?`si7mk0a|q!za*H7ZVwC+X4iA<@^q= zsO&?WvzBZ|{UdWVVz2YL>-OYa%^y%&S3|#X1UnV}q*FQH6c)P=oK2?;pK*Wen$I6S z!=!KMn3CX}>&cq~8g3J9HEpp9x({LfjLBbo#1$B#e~JP5ANXABq^r&jK6i==Zv0DF z4NsKrw4OAFmo3S#c9JTDxoW@a>T!e%xm1R4!sl zQP4Yq#k9xo?X9Hqd*S1#y4Zh=M-)$2nJ_ed>_al?_5pi zy3r{j6aJV7m>iu}Q`K*VV|eaXna;KO*3Douy75x}K?KLD9L?0+?aw_b*1hxPMuYKV zZrYsFu=>CKJZtn(Qt#)u$z%ng(o7~AEd}EH4{n4@C{CvqC~TWHG+=-7`zQ#X{tSo2 z-#7^*2@*>#ZY`t!+Swu!?E$Q@XRBS(9-TSDMF(4MWcy|X%UvY8JmR7TwHI{mTmogM zXDkr0e^pDDR<0CmvQnY(zM64V_H+SQqpo`UlZ0OH$?9YU#0dKbTgV1mo7V`3TRSFD zq;oBEcwTFi^q#y5YsY_)H-$u9pzv%@$Zo&-i9MRBxN@whO(;P$Z(rJqrsyKH_$N2f z#I64D4M=(tOa`=oOh~BmD<4e{PgAObJ|=Us_9cImd!3D!<7EQz;+#G5 zuR3w7%sB+ceATNbKS~`c+>9%{sSk~y+Iu%v7v6Jvau_oZy)HU>#sQpd<;$EwX-oo` zMue=?zVl53DG4IQD?QY7j=B}-xzS5R)K!81v04da^rYQhmU}vN#-V~e5b5cby>D#G zQv(AcY)umSqj`T1WzoS<2JMRcW9b}Ncn4N2vFLSafeBnyKd|-AGo8rk$txY~sR>KT z?g9IB#hU|_okoS7XuhZb#5+1o&~P3Hokk{R=<8J&!HBohEwZ;~JX_jMBR2Njy5zV52Q83+39w z4Fnr3z0QB6Dg5m6$CA7HmIzE>blWZiXxwAB}zaO&naxK*sQvNuYFQdA(nKa&z!f)dKo(@<-OE zRku@lVYe3XMt|-dno>$bXctlwAg@R~<5;3^KNY-Ir{kjWvi^+Yc~5xS)p|0#Ez%s@ z4u^kyO36mH^m|65`t~*z`I(d~B2c@5e?L*q`pV<7?=r-MMgnfNc2O7 z%Do_)C?qGSV_G0gu9-jQ}k(`u;Q`=Ht@3XmfM^kv^9zP6AtyPcb{4-c_|uQfaMmEtulX? z?!s;malKW6q!!Sk$oCHHKx*Tc!!d;d(jHEmx3kc1RNjeIz=*t|oeKwcfEnVQZe_M_ z$)a5SB4l4`NdcR6$jlCJznuRo(YhyF9PC=?C9B()#sHf|YCT2+BGIx+!I5*vl}^`Z zbiWw#<1U2YT8uEl^!FVQ50Vch1eas4;PA;c-2+#F0u|(0MR9KYf4FMkw^$ z$%jVtl9Ks+Lukl%lVUK2rQYXcx^qDKJ&cqb`7p1l z=26b!!uB|dKAj#7h@@<-wAs`7Je!I_t$H>f(Ax4ReiP?0rLGvcn3- zJAtB;K<2)Q+q3wI${X?Zq0N6GZMGF5i_vjlO;}uB#%RS%P++CP3vtRVPA}ILRn|~0 z&`9$r8yZx-hH~f%On%U}@kjEyG=I`kJguMx?%J7B{A(}n;c(p$6#Yaa=dqxQsj>RI zU&uueW4wmWv(@+McdSdi7eGf4kZmL1(#wPB!!KTtuHj)nsf5i;+@^nR#7Zvh3IBXz(@p(>s8`W;LU7BzmN)l9ZFwTa?}Z7&Pz=x0GuO>8i})FhWnr$O!Qb<%?gD0r4CJsbaS6k}Ndx?kI9yZXz5 zM)Z7AN<(>*~9Kr88N}q$_RQuVFx*j*uZrO;d4*{(QAZXi)WPuUD0ULLX57(8J;2v%Sq; zlz4k}$V$$Q)(QWVq`^B1t9C0f3o3nK1hRpQ{)guQ#AXq9yK;YHTK)$Rl+yfFYUz6D zyD_WKnw|{K_6N29eM^N2RYetMF!u#(>n8 z@fMScWum8)Q^bGd+T+8YSYrwh+Cp`Z>;DHD##OdmbM6nOLmQH~m6hsn9%!2rOao(NacDY4#=7f@)_*Ra>PxsddIjv$9q8llx-K{P6PSOJh^h&iBx&b#DenW>F!w zG7Ti2v>f6aJ_izNiFEz{$XrVOM_PHARmVi{hw;GdyuV!wY0R{n8iNsU^_u;tbF(zF z7ZLcBtXF?CXYh0Pa=akO`eiBpBCN^oN#=_RY0t&C2zGQdQY8*p1}5a*_t<1q_n@ZS!VMiuYEK1gT3s;HhqqPd#mnFgaoq4Xoujfll^d_)Wen|d)~)Pzg`%cj1jWHmKb(6^ulLc@ zS&1%ZkNKg}aSz(CfrJtIA~RPKaeEwWyPHgLg#fF53qG4#eB92-;d5#MKN$d9Y0Li3 z%2pJV%aAns{pcZC>oPLS{__mtf7imqkt6msroE0CM&){vh*7);t(-4%uE+;!JDGp- zNy=JVc-BV#eO+7hy_oyi*6}ms|47)sK9zY-5Q4{hPCHr&2dpSkpb-P5l2o2azC;St z`~13?k7ryuJK;ZXUby{`ly|5XoZ-$6i{DMXa?B z!<+g+`FP0uyBVREU1eUV&Wx9HG-ebd#JMGxY5sw1<|;2z(4!v)<1&qvIpa`p#BPgz zux2%i%0v4F@0IFE)NVq3Zye+0vjq^6=$nkeQ+M!mmUiJuN zVq)4-V%kU{=9^=5DLtCdG7z0C0xJOZo&WG;%5DMqw|FL2ID?0WXURBJ_+;|%aY@GK zJ*cre>v<{?0-l6VKLYd|GPr-g$IKOd*`7q*kDpUtDoYLV++Jv~h!p!A5?zXADk>`E^?f!^?}%nDXIJh$mNfR*(iF7G@Q#1LW4g9?SKnk2 zy&mUB@>~1J1{up}vxDMg==g$6v}y8O0b$GV+k_Vcm87*Mkbdvs%`vy?GCAxw8TYJy zaV#>d1D6`q{SDE5S08`%wVq{>@zd^5m7VbWvRy779dz`~EZeNIvGP#hEGhd{4sX%O zs=&FI-9e)A2xnZA7>9*w%69Iddc(h6+hknCyuh@z#+U-z69 z{Wff~>#ENjY&;o)o#5vVSRHYy#WydgX716dEWZT$ZF=E4%A|ir5-rOGzP5A8K9Vw~ zWu_|y(q#f-q*{f>twdru@trPk<(5<+-65f15#OYA1iQ+lh~_xI3noS0(g<%O3Kj_8 z7DK8cb^UAGnXBQbyj)9|{azWLyrLFqx)VYHGze8~XN^ZjSEfl6{bDp&cfU|TkvKvH zBXRPNd54uMst125h`InL3xg2Qaj8;8Q1P4?-pn7Iud&;!6(CR}KXY+sN9W zp&(jGJo)t@+_xU4LWUrbNSdb?!P7JH;__;)87DB|SSE`B15){@yfVg?SxJ=4DueTn z)o_DoVq*A&3#5u7rq=)P;W#Xit5GujHLZ&!wbi_la_?8u`iAVJ`gdbKJ!djD?HGm z_!NJXXp$gkvvN;Jquy4!e1u@dr?@h*?FgewBhF2A`eW6M6InD3$Emm zaTv^}KRSC}oY|HuzIb9^3*qfcg1)ZdhE#t+e=)AUNKLAIVZ8O`=ccgiM1e?OkGdd` zrrpFlpt`EoLnyvtxlHa>^ipLuP<{EJa*_4w=8R9nuyhG@sQfTC@9<4lHERkyb|8hp zJ}TssI^$50IjHH~8}Oyu(`#+h%cCzZUA9-*j(^+qMf~RdZI^3acrEm}I2J3ieT{!L zM$r@>#n@LZaeE_Dd9D^W?bRN;J_XfZdW%Nt2R$Yf&mDEceEF-d;3SkYByY4dEA$2B z9hKY2|5^tcDS>W*&9pD=&aERp?cKtNc#Tk%-D(3?7usS8{?48R5Su1eY_4yiLK1=mkvJ&MxK8tk546eb{g*+ro-!73X`_A%Y&&R?v85Xiz!{Y zbyfByM+Ude{9y>(6o2uf*b>1P?fVP2Nb8C>D|S|h=E$X;VEK5C<<>jf*9<}$PwYb# z%hvWq>szpki7lD9Pu9)3yUP~j_})-c*{CL$998fsuUYI&oo`gkZFJ9nrWA6)IXeW<(C$rypq02c{F7omh4E1*CtH~FBkgY59+z$#h zjsCWC46*f;?5kes<55y7d(i=&NO5(IJijiYub;U7t}spa{^&<^&0R-1MKR`-o=1R0 zAL`EA8nJidnt2iWIW*>d1qOeFR$*CgY_&EtodM9Y&Z~#D;NaRXF=xRt~ z{@M)6tUwD%4436Ck#fMVLe|hwdn9h4NDSa1q`A-+7=QHO_3Fn!FO^d}(GEYvX_>xh znqa`a+_0d0gr=N`NYBk+Ck#bv)Y4(q&Q`kOu`*t(hgM)Px6XGzGI4(r?zX4Ga8HeC z!UB`TmneI?yI@h(4{+i?ZO;5zpwy9zKa$YdWd%pyylXk{oE|L(m zP*`&h2#zqO9Y4cZKjgbD_|c=XiRAc82Sh&T9tTkf%$PIo4QQY>Xu z1;0L{+0WhD-f@2ry&$sxrSU{|xrh6x;$M=bd`%S7~oYJd@P5&?#{<~&n7RMxbYHvwaAG&<64rP0nV z*^|)4FgWd6h{#;8ETQv=iO~n)-~HTmlgArsapBP_WnOf|Nn2oXI-|g5EC9J)S>wJG`cG6(|1|JR&%(a?R+4j}x6Yf9BdSAcr9Q@M%-o|`Y-@Ca4+CeR(EJ-JK zAb3f!$4*lIr;_n>n*4B06U++%+q7R|Iw&jp-VI0{AnKWB`1cga1A`rO@u|c3n z_L27RsWCfV99F;oDpUl1ZD7TN1QS=G``cH|GX11@bgqq@*dQsM#FFwH;p(KF=6B)d zn1p}dq}8ucmLc@R;DAE2MV;apK#}uc2n(vcQrT4)kYu@7UROnzVA*jdgDM9P(yS^f zPX)60FU_xc%`x>i%=Q-GkMg6Gn+^l_So!|U9hz-pVS@xk=Pe5#e#Vg#X2H|vv$WvB zq^K&VD($ISC;9pB>Bn-(M!s2mk?Yf{rDK2Q8l1@E zY}saH-w{#0MkkO#maTy$+Ly+sCV@iZwHwrwCyezP!>A>-0Ek|Wa_XpzY{YjsE zOkK`6vi84a<;RvRII4*zt4jKdTp@+jU^2HAe2IKVx}gOGW>>58dTk7bb^@IU^uO#~ zD&M=N$G&pIbI(!&^XV1v<>X!2Zc2Y5r1DGeyqG;A8+68jrsziN#=Y#Bjy9O}19EQ& zS$U}vgW+MF;m1-rZP78+oK+U{=il6lNHaj4alAd$O|#;ZjS7DTTWxByPdm&zRv&ws zbjFd~OJ&3EJNSDUdb&#i=k2o=;G@bLU8#TQ*Qq**~{ocSj;SyMlUfMe^pnv-8xe>RXer5NcV7DGpt> zQZvq07;Un|n7G-`x>8igxn6-S5S-PndL)a{&U%;!kp zrU}7|=vTF`!c?=BmmY`gzMz*u_nZ2{sM4tx(-GoUJT9BwMI-(N&0GA}5=*;}Q}?`g zTuI89R;R5)|1!Egakx@Goae~zVHYpyeb9J#_L(KY!3E>JjJ`KC#9*hr4I%X z;`Ko#){T0k7&rCw&>7ONA*kpADY}WXmySh+n|-NTp?QW$M<`T#8`Z3Nnw>8@m60Ag z6rQP~uzhv$Nt#Pj$s|-#B10)sZbVB=)6lURXBKx#YIcF_JVQ*(a}Ny_Oi`x5Se?E> zsew%JkI0YPwSV&F@}E%VL5!)>n!0G1ncI<%uyeE^3wMXdY@D6!-m4exF?LO&+ zw6P%y_cJ0IqW?ld<^d|2;OrN_(62YGb@<-PttDMPI^BPvtw0>?iaTnuCcNS=?$1sI z0AzV_?y5cMy`dT>^?~T{$Y zgqM&X(ll2lzFlE_ESCcuMB?(B$!DV1hXmm8X4Eq`DXIuCUkDs zkHOY44Kw7Zz-lTQplMD2cFRk0J48NyzMrQ(tdxr@zP*t#HAZiroTe(v3qYBrxhezK zx1|>V*RsL5ElI`t+5r#g2@gS$fy`}hbOd3iiq;pCSA8Q3eX~K+P&Y2=qB0*p5)6IY zq#=Lyt-n(zTXe6+l<^6hol{7~w1R#O6eZhrFDRK+cc^Q|O_5=dAt7VFO30ng5Qle` zO6v(5eKEPcrX4F2G7IqDNUoof#~Ur?`^wr))?A+T;2Xei%PI$l32RcBtiju_akUMD zHcw$C<`pf%5Pb>dn4Wo_LKVitnMUD`h^T)sv_rwVxmIRE0eQzXWWX!P;Ahq(Rd9}! zbbxMG4CKGo#8yrb>~)ahS%vTjqA@eu_B7>mA&~1U5j7-^slz&rW`3ebmYVIPBz3AUD%O9m zK-!&p9CSoOC7*E^oqpe^a;n#_Wdaj!hWn!JZTmR?4gK-rj6? ze&amBayEmZzi((=NzL+U9wbVE4!nJ^-=4&FJ;1U@6gThe)G~=RaaPU5?LBOusT_)F1}9Lqs~~^cxl1D1 zss*h#Z?+rfpzE)7vt?W^&YQ-*8 z?)1Nqs%OMqtnb#hmc+WqWDgQqj)lG&duBwfhXlkCTS#t`XV;)?H8!yzQpiT{YnxVw zt*=chY_wB)Nx>a_yv7xoPBwoMslWL9^BQZ=GT#`pT@2r>6)HrL0^IE!!RAt`M*xJF zwtpRQIe-~!yw=3L|8PBZEA`tDw$hltAaj{Qm`2P*Mt*urZ6(&vl^t#_mVO+EMOeU0 z11iwMriUZJ_^%8tUYF8E)`P7oDq2>hGc7Yu1wOs!lJCut(>Kg$-zR?*ZkkJ;j}mrGWGE%SaZBr{D(VO1o+i=F(mvpCvcaSzzc9-w_>2$^ek38oNv*;hP{X(Op{ zJ?FGnq5=1XqXVrz**IgA4N*(RK_*%3aU*lqyvtwoyXem+sLbNYK;C1?M{Tf}I-1U; zF?PC;0!?rpCf-^|QCoi!xt%*bZA(^Mr^!a2%5x2Z&184_#LXnH%oapN(roy*^^BIm z!agN74YL`6LKTUIk;=w)CLXNo6~hlHb2194K+dF&h>`5pfeIN z1do(Z`)-dKmxf|A@tb8E=W-hjs}hM8 zHt{j>6)-t49?o;d;qhFQO}-7#89^X+jCZ!qICd5fK~veu>tW_+97)a%rsnGjenrZO zbO#LW7zAECceQ^U(#TbN?6-#ta)$<3t24W^T z^Ze{w`Dh1iES?xhQrnD%c7zq|12jYF{mqa=8KA`{+Jk_yo`DC4VvvliLzA4n#;VwO z)wU<(y7V)S4?QLeXB_j&qfl@%I8D~X-^Y@Muc!dgDu#cJK||+@WtKA@9j#n$V%pn} zWhyi&qapSsVq&iZ^bOth4TJQfxwfJL{^{0u#(_gyfuxixtaB;9lgXAuP;h8%CA73= zqg(TqD?q7WBx~e^Q2!8PxmhUK;v!-5DY=?PYaYP|ch`$ehhe`Fwk(XUT+TpTvz>?YVm?D0`}X`pZ84&PO!ZY&bt5BUQ^ut@aOf1^;Jr)Wzi(-GhuMW8N#<|%qI2wn9W!W-|M>s2o z=T#UHdm2o6Wy9^VyBp5o(^l z(G6SRc%FOUHT55y$BKrSF^a17SBW-0HaEs1-&CSytSK*9i|HyBa)D{uX)}yx{o>ql zM+5He^nKN1*KH;GpksES-X-0)@&@c-^OtMt@o`VL)v;Nn$0t18ijk{DHG(I=V$**m zHK<^!7yy<5ORFh1?Ph%$+VubM1ODG|OYdi`u;IL1x}B^S0l4FQKSPFX%X|?mCVR$l ztBLTk=-mDZG#vP;!x}o)(Hc8odAyCnv0p7w&_=uW1l?BO_|oNtf79a(xF3U|DW5ix z%p$HZbT3Ap=+is_3p?pmLi>Xv{%wE#V?Q?L6M0B0vm_Yod0?C;;6POkpFmDJiUvl2 zWHNY{vT@Cjp5D`Iuo!{)n=fC#o3}u(2aG|ljP89fSN3eSOsL$!JB_}1tpj)895Jq_ zgR6tIvT3uyO$_VesaV}0c4`3M8As1}$NaRq>@m92&De!HjSD$Y&<~|~5siOx`-%W= zgTx-MKFPnHdvS8c6l1iWc8s&@Z>P5uZu5r5HAe}6y z?9*Ir#|$|PAtCXeFtPFyH_wCREcb59QtwQfW}w`=9N8DP`O&s|#w8cSW=AjI36u!O zW)d8s_W7Ng1_7TO%2(W1cA(xU{YXN5791&;Ik(sfs@wl-r>rwSal(JxDQ{ram&m;U z3o4krN#$kn&g)LFnnFxXAAaQhsq2UTeZBlch{!*MHi<%~>AhdLxv5mOa+2?0uFrIa zxpgH=WJP?>Hos#=ey$;ods8!K=wA*jFm^gW>tt5^EM)ca*_!e@a=RKvz-z<g=cNGbhpesWE7yZd z1e#PBf)*fEiRVS_`64q~g^`;v*I8p*w1(dO*|uGGYRiAC#U5_%#U|Sz6nuS7 zaRHUpFc%LeJML@7@C=7l+2ZJJ_!&j+gFP(d(?s|x3MLB$1#M0dj1S6_09OJ3IuFn1 z?J@eO{u<12Xj-U4@P?ef+iHq(ywEDF{-ewn0)1{uSpZys{-OoL`N551T0-1bqmB7; z*}YRo_4KyF=n`T zEy3TaR-}l?@SGdJRjpW;OP6?8*y7L{LNL$-)}+G>pmcxHP*QM!I1)zG&N1gOQG9qs z%AgMe3-n<~+T%Ty5C{Yfpy?X<)I}uXP`jfk66)s<7#A21Dsp$M)fP)C(r%co&fY;b zOz2@GQ0|N)=!%yQqJI}HrZ#LjW(SNfclx?CRxvHWKn&Rk%Ycl7BRrp31bdw>M40*pkSz?m>>RUJ@;epuC$(i> zhTxoh`AuHFKK8A1fZHNp%hJIHjGL%n%ILF%Wkk-G({Kb;VcIllOFCY_{|boLn1Uk640kVgXf}&xXOPdP)IkySB*g8x;gEzu@>gX5)N?f zOWGwT%V~Cia!9W;l>VdD46NVL(fg0{8UGN1X78gr&|KZAQnmSrx3-aYMJxdHGDWBR;}tIPg9(wD^t;n#U0NprN$9sN5mwINd^ayO3*!MvT9t%8N1D33t#9 z&2WFwUotU!<6^3Rq->v##N?4|8n}ALa?*u7X4DTnO_}yohl6GeDj#R-3UDK#c!9k% zFur%k^COI$(NASzn*% zNh_rbR~694zsbBaEX7mwi;{`_;|8e`#%X`-lFMfcRaW)5hs<Vq233#TqHd=TrRTur)XZhT$w4!RQ4V!}(B6l-H`!6B`&hnwf&yZ<6X!h>)?)F#<*JwM@E)%CM#`SI@Mela#~3+4!lxllMyJE8Jj54(R_cZsvf)>fE zdnKWEyg?5?M3{Lx!Xvi&K0o7-b&7u=ch|T#Cd^guprxz_$8tMmt;@;?SxdCmkVf%Y zPDQOYa-M23D9RxK2H`I(1L%%>6jEPjhg%$G&Z;dHI@ecb0I5Brt6^Qxsj^1=IHZwb zw*$k@q(&;QQ#4T;Hf)hUMLqryU$pu5IaR9yL<4^fNxS3GS9A3}#E4)r3wnR#*7d;d zA)r0_Yd??Lr5hLr1PD#~^k_ zbkGKY=cqC@4Y}x*C%LyD77G3PuRNH~pcdjzX-yfax91ykB)f9ZDpAC#8d~ctVgl~{ zJoqO%EP_%1FoZYO)AE0%oKN#LD0qzbNyDbY_*UA&%ZcC?YPcfzj$4mC&Ts+a@JaTo zGY;z*v+7H1udf$`o3%7!RDWFpGbhJZYA1OYc3@jDnX=(YX0aLMXIal5{v2KVLwv5O z{^MNvFY2yiE3clFU&I?MM@QB2z8bQbG2>ypSWx*|`o3081+{-fD*~fUR(fy)X$?_^ z*kTJBOnMyIeB*sFTxk{|QNigxvFqidx5e4CdQCC0qlX!YLb*wear?#Vo6kUVr=e6v ze?~jeLAF%jDCV**KDz2Cst#k;)XVU?oHpTZ)03HZdzSwOrdrZ%rm}9@uUkJ-r@u1; zu=?D|=P2t@RjYshZb;!fC+7-Y;|Fzkfd@k`Z7MYA(4=;Z{}Nqs%N&v>69;dfXW03t zgP#(b2URG5?81OeuzAKbP17sF>FdMdCH`K{_gFIOpuHDQQt4|Cbru4zIE!}rur|#C zXHs3GR-0>C35b-8v?Ger!7mOs{}nO*Wi_00ewVPeI*Nax?FvHWX)0Cd>uAOu1;7)e zR-~KkFLM;?dPpdmgHn1L$E-B14s)Ke7AR?2pb)zmLCbA+S8rHV4R+U5C8fn zX~-Yqvu%IBy~u~(LG#^P8E9gUEJg9>wUFedTXY$xF2SMIi2I8?poqJ5{be7E)m}ZKbsiY zVl{<=kW$LcvLea0u5N?(9?Ye`ZXph^1A4>AA<2IgwZwZnWx=~kRsi<@W$(SCnp(R) zz^GTb*8&29(l00=U3v$vfJkUcCj^jg2ubL@=v6>Kh)4+#iUOerq$HuEQUZh`1PBm{ z5PI*ujQ74Xv%c@0cfK{VW_{nxTJ!!^*7@tKoM-L5pS^#3J?H#(OiOg1@CH_zdD*Xo zpOSyRZu%mz_w`UAtY8z3G1c>*w?&;Xx10o>J*{^mRF)jx9&!hTHLDU@rK#)WTE42d zq2AgHr@Du|iS?P_W#36b?jMX8hp-4CgS!z;1|Y-N^m}|VvCi%;YZXYl^|ODY zrpykRC|04uq=rtz*CG-Pim=vcWl&xN(@KkQ18yf!q(AQm7~QSXt$xT&^r$A5(V`DL zT27gh&p18QO-5N!1r2@+`#Ocv18VkD>GB?oW%0p{&PxtWpw$O$`hzsQGBm;gua*LQ zT(TuLnab{@m*v~^LxShZ zq1T-CnAXA2Hnftcx|?gI_T<=Jr8cm_^3SpTQ)4B=uX)FzfBXoxja?HNVUwovFi@!r zX`>Dv)hS2z$8KH=NBuWm2JmcZaKQ4tzzMEy0RuUqp9ktrD{q&J7c80%sWyLcRcY6k zYZnhiXRpC`3=Ky6tBQ)f4qQk?ei)xvi`2SbfU43&_2Q8Tu$5+8cCVZn9aeY_u=O8Y zMJD@#>0ZNvf~ED?#X{1P&<5PtlYpV#oFOXY-L+8?m#vQlS@^Yf77*52zq8I z^A0I(v}~djJvcf`sT=3QzSw^%Uc^9veX{vLj4BRK&K*}8(R|F!LcnM3B?LE}!Pa-q z0r>aCGx_cOZS5{*$fOsFnK-=zD<+IAQkh3KQXVXhbB%A77*6ABo|STLvgJ`BDpoX{ zQUA?R*R`afbw!g;GWx=_UI)0!(lRj61SbS6%fn%Hx;%OA4)NW6?T&xFdkz?Vp0%1D z*!jAt3(+N@+oS76Q8>U#tERiW9a0W`8{4I+-N(qtIL?@Jpf`oQIsc%bche790Q1pz zEeH$(5Y&O6OiY!XtX3E?d`VbU8Q`Lpai2}q4yUIl!(GR+KgW2&TSBbBvRT#;=F`$~ zLRVIo97WW*wHG`t9~*zhb9-{84B-OvbiuhS4Jj+raId`>MCh+Ni`Js5oSL|ktAuWV z-A~YxZ4=QLqr^>6_{B4{2+7b;8_768KH*MFoI3~PSSw5p*^enzmo4B$Q$4yu;;jw@ zcZSThQK3O+kV7vqSWKE1LT*!18tI20S%bnH1@HyaSxHdTK!5~7XORSvs0LilG$D!f= zX%_$1O?oRMUU+Q4(YtIC3iJ_0N_$6U2H4|!v!I(+?8~Lr^*x{#ZMW{?T&EIEztMqc zV*jv&PNQF=O<*00hkk0z;n48GY`;k5bi8$*E{L3K%x!yN?9pl6}7z1()c8s--# z>G%b5)Mu0#$@%a0*KE!c)lWDk?(U2xy*=8os+wmh#k;Iae}o zR?F?D9I1aO5ZDA<`YbAD^8)L~U;g)3s{aUXZN)DSV$rd^&3gbzK(@c!{7C0&T(^wg zGQB<|JOHnfi!p&5X{D38apJ1xrZQW~HcnweSAm7V_bS>E?rRcN_~z*6t<@uwjj1B6 zC8vRU1_|6zal@IzDM=cgC)BQ!__lH{9>L8U^VezBg2TOkc+y{Ao2OA)b)wR&^d)qL zP)O&&l+-tOwqAE!Vr)9r7Mkv{+!kIaV>PT3U2M_a?-{hah4HI$xCV;9 z@MsNm)P`ri^PXow#m3DO>u1K!0SxG-sck(f=cx&a8W{4-zk^vFX8{xW)HHAoNbxsJ z_)@#xd=5x|U2y=O1EhxgQwXMU>#Q^gR_^dP2`|}xI*hbo?Dxt zunF9dCE7S&uS--?wW}YDKHVi<(Y@fgdAxl;A6WS8UW4ZDp|!|@Bnr7jc;MMMKjpti z7N_3pYSGUD*&2HB`(S7%_$(~GF>N<8&)Rm%wnxc-qsrF7}ylW3<`oR^(&F=Co{d$uQ0C8-hAF7Zsx)n(iMY0SlUj{lMhZ zt_UuFhxKM@)GCG$=|9WcLh&>DtHb+ zsu_>z^*wp*-C$od&Q^uEF*t)(EudKGG8r2t7aLq36^d@PkL!iK7X?;*9)J}lGq&Uew7ilOY9{WeM9$`E_G zF)3J#Sn?mS7NGHgEG`t4z`C7)^`KXHQufvws_vdJbsF zck*m&*j94vmw6X|y>Wq|r_ADrF@f%X>et##*>;mEt!nt*UIWCSJ!ND~uoVUQ$#6w< z8b`&Xp{wigL5mvOZ?WSooJn%sNGE+Fa}CMoow=jKLW0Q6_Wm@XA=(i+R&F)z@X2CP z27#oDFfMm>Et5)9DUqGG$?{^j3qQ#eK@uw(@+9Z;Dx=RbWPdiK21iypE2&6-mXN}U z^@oklfp*)BUj;)t>QbA#?nt&0z{(!7rR#`sX2f;9HaBjepXp7%P-#eFb|#g`9{qGB z9B`qA+lJyNnm$Yew=M17+WTGs5-~HMDr;`a(+VFIvi;T#sxgZbJaIlE9{{&8hx3R5 zZsrfNLw<>6E(g2$#iOf7DO1~jLCuRTXO;mJSQvfM56g<HW< zoPLZ7;eRA6{zn9imECNWuDj99+Ff2uZyjq5D!wgpMHliqsIu3!3aiX-RjQ}+_Ed<1 zRgMSsH>PV2}V`(OT2Dk*(O`Sjy z2v(J2H$rn-!VX11*=+Y{Cv##^!|$$2g17J2lI63A_EL7Md%j3@Jx?coC(xE-+DR3D z0ODB~PfHBxEQ+?0!VsNgG3-%5K|G!#te%V8=9_reNJY~BwcnT5UdKaAj7TF9=$bf;bs@dF3Sn+zplhd3{rH7FT1 zKq#DwS$Uj`onCI~+7LH1`#GSoxfBcvk(T5Z);{BZF^YQ92tT@iHuRQ=pM}fEK)cvv zkS`|>e9^tP&RT_n48&UN!j8Zr)2h-VN)SuL$p6{5I9K*I5u~yY!9|{2lsm1<;mi3; z)Ht`U&D5b_xE`o@wv63j5L`1`W-4RKXrV7I#%bu#&$c{J!f!KT5W1irgyA94s?8`q1WevY5MjG@V0^O8f*h&4Ix?* zcGp_=-O#&A%T0&Ygc_&D`vDFf#F!3(qj04lWc5iQY|u?~`nshFu3P_UZ9@c2co%IT zHdP&meUe`?)~6+;MlcaBkfMC3)#yymxHTRS#?b~nI|s;rXdbvMwj%M>XT?F5ckwEL z2C?^d_vgb(8obiSxaFn41Tfs|(qy$4EuNIi?>MKi3#^Bx5*LEQ`9T&Ps;B{Ws~A&@6(vrj1fd1 zArIUq2(a*fQcJZ915KGTT|U|_FC-4M=xQSyg`_ZZZNBJ-D(UIzxfawIqHECc0k2`* z;H-wf#-ESO{B@!iSO<&lpjj(9hemyJL$qDLETy0fw zLCT9v^f5wK8#%0MQ)SjmdYz;oxyvm0WOD0*#>_cjUj60CmyMO+tnSK4yTS2B5zqmY z8LWKbKP^Cw&8t*$j6Sy9n-IeB;YrBW2(dfa?Uin8fDvvEwH>&%hesQim54d-PV-eO z*CJDYGbcB&uV`{HD9|;MR-Y@J^)1OP>ziqMB-A)lL1xH1YYuI3%A6UmR-M6WJEzX7 zGARMx)x*V@DXPD-(pgFU{kJ%>asq3N;JZF68q=XZiiM}MaF9Fo;~ zt*6=#e+~$Fy>BU-rMJj^t(WovKEe|*+e28mt;9wjS?Y8s|q7lE`t1;DM&*q36L^0pdXn=ns6-a&#U<~%LTRPuYQm|sh=V?6&Palf8sblW zrjTcKn7Iz&>X{LqlksBVh*XO~+Bx8Vx(-6{)QGs*XfkJD)gePei?xmNd2fOeX1mS- zk@ui+le;jnH{Qo3T1!RZP*g{HwPxB3zYF5SayQuk7q> zf44s&Q!PMyi{xu|nJPfcfpAKhI}|s#C92=%^OTC$8Z=wEs(#j2q<=qmP^j8yxPK9} z@jfO_8l&(|t;z+hK@{@82bN*4e zh6fM!`kVCh>wTlv>P)O5hlk4qvy%z7W_b^iN`64U+?djS9+a}s+qg33n0ZiTe-JDm zN3u&y{q!sBS6CH4o(g>WhF1o7^G$yg@MhxAi&2_4MrZ+Zt%i}2UE5LPHyG509Msi4 z=aZT_lA3v#dSttBH2oic{Kj)hsI|OnlCxo&E#w0=p2o(7H_bk_uWNd$btTv=&9U{vUuqoMZhD3bDMJDR0(N@6lH50J{5`6Fp3X)|!$-|k66Bm~ z+IfmU+yjldlrJ8rY2B@e(qC#v6#Oek)*GyE)XMh8@x>$U0e=E|8edNTmQNq6Ro(1C?U? zV~)I^h&&7)rDfTF4G+EF#D$-eF}DPL5tp{QUtgVN(rTp9i+%flrOlihEL1+4#AHlwjB9gz z96~R3EH2O>oFq_%Ra>QJlcbS!T9eD&eE%Mfy>bD-IhD{#~pI zC_UaSz|~rRX{a&jnHeQ+C+xk#9-*T=kLsaLz-I|KEN__a8>?l&;#_R|N%R>fn45t1f`=8xU47$O4$Lr>vQtlGRy(xR&ZQTr(T zD-Lgez?0w+p$tBCTMJk-5sWEMO+N7gAZF!s-t?B@g zKGSb)YOQ*C*j+~wbN7Jl%A9vtmXJw) zhgOIzpD$W$?kCHG?I~2ujT!oQ3{k31lS=f?0rtji)%%xbyJM@f9<2MK={XErQC?_& z?(3$p-qtNpupB_W{kUA1m|bkM)ZS+0I-f3UVw3>| zjxO#)3^3h4GFX=w*f&Of!{`WEqhnMOd6kH%4BHw`7~si5Cd2=DmjWRQ#(4-sk26`K z{X!+S)|@@u@@)g|Ma+!mFcj8#? ze%bXa^Y~qODzVF<;%%|<)-s8}nHB`Zs0syw$V0d?Lw((;FN(^^iZ+?_mn*&!@M-$f zjiL!W(WVY_J-;(>J;srt6y?NzMO z*C+nT{VdxvX=id}3zBfFt4(!i;^;994^!TpEpx8b>)+I?A`2+#J@fN_T2diu!mg8z z=07*+3VuTviAlRgD=wja-B}GC3B+StJ|RGeWMV3c#Rq7T$E|OwSzH7u4ORcLe?n-J z=VXpDZ?31#r1kc_SjR5!4DF`iTozISQx*wN1H6jrW1E#;b*2VS(6#IhlJvbdX@sec z$a|VykHKtw2NgpC_7b{(ntE*s%8*%TR2|BzQiG^#3Wjn~_(_6_Ly3C6WOD)cYKqK6mXU0!H2c+f%i6Cl`%@D>Fheo}G-N!2CRblH|4m;(?^OZ>2?0Qlt zv|ElWw|s>PeX^hLRZpF+*B*%;k)Y-~xfqP|!Ry@^=br!16@>qP47&7=jTLPCJFXe`$J z=Jn+enG)a}m{a<@*Lss?7eYp{-BDMT3dlW)A5P58PRvn&p-5|ED54=pnG z!kyF&U08|}Zg8!C9;!E+bt5kSv?k`}iaa|;WIf(NUPV7WcD zPUyp1n?oDv6~m6&XV5R)@I7S>dU}R38{T_@$bTxz*ytBFC$e1Ye_Cb&uIo znl^rv`1$(!E`{38h*W(#82nOm;iaSX{aT`dZM36>OJE&~3GcipS$dK_$uHYA7h}yl zXx$L1qlIXH1ReCKh9z&R;%#%fiNQ8azs&t?lJl2rCv47&$6{(Wh;p7N){%Yxd`K;I zU1oJP<=w#W@(7htnyVr0jBHhb;9r9cn=HY6VX(AkwMB1jq(Aev>h1t1^o0kd?5=8&b#?_<6^7vGZFkT>aDrQxAOj9`xKet_6H zfKb_g;9YIov))O#U1A04QNF6#*3{J8Ks9tc2y*bkw@NA<3E~|_kuJCx!HqK1-XK1T z(`K?%sAUjRazj7e`WeuuK}4GqHzFX{Uwhh8RE32sE`CpNTs#M;+NZ?0hYBj4a<~nh z16KOI&4Ub6!%!is&cgxoiP<7QnSJz1x#7ZpyP8629o$Y?AB=|;~}GOGH#7@^0)>1>-EOvp^O)P zwAnbPZd-0~o<>|~%GYFvcwrJ5A|AsR%gX3Z#$zFj}a8#g{HF6UjGnKY3$sVZ?+C4fS6-v?uCOlIACq#mUhm6J>)pyF4C} zY`)d*nn#{4tx91Vs~H7aYnpuSi|Po6;eyN1>ISc=F#lz_M+Q0T@>$shuK)n_B@{i z2|mea#iM~#9kNB5^EkCxlFBWt)xZoQxoseLyQSTXb%&|Vj?PzMEm)YnnF`{E&vapTDJx4;h1jBRs59oAISiabfluI-P)h%;PWm^3&rODnTo0~2t*SZy5q7~%KA#D zy~&_OX=&x=sHr4#XBbvkuO?SSW7&I;yQhEDlTWZnJy(KO{ zid<2E^F&S!KUm${JXTl)nQsm8sh7u$g{2;%(DLM#!~D1F)hMP6A5v{E$|Kologx68 z*e=V*E&bZ^FJ5$i{k^FtE9ynBPitjDHLR>jVz4}|(oJq!-jID8J4-UP8=rUtHEj~S zT2ETTKFwTr=?)>9PPJ+=$AvxMOyJagLq_l2qJ&hw%?nXp{nMp_ywfAno3keYN$ro% z>putNA-gWu7^ZLUsHaLVlE!?u(UINrl?;p+)p|+Q!P4!28!~TG$-T|diAe4sXbHFG zs11zbxEg!t{$^D)B~EIHKy<1dhp^h{C+fWlYAofb%I{3I`#eI!Z$Uvuu{Ml0Nmz(U z-#I{B<&pqgtYHp}%ZmIO@xUmAIpN;WK6x1|@4}01I7S+gNE>W8| zb~d?M`9g|+VEC$z$X{$!yAHPuG(-pnro3Mupjq{f~Mzc<5=Cl zh25~Jv@+{s#TNf10+{i)l(B$J%1WXcF{EKCXiPDP-EJ_o2hzZ}8FQ>>AvBu6y>03k#jJ>l@YCqpy%gm9?LxX^_ zbj9L-%<3Tnhk5b4_0#D=Vo<9!c}oOZtQgn|v22)gX$G}uLB|=#8SJ$Szx==LkALIe z_&5HIf8*cyH~x)(13S{HlJBWJ0ea58{U}sLRMdYzkH|>W`#U>Gc&&}{!58#2If!rD)ja0 zs$IxoZ|UA+X-JoQedGu#Mgs3aT6sJVDpl)fhwY(f>xQyxll-M<4~~>}K+HB(mwx}h zwd(6$1i7`U@1v9A)VkMF6+hS~f2nE+>Z~AbFS|~<{n`J%pD8&7c1XDPX3>DaeNO>@ zt19J|Z)LA+pfY{)Bi7kr)6#>fH@OFAHx@J*kj&2na*#v;<6lp2mA?DbORxX!imbq{ z=li!Y7~$%UBmwEQ?7~f}xS~O!-x_|br)aYUf0LbAIYuga7xtIWenF-$pJZ~F=|`5$ zgZp?%!NJ+z#%eYfS!quYMxqNw&Q=(Ip-3b0vXuemLfuOM;L;8Fn#Mw@oIS9|Z*KI9 z54XtJwnyp6gs$6Xfkgpjhz~U+`W~@Q{rB2FoKaQO3IY;%^9BZmCdj&vj>#sbI?Eus@Tg6HwL{mA z56ui#iu@PyGc@4(sA7-7w&-xPMC0{r`ewAGzPzFS3$nOG{+K>=;UYu<*D0pn6(Sak z7-tEnnZ&i33-4bURNJ(#q51LH5aInR<|!30bLTtBom1A&YbieW^U_z>U_h-GMG?*a zEm8UtEDPJS+mB|llIM3!&yY`leG(^wCr%puj$2#TMg+sx*2nfgt0GtG(OkRY=YTBZ z5QnC=O(j|C2-W6Cnfm_6la8iQap{oTvspdQ8P@+eObDw2J0D4q)YHH4OuXI}I0w9_ z?%uIY4pV%o-at2}f7a)LUT6|M^8$ngGIXI&vuW~up_V6efU_N*RQY3ntu{pVN#$YJ zh0_IfDa2mPyGgA>m+h2G$KOL8Cs%K?HO6f9&Of00FQ2PKXD_cK-(`5GK|jYN)t~4_ z(DAlo(U3`S$G0V)vOP+~@fIoV20={Cs`57m7#>}gJ`-0zRyzmGTAc$Pe-X;0Gvg6P zR=T`yGK1+J<|8hJefgJvmb9DH+eUiza z8(Z5CLT_UCsKJjJO>4J%c=3I}K~v2A%b-Kz=EKDhbI*q7Dk79F#7Wu&;bWQGJpK4) zgDUHf&LL_{xrM#aWZKFdeWmfI`7cf*M5?e{u>u;VzyX%hiA=wLGnb$>lg^0%-PGk` z(eN6J;R&Rs*dJF$Nr_k%Ce`(8_Ty*+2eM64mT$^>etwui;zw<>XSIIZ@Z+sY{mM$I zL#cS)8Y!uF+d@rEyfsOtPWWRAw1mK=Sya@>&jRWTfsPL_h&}I;8hh5#5HqXDEw{xl zDN8>r;is(p7R{!A1BO7XYfXFve*Tg)63YTbfZkZZc!=y=>fGIrv)|&e0k7-rTM7JC z8pN%!9(Y&tFr$zyrGm5~^)e7OpwnALI(c*)lMj0TpV|*08>2hv=@z+1MmNiYprasmDhN)4- zu28)mxw%1IpvOzDDX0^;OYDBeW=xc3botuK?+>U`oi5^wE`A@q( z{*y-wv|CYCUdn29Q#~2@j%tms(p~w8`BW=dQS6t7$=&WIn~}}?rGgLOl7sysVNrvi0< zN#A|Zrk&pY=Sh>R%`j3}j5z0f_eN1yt-`nWm|c5+J}_j_t@Ksbc04$Fg7fp}?e5n0 z8RoJOpSP~WFLdYJZo@7I*pywoCaUFHWKHG24De1}8uEeO}Ef5ZGds`)D&YGt%N|B2Fd7uy@w7jweCm!y_tL#P8Dj4&@1_Z07QuKEMzU1wdIrt3sq zO|EllRQ@nO2A7_tiD`vjxn-8T+^bZDr$UNJ&H{JFAJ$bSDcXm5^qOx~fD&i5W}JeTRGQ^VY6so#w+^W?H8COsBcA`)i&Ot( zE2Um!D-il>FYAQm!s*q+_*0`p=^ciubHI-RE@z)(hR0tvQu-}@Ro))N$u+O2jgAI? zM5a|ff(_X~I{9I>qvXGYE<}K2%){L;#_H3wb3o<#nQ7CG+r`u$K6YCL$8!G4yUqhm zX}%lsC;!qF3<+UPBa&7u%lA9rL&x-rv7>PFlRpoAle?~&CU>|*?6xiY*7SV9)0zp? zkJ=vd86G+suM5ff;AlrQi&YXg05VeS@ETfL^5~ ze0j}Id<7Ed`^|3vq0B6Va`=jszbsX{(-!Xz*LaI@eIuM$z^wlAM9k)Sjm$lN!!BP2 zb{`zrxd@ZJh;|;~KP=?x_Qmnnn_G`{0`{@Eiu~&Rn#0J0vhb}UVIu|YJB+k@K5)x zarX{CI_`>qJ2%R&#Y;Ou2|wI_O4zTno&besLu#kC#6N6a3%NB8nYPKX3X#=U3a;|| z1$LqSjA@?Y~_W@*!B$ zvJ48j#YW4)BGjJe{y#WLas?{Sw7W}-5C3PVl@Rm@kOGjduIab z7k51L*7EZ6I(VJ^q3|cE(~c5dNrIRd&{K-jSF~W$sjrY5Yq5U$*KMSLt#sG52MOV0 z3LXRm*#iCKoy|s&9+<{|kQsT;^zC+z({KwZ=~ar6P+w04k6jywx%v0O7e)8PWM`hu zpt3e-V(}ycixxb{FDF^KQMSa#x_16WdqN3J{$SwMdnZdd4W|V6%8u@`WK07B$v)11 z@E!KSb~DrG(A4=RNE852TnRRy9?e(Oe}x@cN?Vu8wyl~+4X5INOifFCy|^;q;T2oD z-8ubl-Q5MLi=BOt8KMx-JsF2?;5bBZz0X6(US>^my5>3I%z9U9&C*VmE?EBq>aPv zQ@}Hwt?&<TKVUXp46_Ryor zJ@_{BDCL@&bd-a#2!GYEo7vE6GU3@33M@*o`up@JqDc|&Zx|s{69%E#hB=MiSY&V9 z@6RpQB@Qp6rYysL$0e&LPLEva?kM$DK8>4C_#?(0XARrRSLAkMD<3oBgh7f-(sl~C z`2M@9#0{r^Il>x@WLqqLc$)0=&{OeZSJu`1(c9H$c|q6q#)<9{2Y=s}7uHHV2e?e0 z6o)MgUzYx|)I9ra&uznRsk<;tX7vZ+;9vebOX@*JO_*1Iz0OyEO62&Al~k$G4B@e7 z{zqW36na2uRxT#u88k%C?1Q~*@(hKl0@^j=NWBn$wYjW)GvD~($NQ{2TY_6Jab6Vh z2E@ce%?tx^*ZT0f8~1_CE!k_k`|vdjiz#$? zl-Xc^X$ZG7gu6rrTskQf0-1zkL>~QJ0&XSon=IrO$}Vg1o0I|jo4l{SK3om>9lDP@ z^XSgxwtN4%E9ZK+yy!$4f*DU>VD0pH0XynGcC?dI5ONiekEeOCgGnuSuzXyd>|Duj zWF_-Mf`z0mr!}&1yNvtLiLQfz?Q6^X(2in%{Z3zb#D`S~J*j3RNVIscg2rNCR-$n@ z5@97sb;QU3=ScRWaZ7`_ynlo}{}*Pb2cP*6qHg!fthwkXCh`u+y-`+rF%B+*@^F9K zg#IFHRx0MY4%W55Rb~id0qyliEdsAx*_v&cnpZiSG7#~!7p=3VB#!dS`x~p+nq|3v zL{*e`><0y9GEAzIR?DrOGeis%YkjaniywXB|9YO{i^Go70`S187x*0Ti{+QiP*Zh? zJY8rdC}A5vMrZc>e^c;YvJAi;qdh50q{c9()Tf+r4=V+~74C(vsTXE`J0*CGT|4{x zKB25lk8{At{y9K+@<{H2-iFfWLz57HvcM%|x_UIS2UMeeAm)l6r*!OEMBpw#;5yCLP`fCM{fK@jVB$M9sb~b^+pt zr87R&VIF}--ednL$ycQ#!i#{^7{3v7F{n$;-5PcNh293P5Qs^2QQ*U&IW-Y~?q7xH z`3sdKl2Kz75+D0++QB?B3fqjaEt-sB`Tt>IX-Ngmqmqu-ga^wAn{6a7v zuiE69lSJVRT)AHOugB58Br+p8KUr6y+>6E!Q+Fw_*IZ zSFzwNOKfRUb|F-AAnXQzi^))Q!ILNdTQJ?fv}riUysmOG=pUUKulty-bw#!P`sD_ zNHopI2s5$IRnB3wDQsNigyK#t90}~RSrTamGL4$#^0Hji{sI7h&}}BLtF*5-r!-4t z1D*aJH_AXv;Mx(&9}bB$%FA?`OESS;#TexdRbiDbbh{*T>!_@>)JQjaoHDm^eM*5? zg${K$kR9a|-0x8Zp@n{n3GQ>WjwEkq&2Z|9l*PNHfiypr&SFEY7j!$*+DY?i+zGSl z9DAq!e$}h*p!)NFMU{|knrL;_jtD*icGkX~G~q^*74>E@$rd z>j>xz(6Z(L-|?}xN)k+@ziF6!)NRKHNCYB3@WnoM{x|<6LTrtBqSSu2I$S{<-&QGm4kd%%5$g(&K2{ zeMkqhpv*r)>vW3}SSikxk3wnQ)g4AgI02RWlF8G{K(i_!bm5|C7(t^m@@RUhX~B$o zhIlywmpY7pbSI^<$!SGw<_FQx#`jxR^k+scCsUleM9Hwd+i=EJlUmk?CdGA zJd~O1td&*48b&!`K>i^Bpr)qr-m+Zz^0rX>n&j%8Jz1BUncK@%wS|%}U#N`Wn!N72 zBz_Sihi|Xh;Nn#nsAgW{OFrU186%dap3-|QASTs+X7?PxPQajDXNTvc&K!cPK$7WO zgDYcj*`Yy4Um9PiZuE#);<8sm8{~T5QsaDJ;v1nG)wx$zULob$D3n@huoD#lbu9n9 z>ho$8+&EjK(oSG2cf%)VKu`jzOl0~g&ye4Ic8qb!VB7q)3mjS0PqP}Q9`2JnBCvCS z{1@1N{vAbJYop7=!9TR0#WP3{8@HNKRg{^v-c56yIc39_|WR}0xf!IsjKYyFaNNM>%dxkJ)K8 zfUNOUHn@YN`1jR)ft&dj*2*?cxFfY6+*TyAqn%PvdcDDDkia>BhxLo>*#U*k+3o`n zsRV`!s5-Sz>DP=+#<;~O{WyNcSA`iAt)L}g)PPXihg>)Q$qZre$Rvi{*5$k6tq_E7U$6OgsNmk6TOZ~-}zYQ7EvbC(De5M>=FZ)eJXLF=xWbJxm zq8izdR|LcQrYH$>Y3Swux2VBg+Jr-3GYQ%OeG{ZB5s_YL=adc~N|{R=x~{LOSkq?3 z^DF*IJfAl*d6#gb&FTYbKcHQIBie~UiUcu?Sa{u`HKm?2m>U;iWQ>Hy|90|%HXl54~MoC#e({^g&-4z?WQuGq=3+51hSh;0R zLdy}zObuglKcmupQ#$rif(<`~shapw!?dbV}JH<$@W&On{2uX z@cp`a3P(1jza>fOJPKjcz7+Ly|38&1^^wc?@q0=&%kjc9=6#GDp*`DN>^FpyR zX*hXM{a=&>B~P@2d*{z=d;w5r$U>bSoDtoc$qp zsL;qHZ5Q~V$Q#Q7B=$wzQWkGdOzimMK{94DvCpPf-@*KZ~dZm#XKT^dDJFGZBk7+UZD9y=b}j+ zw~32McwS>Tzv)NL7)8rmaTVwc{@}Zx+$`^^4z4non}e)QDV5XZI&%a2?ox27E0b=& z#mZv54TB8x8iXhxnGhSh@LdQ}Mqlir-oTg7Yb1J~Tq!z}*=O1b2^Odi(@zVKk8Dg% z<0CEEvY{Y&mNjT49I-JuZw62ifp1FIsQLApBaTpemiWH_HEw;s8+54myKd5__B!e1% zbU?X8G49kxIQGJ^9T&sgB}5V8r!GwQz`EfoFPz+&a$9R{eXg*jI_f`z)snJ~pQVnL z9dbnbpoYQ+jgm}1S>u)sA96#X0R{oEH7oG3jYIPdx@)6qe7WPhdvvY?BT`u&y4Fr) zp~3EHw#!cbF>6JG{MNgRT7JggFKYyU{|NpQo-Wmb2u4je(D;Xg11goM$Jc)AFl+67 z?t0(L2@_FqMckdQ`LSJ@L+5*{M13BkM-@I-S)d}PU$gCJmjFUd`Ok&Z05b-VZ}r(b z%PHJ@6*gWC2xz>i!gxO7IX(11|JP z_vUx?)4EG_z}|DXb{nsE!NHAVk|(Bbjns#`W6NPn2~d*Un>1Ml@it_x!O8^$Ku}pvAv-s+`rPJn6aiIu9xsIv6Tmctx0)=m3UfO zR6- zWM!pS7;m$+oEsrBsN<_QpPpT8>gOknD+nGhp3Ruuuf=-7te7Lg!PWhLKO(8|{^d}x z-xZQks%!wlOdRp2MqB0mYgQGk^IptUQ%>^`k;%o2g_)3Z06kZ;&UApp?+X0#LcQ)_ z_$~AV^yAiTaJ%mnbx5qKs@ggh@yuRcLZ%8d?c+f;X%XHaix$G3Wa9kA!u20k+BQed z>3DtT*b=-h2iv5`}^>lwl1xOjqLL`(!D}%X`9dj?nMwyk%*YU5hLsjiQW-Z_Fsz_WX4m7@z{(<^`ftp}01RVSgT<0nT+9}I! z^8Dzt-y($;@QRu~#LJ3FZ*~#6DrV(=>sZw6u5gqara(=q`lC(nr#^7P*Lq_iTa63c zZvnSHAAGK%)3KCi^)GWn8Bk@j?oV2#0~IiR9k)ji&)FA!9tBxB4eMF{FYLW{RFhq| zFB;`lUPVBEP(W!a3JRep9i%9VN+6U#D4|IwgaqjwZO4Z{L* zeeTXsH>Lyu6L|a@~`OZI-Ekjjmto9y%{H<&kE43Cae;1Jt>Z`lI7Brmy zd^M7Hzt1Pu!wUNHtMoXj-a`sYlubc!^4i207p;ExR)bX8JlQ$?x(VD&cPH`dHo&`EZiN121Z#M7xg88tm1AENdt8ORwEelU zY)?ObvrY9$?pq$i>cahF!ovf<4Fj!?kS`p|W(7nWqxS~JxO>fAySkgZN*0%)`XMxD zs@XGiYgif~a{&21zxR1x665K43BQ@sj&X;8JXB!t%1@Wx^DE|;v^M>_dOAdI?q9Pz z=k!x5J>E}xYER_UE>KMb7=mK7QOT zG@3t@N8YVSd&p_UakJ(W<70OQ&^J8;aG&b|cHJ`i>EqPNfljM4nA+_W1Jv(k97zKs zM&qVEs`&9$$l|$47392`yD(-L4TIpIK3|vxXZzn;ROx0OzZ^PZ<}I83AnIJ_PLN1{ zo|e&*oh2VxR9SzuG{L*Z^+(H=m)@1l6%B_VUE61$8RnkFDu#wEp{?<3~@GakS)9}ayX*8BBsc;V-CaCB;s_e%;jrNvRmOc zq6)Y^G^AkgiIu3zhH{L_*HWwUy}MF>?EGcI<(b{kdG0cs_}N#n_LbnsSK@Px8b&&L zDcRv5Y1|Mg-<~u7Bs$BWZlFlx46xKuH~m&_*8B6a0yFsFugy|}rDLob4k28nKe?g z%b4v_C^vb+QN}U(iaMI$!s(pP!ESALJ-Am0i~ybdkbf9xWrtqh0ro2&maOmpq~DeH zHv3JuYb4G91)^tw7(iSnkg;i}n=2eK#@oTbS^rhTwjpHd#w-b_TKPS4YWGXBMnK0o zCXp7F%Y*R0Iv908Q2UU@AyQF)F0;nJgrEHHZckLk*3W-8alVn|-xIalK5(4nez=a^ z2HUm3n^)KoCNEfuOMPuj)U#L6hm%UlvYRaWw5Ud|cjkhu1r!cu0Dw6%!HO(g$6IG< zq>5wP<7^i$)9~agF-g@(cb{wW{p+M;)ghZF@Xo%$pR6V}0|q~GMTtd!G`d6%S+AXw z>lL1@F$$71`FNjF`0R~c2_bjie9iidRO39xH<{*Op!9U8$?e*8&`{Q0^dhXkkDj`@ zJDMoDF7Fjy!l(3Qq4|IXJM0G0I}}=zbL+%QYv69V>F2%z*-aY=IvNz0A$ohJ#P-ol zrEdWdvGM_i;K?&UO29^c&!diaz*ORUTAJPV;^x9k9ab>a-q2PMvqvPXy1rYio8d3P&z>>PYnO_P@1tVN%^8a#k5jt zSfHzbWoEZ>xArUTjug^`06Rd$zi6yiJ~njZ{`>yVEq%FF{ zy(U>PQrjhs>O110E>bIogE?o$+GR6I_qT|!P?3+UD4FTrW#fi6m6-DJQ4^1JWC$ll z<-*FIZ=RwjX=26ml1Dl%X8Pi~UFA3b*3#7!b;sm9>e|&@((jSs)B4Mee2irf=30lJIh z%-74Q(S1UB`wy#O-ps|oA?!(b1~4QSmjuy6>;4Wphw<0ZkQ(6c1tSQZJNmU@6JMfH zn#gOu-_rf~!Wy{Y?uddd2@=-&=qM@pkk-D1$srIOPAoH)vb;Nyf57JpT5hPJaE;1= z2Nv4CO9^hFif3(cV>z2^);lGKPYo5zxY;ttrcJOE^d*s|RHC~b~d65NlhmlHn zSj7dtn$~+g=SjLL-G+tjkMSVXEHk@v!M2oO@|v7SMBAF|z+7@lxId=O8&!%GQ*wmUE*Z=`Ps=kf6?X@MlVXb%#%-`lg7x) zHEL$}Q%nYu1fj83m18uJE>tKfKlhT_?|0AkX+LNGX#LhZFVWqy`i&y)H&p2sl&kOK znwJ1-c=&tsYcv|DY}u&)My1a-9!Tv!W~0kq;89eFmhr690b|(+q508KSzJDmoL*_G4{tLM*zKOth}fSFhR-2?^7pVS8k^(V>frd zVd!5c*56T0U+$9rdX^Ecp^#pYXa*xw~Fn-&7w7Jl7&=$KjwEn?L z+ILHKo{K;!&~0lK89H!wUR@^LtT1`gIoE#jUGa|je^;N^gGZa}G??u&Oc4J0t-+y* znl``MJ9)`4U5i&f_gY;>T_nFGe3s3#ev!yC^J(th!%d;!Pi{F0IDIq*_(WdhSUMv} ze`a&6Ngw~*+}xO+-~KYUcVk=Pmp{g~d$(I=tCk~p+KX~@!+EU3>SPID8SG`qtLSXr z0XEKef*xm)=n6jq{u9wJ0Kf!OatUN;9G17W?Db@q{w7W*dee=(v%kuc+0^FAE*`U(b4!R?7AT{b&65Ze~3 z^Q7<8(C=}JMU%th1G8M>DmA_Jm;Uy_QO@(4+*C-GEp8(dHGwYX;n~4aEJ7$nTFm62 z`@bRJJn;;0J*zYb{pOmvqq%{qlTT6HNP1LvQRtLZ%v?FyJl5>v-5PrXYihfQe`rBT zgn=RPK(R(IZhnpaSzrj4O>0**d2X_A7TUBp{$!e}x!n>duYSv@DJx?`WNbyMY67nZKU z?pvsN*8Zx6shBeoyWJA(j;|jJe|G`hqTTO}CbI?mZ>AMW%4NFn)?{ST8UVh%7fI zS6%x-dz|4SDi)(q6VcA1bp{wMX~ESsE%()&7ZP_gxL;qSTU_12{hL&( z(u>*w>&2N_g+nq`EUXRlf1a{13N44tNrNi4BQJvO3l=sEVM(E!&J|Z=x9w8Bzm5C= zAnr>_DxfqsWa2q5?7}=W`vy|;9$D(rgvJyqjwDkJP5X$DIJ8htifXWkB<@QZHVs0; z0A_*&B*R>8g^PsdbVO_wV^kCRM&dc2G3aVNJQBr-if@SuU?EVDf1nTs4s$=hTz6@F zduKJUeOzixz|Bl5*@9Zc{=V#S(y?EC-x^E0d_B+%U+NSeGE#-rN`!VU?;*@SIsK68 zPx0;Jxan0@S9Uzu0(O_q?{a-?%vzG=@<0a5|bwY5K$^ z`nyJ3b2K|}r3t1rf7`i2JyB^=-nbw@Z?u%xBpfnRJF7R{cTZ_5nS>)j(6FJ}IQgf3 z@?*Z5(VIQPH-#52g(kXi06WUu*9bCN#=ACsx;Fx@(yaAyu%B)9Zx&=Oa$z7;hjKZX zK%{YmHe|ZnH)ebKWva~mH(wqK(%dtji$o&zFxSpE#GB?* z5}zNx$DL2eP6VA3%D&ul8yMnJ>g7B>tNe|)cA|Stthm`70kO8@3|W~jd=@eY)f3eqZ(;Ap0sGh3IgcIonHbxJfMk2*@X?WH$0gB?EX9+?t=rG#td z5POWyhvFN?f01}W*lylO7nT`bYNb=xM#Wz6QY_zM89B?hB=6zj7fgezRJ&;EW#r-t zgo;de_59;2)xIc%ip2c6kkt3qkUD8Rz3GZFM2$Zio8&*TjTqG4Fut}{2J#_0m7`oN zU!=1%BH0&F{&rex4NHyH~XKy{L&RLqhF4eexE3i z#vJ#Te+B*Bj4ornv26E~jX5^+=|11jKW;7;&C>sIT+*z}_?@o!4dB7E4WkLO_-@5Z zQCQJF#m^Da49n_;Xgpdmes#6R$zP-a_aKBv<&o`DnLTchA}EL#oa`fAt_@ngYgf@J zyYf6dbvE8o)#gjDWpiuMm6y>x@A>l#Et2#2f5}ER#9l!V{5eJvBdGZ{(8;Tc{^VrN zd{J@zc%Q!7^xf&{me_XI-l-qmxajvYK%jTZp_cC%K@UHuR?5m#FAiA$2^|9`Db#IF$X3KJ)yx@};pwlyec< zf1{}y^EABL*}M1i?q?F#ll!u;cae@Bm>ZXEJIo`6LBMny@h`-F%!P3qf);_H6 z-lt%9>zA3HYP$`(=1KH7f&A8n&TDrj#l+u?nH~AXMbowV?kX30)Wqmv_H#QyDo{IB5Nkao5O_e@)*bV zzGb+As5aPwiF@RxzuJ_<^^=#@=n9V&gW_L-YIO^Ajr@d>=sS`iy#e%Z27$TyQ`^@N zF&2tksqw}+3n(IhqZQr!Ma~~;V#J1AxcklkPA$TP9+K$FI?h=axZ*Vsf3C*=I{wKr zwP0sW5i6BfH7J|NTM)4<%)vTb-id1NUE1H}cwIK_q5qf@#Q8E9NhW87W3FjtMYx^M zs$-|;sb;9-kh4I9Zi+rE5mlb+hx9n;@Qtl>1>@6nTUG6sH>bPW<$IfS^qyOL?CDk! zfr#1OR0KKm%O~RxO{;VYMi{X+Tj+2pRc+=aVrpCHJp1X?_-ja zKwf0UsrrEg&`hSc-OTnKWzPU$#n~E*5sp83@$oJaR&%~D)O$W%e@fSI8061%537eH zqya~lBSV#4qR>$2q8qGo+Z=S^?b~xVYh40u)}@qnWt8i8-^keqd5FEwKTw*RpG}TB zzEt|Q>=yvw(z}&-q+NkMoU1tfvovVx7#GloVmh%U-JeI6GZjAhy>945ZpkT=7}Bx{ zi0q${vb>OAMlyn+SJWRcWu&m4Ek3_1m8k z!{+Twmkw;A0=WL7xBLmvZkZ}?9_C0r_UaVsC!&s;Zx~X{3OcbV91%!lyqk00bYAV( z{=$3-us*53xLri@C5GWV{-fzu_!)pP|C~2{)3}_IZ};eIe-gvoOmAAgoi%%>rxiTZ zQ9mP8_Isf>|7n*)A)Zd&(!yw+gJbFwbM^9SFJYJs+6$$7tz3znT|Bg!v+HAzKLbpT z(eFVOYLqqnIuBL)l#d_3JzdIA$zP03&3*-Yc?Jl5bBm_8xqb3zOJb4X)fwQ|8r=~t z%Pc!j$=3f4fBe=d&$mE#-H!h4md>7Bk-KMrhH}>8*~M9GPBrNbE%e<&b&=z&M`lVQ zY_n=5y41g6z3fH`7Z|G_)=4pK_@%)raW&C`Yf~Z(?-ZJ73a9`RDkhS#^+x$mgVDv8cyrQ_fm39{q`@Ur2~{W8WTbeE60V5k z7lBN3sz8!@6^V=wKuN*;_K*Z3E&`MY!>B%n!mdv!=9a11TgMLs@@oPZtdQ(u# z?2{g^igtBJDSajN$eBtpu@6*tbz!Z>HLZC={#y{8k(sJOVcc<=AZWcne>=Y~ssAI? z>e(uS96>t_bRY49nn?+CfA>(W$TN5@`n(W$f1hj(Zp0(>K7lpxRrN6FCVTLp&{Epa zTlbBYqTLMKcdK^cYnN3g-v-SkEQQR&5~p&Fn*=2={D{)y_jCxH>n zab}wp6Jd)CZWEjx%_m?R@|Z=h|6*kJs(fjdHS_%(NRm(Y^*Ql~{8{}7OA_8+5qpL4 zf7g=p^h9E`?BwdJ~S&5@ldW5ejsNydFN25waBs!+?*l(z^IgqIO& zlRmw63qODFcw>L-XDktMT}7# zaX#!F!wTs)5=Fxd^1}R;&=4Y2g}xR@TU-J2H#5n8OYM76KQj7)+WPt7JOWQ~#{^Yd ze(Rk19Wi_|B~)?h;st6T`FQ`qMg6`D{KX1pd+D>XLmW}{rXBY>HW{SFVyS8Pe+M&1 zw9{$Meuwuo#6r%jRx;IX`B;dq=taoDt|?=#J5xf7g3!p00I^=Gsdz5+^Ys)i#^%+L zL%VXC{P2({TaW<_g2Uj4uVeIac!YKb;J=vX{|n|RB(-4$KafE_Ys7Cc2?sxV=g1RO zAeO+1(QjfYaXymPd0p7Cma5wJ4Qg*$*n#b2A7=O?O;OWb*t zDpuOsw|SOD`zrL@@WdLP0>#+RL32iZgWTP1T%{0ERgYdGPX4|3L#L6)`R((O-Zhkk1{cyUIZ$u5s54P> z**Fd4-g4d&N>Rt*AQd0- z)-7YyDiNkia76MC?1wc;XMXai%H^{1r?tPcZ+~cKUDvC4^<)l>M@&JI{)Fr&c>cB9 zlA3H0+?=w^e{QCXKzifu=%m<}J5+R&s!B^_ek9?rxkIR`OWOB@h&e|eb=bD0;~vh( z#oh|cWlkOc>v^kLMa-hzI`?0#%cB!Z0V}DNFF0iKUF@?N;3g~Amyda9KKeC)#Vi1T zC4K(>uGyCEj)d#6m>pem7>DIPC@^si6<}oF^DSMLe<)_5$mziJdW{-%vX3EoAhl$En=rrF5lRC2P#Gvlg$tc`7x~ zudC$dSkZgND=sL=YnrdGL!{~VQAHk;7iorWe+j|TY~9z@qbp5}gKH<*6-KU2zH-nL z{ECqbo$3e|3@&f{P-5u(+j9y2!*7u=Pfnfy&cU)DGb=FcU64@VQgJptar)pSO>@0B zrrv??E2(0tYtA(u$Z)!ra=9aJls7VMMzbBFUCT|Qxwz6U4 z82fD!UpR&ZG$8YDM-%DLXMl7&c7n;X`7;2Yly4jx!}XfEG7(H+raJt&8f@AYoRVa< z@^rOmg0p!%g|B@Hm$ZX+^u#>&(f@R7e?JQv|GGj`Dt(G0ynNR<)SBI~fTNCT@(U%c z5XoEKTs10ol^4%82_}zC61PB$W`j9sy8H>WQ)*t(7Vi&oM#6>Wev1h&Xx=DlJPps> zo4P9;ERqLIMJZp{8PezqOm2fiZog7B(@>TDqE%sZMHF{Q^>?p1M>|9f7g6kRf9@i` zb;ryM&#TR&1y^sA^s`z^71GqjDs1b2EkiPp)NZh!hkQc68qU}zSB_6*G@@Z$n!892 z(WWqwavVn;OBjKw8;K5eU?vJ2;X7@SF@~Q@d3(bxweQI%$)A*6Z4&u`j~}Y^ijiOw zGKUUAzxV}6*k=?aR{zys9Z>(de|lGyOui@=^1?egc~wLk@uj?=c!Q~rB3bW^ z*;I_+q}YLxc;NGGIzpC248{41)2+r87Tt?Yk)tAptI4bgr~rRn+j&JYjZLU14;#xQ z&H_3Ee4(cT=rcNm2}*aEMPI@yoTE*|Irix>z&qEIW#sz7Er1Mz8)QPE^54CY8>0$(KZ|a-S^a>bYAts%(q-Ph`9R+y_ecYajRPZ}oH2Jjx|wU(e*> zO3d$ro(b8M?XnXK40*M9u49B6A`q<6(XGyKJbS(ku0R#oi@I3nf2TP1sdOW|Q};UJ zQ7eAGxr)Yl29O{0M$hd$3e#5y>!O^Lnne?HLGE8RQZznaioC?EU(@=0@7gi+%b)m} zx#`SS)C(u@Zxk6XE|c!||7vV=I9z+3JO6%#DL%O|k5m-Wg`@I+==!{Nhn$e+|4pRl zSGM!c)vx0am*hpdf5NDDx0@yPZ@zJkAWvU?R1TguzEHjnJOju^x~Iok5e<+Jk}90= z^0*rNxN=zl;Du90_NZ@{)<9R!ubK=d*lp9uNx@UCii!i9&&uZ=e~SF}mE1(XnbQGL zhkyz~;9tT&z3POriRtg^jPPm)R1{so-*oF-M`Cy0AYa#9e`@D~OL9j{4RM+V$-7SC zi(elJc;pun3~i=Bc~SgLms~Q1(&SWiq#$rrJt_LI^cS>TIpb#k4sY)v;k5if_({0G zv5-3uAIUUwbU?TD*Czr);@2?|GxyZ|o%{$`5@jrhI5D3jff2kBJ(_BMjCW5AJ-I~JS0HiIg zsv5`0e=Hp*?57`>Nf_(0N{~=pGG3o03#n#M{BY7Uja&@xT@NauveKp?oec!Fr^Ysi zkaVPQ=`VB8%myibpjrc28p*YAlrTQR8rM${=n7k031Mp+BW_ZAU=rKlkcV2*cAn4Pc`?-$XYtiew zrr5ML#OtoaRiQ*`5s}>BhKuOdLX?cd@jiT!Fcry)`x{1!%Od1ihbbrCQpe@Hx}uMq zI`-TOP;8;~sd{pgJ(~B!&BPVbe+A0OwcUksO7&ZrP|a;Oj2@fx>={7r;Bj}x$z%Ei zF7f#f?eC^ZQI^G5BL&XA`|hu|{w{QqdP`FTs^M*M2(_I2CK&%_NxYc`DW%i z*}PfUCYgyj^>m@3|}_ zhlC^joA&ai-j}fdO}Dw{0`6rg_iK75%v8))(&MbgB8NYi4MpT>zkjOv^8DS(EwQL! zOI>r*c;^PLiuSc-Se4uQa<3ca{JAF+fxvFX{3O3Kz*KWu$~hU~fGv_^g(&>e(83Jd zki8P6+1T~79g>txaafG9f9%WQ2NfMoFJc~Gpbxa&;Q+v8nxB@5$6o%oYEKX9o&8aI zPLIrlBWaM)2F=ObvAy{1EDJ1$#UO1%yiIm2pMy4u`JlcI4gme&J^-8>h-@o}B~Cjf zx3GT=_n4t>YGj|YL)l(32HCo%GSSd?m2-V@>`8($K(>T~%R|JWf20EV+av?LE^Of5 zKH#5sIAk8bA?G}|RapIPYMt|0QlV}FrGvHhMYSNNkIhxl!j_B>PPqlA90#|Nt)vwK ztdjD_z-_l01}@K>vsV^n4!^57wN}t1dFz2xFxC6DA!8o<EpPd3D|?Lkrb#KT%K5W^+ney<48=R`)1HGztrTIClxd z8B=jx)gdG!Df4s-Uy|ZRRy^c{s!*)?&7bITrbhe;Rv*ch}t47e?<3Rf_DE0W3Rt!-F!7H zsp6Tw(JoBRNaSoqCKjd~`iLxZ_FSN ztPA^b8R3oglkhBaGGh9%s0y4UcJ2Ppg`F@@@T;m@UMR1 zIYu89a3;Cne@#rlMiC==9jFCb$48fxuXtL4#Htp$Bp0_3FL}dABu=~)~iaC0_z$hAAeao|ErSYsRQpLhiYSW`%d1TB2x1$ z*5bllhR5nh(>=hZOphw9xH1Aq)eZ&hu-(>2^U=#kL(55eSL*+LTK`}=z#Lp#AOy5l zAy<*ke`O0XI*-|L=(I-CVKW2KEUN1olhQ!T>Y{@=X(>6Lr#gh$_}vwQ++@)QwvRWBe`nr!SoK(@n#)TBC9}ujc@UE3Z;@Kd30sZ1!5juoHgWl zo>RjU(YKJREvffgy<-Zumw(&1$;_7~+3DOZe;VF7H@7icnYUCn3Rb_A(D$YAvs8u9 z#XAwjltbW@iQNlT-+quj2?E!ysQVo!HiQQ`Z|+1pnIXoUyIM%A4B=kQZZvGfn7hCw zFSuJg=VX#b7S&<2;zEs@sQ_^bvM}};=sS6?{lVewakT60o0({L@ZlLie5|&8D20JtDp-bRY41KMa#pa{^hBE@ z5dgSC*IskSai)l~jQp;OPtj_%2AckQf5Tc0%uXY3`F-t*j5X^A4JGA9UO3UoD}^1h zuDA`=__)!1&~!yyo{0pe^Id%?{6^R*}UamY(^1gN=3cY^h#RYgQhhR8XdhWBKQ6HdwWMe?3gZ z@IGKUob{d|i`CP2oC*&felBI@mW?Xo6n<5luKsBHMNGSP2g``fb(O0TI)Y%qe{h(O z|3qi~!|73-*sAfIM2jyWX++#0+S;Ry)b4K97IY!J%-=twIauJHdhp#UeY9JPXw)k` z1gWaYHqjD?eip6fAQ|#3bMKKKf99a49&yqq-P2bgsuT1)UMRV%tzb1pW7*L3qd2KI zb+gFh1284*v0&Z+v7xq^4900=_%U}Bcm5m&&>LxqYL)f}odI-}#7-OEypj2Ty6E?x zFU*3euf3$3OKPGWg(a?cZ?p;JwyY1e{rbVh@j7M zx014x19T;Z34VOjjRr><2DWlVctbZO!mejv@koTD$0^0jZ8bl*mp5xX6EUFNtT=mT zHZuy0si)Q}DYp3wA@!W@e8Z2riQ>f?wTx{IRtp>wp@E!e2O`Y>^0L+wuF|3%RLQ`u z&orgfO@R%WIff9X=!g8OnY$~ybX zdNSLFI+XCe>MKR)nG^qw@v&4v5psxLUk+b|e+tmls*AS!?VDup#I@GUd(e`zLH zo_%oMQgM`-0rhN$eCoDQ_lRvz{D3f#5C~8o@E*PH^K7_4e|VVJBet5fCqydp88okg z4KT+>Z#YGLaKvaf$}Z+O8{v#aakesFNGCCnjOdqeo~Bo%>0VRZ$mcZ=gCf1Xf_zO9 zojkvw3gkWi1C?vfF@hM@B#h+3@89BcjAT9tlKqBx`(L~s{!9K#{!9K#{{NJ7`ve1^ zdm2q?-81|0e;}Nsf_AAi6@`3whayuyex1RV&UYnE>wKyYy@`=sCI~)2Ui!D9q%6lp z(t#q9HkTWgyRsCAHq)b#PnM=#V;J)EYQl&Cfs4LfNHy3JmNDcM5? zd6kU4rmb?kil3*7k}I6&si=qi#FVM7Ao;s7%_*$vf5057Gf9vE42S6xzuYSSXASd? zL?=fNFgD9HeTp||^f1=N_TXM8J@1If_#5e8=#hTMR)WEiwV^uU8G6+2aEobr4ci?x zSUZ@XQ(#8?Xg{$>@Nzmam6JFF#1Ce7|H-^=@@wL-(#7r!aJN7?OSf47xuTpI$H7TdCqV+v2-JPGuf4>mS;YIYwSbD*kXB}oSMVB6FQ%FB4e9M@n#ER z=RcTVZ;{*;NdXQVbJv#$lDSz=iuh2-2Hsxjr~*lk<>ZON8>0LHE)vAVl??AO0cdY4 z)3&W{|D9SQR%ZmFlK$4@?xe$9a%<|>-B|ik23p6RVYT65#WozZ5`>mBCRb){VcOOoLE*e*YeOkgAPOZ#$4znAt@gA=Pu*!jrg$Y4Brl&Nz|t}Io@8`> zfaq!t!(jdZbD6fD9`l>?*V8?D=nyHn)r~f5r~0*NiVdz7pWxKJSuoI39mz7C)Q`OC~{~_$MQQ zD>Iwhr=O00uWnl4t24m2H@8OHW*1MM?f+iim8bD%fVV%rxl7xtI-DfKz8J(XIfrlw zITQ|hWo0+K5%fo!atuoRGB%Tw6Wz(*SeWGi`N(f?pJS;m-G9CBUAj_ce_Y14X;Kwk zv3a-Mr^mX&%!v!AJ7znS1$?;n!zDcB%4YXKsP3fCfO^$JSg25?N<1Zb={jb%=&I-N zpL>k+uQoXtJ+F7*@dA?$*=&a<#g6@4aa)~KmldJYeq>9nRhdwWDQoS}%nNU(mr0%8 zV1)(?!jNwhmA8trzRQ)ge=N1x;{495)J()B`<*Mv6#v_9Q5DAdFN|F*y5Bu|FW-U3 z0+Ee6YIq<>k173B!^|R^!q)g$37Vo7mbr?xX&9nbaZx23sNJb@1`+>D!y`+e+#Tc&H9vH)VGYp zAz*oPQK|YuWn0u-jUrXfn37NRc}}wjw-LLT3PrvZ2X<@0`XO z1l`?}SgSI^#L_kdf3}-~RWmo&#|UvZy#4CbVA>`}vFcRm$Igxob6uI4yB5E^oGW93 zL+*4wGPY?@{6;9c+o%eB^K8gy_XBC64($W;(XFev)BBHP@^ghp3~34q1En)C=~$rb zG-3UbE?<$6geetYoIZtMM;EN}b$GQ|n)1fcbo(2gfn0D0f0AGXOq*FG_~8AU$Cf55 z$qM&V$Bf&=xf5o(vTrpbsndoHu~qwRhbpfigA;ry5hY;4wWPQ(!c#=RGQ<1*?(*TNSd(|iHcZF+zBD{=O5wds zAMwB}&HW0VAZOl$Z&Iw%|2&fyMDcu?S-@!Q-aI|*-MD84et;1lQ?R>R(Q1qZVPSdU zcsM91fBWsf+u6C$U8g&4>`5xzV^u9$OE1P$xK(yh9reHNiIgEI)G&Rh4~hSkv))2l ze=qFh+rvMUC2omg`{q^bGW}jW8`|luU`TC6LQ!E;ILzlluHXj2=<{j6 zPv`fM7@JyL6nr0krHE&MPHfsAMg29wzG~6Be?iUVqJ``^r1hBxyAn-TW82Ec@S7v1 z?ERhPi4X+zYo<-4%s z+%fQDz`xaM{q0k>ELUk-`KxMmNPKpYf0TQ4z$#^{K*Z@ z-Z}NzW&es-MA$)7W1Gy4&9u;0OEc_+(aQ`vpl=LX8MJpJ%=MX%=O#a=e4r>%% zChup?V%hFc$)JAAO%IUh71e&#SYR5ixm2IS42&VpR*Y^M#W#oEn>= zJFF({=2{dskiwQ!yWG9We+7MnfUvz_d){2DoK$A>VNXqPi7L)M3si+*mx6age*EMz zH$X-rQZkK7-teI9;Ckw1CUlQlT!9D&Tyg||+sJD3G}~ny1u73UcbCflrN`{|AD{$b z>)Y9V+o2$G$Un24AhTT1=#J0F-|YT1WQZ9pgRO7egp!XEzokzLf8cSMS+_i4`kC@U zv5zLiwZt5;uTU-BOb^uJR&WiLS29luRy_q-S*fVqCbFrEm%*h6IPQE^a$g*-R}X{G z!zD3RwYWGsi4mLXro1mCJ}A}%Loe^d&|aIZiua{$LvqHDCHETQ(hSxH8NS?d{73ib zt~ufla)=#jfp1Wmf9kj!5TPlvQDZLV?=W3B+zH!Qkz|In$35t9FhvaKJ0Q#}KtV-1 z)g8xG0wyz*8}nMMiY`Lh80@&p(w84R>jiG0JG5LI5g37Kh|rfAr7(qE-1bAeF&2E^ zRjM8(r%jN^-XV@$ochTH-rqMPd5z$oBfxse%g$fBvza0xfAFEC^<~((m2dw_+y-z* z$oUtoQqq(CJ`H+!7{%HTWrWkxPKO$8JXVo{< zpS080ZmxIm|2*EC^w4G0?DeRH*hjQIlTzhLbWAUORNz0wdVN;t{g8j2apz9a*oJ)2 zkTrnq=6=y8f7i)7^Iuqf;Ota8)+lCO0}VsDB5`rag_V7H{=)|Uw5k_NQ&skan#TqG zYeDLP|1r;yDfwpphZi3R6ThL*>+?97YGy5$xbG^>Y`E0Dut6uF!oX^}@AZZ}!K zY>MoT*qaxcqDolFuZv*@q(#x@=-UsLyVm72on1rrf4pOpRvEer2TJvi*lGM&)Siac z6^FiAZsa5J)VO;swJSF@OK{K~T6Tbx=~CX^7pnFY6~S+#S!|~V-0Fv&3xSj@A$pTH z0K|RailC3OU@WRCJ#Ms7;~D#VOasw44J>-o3?5Jb^binvKaDRBPdVDA+{IswX}&9^ zs?0xhe^+|C^|G{U`qcBe`*%=#8Rk)anNwL=1tmF819?oivKCrbcVJWpkEhv+JTsQ8 zw~&8&vlKT^)?ISY1(j>OR2=}WrrODoo9j9|q}i>K=DooUWy6~$9k;7&I1XqesP1w~ z`dG#AO+}Kak7qd{(}6x2aPipLs&g;nShk$Xf8A&DzT3ibcd#Xglx*%ApXo3fH?peo z)8Jw|clqe*pNTw@a2JvAAVra0CGL=c_kwram4Q9Vt9QDnn0M+<2-B3vpuJ;r+Y5)^lLMAS)XYe^URJY8;QF!w_6liwlcrvI*$_;#w8 ze-y8RM~462gfpXfg9sl%eyh7e?-My)#Q`G-#R!7jzp!22lHEs7{VW@cRrB_3Y1u63 z`gA}xiA|`ucTwy^?&DlL1748S#YguWNwZyz-fTHyDbE!h{M8H!R8o168rpgso}21{ zF1iAN4=2(?EmjMIhBLge-px90H7(?Qf3>tOb$CN6zpWp9sUrurshsOQsElslXTL zE(QIsYl`yM1!s9EY)|@Ax-R#Vin!8szqvE^^jGE0yL4_0Qi0FOZ66G&Qy4b|1twH`@#u4Os+DF?Z9l=w#7ycuJidNtpC ztz=3mX({TU5woz#U*3TQ^{PT5e=t7!NkzZT^=kuI)aHYg{EOO4Q?^zUZK(M#8@@KZ zOuwk!%l{R#8g-5&n94Fl?Sg^{SiCOG9fQ!S(3VT~Z5mNtUl%_EsI3Rie>0buoTHWJ z;WpDKT=`yhwe{agb9+?JmC{G;sB8H-{Z`~D`QG-t2vb`V0fpstoiD|Ae?N_~T33e{ zAyMT?4{lRC?WP1~)&-o(Rv03NGeV;(*|4l1>no@G;YeEQ7^mmM^eoj><4lu6UIn6V zBZ_9}9cq}f6gtmYg!AO}8s5P~DEWPMm-Gg?k9LrN6%wu}WyWJ05 z`Q?j18O{!{f;|WN&j0zaf1Z~=y5uX5T#$|NGq?>|gTvf{-CJg*NVqkx?0l~+sVT?4 zY^JsrXIvytlxz^eIJNmVO7^iY{RqAwsPL`!zG+dKsZ-ke+aYOpTLzxJpGVtWg>hoO zV)v0GFNe%U9FJS z(M?!*<%)3q3A!}`?IXxLmfpDNNSTz3O`x(Q^fU4$fvzU?CDF0GrIWK?1G{iV%bgeZ zr>peP{9M(iE204wnhOVp zJ7}uMSyk$G%2hF9e+=vli6e54W2m1EMXqSUw8yO1G$5Cai4;rCzzSgPC?)zbUlQ%! zH+U?s>r-dhKC8}{##X0Np?i6-M0Pzp?PKpp6Dp<_ySLyV_?#JB55k@{C?u|z`bQ`oqZ57YFoYvp*4;^tvDl~LCtYDh6Y=)N5f5c^V@O88R5r@$HZ?wI4 zP}6PDE*$m2hJql1R0X9sL3&jIkzPX}p-3k{0)*c6Q9wX??@|I12t5fMq(dmu5+D@m zLg+|G{P28d&V1**@60*hJ9F|+W-`A??!E8bYxmmCy<2lFLGu55#hhZenNA@3EP&WZ z^nTo8R?b$Gf3o(7f;2E<+dd94OR(eJzU6M=-}>rY2582w4#H*y{dnjykg*_&hu}rc z<$e8ZB*6k6H7~j?`63FuPWNr^I`=aDv5%+sXBQfv zKa0Llb6htZCE?w6k3_;M#6kxL#f|JKw0umiQ^rm2P7YO#_5_c?6^3H*l1>JL9NA*h zZ~XYz)>D}Eoxp}d^GmC%e*oIrHWTIab*Uv>@{Q#vs{yq4-7*$`Hh!!N9V|I-QQ9_J zkjA;we@k%Q1Dq#ML$k>MDp}tYq1Cdk77)De-(<2|B0k5_15Z9<{r8)5j$gBR+2}*u zROz9=A;{izD@A%Q(@}squ=zfv=W3=t1X=@BNAs$W-PZHX2vDz^+2`mLBc>F5nuum_ zO8kvl?bX2KMutLCWEoGZIR`AGEvytBJ9kq?e?mALlDY&k3b51ppR3{ew79Fq5N3xB z^tZ&pL5Z$!173Ev?jT4gFnj5!wBd2eUSd7_S<|WW2_E{u%wKPADgtzg`d8)wr(RCu zt1R`c&5J~*tk4t3#4(cD%76l}j0{WdYe-AEx=2CbY)>3%;&sCyq2<$G>DBfIk0YdS ze|1k6JtVN;dxc4V051kpXh-=KT6oEXp9B$BeG{#N#)uj-lAQ^=peMpc7KJoRB!W9q z#tS-pgmE8MABN)FD+5E`*?48P+#C=v>d&C-6L`*)W8Y%zLc^5hTn|B3gL8jYEi@(- zHb;zJ63HYa^u@trK!lDQ@BU^GFta7ce>p>FMn-`(luvF#)I3};MA-T5-D1t2XzZ*b z3g)Thm_CZ;2M6}O@2~!!yCYov{ReP&@LP!0UgHqrNF(TS#lNL&!0w+*PxH@&6rNFv5l8H>S8!vV&FT{L(#B(=n zu}GlqNk?g2>0ES1g4DR=SdW!5VYi_nv44B}0zLEE+SVs=slOBPlP9laM1GL25Ne@y zpOA>YdOEAa=6xKN`Y0q{5?I!Y_BC;+ZgC5z8Uii8J&PE3h7!wCoY~Vx?9{7mu%BSV zXCXY@ouXb`?x*Os8tV#m8aP&=Gy(j$^3(8B{hs_oT#5-JOK4heEoY3^(x6jGU zv(mr#a(}MZ@$FiG?Lj1)BfW{?%?HT&B#vmIMeT#v4*a$W%O(o2z&cy$Y}Fuql~aF+ zM#GYc{K9;2^Nelz@m?9ozck$Y)_(}Y=m^eKzvSYc!cDgFTZ8*iPVo?TLH9IUpX(O( z-rY5}KH4hYod^ws8K?ylDX>!Wy~n@XV1s3`b*GKQArtKqaZ^@!4;G!tX)j#c zW|~g4SeZ!A!bytcEonF`UJbemn~1*uw)E4Wg(!c7G5Bjl?SGh0zr<3wj>vS(Eg+h(=XVU_r+Fq4EDop@+yEqF9Hc zZ7!{6K7TZccwc?VtN=GSqAi>$y(X7)c)XBVD>h&W3l49)R!j?{eB2z)4#LmX^P{m% z-payB=ye_Eo1%zqWkQaig;(y@dE>6yWVgJOWhCVLdUpL@f)etGQNszriRBvTDw-9d zgAq-X!m(3UE$nJrNWGgju z(eBNnpSSwvq54SdB8=#hSobwK!^ZT+jVf@}*;#g3a&Fmt+DhEYKuIDzy6{GEmz%a9 z3aC3|`gjkzDk=B&B_31Q6!LCe?KhACv3cUYbI!Cr>Hcln8S=~5;Xto#=7ior>lh-Vn4#W`GoXpln=!2KMl`ev$-(s`0e>TY z+qMJ$CR6q)=R+X&m8f5_yI?$j z)|fIQwV5El%+`f*i+t3m>Nw9}-c>=Aoxc5XU4N0M2c1}NBJ!C@xo3+L3SGl7e*}8M z4Y^p=<6fl7160=OTa9xfZ&Y3hd^+Iop(n6J5fKW(@d$)|`jy z45%V_&9nFo$Hcq6&$-jnVO6Htl8AgOYfv&6^O7fadZt`;>seNeNPm#n$05J>HeUdM!tIX8mHfa;Q@ayi2Z3yr+-{ie%3c^> zm3ol)w+Zi`G+XrY!c_j0P|eobNiIo6j(i{pt(w4eHRbj1T-MgYo3zxee*gk-lao(2 z)#!SLJK+qsD>O6(+Fk7t%hvTRbcu!cIVILW*vF<@lBB&!Po%%ZFn`s&bd3V3Tx`q} zxK2?Zw%r!ooneMda=FljYtCL^Gu#d_cN1SsO&yqNhqVS!MSfIvP8QdD|Pm>%Fd@T z46LpC@3LN+eqbipksNr!JNwR$a6Aa}A>UiJ#`r+-WnXB*>)Ueo^$g~2qi zynZ!cMC$iEi_Jb9c|+q--K*Mac!paDu)D!zPMw~F*Ffv>pUBVD+zs7(b_VisKe0~_ z>cs+B6QhtB}jK0P!WC0dKXUb3}$$|Kd@URRGc26 zI$&$MTPpmBNPqaJ%Tlm;riDIe)H8z@H%8V+zWKPIAJUPR$mSo;a(`J>YVW9$O~Mg! z=(#aT!`NHZ%`=byXs3Bz2a`{>!`XILOqn5M;WA@7jPA?1$kQ6{#O&_^zF#lyYbCg2 z+OwLZKZIK1JUL1-qSgm2eJAwpA*-6Z((!wlMW%xMmVfJoC4T^x)9OEyIK_*=Lhs{6 z6+b3V)&4$?kttG5CTRyJ*aY~*2+8441wMucWV_{$%S{DE4fW0CTqrbjByr6=7pnc( z;Vg&A2lu7+w{LT6@79z%&~j>TJ`Tds^TDM_y-Q#h9b=l?o{W3i86&9ajil61Oa~#I zbS0#y{C{(3Zloz_^qQ+J$!QXO=_WFR7DH8^GxxlOARGHxqw1Z@%IF~hO*JFmr_X{Y z5K06mh&HE#qtbm&cJ+cpA4^j)q=vrk$6^iruZc)8R3ehEi8iq?%L!j zUY6u^E1@4)QZTt6k$!qQDoJT1?%!3oL_%#kxqsaZEH-#%Ut~=%gzh95P6w}OKk-jqAF1am zc7NPwY#uYngPN~@xus_>g&VGDnz97!XS}d`eLhK8;0>FeHaG540w-}l2 zp9%E6TSEMk;ue#GgA2LZr!{&I2Q6R_rKA%HRQGh>56)zE>#6u|yP-vAY-+9FfURV# z&Bm;i2?-_u6vGXrZn8mF(zd9>TB!xt^iMw9?!%aLSVHVtD-AO`y{h4;Ylr)Ax~tQIHCQHALP`M%4iTrL)L46d?+3^C9eP;nd@uz@kgw_lDKD? zQ8zt*em`Q(r=EQHi`cB6{%^4lEPut=%(*fdHLOr+XqpLANUzxp1Q?E{H{Myw0UUZa z2r116bs?6?BhMNay3TNc{*`F@qjX1=xjQ{%CgCy;#nNh%drQ^yt2esg@%hg|G%D9~ zI#T%l`8xWgH}1AG?;U)Y=##|drEku;#V3HKrawHW-yBruX9s#umL{nJBdN+s;tEjPS2i0M9PBOFut0BL48 zZKr2EAl!NL{D(_&Ij>xYyPD5dSVw+$N9BoI{wl=f*(GU#Sh7`oZ2UxIZWrOgH&|px zqXbLL>cZU#A$pxy66?@YL4T9N3p(@XCYM5a&ppN21;!(33Uus^TH8FMh1J9$+C8}8 z()4fD+X?73B;8PS+A|AZ#eh6xpg%2Jkui0woIO$_1kTJMUVriy+L*o2V8q_w z>b1iEFwHYxyVr%K5ACj}k$pd@;Z~B|w26X%iGxyhkr3$plW#Y%SILT$3}P<64; zC=X?aO)B+U^i1;~;(yBDt=#@6MRJIQ65_d0wEG>CNO-~b??q)4 zc+ZWSpaX9*(o}sT+6BVJ21kurko_}&8Loz*&+Dh6e1(OP~ z+M7#-{t0|f;#N#6&$=2~-G*2_?25CTyIEV^DQl$fpeZ*sBRjhMO@9{f73aMp1}O#b zJbXehsXj*bZnP0&RU+1ZST(+{HWB3quA9+V+!o8+Hk)*lHeTdIWTzO!m|jxwj*EMI zioM#;wiP&F5Pw4I65ADTV%=ui&6GEi)YrA@PwZlUg+5+NZQ8pZFDT6=?S|kFx3f_- zb1aisbVQlKy1qZ0Gj-M+)mxo_4-=*T*)WhJo(Sd$b%@G3#-?GN|81Afh^lf|^Q3xq zz!cx+KjlejyX2`9u1{Am#`R%Hfz@tmv_kbqmVc19wIp}eN;8Yd+cx}|N*$aUws%9N zR%MqNf##DPp7RmYrTW-%S5?d5q2 zWO$JMPx$U+pF5-^dIrt|o7B*(ONtUuSvP4*jhIE>W?$XP* zjepYaHtY8m?|L$pk0$Jf8?C*qdHW`b)evRint3oBa-bRM?paj86~l52I&XntJ5_tU z%K7#n)w?`+;#0fRu3lQPvgna&m_$!~=&MCS(;AvNg#*EBXs|VcK`NOZmACm97k`=* z^)4#%9CAs=im*k4H!=vFQFh5r1vMCwal+o`tHbXGD!KztkNn!b{NvMAWCL#So1ao> z*7>)yy>fMO?jLOoZ!_ye$f%kPJ!*Uvr%}e9Y294&>&=M*Lu?hvZJXX#r~+jap&`0Z zH(spyY|n5+$q2BxfTsYSf@ZGV?!<#v@YsXGeC53e5D!ri)^MZs?G^m0{9kaEB3jFgPq7BpSpxru`}BXlqu6JBg7eY#ym)VB}aStEw5;i zg6etti6bceMAR>J{d7+>5KJ6?Az=NjJajJkJgd7jgWG?}XqJcUwBZG(kAxeJ~pnp3!K_!_Q3H<6Hi2G+WrLOktCp%?3^rKe_mK&TB(?VwS zGO}yL{9l2 z50d5HNcW1Z|9PZ2wq$WR#|2iXgegT>m+0#%ky%Rv`GY zVw!(nrlqm(n;UAD5xi?CAAb%x%B6Fjxw;mPi)!H@y!Z}%%KyF0&Q-R?4Y^il7W#QCJW@!7 zp6g-;3mL?Xc)fnApYnB7Xx9MV=f%MY$M^}hm`{{ZCXOX>m7+Fk^~Nt+%-{FNQr-#> z4{*q+4`>%WL%`~YJA=YMPOi7sX?e*^W6QA^_>wRZ6Fn zxk}NYi=E;0vVTw*mZYxxkt_V~z0-F=6_*SwXOx#TRkU1?nstvbqs<{L7 zO(TK&LUn99o=JXyTSz~HVf8Dx3rObUzQ%9T*5$`%R&heZQECR0 z@PBc+W?@gi(a;KjWuPUF4nyeHKKwHw9prjQ{i96i!dG!+2Q zBQ8knAv?uLUsrS3MC{zoxrKVuY7pF%RevhVPV~>yY^r%?!W_Wt;$RUctX)dV?^he` zP*~{Jwu*1fxO)!jD)O<0a9r3_LwgQhZuC&A0!a5soPHgp}>sUP{xh9^$yPOdF;TN+3^3j}2P zVyKvc;{BJ!H}JHU;BMt?9ivb-Wtm6Sb@wPE2Xc!9Do9|HW{8g=hAQu zbg%9*fYsJZ5{lJJMv`vx&on=1hJRVWak4Xu@zYMVX62H%QXmBOZIw9w7 z;?`c)wp#pNa{V8`?Ic}E7kt=!!=TSV-#KN#Ua;j_VC6@r>qW~C%V@%$JWF4i$)M4T z3z;detO_vdy@FQ|W+#?K=~43zLEFQ}F_?w#lrEPm4Vz4#yEQFyBsT8<L#L;PMEUj&RRP3wGJ-0k*$>E((pOpbE3$#hzjMDa`stiKzFzN{Q*O=ewHUY@1y{ z1g@2@ZK5;DD?<7_9~*ozizau@V9CFSv6EUfLDf|q9R`*4hl<)?wSu&+`JYF5b++sI z7VN%WrUg&D&#+@K(+P~!VSg(%6FifA*kt8urLJrv*qJA!=K5Z|xrtfx6S}x>xaKQW z4gf$fcM4jW#++7d=S#?gf+ zCWH0gd3r2tGl^T=t1)U`+{&opz<+c)d#=mq>G7(p?!of*UgU*Y9R8I7`Gif+%WX1& z^=G19cYs7Ji3e75{SsCG*>i~j{{bY`--o(w+mj}&0HmPZm|%9vYxGs zY{YYpCypDcqmqkWx`~n1LErx=_r2lFD|0kp9~qseo`$n~en{WcSgA5zqaBq@zSG5u zdLE(a%eQIItAEn`%0Rg=5^_t+=p&)ziw6<#kLJnGz(l#u^Qg8KC%|bB8yH-%YRdA5-cj zC{X;^^FiBAzk%t(!@+C+P6(!!F@_qWeFg=iCapPGQGcD5Rqb|jP8ianz?ra3gtrOkJ3#7IK++5vaP8}bz+}5o@G}74YK*_~oR}+7w2W{Y_-0j`z#hO-<57jap@wX{9 z8`swlx$&X`@PfJncWAzBQ3iW?Z2seh^miGC0O4S}fitprjiMMPmR=M=sb$4fL=$rHFhk5_5l4iMv57*fXPN_A=D(mmtfJL9)BjJ^K9#Zo$1wO^Nz(bqw|a=)Zm#kJ+}X8x3Wc! zU)#k7a=}-H(Gg`^j8X=DnP!G#V3DP~TI}jd9{L~Nv^MLsMV)2r36n*SHmWVIKwbX} zf%%morG*b?YNZxNFpHDPYCxGQtK@OYipw%N+zs@3qD-fMR>l~iX&+N>|9_~**;^|= zvb}DyJQ?O5MS>GbKC2cXC#un-i&FRjRH8nMih+d|U_y8kv^ROtXli!~?)U?E2)Gyz z7R(`ccDW!+b#~ve+4Jpx-0NsZFVRD^24z))x&i^GAC00UT6HUT&Vd zyixE;B~h%s$?zA&%Zl+a{Y1?UAP{vmQ|Z zC&7q_Ad;mrGr~#TpyU~ZOlSh?rnLTTX8CB4(nD*G%{H^Of2sE%)l2JJ@OUy`Zbu!B z#9hfB>v%|ozrwFn9DOBI|9Z|r_tWCO1O0JuC~`MUQ)kKkiGPQAC>Bk43fruFPbP9b z2kUuFFlwv8F=p@spzbE^c=jacnntWOXPF1Suu@+hI{s|wEz(xpz)jT~1A(1~S35!@ zL<!W5R1V@sR{?brC?DeyM~v}_#Jrg* z@tF&3tf1eeq|Z{G)`ULq)w)*e!S=RYXz|R+-1eay&H^6oFQKwUk$=B{C~wo5svPZ+i2-1#T$1tOn_y zn#2k%&&zSWrS-or0WxSFYkFqIJtT@8G50^aP~$s69b{qEhb@dTCXZkAAu>pJq_q=w zg!i{34&>DjPK*d-?dxJW3u zCR7tr_;i{q-DRBSW7#*_Vdw0xEpskLNJ8@UA3?z&v<$_;I{@GY;|@1zzNBq_+1w%3 zY~9ddkA)}`=3*CX^xIG9X|EU01a)bb7Q~E!BhEbqvNkS%Zy||@mNAqOzg#Sp-h~79 zXMb{w$d>!-k5d`8vxabT#0V1IM=)DdY&I*Zo31Z5)Tl0!LUC_#C9P>EB6+UA+H*eB ztp%N~V1sTpUKy(e&^%wwJ=EQ2*ps~d8%_Qp{qK8Emyhk{CTZ=yNmv#b^^)YB3hB8X2E^d-Glq-=3Js}d^14@oPG!CwPj0$ zB$(Km`T8%)p}+D;`6ktK<_PzppD`Qg!hAXRW^N$`;l;JFa74Z;Oj{Z#wGfLpyni$Y z0_F_!>%FYSUGAxnh>Jq6KY$;RKCBPlT>&W4&Q1C!1=V40%=^D%S$*--Y^UjWhU9iB z;rsar;e~MzfKL3lEI1%rCeXzCV(jqV1L(EVn3UH=I4ISPT?P|K9tUmZg(6uRl$^06 z%YsLkT3rXF4-}OMcJXhrG@r<*_OE#Nuu!nw4)WaIE-F8SEN&K0exc1`d-26`9O5;pzCP_zT>M5q# zI6ib5Ov9eITjbWOA&eA9vO-0lV3%pjYVy7(1y1SLP^G>FtPJncZQYVJ7=L);GRZ4Z z?K}mcA^1hNqU1qLmS24m1<355NuEfaw!D?e<>8|H+D)c#6nSm!#m5HL>x@Px#CG5Xwnt^CZJN)0ca}7qtuA?VC(+ zBPt_8XRe@ZnM!QrOAw5uIOU#{e>X}D&uS=iJOv5msui{q`C6UoN$O$^_yZ(Ah>wCE z@P8*T`1|QK+1=I8kh7%8Us|@^fd(ls(=PQi!%tG<^<|LKxTjKu8GrT5CU-EM-EPd> zpVAAf%Mf|Wd8b@u-bRUEE$sWKd)lx4(BI5h^w+G|6aqES%vtwiPWv;NHB@WcGT^nX z--zO$bmkC|Sy;b`EWZTSdh9rm?LJHrl#@(<4*^NpF?nHA^xM`14okA>OPCjoF-D)BDUdi=d~ zJNC*kN#58uzZlIhtiY6H-ZX~fV_A9Ebkr6W-@^ZCIgN{9_xZiyI zD>_PW3$rV4d4CH}d|j_!ylIf-2f}^T&!kG5eIeBtV9{qEF$TLcV*X-~)OQ(o;>OZM zg_&Ed>+Zt!)_=i%9vbDTn$ald*QFD(oWR8|MPFP>cY}Ld^xTVzcZGR?#9EaV`vj5U ztM+N&zB1QyNv-hU1}zVubp=kK_OC&-*tymsLAVmgl;qiJJD5eWF2{E7)yXnOrE(J??p$ zt(&MblYgvgm;KF$9TUL3Aj1q!mvAkhx)-4aNPDlYT0tOd)y+@eW0m$YR_}HX|G3pZ zxPLePz~D8DlCXMAq|*4!yd?h0aj`I`sTsa;7POP;|oUSj7CO`z6Q%kz}0{#6$lzcW|QXyJ%1o6k7C2`NX7=dZgxt^0Uvs8wz&x# zE2%lAUL=f*2C8Wtdej^IE|TM0twn%Z3@Lg4EkV+g&1`M?eL;6cRTlr&(vyV57NhSvamm7DgoC_e9>na z2;w@vIoLK$mnHfI7S!f;*0wiv@ciS2e+z1;BJ9-*tu0$2Q~E4E^}SW4+fmiX@7jK6}tjB?1z*#a#w_x;1A9q#8!8Tt9x^| zy0;GSibRR~C$T&9eE`7S=ljfO^3wAM&zEm(s7hT+FsA=~tlpBS01tZYFxQ?TMp=2e z0xB6c zWK8|*l%!UQw&UpAWrl23Rd9Cy>3}2x( z50ctoN$7J)*3v3cncPfo;CT1@zKW0>nTt%kPh+T$LGqGCMwUE@qrGIcmNEAG0oTsHPJc^YR0gD7Zn5Lg$}x4W^Ra%d@)$~JzvaY0fx+tM*F*eZ zK}}ytQqkE=4GH5t$&}R7*Dm~EdDux zZR&JR4GgKHe8uc#2J?ET%U&n(3ak^c7h7b8mO%r{3+{yeb=TK+or1ZipPX0C2EP~o zM3;4~*gL^~(!Z@`Y@m9l>BlY6zXk$xA*2XMlE$M}_1H;*Q;Sf~!;u2)e)3w35(JI3 z;N@}CB-9`S#gH%3=6}LM59mi%hPrQ#)Q{lKxVEY~-Ro*3#>(ADR2y@ji|AvNdTNRb z^yK>t$~Y2>3Nc?i(0|Y8amIo|o$`le1DsVaIQC%i?V6MGKf{z}tjUD#Dl+w`J2vKiYV)P!6ASd!0nN6(vamt4UYk`(1*&Ie)uM<&mP3@7fcjb8bhL z^z1M;bb}BH$|W5?(+R~uTKcBHb0!BB>ZH7{BTyVbNVU!M`|hy?8ud2yJtw0twb*dV z4O9Xzv?Iv~I-|~e%YE29@h4sJwLgi^WeRX@4S~!4UXn%de(LeWdt}X6#?J@4d9kZuXGGld%1u1DHOD;=<5HD$ZQ# zlW(yW*h}c8gC@b$Wl2bGPHz{2R_rhXOj!JvoDp?o+>#NCB3p}Xo!0DJ%;LkQ1)4CFk;2|l%p3Qfh@CjA}1b?D=Ur2ZOHl7T@%!5}YXY5N{ zOsEQ_VU)mvq=qja}u(y&%guChtf|% zzKHGjo_}xM2R4Z;Ok=njJ6Lv1yvGrO!(|06vzrg*m>cdl+3Yqt%<#@x+;1-jd+`Qk zzt7y5qm)cV<2y@#hjsM(MF|#+q?pB27u2y+Zf%>|O#DL6w=@nbq|0DSz=SNBQM3ai zs&glM&+Apa%{21+;YYuAwXI6)vl|>B6sl%-c7L-LBI4-R?m?a)nveehP=2}ql;MPZ zwk5+eQ>Fu4YnMgbq4ilUvbDpI{MW+lTPtJQP7V_+f=WqB`_(4zzc>EH@T`5K zGk>+Z&VzJPa2D>Kd{Kh^R7hJ3QM`IbQ`I5+7Bv{Gif$3ptwSyU;zUJ7LTZrgHu+)OGn= zQa?8=mT$~_^%fk_8L`QW$a=6@f+H~JkJ5x`YI5NAu(5#MijN9wjCfb`(| z?+x?*XA&-RCg|J~Wa+!gSOAaHuIa^zoX2TZ_wVA3$9y9PA1DA%0zV`<%NU|Qp6l>nT9`8BZp+kgEjbUIGrsKK*_jx$~Ox0{}^TQ8-S0uXE)sPKcO z=l@nJ)2-IvEW?d|9iQ7`oBEYm?7u(xAMQ_SOAkQ{POw||*}nbLtT z0$$7FwdzeL`C!EgHnGLtP~m5bdmw9M;L^6oT;fv(l~+eXRk-N+15!8jz(^r4FTNV} z67UV<*2}eBEzWs>C5Oc9rbL6UieVG{Co|%gtBPJj$N02FqJZJ1&XJA~I#hDMM#vw4 zZHF5Y6~4>zuAT#v$MS_v|9@JZOS@o+&07VN?}!sU{Sln`-V}tEE`(joPX#rwaaXgG zuNi}=oT??OdBVhhrUM;;ynAFI#mCk%`;LR6r44GK5~B{>tCEo#^MlsCv(k>|Akh8$ z__sDpBR@ux)JI!mxViDADDbIKR)1kmJK_D%n@jh>Cl`UU$@HCTw122G)iX^2ZKRSw zEFm1KC(556*-UN{APEu^edT>2G0U|dV$}4Z!&I|VTbIW5hQ8@iRes(-W4;va(*|5`<19hpC>sT+y z$u^Q3g=f6(vBHtY2P%PA6m|a zo^ee8JkI`;a+f(|Uh4O3o&D)bTd*kG)yYduxZ0#hOXPr`TH`yxWTrY)um zO6?#@ZYWhERZ^4uET39pfu+Fz^Jm1Ib8>{I#`i7ln)3Mik$>F5F-qqE=~+X+k{}aN zDi{KE7iWK5CY{<6`g6uRL8V|rdo6Y`sx2j9!!)^nJ?R?v2geK%db|zqCqITV5piNF zcq*cX;z$1L7%JI&^A-KZaVCyp#+B(xG>fX1x1ga9Eenu^Cbk8`Jg@%8#PUmcSPoyk z+Q-Hlf}m)6+lJpkF{ zT4f+O!7jX}UmRv@kt?owWFSm${E6CrT@;OLkG`($y~-9$qeC zF~2f6k!5=i&wVZ_b*ujvsxT%1I(Uxz1NaBh`m+OY^U87Z1%A5ZVBo7FbRGZbu&Cl)$s5+7+U2t*hv2cn^7Ed`_i2~l zcH>F3W6%jp&1wI3%v84F^*?}fg&e0Ln#=d5KY)|Ut#>jufNL459R@{9>n&nYE&c_3 zZPoBhRg+EpRfhox^svxMx56}318#)LUr)+->wm3k3Y771>nkeCN57)o@Gi-g^sinr zQiGGWB`DF&2M*b7sFZorP5sHNs}Q~-b>zfI>Z?(UAE+1PhOVahs69~3se90ZP&c9- zdq5D(d~Nr9EKs5s)L`f<=|o8;gA0RXeM)wo=C$zF(IkiX8R$O$3#};CPGHZOmvFb) zgMUtvZRaED!{#n;2b)-9?~>gec_-%#XB^JWR)`C&(z3#+MAeCkN69QFZB31!$8Pgq z3CIayK9XFrAlPnC+BIMOZxaXp|GutehjrdKOfYUPood;yw!32bLuS#n=tyD#G@haq zgcs43aQN>}{-5Q1C@7kFq6IVvnJwRZUw_);%2IQlRv1f^M)=)BN(_#S-$Nhw6PD0- zhf{m%$m7ONjQpTaXR*tuEQc9C3M;_cx22q+5@8u1%Me-L7S*(-Um>X8Qt!arH9Fut zISR!bTPgVO89(q*5LI^tcui2>;bS$VTJq-R!GYuZXP3%;BE)c$KJ`94MXgd0i+^`k zlcbF5n&(V)72IL3s=LoMkj4({j-(av8e5E(D#*R5Wr!L{M88;JU41#&!*aB;VxK*q z020=6((spw(UKoudhXjPQWDapH6)=yHH^w%9n^74Q;;_r)hV2)b#Ba|Nq^6f8qFKK znr1HYVL_tUd!zb!k8^FIh&8UJXn%DU!4k2|G;E7`Wh-y^t0Ah-S`(Y@XNVbj=UKl1 z53Skt|9mPO<7Hd(%S^S@O+d(W#c!Cwf4OX&Elu#WW&@t+{kUg3Nji`=-Mgn;xiE|O z#f0uNYCaD(#XfB*c(dHnIyA#*nrOnsl(vNfLG2n$-%6W$bHM8LfTo{a*nb@b4vR-x z0zc=d1pQ!1z;aznS}#2lCrHoaseF(irkTGCvBj#Xp=`iaa#mzMyzjehumLJ>nq4Y- z-S2_AXHj0wHJ5XobW4(N;9j@I-tA5{vpJ^EMU{dj;mV$Z(rJ#<5y~<)hjxw&B>Slf z(=fJGSV@G2T3u@lh~MaJO@DV?Bp(-DvJ_g_h98;WXSUUp??wDf&b1ab(^Vxk=mQYakWTRq+d zJwi6TNe-WhDDP8|E!KIJNWuPMjdN#dd4iy}tX8l=;Oj(>TC9+&Y5LdLqV&d=s=dne zvQ-MEu!(5>=KqJi_kWCPa*ftSqbwVWE`arZcTkFoEMJ;(U|WV}D-H|IN_ z`Mmk&JE!9UC4IQev}Ds|QplPrm~>?T0AR9Mh!d?PU-6%=B7d<~BdT>xSsh+3oc>*v z9^)|}i7suV2)vniIPX&AhGrcVa>Ie4+CvGeDMFeS9y-?z0vY7HWkS#yuBANzWu&mS z-YUICk$NFz9LYWnwSYQ1R@PZA8`Z0~Q3CMNn1uYVqVZFeVhXHBsA)PfMc=upj&>;L=bdBp|%UZPj@iZtODK+)}PprPPk z?bXniWk|9oBI1sX#~(uruD4ivo=(-ME<2i?*_(gr z`%M8E-jk(OgJNO94u0e{Lt%!OXLk&17bAWF&a8juneqL{JQ9F&CL2-kh^oDde}6q` z=|Jfw`+t4eAFJR=_-UF%bS~W!{SiUlkW5i8DG;@LCe^17$x;xx2P>gOt~}0r#ddPw zuJlzLh2~MQ`K`QgblikHi94g5Q=(xm$E-%ZYa2bF(lF+-^32c0EL2 zVB`WtZhKBT%1%W=<>%^hq3*~!NOq`beFUpOeHzaEHthZXFSF0ZSLpN?j+{G}W;BCy zK?d+Oi@blJYa@p9#ET}g=CQ-%+bNbIUh6X9ybdEl(IEZoxq^FS7F1m`VaNEpWZsB3f2a=KjanvkpZb0;4x zz7`9;Hqq8>y8&WyTMZ0!a!nbZ0Op^B9op7G)JuPLl{*TQdWm|HGS!uWVzpbxIj=%Z zBRz`6?Pchx1JweU?8i3jVL3Oo7)bYQtKqV|Py^w$aDKAGPVDNUm1#rbi}JteX>tRU zn45CDqGuvCIAowc2JAe!kIiNE`Af{#8oCvDpIGTfM)T*2QPOns@-0^z!mX`<+bkwn zZ)1O!XLE*~KGNVN>tbjy>j%!m#>SDLCb>1&j29D`gyA0J7Ij=Pqvv5&&|`~f$*td;mG__<(N(j-E%tt@){(t; zCq9+R6+kUAHbcou!LSCQZ@=yQ8O5hTkSc$Mlo9?!a9p*hQ>gzwwFzOJ}U^@qGCQ5;O%p^Fri7<#C2L(i`kowdBfd7c`bb|L zd+72Csq56#7HVl1Q6Y}ApqVCYMMqK}}qrW@MhUWY*q3N&S zR$oM(UH6lZ#iFulle!}SzE^cEFLQWg}Ym2O%NN}5j8kS@{)^>^a>@p+)(@RhGGccz_aav&jA!FX2N}@ z>|?XUPp)=Lmb-P+GTCabA<1qURU0*y;m>_(NX)2^7DqK4?=DBh^bR)ne2ss4i$I5L zzH!+31xTnfeLMDEu%oswsei*^k*VD>+JQ*eZ*%zmOb)iN|wzS+m)3VTBoS$SgbtA_!8~WqeSXe;F zS}LqG{Auq)4{EW=6Cs%3>xO?b%{wj|*I$b67*5E1VkjE_H+_2m{MoWN-F`eR(pXPW zQc|F-&8iOV_iCQBqdabxjI86oKNXYd8yI5(3P5b)_nN!P$}4&5g&>8R&+7$oIOOAn zkUu)nkI_~0*%l3&zX0raD<^%~xd{c)P?@kR$fRDsW8lDq7C&u|7m$DPHe#T-_k)Tk#%$3lo{e=E9<}2`-l)8|+4-Zj`E%USvq<(j5M%ZWO?!!kp5yS=_-FW27Oy{G-b$h|MT|3-X>J&jLAt*Ssg z+@%lVI=Z|j6ss4%ClXdEpi)+X9f0G>FG2l@YE7iZ zTM*90K)>zN%g|Ralj?@lbK6|KV3lu2I+Jwm6St6kSb^xZ%JV)6+2UDz*0br@3R~_g zvwr_RdtrV6jBXK+#%2}ncf8;#iU!j++e2`euJyk!VK@b*m{0vdw*+-v%(iS zgMP0XEB-kxs$73~7s5VRlYYGGK)sWd-giCpcM@Sp+DIo-^#{aCDYTQdy4Pz;87f~v ztY;*A&fj7HAJD()zk+jxA$Bhvi9)M{Zrb#nTBVOnzW@ipDr4FFzYnW{zW_USlK}57z@^9u*a{Pkx-UB# z$V}!E_$+?|5(#eIKEBpdhXIYRYoXq|)VCU!;)%2PanBTWh2i)WksmceB4Fs_`Jn~G z{A{%n>5wCM6s;GSyaJnJ2C=U_sJ48&V%oQJc{kl3s3^q5$6^utC=#gA)T$Af--YAR z7va=%N8@DYx)jx zy9G8rQ|VSc*yDM{oG?>KOU>6KM`guN67SjpL$5>uP4t&1C1#czjMgrugN+|&>KV>p zzv)vLp_t|C#WS%M5y2@f!7#G zqT6J7d!!$L6HOD|-j~cS+y2r6$~L#e?r?umui4*jmJJOoBOfd}|A=@v&TbhUh-`Y9 z?XWM1RrfgbM_~G2rnnJDlVx>MTpF8?_?Vs^Xk2FRJ}_$W3eh-qus+2gzX3u22h<24 z|0C$>OK0im<^Gc2lv?H)>i|QUEaOWrH-TUaZ`svqRtASx|JTxwH#+bqIWOY2d(nSq ze^Bm1ysu-Y^m7m!jK2WJGJ~!AukLsKv+PZrth>OP`+}scLGRd3X?l5bT}R1R*Tb(L z4U9P_d{gy=F{`RheDsmTdNl}SvU#r;A_z~%!{8G6Lxr&GA>1i5j(l>#6%I%hjpfFC zn0=ojA7&r4dE)B#Ae=`VTsH1zb^(9l(N{kRt4lZ4Z`KQ=Sp~@ohcg%4m;MR>sMa_Q z3u@cm*W^tG8TV^Ovq|cPsHfe)10~w7)g;U949ejIg!F~6!Zlc-uUEy(h#&Zg|rzL_c9=F+jHWJ_kPlZn2lYWKFke#Dum?vkW-^KNTw*pOkv zkV-nG$>q{V0N}>l@wINmk6{ZJbu^P)+o}qc2eD_R0ryEs_l#1Dkqd?X4i1=U^3qdb ztp()fsQDgr_U@#$&30uUgCKtixRUh?5R1O{cH#wB&F+4Kz^T=HUy#gALA#ue>H&Sx zpB_G&h{w;b*fWN@uk(9)Maz;s&Yt|hrxX|RslCtd?-dVxYw5X4$TSA~@$}{sAKdDm zfqsPwg-psAGvY;te12T4e|^NKo~&Zx^vF&-L&i1CRxSKy%Ke@cVcma72PLPW3Gh^i z+6E}%$xU$aKh+tgwdbAu|C&=An6jn2?w2fFQjAsb)r%Og^tE2Bv8+7KEP-VimMXtp ziPR2HMR?MqN4v@tMw^HDhrokcFq5mRFI0PX;#90*F$zSDab9TadYvCnWR)jlrKI8n z`VUREURkBsnGwBe&S`&lwE@0q*NCuZk5L_?gyrL5n;>~CI_5MtX!B^n^UdC5=DBK> z|07axXI=+9TmTe;v87{mpbra*g^M%^r zBZhOH>m=*m;krg?gYI2v3VfX|#$L+&nW?_F1*vnro>+38%ME{Aae}*7OB>NpXDkpB zev%Z5)qz1xiiNR|f@0|(zn>+TaB@-MtCybuArbEd43jyp-5wU~&$yQw|Ggd2ErIPx zn6ZfCl=6iTbK;MC^ZtAb!9hyEkYxPhI>UsNcwb0q{>^!^!Y1kVT0Tz-s{7|}^6Y8e zV|$2h{+y_TDJ6fqPuwSJ0oinQS7lB_1N4Oi15epspg!U$qF+b19 z{?2Ltm1h3~(ky_0Wr_2ti$DP5{l@ZM+%1yl5B2Z*+ z?x~3M%*=NyjCNk25bULX`tcy1tFQY6$59ls3d(nlhozxuR=h;gs^&K7KSI0UHKRGAiYWASD+_AT*L6~bz-eSGM#Ho(2i;Ns6~ZJ(hIkf%3y10 z-$+Arl*4~v8HgoUi|2Z!x06d;a5*pA5SO1MVU2{KPHa`%)B}f|t66)W35{*pp>ekH zX4hBTW_^X?1w(Y-*C+dTN7htxhdjZL&!^-WYoYdZ5{kNYlfmzMm8p#&J)>oSK)c;kOsLq)~IYyx`ko=k95ycHA}ozB0p_yHjmL&FlGT>O973z^7_*HS?;i zEk!z@rldXDe>BEyY{nZls$Lk$W^$QT!Z17SUpo?J*w+q-{YOg)xaobbj z|9gK{hFg)fCSdM3ylSh_c9gl>ju>z{Y_gKMVMO@LxtvpXP-Vm2D;l-}HBtVTNv)i( zd#x{cC}y#p@QwDw7;k_t)@20OJ%1N;G$E%|S!iDh=eN$@@}by8GgN=JVhti-CioQUYTi25yHYR7y{D_0e{_L}xi zR|6Hrl#V@=D-$Qh%#Op6RqQs*CPkCw*2!jI;}74&!WtUWp^?w$rtBQvK`?ak^&LqrTa!%qU1kY`jya?+MRO)}zAkUwJ zQ*7qL6IKY#t*(hiqs#s*)VRN=-IITjZ4hPgb@7y`sIi7xtE4MoGy53!KjgdwrKg{4 z^l(h)U0T#`1hV;+WQ~=IZ0gG z1Xaw@%3kDI;&(WWnZFIb>+AANGuui_WP8H>d@uP#2!aH^E={|0(O*AR*+PHb{f1n1 zQkQX0LeaL0iVK`J8ecPXHKdHb#i3i$t04p~FZXda$a>tJdi~81tWXQTyap`xsVQ&% z1xWg)uz0<#Aow(FR&{^Xx8KccV<=r0`SYYeFtR)^=>vxofIAs|7(|$(uPqRC91U8_GD zNpW;9zD6LjVeFhwBL#Iw!4GjmAGfH+(Ps1~EKoD75bX8HIN)|hfK$Ikx0O-qkJGW} zlb@p#Cl5_e8gB1RX~YJ?c)ptvu}JS>XC^Na#ywAwwulMWaqDXWP+o3F z4rd!59bD60)IWtnfb-HMi+R@h<39A5Xq?+`=y+2BiZ+SNP=qUsz#S7GfJ!z<*6aQy z@u#G&3e|?tZ>)p|32{Fr(BX-h+amAf5luzuz8HEi=L%EF z4|kGo49Kirr?u{hS$B4eLTFhob;l3x(b$nZkJ7$paKsJ7!WW)B8 zTz`D#g$Rv9NS@BDy&I!q0=<{%x$V1Fky-Ne%sqbFZflWp*_)&=uzDy8%mDPWjgUuI=*5&}Dsvr#EPYjmeGG{--sM z@Pi-gMt5`($c7P%>pTg8bJP19c2gXP1+J9Upd5dfsZ#dqlmbvT_s8;D>n4}%nxe-^ z6#!e*QogjKfRCnK{=T)?&WM@gW-fet)sBW{lV5Z4U1@4QX39a?`UPHBWB6Q8P4%mn zBAArlsDjubwfIHByby-c+v@W-3dr_+WH-IwEj0qz84 zo&^ACX98&N&FR1Qxu;e-f)&>ZA)TRi#07u%~aB;Tq^}b)#hY9!FKP?ld3RilAM3jFI zG2;#Ddn!Iv63FwXsKP|Un?^1x!3w!LaGd&P10 z24}?$-=lR?eeXUSaZ8iV?^O^gC`NF69>k0c=DYpJSFIGb~HXgWr4;kzn@u`~{aoc4==h*soTY>y6 zt{)6m&He%et!=D=jUSKZtRJD(UYfi-IG$VF`SM50Z0c?fGr3f*P?=?7@0x!@FOppP zLfO`&1yVintP({~-z^^O&Ui4ItNBDpE7N0iZx@z?qtxE0`t1omS?O(o?c(t?47@^; zSM=BpG*E@yvrD#W+TWI$Uek+vP~Y1$4N}QP(!QYLg98@j$AWJ6Rkc}7;&U%!Ssr(B z2W|Up&&@PXwfhZ(&6fA+m;Zkq_;R5Py5SWtch++__|Ce5ws?Fg&2=@LD{EzZN=-uc zP*1i|jH}(f^6Ne4|6XGYP!jYi@xcs+Mf>)Q$qBX*3CRL=@&otc<|}C6qkZg6_r2pc zm%$AslqAEVkGBP4|Jbw!_8)(>X7^B#UVxaUnK{TU6-|(S^HB{;-5q~gTcXe$$#i5= z1Jo4gJhuLnDY0|Q(uRq^*BxQ!%Wc|6D^r=w=c=Zy`gTtFM&_6EU8qtrFZSu-%j(Hf zD8VY6ep1=|Gk@#44Umu{1k(GIC2$SgT}B0w9h|{Wpc3*cbW2*Fk?9p*-P zXXJQlvTZ07%%cT*G+9p6P;k2a=ZY1|D&0QD#3s4vgK7_gOb>tTGJ~* zEc8ns`wUMD2+e_q)BY^dgd?#cFe9Dv0;ZI2`|Y&my>cNRw(9v<)=pG#zSrt&y5WO? zO+BRjtY4<)BATcd88L;J^jvF68RxT$=ry}il3&G#700jF{{lqBT^(lE|E>7VqJ^S` zD{s*OTQ(Bo)$V_69d4raL+B1E-dn4wEA?}M=PkudV?ywFZ;z$hWfw_!%d$bJkYk&g zN07QINSTeh#=iT#gxdCe^Uq?>Y+t=%h!uSMepj%I&*C(CREV67?tp?JB~T$K9%=o- zLh^g?>}Z?47g1=M8MSOJ-gycQPMD;W7CS}ftc3}DOPzltfuQw--s;WTxq*EnZyQ&a z!X%stu0Y|^zso&*cLw}2xs$e!W_g9WKnmaMi=Q&i$T(>eXTm3Z=Vtp#`a?8qq*!9C`gAF$` zm}8m|o-hUp^9I%Z`N+8hM{_14y(qUwWA$(00+@H1(~E_`I2M!tkP!I4h5O`;ZyK2K z3&2BS30M#$lBeG1lDOVC`SoQJwQzYWP2YWW6D7?3U^3}Al8yM=thLn-MHN%a(aVaV7J1m#-r8h|%l%zg z_8DnrUsCe|GO6DrCw}%_1y;ZW7az56bnkzC*`1pk$$Agnbz+En7bX`PReFP4bX_rp z+8aJhC7-P*9j>o(u3W{9&Zxu|>jwrV4@qC1nj?02l;4Fvp!!FXua)0#sUInA?f08I zb`Xz)-!F{J_hNbdjhGp=k1COMeL$`B{TN2cMF|$c#d5<91f?n3cILDzLoTsxosX zU<5vEW=U2WD5ucvm^)VApE@iBHBZjv-M@U33l~o{Ss5@Uk#B{iYX}o>B?*8(cpq

TKjs<#wmhQR61Y<`hahVjSt^{8lG9)+WD+cOw!}aoa=N zc_o%VnU-rgo9nYl4-kelf5a6(o!99ekU_ceZ(KWm>=wvCxV8dlRCG_KX|aDJTVPqo zr*R@=K{;B;aAy?~MoYPJBp_^TFa#1HLS~(Ayw3M)o|?5D==9@#H|S2Cwzrj767Efy z-Tsr-{iGgZRkg^d<_S!pF%6|d(+Ep_U2mjAg^H*iwNUA+o*wX->gv2fB>6CdT+;9E z5l=@qh{X-#hx4pTwqfcdYMXydBMj*rEMyodFi!ddGYLyJwUtO0z`gx25prKun1*eN ztR@t8bKhKr)M9W+Nk57hbJrL3+&==Aons z^QLLvHH)tZVcW4Vmo#5L%iuxtJc|HRa>KXE+iGA0tBK%vXG7sc9p zyY)}wrlra3j|%G=LZ>)Grd5?RA2;UvTB6FJsPggsADbu{pl|Vz8Fl^{Im0uy-pHs- z-)!V*Y41jpz+yo+dV=}B!t6%#akS6kl#h?cShi13v75roC{zfHN5aPNk1;I|rbYXR zeKzkYUF^}Qp6Sk08;^gQIWC%{OPRWxMsc`a%4z_~mauv<|*Xma+Av^QNBu62sNLs?@6EErKNhZr|?taSgt^;(RfY9`{uX>eD}FHb4)c0SMrgkI;GA{I+m!*DuW9USNui_$6gMp0?>=Sd$Jxsm z16u)RQdY$Rbrx5v>opB_skm1-i>iY?0M|}_(66O`XsjDSjomJ9&AP7U^JA7dPe%>H z-#8h}_+&%_(&GCniCBFc{DGKm%o%s0xyw8%s>$J!JA))jClshbZogR(NBf_6C zc6)kx9r99oG?0eN>%f{`FmhBV*^Q)?c>Rg94M`*KgL9b8eCYgGma?FMR;#syBFGNv zVnQ>>YOPEg+_ed|_H>hUuI@3Z9~+w8KbU{4$qQ_72A`Wjg*;U;-$P5Mu)L-6EV>L& ztk&CR(__Z#u~7UyYpmtHAu9CNk9ygubRVn;*tAK_RXUDCZnA)`OGU;}b&XY$gzB{^ z_2m~o7eKE`XSNR2#v2=IC>Vdal;3_*+F19Z$gaiqJ3A-aiH49zfz2*RAf*d2 zs*-jEePf=oGW#{Yw+jpNYG_I~&J%x54**PZ>oT^z;8MK3ekIaQ&Qz8C7eJ=c)|AUs z-ZAbMU>%6@kN+E4V4uu>vYVMDkUac$gwiYs-uI2yN>a7RzpjR`(&Y+?g0 zixDZJf8_Y~pKXQzyw?fWu;(MqZ<)hoye; zO}eFtLb}X+EAk6oJPY#Y2_dP*=&z?|kRW63+(7~QYNPR}Kj>}8@(!N1eKLgE!wdw6 zeXY^Tj2NMYmaU2;O*#>uHz1q*b+OE8x>#ZCTZP4DR0!gj*Di6J*KL2BkA7T+9pyhi zZf0e6J=*XkSk{elwQX&+cE4x$2`51zw@>b`TzM|7S3nlsLwaqs(ai1jvn=%*{Wh&kj zFVJ}$SY@q0YAo-R-%eOgN@~G8V`ty6h?PWvA?YA!GitBaBN)mN_7PhEjEqK@4|v6l zSBr|>t3uRaj9lIXcWwu{EHUoKO|KH=ek8j!Sd_Dk&C%9PCx(BrbYqlyqfza`$@)m} z>-|@N^KZHLc4#{fhLlF;dDAJhH>}m)ILUsi+#)w>!CwOgHUy{R%q6a1j_tM9QW*#C)ER{fMfXi#FxA3o((&bYZryDNe*Hb533W5oeo2>wCBvO*~s>o-dj%HdvzQ zLC9M(oy{fXweH9}wJ@2By;&D}jBf4iq0*>=RDNwd%T#~V#OfX~6^F~=m`XCgDW7~8 zcldf?pw~-aVNlpnTH4uDqh9530#m|=p*2hTxP5l&zH4!NbMj|l3|XILI7`91=<)Gw z_q2^v!X*%QqhAI+x4fGAJmQ4}(@55WsobiDRyePM_-f~FNX1cu{%~ZzPmGE0aMIFn z(hnA{_PBqjODPJSE6A$thMVmqf!CwX4vX(6P`-Es@mUR4W>QcsC00GU+&$uL|E(6| zkbb5mLpC7D;F{&(P{_5;(xnBtEbJn!3a5EN$1 zx~i=02=lkHqkKgROSJNuj~Uf)OohJ#@b)i&GYWs@UhslD#c8dN#yu9W|0l6*@%=mr zI-rajbd5^KGGRUM3rWA1u@A+jR;J}AAi6xRRncPcm!F#OXSCdE?_8I4eegP=}JKd7PVpv`v$;idA=*WggUg{Q>Ff zRd2LA`kM#5k9EbN(Z|rKOjG9_cFfRW%zWe?!muJ#UI^A8r;bFmNNt)IMSK*~Bw9PY zt*=q@2s68Tt#VPMd#$5w>O6{PE4S*hTxV~mgq0ntddf}as*FCfl3vO)yS=OR>`s3z zt#$DG!Wvb9AHkSm+$5Bq9fcLXAo>f?h*)Sk@@xxvTl?UI`TSD0zGXJuvh|x_*)-SU z-8YG=jX44n6k5l^lDf+Ffiae^-_zeg{g5Tq8wlDi0XKI2l zeGb4@hH?$GiEe3K_)XZZzVlPDf98owSEprgiH^`!=iTU^iX@Q(K8{?n*`0rFAkSy* zBr*|^s#(z^;p*$PM|&f2*ODXBpCB=l8eChoY;1y;{*6rGs)HLG=<<-vis@XS&M&|p zuPWHvegPKHebxc%*B{R)rH->H^>n;iakb;`w1d46mHg9_l{%j!?}|CD@(2Xt4^3ej|JU?a7s!DeXA%7*$a^Xw+X8NQAP zI~fXgx+<_Y63=RSuVT#tSyB!qJS8%-GSBC97}ki5l;2*wCKaaoYBmX8`OLL{3_Oo+ zA3t?AUH4sO{OlPWVOwns^Un8rV2={wO~(qCtN+38S}r#z*^d|2YfOJkhnMwR2wS;y z*0zvGwk*Jzx=C(Q!N!-E)PyvQ)Q4*hgPWY8X1MyW%Z94*)adGzIWIV-tGO{sW_L*` zj;_<7Fv;Pj%;h<&*OSN=^=Q~=xCF1r0uJthymD2k*vZ=Y>uc2vn2b&)Z2zGFdH69< z#i!(jI;Q7o7^b~ujmv);b~L=B{iBF^=8irRn%hpY-h2=pHqFX9LxgMc4_L`ML$h`J z)Lwf0=-SECt-a^s{FW|(dLB%okN6;@A=xQ>Bc8FdsKS~!6xt_Gm~C(5IMHR71I6> ziCMVS_>FSZ==*<)Xmis#OK2A0!NT|cN6{>6U23TM zp2|MKwK#Jj9&MMT%_Yu=BB(c3G5M=18^?m(0@o|;s58m_vZodFTYDXZNutBc#PKx4 z=-E*rvS;-CLYql3m4d_CnKj^@t!wZBZ=1KwW&##4#dUvhyb`9fBHQ4*2^?rxe=I{Q z@l7)S=>Z&F3Esa^TlDxh;Jbcm=6FT!W2;On#BfP8x zB~WeKp8QxXN_B|xd~H}}abj%wrr*(8e4W?jof&ur46j^EJL`+)dbTDn3aKd#EC@o2 z9oKarK*@OS@Ozo>>%FnYd>@`n1uu*&*i<>-zQ^wbzL!~~?A|Hyzuw-koN5AtEITF9 ze7t{BeMr}S1~kESP26hpkS4p}fQz6?^c$~1jzDt7@1T>x3d4=FT^`)qqj?~D5Z*BE z97dAQb2oMVOMKg5;xAer2Qrwvq(=4lFBGU#;8nP&!$9$h7LWMEM7yhP34f8~ER%t?ShhCI; z+U{Ts7R(BuGy# z!dke;W%dxowL?%_lOJWWOS(yFNjSiOnOLY;hTiA+wW60>F5h1~F*e^^wA$;alHA?8 zsl`0E;DZ`+6@E7g)tX}0043?Wq??v#Ylw+8=E<+M>gv&no=ZB_yQLTE(iDHq;PmgS z*BH69(boj6wh_tTrth0MK3@fj++P5T(Ykp?bR1Ob^3eI-J2%YI4UEY=i_x3YDEkBu zx8D?6#8ipHEHcUiuS1l$lo9tlWROocx!{_XN`p`x`(=|Qo{V=GNB-9GGK#kMWdPv1 zakI;`v#eZmHQarNFmn;TEkA#$Fc!!A++1*hM$)LhF?RF|V7hS<^$Xxn>WgF{MTeyK z704oMi6C_s%k8Ue{ln7DSHY!`BRr_E-)026aHb73JFmF~Y)eW{9~*dwt@vZsh<~&h zi+9UdxtHhagw#=3Z8adhQZCc1)6Dj7rH0Gc*=;a0PP07>E_F?FfeU}iJv5$b@ph?z zUCIUY6JCM?jj(eEMk~8%rO$2q-JR?P1dp>Tsux1FI5OD!e##EPgose^mn&CnT5|@4 zVN@Tk-iV$i=rZ=l)m~XXAd0-as0C{n(Ix@MaOr~0JkN5aa3u!602;y{VtGx`!iN!C z47{X8t{d77smN$iH1mH3*Nvyve6Fq`y^MUOa}CKyG^DOPM$s{%)oHeRo$X@a&a4~s@+Lo)lJ5kKmE-^}6yRe*!6V{#$JIg7Hi5b?0*=BLxbJ===aQ{|}2 zS<3Aj^bK~4L2sxL+qKKR9>GFTZ$mJocImNv4w`U?Uu}^9w(towL&unB*_xXM46-P~ z9!5}=n1e4yRbGDwt12t(-0O!|TsCRA%s52YuB|5CgyiY)huXQjCwkjei;mLYwOW3l zE+tGpdN671P37>~TfJndfSC>vO##YlS_zMGiI{MBeEk~cT1?W8ZBdIUxZ+e3B;2@{ zh75s@d2J~SdYO1DUL4hHL0KA`eWfOS9JAQ^Npt;d?B;)4SQ4AoT@IsU1wf*hwCC=$ z(H2l2@MhQkRw*LOW~(CAHVo>VxXaS89oMR|mlbbZX@-mQMEh?QkJbL^x@}ctn3Qy+ z@Kz$%Lgi|r%ra|8TeYa>-blY(6kU8Z<964oSHcR2P#=J$^afVb^Nn<%N)Kk6Cq)cK zAADg$(XxM0I*VEfn)}1Y8$wmmJ!{4(P7xsO6bTx#ZiD;5l$+d7?&U$JlJ}We$rBue z#sTei8IutoU6$hSdA4b>tlkU-ivf3V)+ zU&l8G0CSZ8wI>6U?|htKE&2Mvel>}s76B~Pg3W)fTaLQFo7JwjCw99_qB=de1bEBC z8U~DCrt#hiDA_>aH*WS|3xGP;t&}Dg&VDWqY&NY=&W4zz85XaEu!q8}6W%GpW=w(& zKDTdOMGla(hd7Efx)Yk0%&sU8cERXou#5Ovxn|w;Ikq5OCbB!p4f@`aALeo5$Wb%c zV$Xk0D_HjrQR&n^PX*2`!{)rIxke=TtOFZ2s z1ZLr5WRa+f?1=ptbq|UtnwQ24%5$V}FKK_sVXPo5FiHf}nf5d`7JA5uezzsu;oG;} zq{`yBLSr%LYFMn7+1C$uA*jW+&UKS4D+eLft8i5IeP0Z5QKw3p>1|=H$5$W2rxDKt z4ZHLE8N|2u=9JS16Q>>ZXVxcLV6K4~%n8TCz=L6IeTFwrb!;ajDZ}R%fO%_p?nr+k zXU}w)_MQ%&bmOXQD^zk8U(m9(mz_vvHU{cM3rl_sQA*v&1yvm1sKH9@h)LmuuIjra z3)bL8zT8*^FbVCPTiC1JKAqKc>{5=%L4t_~=6j8wXM5ZP2A{7Y8zhjiGx0f|(Yxlj zT{8zugwb_Vo+{DsVOq%(ju-N8JllUTT-E9DYN2VxMIpcYeN|dc?Q*V0KgOqcVmi_L zq6ZEfjvj}XD`)nkw5>QCqTyxr#QWMFONJ`Pugidh*#VheAb!jW26rwT#@5Y7Lz%;9 zPn@AZB=nz)9e5<{wS*;Vn|ViUE~{)Z;mL4i%>cj86U)~Lp68GCUl7xwP_TbeslcQ1 zz`r6&G#(PBJliogC}+4X4EdF5GHbKgYcyI7lIzwiFxZF%l|hRZeW#*XYOna{6WtpW zv7;8Aytt?7MnAUTSTpMqEDI%<{iJOB)y^N^n{eNg*P5;bkdVE$w|=gr;U7F6KY%v# zJ1?&uua+Vv%-(5EQJeK`8e4yf(ooYRa0w+#4dUP1jqhy-_C~q~-^BE^d#!4kc^MQn zYvkOm?t)uWIwTqlqej?QVJB@SZkAdi22ISfE~q`KPer<_vWnO8;3Fo-`RPWVpDQNZ zVGcz4kZ%~#Vdwh%%hAITvo$p1TAX#h)Qn>_Dp`SkyodJWh=XTU;kAEtop2cH`9^>* zaO_U^!lgrw=re}DFI59BMxi5idd(00wp#e6Xcurc?gm{3;w8H)EY26_D}ApWBw%5s z*T4m69|A02D{QqPX}MW3Had>l|VTxwrMzj2=e=NIVpymD2enckBV z7yaG;*iD$wr+TGIo=<;GhTG*!e<0jh7(PgXb|tKAXQB5QE`P5xwX5`u2Hh;*(uI)`*%A_tGtXj(KM^!knRqi04S#ibEpvLE+8c5qxU2zgt{&{KX zvhI9KN}RZyqNlCceeZ1DPzw-CvRjp7Mam^1%Kjl#w_KcaEXxj3mb&c*$*U@Qe_nTJ zUB@N4}$pvevM%YWen)2#Dnk4_}yv1>v1Sf9~>V!}{9?939^A&qr zbf~hhIFEUEa;5qear1vHWJCsO2Z&@UmCc2ueD=2C_QQXC9Z`ses`}{fTpBxM+UE>( zbmjirvnq*i*6r1tMHTR%Ox)JJJmBO)-8PFl)WGk8M@v;vU&c}FHu6Uz@Wk@clN-W0 zz<$L1G+ES)Gc?Y^!M%@sr`B4wv#(UHe2%>l=XK3e@H^#r6kbZG5Cy?j7-=_arP^u{ z#+EJ#1&x2Wx48g@?fy{4MMkUoS!Q7C^owY|TL&z5wZgZ?A?a}DJl&`xZd*MIQMm#+ z>Tm&&5ibHB{@@k5bF%%j-Cwd-L`DB&>HDoFj&2d{8YoL~Lx9(iB>1g&iz9x6TaZSn};8B9z?wE+8fyfwT1 zmtKF*RlJuWznPJOj5<-r;CeU^D-GClBxn`giRwgQmc`}EmOMF4?h>B@RC^MVvDz?5 z4Nw}K@SCJTpaxOkMC*ShdH=+V>_5)E(e5?>KGfr-ay!~9x6;3^tZ0fun#?&N7n-iX zH(O`@E#Q7*7*kK%h2|JoX#?BH#c!w2CEkB_gep+?!_{R43gL_`uZP&bXH64%i1TCX z%f}wOG$M~L#Rk8IZ`_EHzpZ=(EU}#hb-_x^kgORPxc6(esB+C&+VF6|y_(_I&no~X zw3*n2{$88qU_`4P?}oVHF(jeGmZ_fR_II1d^T)3l zMNpdIjNA?hG<}(*+?s!x%lQTHS4w}zFF>L}#m>1;<$+>m6Qy$OVwKUxBjWFR?)zg( zLMAlo1%hqPO$-p1SM^L5Ce#B_YiCQQMGvW_wQYIh44Hyzans@=r#r0Oc;iwFK}mno z?BRvjC7v!nMd|H-%A%>G9ueD+RSU|}RwiO$6fAU|uNbfJBI+odCcu8>xMY~U5`|w<0pZy0O!M}nFmu;u8{kV z&o8K8I#G3DEKQy|2iE_MxA%@}y4%`Cqo}AT*Z`@D3JM|gUVTACgS3A@C<#S61VRbY zo4g7LNGJ57KtKWkfrQXe>0JT@NGL)m(tDG3b$@5v``x|wxaW*J_Bm^el|S-ZV`ThR zo;Bw)*P3fSBQ49W?3GsJ`fuY{12y}O<#nF&@dmnDjynXCtSS)_3|zueV6*KuT3X0s z0Fd+bVPEr0zN=6s(-VJdKC39s`(@*>H?`qefQFlMfxh{wOtjEqUKO?$v~c?YheoMP zDcYC;g~rx+J>vZg;GA!`SK>5QE!itSk=(Yr6QsMLXn57p>J3{nnYqpGS+TU|#PfUa zu!%E2iS14!H`N3_A&VaRIjCg&7F|38)+g{@1Sb*%!ohmrLNI@%sGlF~Kqf#P&D8)u zd1nGNTxkm=5f z;cpi+kug1;?kiyl#v51ExrrFb1dm2@+lsT3?2&HIY{ex57Ws$AA#4_Tg>AQzNEjVC z8y}dDoU1-2}IKM;Y?YoSP zyO1$QSbVoD`a8gX8y8t3!d3fr#&^=*Vt+Ltc$PejlNI7c!*a}=4Bs(rV^dPkIy#pV zq^2P>El8qUvd;fd-RvRuMt07bC!HKu)&`d>`Os`VIRO=vwehi2QWO|C{_Qh{OB61lkb{iF- zNalo$7mUb%$EJ}}{3qJg)dx1Y%4eN^fR6tA@Isds^bN7?hu7^up=dFwiN0x3zE2o4 zTZu8TvF%C@_W~3wcKL#Sjox=GK5cka=dw)jz*2kT^2e#+8E3~s_{d!i5rC}LK~X^7 z*z~U+WMeP&9s6O6sr)gItYq8xtpY=CrHL`hu&D`uZ{_^kDyfWGVZ5=>9=j|U`h3@; z#H#NojX!|nfFDu=`8cf9VuiP2(NL0(fm<3c-`>GaT9r{i%lQfn(4603XQ4Vh`iZ&L z{7fYGV}8H3icT6N+m#6m09*&oXBP7ywShuLRBP22;Uj_fEk<`8B#;bo$n+9%K`&sY zm{?MO*dtPQ8*U({2CG+E^xQKM>u9z}FA^&hxgI;g*JwSTr8GSN_b6X#EowG6F-O@> zTDo`}o*%|8P9jFytRR^;)%??Ta1Nw!hN#zc$!(bpo9KqR-fF17K1SJL_<*vVq{trO z_5%LHq5b_!F9XZ{ddH^)Hsr{R*;fb5zOcoA>;%{u&R@xJYx!h^qo(RRd~!LiAlu^C z5{H8WB(`?dF_yYftI3(;Yxr$vDIs9eJ;yhA82EHySw1Gs#mN3Rh%wf+NAC?SMM!D* zZI^Z$g%n`O2SfQEjJRBDD}40j#|k;i1r&-+CTn!;3AAoh7AI(|Mxkw zf3)*~fqb{)@(wJ_CjvsVJTI&cqNZe~A7NVJtCLfJ0U-vNa1Wiix*zhmC z{YqJ{QPS6y@7PO<8s*)@Ub^;pd&XFB$JaqY*x%5RW+x7CzI` zJ7}IoT}XZrL*rk0Vf-)*lb>$?s-93~lgT>!%hYg8&j+)6-T~~731~jTerMD~K$0+^KOg^f ziwX?&E&ScdSe)a+CziZ@V;P*oNJjKnMqwu?N;9&p4l?x4aY(}!i;N0?BT(vFswY=g zgIFrc#%{F9-5`~!=mvoov=;da8ODF(uc$(M{U5fpXRj*VS1ynAJ~3Vp zru6dBOMMV(Sx-C#JRBQ4D(}w@mU3k|`5!~+XfteA-`uP)K`G=P*tM1|J@M_TH7{q# z07|9}GYf#Be6&|pjqFz*EkG8)xE72A&SBx~BWd-lHgs!zwos3M$INkWv$gPqE)y4@m)b9Lp z(`HH2Q1Y_Z{h?vg_eYuaLO%;q0t*qi+Dmy@JmgaiDSYh;C}_VNui(NlN4zdIORF@r z4su!MlxE+s@Ne9I46Dy{>^!<;_V##I>7JtG;aX0n>eb0W&?q7=v@DBW-Lf$5jN3QfE^c zwsDldlVCDm?Ok!Nw@R9yl_Q`;AhyYVEjLPJ+!40D^7EX3*qQ&S%i$jAs8~^%GG9s? z-M_a^5BUKAocX|wI0e}D$utyG9k;Z8(DVNgvRID}qFg!!@CyHW9_$VPxcwZfwn|-{ zq>Ofvu8S`BS4|e{3FE>Hv11rAHa=`f44aF_A!-au*MoVvpHy+0hRszs z!=c}Vi@%hA%^b9P|3b5rQzC(8i^Xf=Wnd4b`>*VXyyYsY&g4d4AA3VJgG5c$fqE_}}!HOu#%k_tM2h zPFb*5p(oY0$H(|@YhzBi!UEA1ZSKP=zI+Jl$o3_}t1gHR(XJ=^LpgN@1-%jZgJ~a4 zS^Fh_FRpbp@HYzkag^uK7Pa3Gt6113dz`kc8Eo z?;)N7Me9xUGj~{|xpIAnd(0j>r}tU17Yk>wC0%|0s|me+^r~|gg__h;4S_N|3pg@s)fes z9qHWX=yvHNS{;PCZ7#Gq_HnIennsRo7HbPaS4Yz)QAJzgqQ=6V&XPcZE-PY*#84xt z(I=-L>niPUhQTe#sqS`m?U5vpH@8VLT=|G;a{UHssieIfb-QeC zs8g5w=7<{3Me<2eV?Dv3a0PRV)$osjk=;3hu%B>)=GflMiQIO;I!#FaNUp6dELFFj zxxH%hd41m0gR8UjiB+XM>_({?a1{1`>Oc~wQu*?qb|B9J8hDF4ZAEAOl8o=m@>EI* z%?{p1wg?vGx~RVK&it%1R^$C{Ek+~s;=Y;}vAU@v|-A0{MqqmUM>{%HglL zIdd&f?YZVF0hK5GI2ZhmRuB0`6*Q?Os%&S~F1S7MWCi~_K4A-#MYUxG%&`q$H}lDd zR}FzxxR79sobGd+?|1&X^U;BStnbUH^eMXYJE6YAFHXNp2&u3>UA1%7Z{`tl!kCjZN{{j88ee;vt#J}D_LCZMtGj{Nv&vrjRC zOP+md5w+IWf@MohoE2wxRvkIHWa%^5f53(Ibv(ZRRMXJVG@5f&HgfKNY8RuYtr)6A zbp=lT%Q0_Aqiu(PJ}}^dhTcQFiPEM=1RXR8t-kUM>qSb2xN+-`62+<7*vu~u_IFS% z@2#t!L^QR!EzPM3MOt86%3yZmGrAobMY`}Jmih(w(=50#$PF&oid=YzXi+V}RH!14H}rdOKH@Ty2Nk>Hh;{WP_aOfZ8>t&^xd&BEItH;tr_xj)F%-N z)^#p@+V?Dp!<{&P9eKPv<|-oA`T4-6hVcE*@{;hL-|7WQ$yiOD;X(=*1_&0Y-_ewN zg>!top!Ek0hBv1pQ(1(Qb{{o|#SRd;b(e0t!l91id=L?2nJXN$jq$~ad{CHQ_fJ}+ zSNtFcK9bG0VTnGf7;hwGe7@8Lpa@-;THa9NvD4+sRW#oIiB*d z`<41FNO9uq<`)1d%V(?U*@55B^oFIeZwE;?icnQ zmNkw>&XXY_vXk)SPcHqF`a2))q# zZerhm`VtaiDe*gEiC9R@5T%J&{Y0-oO&9}&LF(-}J6_kseA9UKewDwsNWgxr1is0w zV0s6q2NpLP_H&*KzY$gXI|#;mw(kW9q(Ks~z6SM<--WpU07|D~x-ym7e~30)&%~o= zxq%uLd*W-*a9`JMB`T{~8m*Nn|3Kb3fd3SK0Idl&yerSL6f?6$cl5sH6maG%-DogO zIU-3gmD`Lxb?&wY`NP&tQ*a8+9vjCZwmoqQ_&a$L%HLm!7PHcX5VpOl(gG;o8G~Lr zNtI3u1NTBD=Ik(4E$zt0FoHYU+6y@J3vO+SWjkS$GWSEv`wir%6 z9(A7r#)G_qzPR2Q?U-XdRy{~P1=O6Zo&sL~P_9Vm7XB5sC4LIe95OfhlA>lQFurmQK|HDq>%!Tah*`sQ8L4w=KD|R>O(sfuZ_rXC4 ztImPO_I+Q{Wf+3~YhX~ADKcryXa3p%h{w5RsYnA^Np-*`(ITPti9DAujxaKR9>f1w zR`nnjwfA72Npw%?u+9YYqD?4O;>Zz7HHRHtanZHh%7=gEka)HOON}7nBz6u45#g$P z#-zMgIaxZl>0;zqtx#_~mrTzTBA?YcabXgkw3hwstIEIIS`<|;Ht$>eT-8O0HsQ&Jt9G7c?$99uANBplLiBo{phJPr0aC?9hafW>E&wpIt z)e=>gBOd7{AEjf*)3FDCJh7=O_d}Ryhcogfjb+fE%UIHPZ!DkLIR)HD5};gi&8Gb3 zG@Z*vXGn%q-G`6xUb9&%$HlX+wTu9=_6HrupG*di-Azsb=ZwE>{7Y?7z!^-Sbv#XF zbA8^OG>MScn409ZN@=VoM`tzwPKOw7I_U0SOq#RNlX?ETgiUu+55ky5kn zDFdK~IQgU+9me2)1~X;G##`P?VOBmd0vnMJdH2RfL{_DjY>ir+*&XStp4lYNSf!jW zE=3UL3M=KI>b|r7Pb%kzxPhWP7^oA&Ig1hQt0gN}tth8}D=i|9=U#mjG+JNw?0-*T z(|Eq@0D?Pxo>D=Aa=)kP-dfOB1MIx~Ul6;!@ZKkViFJ>EDY;Qh@<^sL)xCOS&BoLz zHkPVYEzQ#`I_i@oe+gf&eO0Kd!RUS^`j-F&tp@qC|17I|#x5u%(&Mjh)kT%tJtX*b z;|X@Ke(hz}f!3-yxys`k$BdLV*uW`ZzpLj2Qsc4x

o9U6}L-H|_@eAzq1^!*jt^ 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 From d885f9e1fd46e2535bd2e128bbbeae282125cb6a Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Mon, 8 Apr 2019 23:08:10 -0500 Subject: [PATCH 095/107] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 747ce8f6..e6b76514 100755 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ # 当前阶段 -- 更新到 Swift 5.0, 2019-04-05 +- 更新到 Swift 5.0,2019-04-05 - 更新到 Swift 4.2,2019-01-29 - 更新到 Swift 4.1,2018-04-12,感谢[@Mylittleswift](https://github.com/Mylittleswift) - 更新到 Swift 3.0,2016-09-23 From 7fcb93a7635a8de67020b90778321cf7ded4a907 Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Mon, 8 Apr 2019 23:08:42 -0500 Subject: [PATCH 096/107] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e6b76514..f62834f2 100755 --- a/README.md +++ b/README.md @@ -9,13 +9,13 @@ # 在线阅读 -使用 GitBook 制作,可以直接[在线阅读](https://swiftgg.gitbook.io/swift/)。 +使用 GitBook 制作,可以直接 [在线阅读](https://swiftgg.gitbook.io/swift/)。 # 当前阶段 - 更新到 Swift 5.0,2019-04-05 - 更新到 Swift 4.2,2019-01-29 -- 更新到 Swift 4.1,2018-04-12,感谢[@Mylittleswift](https://github.com/Mylittleswift) +- 更新到 Swift 4.1,2018-04-12,感谢 [@Mylittleswift](https://github.com/Mylittleswift) - 更新到 Swift 3.0,2016-09-23 # 贡献力量 @@ -42,7 +42,7 @@ diff 操作如下: -将最新文档加入到 Calibre 中,点击 **Edit Book**,然后在编辑界面选择 **File** -> **Compare to other book** 检查各模块的更新内容,详见[链接](https://manual.calibre-ebook.com/diff.html)。 +将最新文档加入到 Calibre 中,点击 **Edit Book**,然后在编辑界面选择 **File** -> **Compare to other book** 检查各模块的更新内容,详见 [链接](https://manual.calibre-ebook.com/diff.html)。 其他说明: From 86690d44728d73dd7dacaace00cca201640e8986 Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Thu, 11 Apr 2019 19:26:46 -0500 Subject: [PATCH 097/107] Update contributors.md --- source/contributors.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/contributors.md b/source/contributors.md index 7ac01c1e..6f8ef80b 100755 --- a/source/contributors.md +++ b/source/contributors.md @@ -1,6 +1,6 @@ # 文档翻译 & 校对工作记录 -Swift 官方文档中文翻译工作由[numbbbbb](https://github.com/numbbbbb)发起并主导,该工作已经得到了苹果官方的认可。下面是各个版本官方文档翻译和校对工作的主要贡献者,排名不分先后。 +Swift 官方文档中文翻译由 [numbbbbb](https://github.com/numbbbbb) 发起并主导,本项目已经得到了苹果官方的 [认可](https://swift.org/documentation/)(Translations 部分)。下面是各个版本官方文档翻译和校对工作的主要贡献者,排名不分先后。 ## Swift 5.x 主要贡献者 From 9fd540b8d78f5849ca073588d5635515af20860e Mon Sep 17 00:00:00 2001 From: Wentao Liu Date: Fri, 12 Apr 2019 10:32:20 +0800 Subject: [PATCH 098/107] =?UTF-8?q?=E6=A0=A1=E5=AF=B9:=20chapter2/03=5FStr?= =?UTF-8?q?ings=5Fand=5FCharacters=20=E6=96=B9=E6=B3=95=E5=90=8D=E5=8F=98?= =?UTF-8?q?=E5=8C=96=20(#921)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit index(of:) 已更名为: firstIndex(of:) --- source/chapter2/03_Strings_and_Characters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/chapter2/03_Strings_and_Characters.md b/source/chapter2/03_Strings_and_Characters.md index 06e3bf2f..21d5eca3 100755 --- a/source/chapter2/03_Strings_and_Characters.md +++ b/source/chapter2/03_Strings_and_Characters.md @@ -434,7 +434,7 @@ welcome.removeSubrange(range) ```swift let greeting = "Hello, world!" -let index = greeting.index(of: ",") ?? greeting.endIndex +let index = greeting.firstIndex(of: ",") ?? greeting.endIndex let beginning = greeting[.. Date: Fri, 12 Apr 2019 07:24:30 -0500 Subject: [PATCH 099/107] Update 01_The_Basics.md --- source/chapter2/01_The_Basics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/chapter2/01_The_Basics.md b/source/chapter2/01_The_Basics.md index 7af7fd60..b5fb14a9 100755 --- a/source/chapter2/01_The_Basics.md +++ b/source/chapter2/01_The_Basics.md @@ -762,7 +762,7 @@ if age > 10 { precondition(index > 0, "Index must be greater than zero.") ``` -你可以调用 `precondition(_:_:file:line:)` 方法来表明出现了一个错误,例如,switch 进入了 default 分支,但是所有的有效值应该被任意一个其他分支(非 default 分支)处理。 +你可以调用 `preconditionFailure(_:file:line:)` 方法来表明出现了一个错误,例如,switch 进入了 default 分支,但是所有的有效值应该被任意一个其他分支(非 default 分支)处理。 > 注意 > From 497d68be372d5625d3df3914ee75878dec760853 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=B1=E8=9A=8A=E5=99=A8=E5=96=B5=EF=BD=9E?= Date: Mon, 15 Apr 2019 21:37:38 +0800 Subject: [PATCH 100/107] fix invalid url (#923) --- source/chapter2/01_The_Basics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/chapter2/01_The_Basics.md b/source/chapter2/01_The_Basics.md index b5fb14a9..cd525032 100755 --- a/source/chapter2/01_The_Basics.md +++ b/source/chapter2/01_The_Basics.md @@ -71,7 +71,7 @@ var red, green, blue: Double > 注意 > -> 一般来说你很少需要写类型标注。如果你在声明常量或者变量的时候赋了一个初始值,Swift 可以推断出这个常量或者变量的类型,请参考[类型安全和类型推断](#type_safety_and_type_inference)。在上面的例子中,没有给 `welcomeMessage` 赋初始值,所以变量 `welcomeMessage` 的类型是通过一个类型标注指定的,而不是通过初始值推断的。 +> 一般来说你很少需要写类型标注。如果你在声明常量或者变量的时候赋了一个初始值,Swift 可以推断出这个常量或者变量的类型,请参考[类型安全和类型推断](#type-safety-and-type-inference)。在上面的例子中,没有给 `welcomeMessage` 赋初始值,所以变量 `welcomeMessage` 的类型是通过一个类型标注指定的,而不是通过初始值推断的。 ### 常量和变量的命名 {#naming} From e82cea38663338412df24c36ad701c95d5423bad Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Fri, 19 Apr 2019 12:23:34 -0500 Subject: [PATCH 101/107] test gitbook anchor --- source/chapter3/08_Patterns.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/chapter3/08_Patterns.md b/source/chapter3/08_Patterns.md index 4aa9009a..3697bb96 100755 --- a/source/chapter3/08_Patterns.md +++ b/source/chapter3/08_Patterns.md @@ -60,8 +60,7 @@ let someValue = 42 > 标识符模式语法 > -#### identifier-pattern {#identifier-pattern} -> *标识符模式* → [*标识符*](./02_Lexical_Structure.md#identifier) +> *标识符模式{#identifier-pattern}* → [*标识符*](./02_Lexical_Structure.md#identifier) > ## 值绑定模式(Value-Binding Pattern) {#value-binding-pattern} From 3210e309725f7ce93ded69f4804a768999360f3a Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Fri, 19 Apr 2019 12:28:19 -0500 Subject: [PATCH 102/107] Revert "test gitbook anchor" This reverts commit e82cea38663338412df24c36ad701c95d5423bad. --- source/chapter3/08_Patterns.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/chapter3/08_Patterns.md b/source/chapter3/08_Patterns.md index 3697bb96..4aa9009a 100755 --- a/source/chapter3/08_Patterns.md +++ b/source/chapter3/08_Patterns.md @@ -60,7 +60,8 @@ let someValue = 42 > 标识符模式语法 > -> *标识符模式{#identifier-pattern}* → [*标识符*](./02_Lexical_Structure.md#identifier) +#### identifier-pattern {#identifier-pattern} +> *标识符模式* → [*标识符*](./02_Lexical_Structure.md#identifier) > ## 值绑定模式(Value-Binding Pattern) {#value-binding-pattern} From e0af10bc8e69d4ebbd1fb89ba942792673e754e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=B3=A2?= <1106355439@qq.com> Date: Sun, 21 Apr 2019 10:43:29 +0800 Subject: [PATCH 103/107] Update 21_Protocols.md (#924) --- source/chapter2/21_Protocols.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/chapter2/21_Protocols.md b/source/chapter2/21_Protocols.md index 61342eca..59c3f48b 100644 --- a/source/chapter2/21_Protocols.md +++ b/source/chapter2/21_Protocols.md @@ -95,7 +95,7 @@ var ncc1701 = Starship(name: "Enterprise", prefix: "USS") // ncc1701.fullName 为 "USS Enterprise" ``` -`Starship` 类只能把 `fullName` 作为只读的计算属性来实现。每一个 `Starship` 类的实例都有一个名为 `name` 的非可选属性和一个名为 `prefix` 的可选属性。 当 `prefix` 存在时,计算属性 `fullName` 会将 `prefix` 插入到 `name` 之前,从而得到一个带有 `prefix` 的 `fullName`。 +`Starship` 类把 `fullName` 作为只读的计算属性来实现。每一个 `Starship` 类的实例都有一个名为 `name` 的非可选属性和一个名为 `prefix` 的可选属性。 当 `prefix` 存在时,计算属性 `fullName` 会将 `prefix` 插入到 `name` 之前,从而得到一个带有 `prefix` 的 `fullName`。 ## 方法要求 {#method-requirements} From 425d534e7f2168da7af47d5a252c1da7f6458465 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=B3=A2?= <1106355439@qq.com> Date: Mon, 22 Apr 2019 00:44:58 +0800 Subject: [PATCH 104/107] Update 25_Access_Control.md (#925) --- source/chapter2/25_Access_Control.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/chapter2/25_Access_Control.md b/source/chapter2/25_Access_Control.md index 16e89c5e..680b217e 100644 --- a/source/chapter2/25_Access_Control.md +++ b/source/chapter2/25_Access_Control.md @@ -42,7 +42,7 @@ Open 只能作用于类和类的成员,它和 Public 的区别如下: ### 访问级别基本原则 {#guiding-principle-of-access-levels} -Swift 中的访问级别遵循一个基本原则:*不可以在某个实体中定义访问级别更低(更严格)的实体*。 +Swift 中的访问级别遵循一个基本原则:*实体不能定义在具有更低访问级别(更严格)的实体中*。 例如: @@ -65,7 +65,7 @@ Swift 中的访问级别遵循一个基本原则:*不可以在某个实体中 > 注意 > -> 框架依然会使用默认的 `internal` ,也可以指定为 `fileprivate` 访问或者 `private` 访问级别。当你想把某个实体作为框架的 API 的时候,需显式为其指定开放访问或公开访问级别。 +> 框架的内部实现仍然可以使用默认的访问级别 `internal`,当你需要对框架内部其它部分隐藏细节时可以使用 `private` 或 `fileprivate`。对于框架的对外 API 部分,你就需要将它们设置为 `open` 或 `public` 了。 ### 单元测试 target 的访问级别 {#access-levels-for-unit-test-targets} @@ -98,7 +98,7 @@ var someInternalConstant = 0 // 隐式 internal 如果想为一个自定义类型指定访问级别,在定义类型时进行指定即可。新类型只能在它的访问级别限制范围内使用。例如,你定义了一个 `fileprivate` 级别的类,那这个类就只能在定义它的源文件中使用,可以作为属性类型、函数参数类型或者返回类型,等等。 -一个类型的访问级别也会影响到类型*成员*(属性、方法、构造器、下标)的默认访问级别。如果你将类型指定为 `private` 或者 `fileprivate` 级别,那么该类型的所有成员的默认访问级别也会变成 `private` 或者 `fileprivate` 级别。如果你将类型指定为公开或者 `internal` (或者不明确指定访问级别,而使用默认的 `internal` ),那么该类型的所有成员的默认访问级别将是内部访问。 +一个类型的访问级别也会影响到类型*成员*(属性、方法、构造器、下标)的默认访问级别。如果你将类型指定为 `private` 或者 `fileprivate` 级别,那么该类型的所有成员的默认访问级别也会变成 `private` 或者 `fileprivate` 级别。如果你将类型指定为 `internal` 或 `public`(或者不明确指定访问级别,而使用默认的 `internal` ),那么该类型的所有成员的默认访问级别将是 `internal`。 > 重点 > From e3c9bd79926796661ef1b1ed81dce9298871df5e Mon Sep 17 00:00:00 2001 From: rain2540 Date: Sat, 4 May 2019 07:57:44 +0800 Subject: [PATCH 105/107] Update 02_version_compatibility.md (#926) --- source/chapter1/02_version_compatibility.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/chapter1/02_version_compatibility.md b/source/chapter1/02_version_compatibility.md index 0b1f829d..482780af 100755 --- a/source/chapter1/02_version_compatibility.md +++ b/source/chapter1/02_version_compatibility.md @@ -1,6 +1,6 @@ # 版本兼容性 -本书描述的是在 Xcode 10.2 中的默认 Swift 版本 Swift 5。你可以使用 Xcode10.2 来构建 Swift 5、Swift 4.2 或 Swift 写的项目 +本书描述的是在 Xcode 10.2 中的默认 Swift 版本 Swift 5。你可以使用 Xcode10.2 来构建 Swift 5、Swift 4.2 或 Swift 4 写的项目 当您使用 Xcode 10.2 构建 Swift 4 和 Swift 4.2 代码时,除了下面的功能仅支持 Swift 5,其他大多数功能都依然可用。 From b991a4eb75cfebe9148955f810a62df6147fb853 Mon Sep 17 00:00:00 2001 From: xiaoyaogaojian <676252349@qq.com> Date: Sun, 19 May 2019 11:28:54 +0800 Subject: [PATCH 106/107] Update 04_Expressions.md (#929) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 有几处的binary被错误翻译成了二进制,本意应为二元 --- source/chapter3/04_Expressions.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/chapter3/04_Expressions.md b/source/chapter3/04_Expressions.md index e6832e03..190cf41b 100644 --- a/source/chapter3/04_Expressions.md +++ b/source/chapter3/04_Expressions.md @@ -57,7 +57,7 @@ try 表达式由 `try` 运算符加上紧随其后的可抛出错误的表达式 如果可抛出错误的表达式抛出了错误,将会引发运行时错误。 -在二进制运算符左侧的表达式被标记上 `try`、`try?` 或者 `try!` 时,这个运算符对整个二进制表达式都产生作用。也就是说,你可以使用括号来明确运算符的作用范围。 +在二元运算符左侧的表达式被标记上 `try`、`try?` 或者 `try!` 时,这个运算符对整个二元表达式都产生作用。也就是说,你可以使用括号来明确运算符的作用范围。 ```swift sum = try someThrowingFunction() + anotherThrowingFunction() // try 对两个函数调用都产生作用 @@ -65,7 +65,7 @@ sum = try (someThrowingFunction() + anotherThrowingFunction()) // try 对两个 sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try 只对第一个函数调用产生作用 ``` -`try` 表达式不能出现在二进制运算符的的右侧,除非二进制运算符是赋值运算符或者 `try` 表达式是被圆括号括起来的。 +`try` 表达式不能出现在二元运算符的的右侧,除非二元运算符是赋值运算符或者 `try` 表达式是被圆括号括起来的。 关于 `try`、`try?` 和 `try!` 的更多信息,以及该如何使用的例子,请参阅 [错误处理](../chapter2/17_Error_Handling.md)。 > Try 表达式语法 From 1ffeeeedafb51eff7c7dc221d7fbc7fa1a6b70bf Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Sun, 16 Jun 2019 07:43:03 -0500 Subject: [PATCH 107/107] Update 14_Initialization.md --- source/chapter2/14_Initialization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/chapter2/14_Initialization.md b/source/chapter2/14_Initialization.md index bceeda4d..111d9c79 100755 --- a/source/chapter2/14_Initialization.md +++ b/source/chapter2/14_Initialization.md @@ -521,7 +521,7 @@ print("Bicycle: \(bicycle.description)") // 打印“Bicycle: 2 wheel(s)” ``` -如果父类的构造器没有在阶段 2 过程中做自定义操作,并且父类有一个无参数的自定义构造器。你可以在所有父类的存储属性赋值之后省略 `super.init()` 的调用。 +如果子类的构造器没有在阶段 2 过程中做自定义操作,并且父类有一个无参数的自定义构造器。你可以在所有父类的存储属性赋值之后省略 `super.init()` 的调用。 这个例子定义了另一个 `Vehicle` 的子类 `Hoverboard` ,只设置它的 `color` 属性。这个构造器依赖隐式调用父类的构造器来完成,而不是显示调用 `super.init()`。

#;0UiaJt`rMN29s2N9BZlx5KnN1Hw1AUK15P*Cw}K<;`|P|NI-92IDuNtAI}CIm@q?O433Pw=P_4)_crN<95O|+# z4Q|9E^ge+#@KyCN=q7vcpwLp<&|CM7mZIGZ+;^*X;cJ}bBPHsJC1(Je@<*`2)ZO$( z0a5A2sG%C5KIU0maQ=zvxhH`U%yDL$6%%2L3~m#g9nB|T8}gV%um56X_NshomNoPJ z97vK+_w_mPi2Pao2ul*)UlDtS@z;{`^h9E`?BwdJ~S&5@ldW5ejs zNydFN25waBs!+?*l(z^IgqIO&lRmw63qODFcw>L-zw%=F?=#5RB`I!1!^Gqc>lpg{k{wQ#R_J7>9ev! z98vYA9rrpm8KlKxscHBJGe@-3Y0iF!_cX*p&a754)ouA$h_2{G$iS{CW3D?>LW_dX z$c_N9UaF~hF7@;E6fVZ*)saKHa+>_`kSJS_0S$t~;D@hc^l^BEb_d|UnCJfs<|!n# zVFf>sK|X85Z!rl6KYHiL6I39Uz=_dsVkvPxlGb@$*zRWV*N1h4U@OvX6$}-?LJ_bs z(1kmIMa5s6o98F0j!WEml`2-++P8U@Mf)oB-0;L2o&v?$+RL32iZ&izaOfoOcFa}N@{)V`!+5`Qg%KJq~I#0m4E42Z~0h*_q4dXkJj1uA^ z_X?PAJL9mGqVa45Yo(}eJF}*8O6p))$H{}--ECZ@5K&c+ULsEZz4t?>k;nP%^O4>) zl!XQt(k?krZ?>p2QFGZi4dmW(-V#bt$KfCqAM)fb&S0?6qIV)fruKv-ZMjBQW}mj1 z2_ZT9y4=Tinx$*0U0VziF7f&k?;=f{N>1%z*MlLEDvsr)Zzl61mT>$Lp8BL^ZBdzD zSm&kkY;Kt|06*btH85s!RJz7Js`^O%Gp)-7YyDiNkia76MC?1wc;XMXai%H^{1r?tPcZ+~cKUDvC4^<)l> zM@&JI{)Fr&c>cB9lA3H0+?=w^Zl;VtdgJcsq}Z1`RCJT7N=syZB;l~RL#V1t+V_Nr zIY%FL*tVtP9?r+b-U`fRP96X2d8=7P%%a^o_g}5cqZ3O3E2)+*IAro&?6Vo*CM(yM zk9lZ5`Za*XEC7Hdeg6Kg*_Q5(gzK@G9bIx5hvhyfFmVkPU}WF(EnSu&@IOcN{u6xh zUm+Juwv6|rXNv|?{7yT>Kgw|j*=hyrt}=`T>M8~wp{C0@{w;U%Ka*kUnz^5RIv`xI zBk@J~4->#UMfc;6KeLk!TPDkIdx!!qzVpsnjNh4#}H4X z`1Mu-K3s>t$)B-~Q_qh2cUl(c2XW}{Pxb=qt%;p6qu)?E?JZ>VsK=??=B0F{TP17E zva=Siy?H7%(66iH=2+2t#w#u;$ZMLfuS2Bi_fbV2lNV`*ZVAECY~9z@qbp5}gKH<* z6-KU2zH-nL{ECqbo$3e|3@&f{P-5u(+j9y2!*7u=Pfnfy&cU)DGb=FcU64@VQgJpt zar)pSO>@0Brrv??E2(0tYtA(u$Z)!ra=9aJls7VMMzbBcQb%fL)!#KE_HXSe~ zZwy4XvSH&G`)v|mIEDo@AoFiW6Y0=rfOI={g2}V_GXS5IZyX!L^_sad5lmsGI{djB zY}yu_l4P~=bhT)Lvw1v)uYC!Zw1al^#60%V|8#3V3mX5rLQ^VziX*&y*ErOg-LZh9 zj%xA?C9M$2Ti#qXDt46@&o&7rk4+M{K#OLBIcU243A9scUeOls4{}Drh30;X2`^~g zC~7_1mHnbsVRS_lcS-ekuQ^9ML=6{F z>~QWPzjepV49~00qXk!Qlk~G%OBK@8#VTy;e=S2YkkoFlpND)xzZ%ZiCRdJ6Wi+B; zU7EW{4$-DCk#ZbI9ZML2svC(8bzmk69N{}{kuip!OL=?4Ew%5-C&{0bU2PKifsY@m z^oo&S6EcSmLcjP0NZ4l-C075{UmZ~Yxq4TXOui@=^1?egc~wLk@uj?=c!Q~r zB3bW^*;I_+q}YLxc;NGGIzpC248{41)2+r87Tt?Yk)tAptI4bgr~rRn+j&JYjZLU1 z4;#xQ&H_3Ee4(cT=rcN$7FR?`w3+7|Us=`B6L`J?Tp2k_vN>kDSTpS`JBpdU4%1*pul^-YR6pNLr|-#>r+|nfT!W&? z*O9=PL_$zKWV==mWncn|W(94aWK!=_lOOWmy^$NE3VJ__Zn#O809Y_v>%3ctkKb}&Tu??z74KG71)cqSm&oW_NjCuyHoc% z;!!JpzqyLWc?OUl^hVF^JPOlS2kWAol$u2ob3yK3Hc~V`Uy8iMtY6dmeDB&Z^vj?4 znYroAR@4h8@NX0uFD{er_Wx>Zb2wakojd=2g(*I{F^^Of(uJe)f9U$Wc88ph=KoEk z=U2A#&egBu5SQddy27Y;x0@yPZ@zJkAWvU?R1TguzEHjnJOju^x~Iok5e<+Jk}90= z^0*rNxN=zl;Du90_NZ@{)<9R!ubK=d*lp9uNx@UCii!i9&&uZ=e~SF}mE1(XnbQGL zhkyz~;9tT&z3POriRtg^jPPm)R1{so-*oF-M`Cy0AYa#9YUhGWaz{)Jahe9nyH4VZ zUmpp0NZe8SqDQFDkuIMuEs!wRrigEGVb{WEYvwE3 zHR)g?@+Bvi#cuDfBTc!;%Z|-E;=}Pje+&=^%|odaE7M#{bqB!LW3L^JUwYtRL83UTg1M+w%9&2 z@ZqcYTTYr0jTy;aO4qUFu~tk3{j_EvTXGK7(7JdZ}nub>7IB*w)s~6B)Og9ouVDe>C6Vg zszQi#v?Y-?k|g`LuSl?1_AF<=#WX9BuLC_LW5k}GYjzr*$TIu2=<=jPxx^s$&CI8f zgb_%ZcNrHXQJZw@daY1ba5Qzbd{|ua9%KAcn@#9$Oma3eOS^RoTv&Q0y}6yd%mG9%JW_ZAU=rKlkcV2*cAn4Pc`?-$XYtiewrr5ML#Otoa zRiQ*`5s}>BhKuOdLX?cd@jiT!Fcry)`x{1!%Od1ihbbrCQpe@Hx}uMqI`-TOP;8;~ zsd{pgJ(~B!&BPVb1W^;?-x&22Y~9-H*+89?sfad*baWBLRx@%az!@1{vn zmc>^i1LnTa{| zbfM==v>Y+o6<VcBx#t4zWhwV-dMC_O%vRFlti~dTKbQ?gK#-O4Sos9{T8bJKX|2CjYe>jdQOkbgd=H?(FV=Q z+_Am*?JNr{hs7XmL%dCPET4lmiTR+u4h{hQ;64DH8;EQxh$T)tCAYAD4fmL#Zfazo zvqRZlG6vbYrZUmcca?K}aqLNgGC;P3gUdt2p`-%%+av?LE^Of5KH#5sIAk8bA?G}| zRapIPYMt|0QlV}FrGvHhMYSNNkIhxl!j_B>PPqlA90#|Nt)vwKtdjD_z-_l01}@K> zvsV^n4!^57wN}t1dFz2xFxC6DA!8o<1mM3)OHxQBTiib4ppgTb}1u_b5d)3JZQXcL~E8Q*m9@AtWOy^K=Ve zlJ5f{=%8`o+q?R8_ZS!!x{7Qk!CDCk=Jtf^V-O^G&s&*Jv z1-TOb2JZUq;;)cgFVV{32(*WY+9E7O_g{i`{|95QziZumH7u#(nZD63OwLH;Y(*v( zrX2g60g$0y#S_BAvfU~bFemo(Nb%byt0^~}MDnMrDHLzaAP}qz`*9iJjrNo9EORnq z`nkE5h)Q%Uf6TY+J}qkGYdg$0%HLkSyy~Dp**)@T!4vSWe&IPr9~E#Wx!_Gqz(x@x zdL5_*TE|D1l&^SNfyAm7x+EXFB76p5tDfr5CD+HL@EiAfhO)`XN)?3TtX~!s%Azr9 zrVyO|r-*OoRvw!AW+Sg8u=5oD@@ufP85XVWZhB+lu#;k)c%=80_3FL}d zABu=~)~iaC0_z$hAAeao|ErSYsRQpLhiYSW`%d1TB2x1$*5bllhR5nh(>=hZOphw9 zxH1Aq)eZ&hu-(>2^U=#kL(55eSL*+LTK`}=z#Lp#AOy5lAy<*kWeYJnkJ)kPv_{fl zGXv2qs_Pn)(m>1VqJueUDLI~}I)vHy-4%n}WYGtD(l zh4Y7!rhv$zP$i1&~!yyo{0pe^Id%?{6^R*}Ua zmY(^1gN=3cY^h#RYgQhhR8XdhWBKQ6HdwWMJxs*#K43YV^`0S%)zf#J3J)HBE@kDG zjVj|5epQ^V{%HC|OuKdm%ZSZ&m8%gtf?&aaaF~z(L}&fO=~127s_~pei!UK*MBE_S z+M|us?rzo=bRoRV-#?={Sm2&|@ZBnXv|Ed4)GIv%sjA5~(GrJ#7OmzW8S*T1?~xzo zpr;;j(kI>1S0Sns^gLcDxvQ;UHAQ3D(Db7?sW)}A$m0VrCG4?a-T<+owwVmZX=C^? zcNBO290kxDX^Co;_6MB-bd|(T8{fQ<`G30T_n$A!f~l{)q?=1>q8)`Lu6J*=3FYJ( zN(g)OCK;JS1@(HhU`21{pStUT3N&%3+K8afa<`JQlLK@mh6#Rr(~Sm483wj;MR-Fu zCBm*}VDU(VqsJ-5%WXA3xR*C;JQFdX+^jfzXErkmjH##AD=D`53nBHK?tH_Kx{2b& z8nujV4OR;r5}|>dXa^$9|MIfd6Ry&t9aPD{uFo{3)Z}Mc-#3gj#&GBKZtNu42b+Xt z6e5p#Odx}ylEM1nMRsi%1nAt_xBosM`uP-A;r)`=-O+y+BN`7E=O!B`vYQx*U{hIg zTfBib`|Bl@pX^PA&;le39H#f@!dQUzI4phKq$9b0a_uvC$Y)@Cx%Prn<O@R%WIf=~CB%`*JbLI{V6cGTVkal<>XkD@Ev;6aS6zu~b13a)@4E z4qt_T3eeQ5lBClFh3XPv@aKfErL@rbmeZSo!U&0Q)8^5dlEyw=R-x{vwKyYy@`=sCI~)2Ui!D9q%6lp(t#q9HkTWgyRsCAHq)b#Pn zM=#V;J)EYQl&Cfs4LfNHy3JmNDcM5?d6kU4rmb?kil3*7k}I6&si=qi#FVM7Ao;s7 z%_*$vz#OVGNss{yhv^f)+$#TP4fBpfCr1x3Hp?`9iZ^KVFxJKP;9e&^?}*6w8|h!@ zk$%Tkg29osp*rCiderW4i)nfd+Z{DnJD8tSU`G6CKe0#fayl`UlQ;v!4`z4&$-Hjz zYvQod#qJDnw?H}L>aFpL$+{i4nV!>^`hl{ym1|rZ0+$xsvX5g5Pv1NV^qCJi0}S>j zDj)C|9sdj}resf9Y<7&4-u>PodQ|ihKPx$CyK-V`9E}yL7)$FP+L1c4Yegw?V+5zF z8w7Kps$wNc2KHdv)CtPVc*7jmXcn^6=~$BxdDLg;t&Mb4n(!q}K7zo7QRz0wtx}V| z2z^|n$d%TYpx##)xVHGhKkF?50OvoLUvH7z6-faO9CO!~2$H#3Pm1_Z$OhhC>8Jup zkLBcv!W*Le0WK26#FY&1F#%|AE7P{EZvUNHB35SvqLTjBCRb){VcOOoLE*e*YeOkgAPOZ#$4znAt@gA= zPu*!jrg$Y4Brl&Nz|t}Io@8`>faq!t!(jdZbD6fD9`l>?*V8?DnV8nJV>@^T$V`8DdH&ph zOjwrrF;kmYb~AVE-ANgiq65Y=KrE;JUO=7MJ}qypES)yDj4#FxtJjP#KE4v*-ahY= zaX21-XBI!42}>qHq4*~wfh#kc+ozw7f3I#@;Hxvhw>P&&+h!L}p6&l$-<7BFXMndq zy}3)k+uQoXtJ+F7*@dA?$*=&a<#g6@4aa)~KmldJYeq>9n zRhdwWDQoS}%nNU(mr0%8V1)(?!jNwhmA8trzRQ)gEVbF<{LZV?OvEMooh!){|J!a+ z6~_55j9o0c-#vOS-+{*hk&QZPcpylRDg9K#%p#k@*7#TnnxYn#xr()E7@}5kvB62E zPR=4-%CRdiEJ!aFIWIO4WsHCzV`Ru$@%-0zKLHll`+u6h1^{kA{T!zYQX{1ArZIym zzH*fdtVGTFlwQ=gjKm>ed2>;z`am5yZ+e!c-n{H7)&=f z^>F+K%%C?xT|b>0109wuIE~s0UF`bZ=+C&VPd{zmWh#h_u#d3YTBB$(wzWu+J3h7| zJXJzx0E@Dr$$;;i#u^0O-IG|WGQz~tHUzetf>kp&*T)EPH@yAo)L_~sN3rTu>Br8F z4Rc+YnY$Lhyqqgzf^U@;EhkuG16k%TD~Uz|RLU`H3M@^yH%S(@_3(RBM8o`GC&2a;d} zOq*FG_~8AU$Cf55$qM&V$Bf&=xf5o(vTrpbsndoiAV>@@|NHSLB#z8!=%`sd44nHA59ag(LG<_mZVJm{-PS>|%1*9)x&L#C__ z6zf&SbMhoWdEvOq%Gj6fTG}H&{%tC6@t(wuJVIDUj%)dqPAA)kucdg_nM}e&;&uB- zYw=1ykG%@-V}Og0#XZ1)LS$!T$Mp5UL8t2RsVKFixG=&~M8Gn``~B|n;iy=XcgQwO z$NRoCJa9_ky-XkRz%0%E3Z5Wm-h^*btkVBHlNUtse3@CmXzboRJ?!1MX9j+N5g${q zyIav}j0Is~dEt0CC@A~wzuVcl&|RlHZtO`a++$TOT1zj+RJc`kQ62Ta?unEkDAX{0 zs1J$%m9ySLT7NI>@xjcJR92StzbxPMM6qo%Q#zfb4)kr=Avy(V|1jeR)lBUR$K}n<>MxU9$|Azf9VF8%|>58 zvOv9{n_scOMraKJ@9)?AL?TBveZEa@tRDHzQfXN~hhxt#+h?-RBGY&fe0GtPdvw5kn|aH*^6_g92Em&1z9>17 z?omcFPQ;)o$3i}h&M0+DWOFrOX*HGLw!v8nvk)6}m{IzI8k^G3gCtLno3tm|r3jJy zmA&CRH46r92SN*6rok&$7_4C|am&>cEIp1)f`X`n;2E-G-Vc(XBn%RXj&WQ7LE>Th zNjWEy+d<230d&oFT(`^+K(H9~zCwf4PPDqNUiJJ<)!1vq!N$A@UAOXy{3oGMjMOsB za|Z($l=18It4ytYQCjrd3JNPUu)A4^I12U%rk$pQ%L8vjVLF6mDqk497>^4D!t#=| zpr6a7Z^4}KH!E+tXl9NbW;?!w=T$#^ z{K*Z@-Z}NzW&es-MA$)7W1Gy4&9u;0OEc_+(aQ&Yz7n0tFx97F?mKg2q-RMRSUH9g_AOz z8k?d!tS0T|S`;>r!j@FK+`Y*KeT0Cpyl`S&OQrNgSZQ$k6K)T2nSqp1b^GeYV$PPWgG=64>fm}%KxRu?Drp_ z1Yzsj*?rrgAack*vz;KbT+rx_&&S{F{xxKX87+gYZ`_2Ej}pJ7PYd92nOV0yVfvZ! zL9ve}#I?j6v9C}q-AoVE;#P1CmRB-Q3RXP@Sy`#5-6pcBiZZIeBt9tC1VbjiG0JG5LI5g37Kh|rfAr7(qE-1bAeF&2E^ zRjM8(r%jN^-XV@$ochTH-rqMPd5z$oBfxse%g$fBvza0x@S&vjW!SluZ~sc%25?8n z`4_EH(v$r@4SIMO#o7;LgwxVahZ=1>TP$fID~0LYe|0eIcx85$aZ-|UYOk5o1&}G!@^{9o|N3=bYQsqf>OfP*@;6KHBeOBoGkbjVf|;&yXqkX8wm4A2zo)+oy(>$F}Uui^{s?78x|Fhm$Li!(tSSAM;&fAS-)(G z?2g!*7n-6OR2=}WrrODoo9j9|q}i>K=DooUWy6~$9k;7&I1XqesP1w~`dG#A zO+}Kak7qd{(}6x2aPipLs&g;nShk$X-DmQ?+rn~puqB6-Z0;JL=`b2Mva0ga;9@&> z`RMAOi9C{U7m@HFMUh@5?vR1^f_L1Nfj!Erce<#Ucj`_E)0EhZ#41t6%7#k@FQGUx zX>{NddGd8iRTVBh#(MY?6nA$-)JbV;Nf-G%U2bPE_d@WK-y!Cv|E`tzcB+^ZuYyO0 z|K5Z%qj-Y|A3=VryF%|1IbFp8BM8L^g51BbUEY%2M^F7M8;e!*_HAj|Ea>`lKsJd@ zsJM4g>_hJ3Tss3^kkrLT_ZvyGU5(ysIbtc#6&?K53<^|Id5{{~dK{jc>VYo00)Y=F z(nBp)3xkF;ys_TRI&L*Bg{i<7=q?5QuWO3( z*9B*JC~QyqQ@SqqlZv>~b-%eY_Vicf&AW7N3{rv5$>kr&&y=2x23%b6I7+!GJsM5z zy<>Lw*Gzu}>B6pG#c`MH(VSZ0y*W;tMwGFICH|?M{bFH)wL!@WtKWcrRENzj3r}G- zV|gt#Jjg4iA6z%8r_gC6=pte9TugzRDnUBHZk@kSCfc_8!)i{}!K(gUU}a-iJrwtl z<9f1HOEOi2U)>Z66G&Qy4b|1twH`@#u4Os+DF?Z9l=w#7ycuJidNtpCtz=3mX({TU z5woz#U*3TQ^{PT5Fh2T8MZeDVYXex+=7W{|i`q+5wpJ5usQE7&zBau~zo_2J{}rrAQy|P^ddj=q4_x`>i$EF94zPkf z2l~$c`LLdsKf2^Ak6e(A@iVv$S%bseg56tYrAW9nuk3uUEvYHTzHFwp7H3=}Pn2vB z!8o<~H%j)gFZ~FU9FJS(M?!*<%)3q3A!}` z?IXxLmfpDNNSTz3O`x(Q^fU4$fvzU?CDF0GrIWK?1G{iV%bgeZr>peP{9M(iE204wnhOVpJ7}uMSyk$G%2hF9 z4D1YvBXW;psGki*u4uuu$E?>hAeW7a6idy(3SjLhCHgX767AkMcr35$Q)k&etIn9l zR;N;-dwH-#c0D`oWA8^3Dy9~@x8NZ7oEcmX!k#uL1ct*5KHeGua1M6vjYl_h8?;4j z70|0ul&42_2+EDAE!j6zM|fNJsqed}q#l=e+OC zIo~^T@=syuMWay1^syFGLW$#iihAu&EzJc@;#|E;lBZN{3+?)Ee_l1Y@UGtT&xTc1 zYnH!V0TnqM%<&H(n6UJL9NA*hZ~XYz)>D}Eoxp}d^GmC% ze*oIrHWTIab*Uv>@{Q#vs{yq4-7*$`Hh!!N9V|I-QQ9_JkjA;wOK{!;oF`91v&jG| zS>F_))v~S@5WMf-WU^Z#KF84mPd;P)_nUK$U$c4H=tJC8>7lC*7MB>P_LWW=jat9rWAadh-Pp~{Eb@e)xhLNhC)(g8BeP@ z2P~s4tP~wPcT+|}I2)3>1TqS+)A^sP;rg_=tHlszhYj?%#KA#{u5SZgcDC*yNGLFS z>8P~famrp|J^NYHsq+aQ`oPRz06jp$zi)0T0(6P`SLOkyUQXkyEcLC;i$tfa&=beR zF_PKJfC8|L3`^~6NK3i8NI~FiPaJ9Db;BT`<;t!bTQ_G)p9cJ5t6AI(&q2A66fR;@c|& zL*ChVWwzWL5HRY`pz9NO&Xi-{V(dc0l;vCxK~{rve^xCtCKWbEj9wDSBqa33!DB## zjvVj)W)Lv5CC52KXhueXHIz?oLexB5Fhtn-?cHL{o@nf>BMRoJ<(NK-<_8D%z3;F7 zpSvSm{rv}Ucko+?)n4Ne_By^_&!yY#?m=z&q=ZGP`BrNF(TS#lNL&!0w+*Px zH@&6rNFv5l8N@Ty#c))VSnWkCifE zx1k}id;0=C^V-_hCvmC26Y-NLuVh4ikggDFp>>~-h`xF{tHb7f9G3bhBwrF(){FKv zaj0%_3#S?aExtXA73b3ZO@3L?wJ zk{j_}T@!fcW3Kvd0^4&{{Z;3u`6PkEo^>Tp&naw}&6_w5rLT5!Ub-9M`m9O1@>?e3eswh(^PbiTuKRaPy39`SD&E$iFn)`_>4< z=m^eKzvSYc!cDgFTZ8*iPVo?TLH9IUpX(O(-rY5}KH4hYod^ws8K?ylDX>!Wy~n@X zV1s3`b*G~i#g`=% zOg|k?wDKE&V;6(>Bsz@HEtDu9tf>=P=C5`<2IS>*swFNRvRUq~h{rr>G0AW0DtzP_ z37nmW+Y(D^ysmlrcIEciQhHa?>3BlHzmUA=0HX$TXZd$c?>}&w3|bYGh;-=}lyEfx z`LtYgiw#jp8DOI%WT4o!uQ93IsS;6pYa^l(D|5*QgaaQxV2&}FQXqBHwn36N8t)?Q zTywnU)&NT$n+~0=pD}-x56MSA;+zy#iFzzecK08AlF72tFq^x|tiD->5jZN4gb$yh z7Tr23Bw+lABrAH|T2XN0hP2wNdqr$bZxV-MRD@({;=p3DkuLytSxZ^@!4;G!tX)j#cW|~g4SeZ!A!bytcEonF`UJbemn~1*uw)E4W zg(!c7G5Bjl?U+x$#8SA9$b+IBXCCMf^(X6e(~`PbH<)m6ts6*P>er|50^q5QU$ER@ zoSu^sZS~!v2O`3ioNsJ_+hJDdGA7-YTiXy6&)&b+g>X*j!$r|u|GH^mNv98e2?}eT zXNg7`6DlQ$HgNFYpiG<|8?3mvS$7_gI>kz$noEqzuz9*q8UkR*Fi` zzeAMAQ~mq0Ja|855I1e2^J&Tn%-Q$1TU7OGieg7otvF_(v$SqwloV!yPaL~`6cRm3 z#YX%#;q?_->?@xJU!n2;Nuh_x9HLl$y(X7)c)XBVD>h&W z3l49)R!j?{eB2z)4#LmX^P{m%-payB=ye_Eo1%zqWkQaig;(y@dE>6yWVgJOWhCVL zdUpL@f)etGQNszriRBvTDw-9dgAq-X!m(3UE$nJrNW+|3eu3Bnx?6xWcW&oYuR4=P{duCIm(HZi~*Wo~~ZRUjDK??yDV3dzCsBmpCS+qMJ$CR6q)=R+X&m8f5_yI?$j)|fIQwV5El%+`f*i+t3m>Nw9}-c>=Aoxc5XU4N0M2c1}N zBJ!C@xo3+L3SGl7e*}8M4Y^p=<6fl71gN98;vY_>O%dgn;2JYx_l@0p45{z z6xt)9D{N2?x1u!9dgR|htty;jTN zUk8C~mE3Na?#f;mUzK{0__qn~pEO(a^1@X9lu*sq+DR@+MUH$R2(6mHbT#Gm?_Ac_ z!ke_zt$zRlaFdfyHr42QhCAU5w<|O>1=?Nh5zE%~Ep&;6_c3L-M^6SD1)u4I5v=7EYm-rhE z&gazbtDp7!Q0+2k3e%lD(QdM!Yjx=an0O;+b`*>^@*gD5J5#xo;=3 zM7tj=b@sE$&ZjX9tgZU*vR;~gU@%kf=Fbx9{NHX#hi@#kdM#5Rcd}Mq_6qQ)OcQ4t z+zq+&(z!v z-FtQh@^L@0PY>$F0$3GVuiRJgdt^&368yxqd}_A&S}G4S&U+TJ`Tds^TDM_y-Q#h9b=l?o{W3i86&9a zjil61Oa~#IbS0#y{Bvk-q$z0hnyW3zX%cH58~a(K>YdBV=pg}3 zH6!1r&w?lrN(3i}Hm8H5(tS>L^@2nnOH(nVhQ98{Vh#PTiAXV2B9gC(HnA|v3221* zrAzr_2QrUdmgICRp&wXMFu5O*etJ48NogeR-&MFoLTx&^-3%-?cxGQ@O*m(h@5FeC zZ<>tNRfBaeB(N`xdO~guN^FhIU$!E4WBcPjg z`LH>$K;4XA=hdknU|;shJZPTvV(ip2n!Myy-_v9!sFW5||AU#53ATjpBp6NyuV_E< zPhKCX=PGvGXKWrb$b*`%f8`fmkzH!)D;G*;8AOOdye{7REe+HQkz2nE+EK(SpCpDj zgjI?7Y9zU}+RxZXjcV2xtxTE4pSh)HFNGjcA78%r*9isnGac25!!6siieh^jSNu47 z9|?_mQ)X(2zDp|R7JIO-;#z97!XS}d`eLhK8;0>FeHaG540 zw-}l2p9%E6TSEMk;ue#GgA2LZr!{&I2Q6R_rKA%HRQGh>56)zE>#6u|yP-vAY-+9F zfURV#&Bm;i2?-_u6vGXrZn8mF(zd9>TB!xt^iMw9?!%aLSVHVtD$=}^>hp=Esi764foVY%+u)AD*{v4yw-x&zeBhDTVf%rHp@3( z0Y!}OJ_|JaB(pH#NiCKkPh^@nq5X~@}N?uK*sI>udJ$N36b* zxM!JBH$8uTKVr?No_zR=*sP!aZ?O+7#n{ZbG8r|jP-$qI2~$X~*$f02j;1%>S;_$% zdN&9u%?EWMmdPW}8W+0GaDo1nX!@gcN0qrdJ!B@~G7iPkYLk0Q)%2@3y5aHp&p|XQ z*K;~j`2P7i`lUDSwlnV?e3X(GW;h%GN z+>j!4@9bZu8<8}ixC!?n0ks(X#w0M3BC1%HCjHYxXG$gP+ATM{Hi+pyXd@g``2cBV zIBlnAJRsb8^ZbWPayhSDhr623R#-=VcSq%kTmCA<<=G`^fmpItd~EzgWNsJX!Z%oC zN23Hw%<9732_br&SQ6{dQ$dr$3p(@XCYM5a&ppN21;!(33Uus^TH8FMh1J9$+C8}8 z()4fD+X?73B;8PS+A|AZ#eh6xpg%2Jkui0woIO$_1kTJMUh)>&n7zp5a|7rZ#S`5$%>Q=VlKW9B3*Xu z#hc_6ByKqyt&TY3y&{3-Oto`q7?^-L$28b6G9V!P55T#;BYFyG!M5z?g+a<(adibK z4`qiw&!+QUL^uPmUrVN(6{ycGKStA<5&PORn77kGi#qxW|Y(|~+WJLwr z(iL=9a$^pwJ6CE8Szw*|?ayf@K*v4#B^psk$@+0|6`uOqbV3rfFfNErTV!VQIVi7= zx6xHD0NbK9ngOi7CxrS^T%3Wliq5*ZfN%mqci zc~#@oxvS){EdLl`fG;X10FQ4hK+c2_5q2WO$JMPx$U+ zpF5-^dIrt|o7B*(ON-QG# zdNP)eChUeAt-Y;z`zDFi5M|(+c`zJupc(1zSyaFk!*UEdZ-HSuReQY3`Su{yyF7T} zQ@hiyURtrT=#greL{EL_t3^W78k#wU1Ho%(ur-1~Dw!UYxA_+rniTaeD)Jn1Nymz? zMT0jo2%S-O$xa0|7?N?q-sh{s?*=Nm15c0q+P(ba(^X^xZt$C*QfSusx3j%+b#m?> zZ47TS>qN+?nhiZ_d=;lr#-3^2T=VPAi2_4x70GRz-dCssWfY+yx==S>todxua74)n zu*SV~cgU$ly!LIEWaW01FsVBV#}BU_+QQwso#fr;28}JyATW*(AJK1w-`}R!2*|Lh zqZV}Oubt#nGxKYD!7T=0mneM0>q+B@fUXq}imQspvT5zh}&_2VG?H_=nZTyx|l#^u&qH>MZs?G^m z0{9kaEB3jFgPq7BpSpxru`}BXlqu6JBg7eY#ym)VB}aStEw5;ig6etti6bceMAR>J z{d7+>5KJ6?Az=NjJajJkJgd7jgWG?}XqJcUwBZG(kAxeJ~pgTB0C7But{OTZx`)4$zuJ-FEJ7qicqgM)+8=Ml;LT2>j7!k(!gF;D%1Jt;9 zDc%#sh01dMgz`Ysl8$aUAoPj&YJs_IfHm(k%0M(17=sj}T~t!lbT!xwo%eIJ1lEd5?J7-2hdb`__5l--@A0M|VyT9T;{S%28vvm8e5{8=_YL*eaYbYNM zIm)GTp1Hafj*DvHAiVeveaip6%+6J|#tpevXBPT-EId+3g`VqT1`8R)jd;C&s-N<8 zRA|=#-si=^2*>ydwwON%@v!|0mg{|IH82OqrDYdM{tk8E8#07;T%Cx+yd0MLPqI8#!jCQZ zGTk#t8c*gR3;iW6%wlF+6xAyY2l|g;foS8Ma<^yXax1@xk}NYi=E;0vQQY7q^|ps zEBx=h(|17?mkc|nQ?1{(@;BbqiKd}AwL0&K-sm8`+UR3aVz>Y*Z)WYVB?si#(C_F4Wz$Do<1Seu^jhxjG>EbY4SYG%{d z&l}unA!zGme^Hq%gjmgJU8b+|F(p!nR+plr6>!a>PN_>!zMqvl?WflAXVu;c=dRmR z+j%DNqt6yhwo8-MEU#C{!YF*wVwHKx@KYq8j`>QKQssLo31Ry4&43&u*yyxR?jmKCAvcU4A6ew zf#2m_AKplk-G8(&$0BLLUgc49P@+dJO%T<*VOnC?ID`JqQYagZUFJ*Ad#x7RKz|KL z)@kn5Da`SpQX}10=sPS6OyAhp+UEEJ$Z(b`e>{L7O(TK&LUn99o=JXyTSz~HVf8Dx3rObUzQ%9T*5$`%R&heZQECR0@NvAASc+-8CtQ|;72%H;bEA5` zX)>r8EYt0^tt9%Nn7uV}NS1Sdgu#||<-dmU zB5Y3J#l0y`Q1gLb6XlnI|~G4`s4Veki0HEzCcvTNFwr@_&dOjfkuBY zHnO}TP?eNDkhNjqD0qm@CLDkQvo;x?Jm=DI4Ro*WGJw_AOA?CJOGc7z^UpLtXogw9 zak4Xu@zYMVX62H%QXmBOZIw9w7;?`c)wp#pNa{V8`?Ic}E7kt=!!=TSV z-#KN#Ua;j_VC6@r>qW~C%V@%$JWF4i$)M4T3z;detO_vdy@FQ|W+#?K=~43zLEFQ} zF_?w#lrEPm4Vz4#yEQFyBsT8<Fzw!eNZ3XP|r z3bWzGo?-ea%=$)&sQ0}}iRrKByPDr@n_WQ!u9dHCqBF@WLi#)(8+V~5lYH1@ z5-Z^p+Gvfh zOX!`E>}urfRBnI?)QcB-E`B=*-7PhmW7FCf@0+zMfyXm-?lPNB&N3hzPgC>N$`K-xMXyi&b@I&^;YY6jJXy6P4LVDiRT&IO{nAkK zHu#?gf+CWH0gd3r2tGl^T=t1)U`+{&opz<+c)d#=mq z>G7(p?!of*UgU*Y9R8I7`Gif+%WX1&^=G19cYs7Ji3e75{SsCG*>i~j{{bY`--o(w z+mj}m`e1?vkq8K%|GJDd_99C23}8j-=j)^9w$vwgS8 zsdQ14ILXf&755{}TqSgFu@Hl@o~?{*#B+`(jvK0@l8autiILSo-~TE1z2VF&b2MNd z8J(w|hO>KqNZ-_0sWM)p9hFSJ)5VH<9--;Ww`tF-()`LmxiAuPOUvjZq2!AP5%7=Z z$Ln;p{MhqB+fKiM>B7UoYyVCNrj{{=8l!y%1*0ad zIapDhmR0R`b50o2qU0Vpl8X7}E9hFex+mJn9CK|HaFs%VeU@<{Am)d;du{&YLJ@q| z?tX?WO%GGVfDr97FJzm&gOz)c7oTcHR_FTijNmAm*R`f{6vOX@p>liSVxK&87oNGd zB9Xt?Ks|u7A~s}xPOzW*p`Vx#<8((W$7y-rTCPBD+9_+0{|y#04Q7Ec$bN+X8fR_w zd`Sdv-yBQjdQ$3%6?bm0V4;45wVH?)wufqxoRj(GjOIx{y7D7ER|6yz?ra3g ztrOkJ3#7IK++5v7twl(=rCL{GE0+FF9UrpX)~!J_(%9@k$;Dz<6Mv-# zZQ!Kb?cM3cnpTnz)iNCMw<$Io*VhlZ@uC9og1Q5DXufPw277sI{^N%9cNvBN;b6Og zGqQM%q8KKYUKBuaH;6xHjypQX$oLNcBma>C{Gv9eU3eK6wJbOj&?ZSGH88hwq3YIN zJMPfXsX;hCYT$!1i;`g7UXfNdB$aQ=CL3iXX!gM<`BRQ~rce7XJ-!0~5iL?%)Dym) zZLG+MO6wR|IGOV9D)i@BgPZQ=f{=YAgy@kL(Hgu|_a=jBfPy4Dz-vzZ`P}!m7Kjm5 zAnp6!raWZPrLRq{6)|J}tEkv+rk+~}%QYJ^EFhos!yCc|v#o86KxK3Muy%F%oR8!O z`%RVnEYg*s1Y9kiqr(Xy$-gOzkKaekfatfIh0E(mmtfJL9wwyoZ0muY>D6WPj>R&g z^Nc3c;F&Z%w*P6jvPF(x+rUR5oKG9QU-mQW`<*6k)^y^?CMG$`XAo3HtV!S zon`C^lSPjA?SI_sXh-Ag%}&bmxn9GlqzWrd<2Ke8 z4Kedadh`JtR7zfMp1ZtLiIqTMq(9Vr+~ek_<(5wNF6Z0BUX`wY0Oq#-i&Cb(0#oj$ zd*g0IaPl0dL!RYyCRWE(DS9HRU{KSz>QRXr^WB;-&rl z>d#xJ$qQoSukZ&cER`y5N0-RNX&tEy+1+p)CsXcNKTG$nUyNxivXR>#yiV6Gg1@kc zHQtpo8gTE~3rOFDS1eBaPNs`YS~&7=z&lcujXL2vV3P)A47bX23&AixNVHJ+-$~J< zDZO}nvtmjxZRxSO7Srt3;pAT4#@#iqf5`}v^^+j(57yr-hhQ3TV37rwwN$wn!y8sc zH4s1U|5W#u6@cPJkf6)b*~j2y$j}Z~<<*2Q9!qRLu-!BHnX*VsrMk& zOY2+kcrssZM;(pCUCAHocu0l6!mm^ueI-->dd@-j)8f7Z{c&(8ayLvm%6Z2K}b7qO*V|AXg0kfO}XlcZQ(AsPFV6Nq3Np%&kfS0PSTAWS4fd5 z?(BLeOMKdET*Sv>zt zUNIdCC%dWDe#pC!W5R1V@sR{?brC?Dey zM~v}_#Jrg*@tF&3tf1eeq|Z{G)`ULq)w)*e!S=RYXz|R+-1eay&H^6oFQKwU_u&dh@;o zZYa8}2I-%g#0o9X%W=J>^}jCxGH4!adS=BvB#Im{_dmN(<2ykeWMS2ZEsQZHk6-j5 zGDvr%wG(%Q_qQYt{BL__|A!D#@WD>86JGo*&413?6rvoN z+_<<%D7hw76H@qenk?OAoaSTMH`-z6?5{0zE=EW~^7S7yJ|zwzGzCa>NJ{-A6E6RBSdYs++DaHq@vtl0tEBaV4#3Cn9;S zzuI#?)2#)au3&?1HeMO41<*WS%{|oJXV{ax{TogGA^q=rPnVDF<|b+FzDZaX81<6m zoeTqVPZ_!Zh__82a>Q3@d~mZ^Q{{hB8X2E^d-Glq-=3Js}d^14@oPG!C zwPj0$B$(Km`T8%)p}+D;`6ktK<_PzppD`Qg!hAXRW^N$`;l;JFa74Z;Oj{Z#wGfLp zyfg;_<_z=ey{yGu?x~Q7i$bqIfFF@QtPkH^0VvYWP5LJV)nRVT`@dsZeeu(5r|EZw zesnPW-qmI3Qal(8T&;?C{AfM`r3N zrr9_?bQ(;DN%Dz6God@6v7Ek~J83;xfrA zQSCehp&|H1x1!`hOqO4L5(UWYpGlrbp0>P|$>rgq``S&Wa1?oM?Zw9i*5uWA^Nr)p z_$N5ZfeW%r)zsr>>BT2F*;4G=)=zy<0?JFX==;afW5+KtTf60|ivf;{7n$FUBlSoX z>sp?XZ+Ejl4?NTw1jdiEiBFxM%IKqV;>>x@Px#CG5Xwnt^CZJN)0ca}7qtuA?VC(+ zBPt_8XRe@ZnM!QrOAw5uIOU#{e>X}D&uS=iJOv5msui{q`C6UoN$O$^_yZ(Ah>wCE z@P8*T`1|QK+1=I8kh7%8Us|@^fd(ls(=PQi!%tG<^<|LKxTjKu8THF1cQBpZZp_@D z(hIB05P8aZr(9*;Mu}f7?E9#D+OPf4-^^I_*R0qS0yWUgS@&a3`!ks}RBPKZ;I*ya zh~l4g<`9utSigxZzXaBL>^P9^K1>pnlT3dP0J#0`96Z;1bn_2D0GIPa%Zh^g#k$$j z+m)&veqvgu2h7mP7RpPng@LFYGkRT+1k zgc~Z&6A#ub-q2PqQGTjS^{sN#ON-MJx~|CYWIGaH-+k78yplLky%8T9eiIQbq@eyu zy~tKh`Pa6Vf#K0p8R*~rxOZz;V8N|Qk-xuw=akW)mVR-J(MDVr#DiVxZ|eVMSUdL0 zF-hLoH@_IoFs#6oWZpD}{$^tDz>2hw!7D48wOqi zHizfW3PReMwztp*qd070xwkIn9^KI~7Qy|*GJvV$YaN~AQKHLvxPy*8s<_{L{3|+2 za0|05Z+Qz(d|j_!ylIf-2f}^T&!kG5eIeBtV9{qEF$TLcV*X-~)OQ(o;>OZMg_&Ed z>+Zt!)_=i%9vbDTn$ald*QFD(oWR8|MPFP>cY}Ld^xTVzcZGR?#9EaV`vj5UtM+N& zzB1QyNv-hU1}fBXk{y0(R$$0u{ zpGuByn6}hng!;XYpK&FsG>*zHt_`lj>Kd>fqyCxn7qCX%Np3pHquUk?GGhu9xEr zM&^u0MvT4&%Sgc0fG8CR8boH3=LJ0=DUV{q??}c5yl!?%$pIgFZML}y8!M?frd}kB ziw3G`9eUR>tQrX>0G)!Xnl22_!?_TIE|TM z0twn%Z3@Lg4EkV+g&1`M?eL;6cRTlr&(vyV57NhSvamm7DgoC_e9>na2;w@vIoLK$ zmnHfI7S!f;*0wiv@ciS2e+z1;BJ9- z*tu0$2Q~E4E^}SW4+fmiX?(5~y8<}uhm_~56&ROR(Fc4dvmwCw+`@%M2Y(+ zu{-pA0Knbn`^;zZ((?z;mv3ySN?l7ZrvH7c-jb*Q4|?q|*PbCpS$VkvDj8XZlb3^+ zC{PvL?*1-wC^TX7RcEk)Z19dsBh}{@fOn6=T{fEfT1=-t>@>AfxqtBxIyS!;$T%W6 zIRrtS9t+q2ZZn;O6q|Ke6-q1r037{q-mZC1Bu85`5W;?IuKxk_M?Pds{p*yZR*JUc z@H(Y~$G?l0U%31Mw67gD?mqehz|Z{wWU&3bR`>!St#(qdq;1P)!?Ii_Q%7kC*N10% zB_&KQ=rtfU9eTJ>`q3v_WnP zB8J@sJ62+PH!W(qEOxziJpZRDK0uO5#lVmdX{Mkbw0W)cFAQIyHV=~8U`gn6N!HRT zQkmRLZ{T?M`@V{h9GQzuyia4Ok3sU1MMjo9iKD}~q|wpuR5tG{xaVL09ynn*Nb^55 zDSubGIcmNEAG z0oTsHPD@@?2BckXvE$InF?FuEMg7X=WuO?XpQ9L0wc#xOIe~5JbWRNnsiS}3Y? zdZ^1@C-Dlb6R{UtWQLYO1Ir8Ug#LBc*LIzPxu>6;SIq{$7ym?;b*ZH7{BTyVbNVU!M`|hy?8ud2yJtw0twb*dV4O9Xzv?Iv~I-|~e%YE29 z@h4sJwLgi^WeRX(FD%5cp=x zuck|eF-y|l}2_K?Jru>GI|m_CT&!q7!3&Rpq}Z?P8GOX#J8Cc)HYNl0!^ zZx@1A>@WjNSp1iq5p`tTk`ap{TZ?U-*6du&;=`uowKyAZa!p|_xHOshDZ`exf777T zx)P1xAt}I~&3Bye304CHqIq9Pclb7*48hEUS0!icOI%E-8WyPJ5nlANA<79H!yY7Y zT(8B4Oc-6af$#v_KPvYuFnpZvLFFx|hEf7;QR@eQq+-mhS>yb&7!NU!x{I|s+d4ru zP)FpoRHMtaG$23rYk2nZ*2J?(4R~`BvaZj-1I>rhPeQ(k?f0H<-3K;_EKFm#8ar5a zOuWYtg2QD6Ewh^s=9nAqH`(kqI?V9SS=?_g2Yc}bWxvndn4^?TMdLe5e}{GS`$Y*B zjHH;wR2S5-Q*LdW+D!aH&$l!VE2PU{OTdIInNhR@BdT*Jd(Z1tz0EZ8`{75wcD1ca z>$4jiAQY-*cXqQDBI4-R?m?a)nveehP=2}ql;MPZwk5+eQ>Fu4YnMgbq4ilU zvbDpI{MW+lTPtJQP7V_+f=WqB`_(4zzc>EH@T`5KGqt+TgLG1G7Ve&WQG)$cNLve0 zyn09F2Nkjv5S}AXT@{wv5?2e_bg{V7Pe+Ll;C|FV6!-%$ozPiPYK8Cs0AfS^E*rmA z!^VaZA62sapwfB^IhyCY&^@U;VayMva{eyVb@^LTKQ}CvZ^)ik_5Qu=cGX>hNe4su z;J4=HAHX;I9T^e8RX`ADOVttIZ+A!Pwj+S_;QQ|l^ZsWNE^{X6+!JK!yUJJqkJGN{ z#fhB9X;t^{;*H0ABR4F{q=UA>j}D%f`~ipxytR9KX$?J#={e1+f(q5Li-$!?S6co6 zsEeldJA(fJgo7`f{l8G90RYQSR^npH8TTKp3f6U~zbe?v@Uo%PtkI(yXN3Fv^<{v0 zl{u0k7QNGXBYv$HIz|vMXumPJKY*0$dXMhxUz?Xu6LGG-I@gzVCo(boW?)y|)aph* zoaB*a_!?;eo+qtHt@EVwVZgk5z#~3Z>r3AZxaq&Y(_?AfY+zdBXO#e)f%!GC{oDO1 zbUIGrsKK*_jx$~Ox0{}^TQ8-S0uXE)sPKcO=l@nJ)2-IvEW?d|9iQ7`oBEYm?7u(x zAMQ_SOAkQ{POx0!;O(t$4mUd!UO>P;v4V8seHvBlm{;b)6`AZujc z(zeH3;!_5dS4Tosxaj! zp~F>FDlvBHtY2P%PA6m|ao^ee8JkI`;a+f(|Uh4O3o&D)bTd*kG)yYdu zxZ0#hOXPr`TH`yxWTrY)umO6?#@ZYWhERZ^4uET39pfu+Fz^Jm1Ib8>{I z#`i7ln)3Mik=(&CO6LISSwp{)AQMq47y@(`XMbEKo!S!mbH+PCrC>vQEp{=gEhS;Y zG`W90=^FP3#|#mAybbRsKZY_9abhZXDx!wsNB-*=D%pGU75&C>CXQmpmFY?}i>j8l zprH>f3y_5-wgtmHul~ox@=JJF4qv_H7UHolyV96SOT!t8%hrIqb)9`p9H@DIeH0O6 zzEs$>EA%W2YVmD4;ujh^^2Imie;t7IA4dV%UgBb-@Fgx9Na?ILw3-`V9-mvz)hxDAH0rn*GQ?K{u$w{hhS< zdzZP7B_~QNt4nrK=hD?L8XjIQVKKilIFV(056^urDRry=7^*NP06KV%`vdp~()zOl zaP!J>@&$gnbRGZbu&Cl) z$s5+7+U2t*hv2cn^7Ed`_i2~lcH>F3W6%jp&1wI3%v84F^*?}fg&e0Ln#=d5KY)|U zt#>jufNL459R@{9>n&nYE&c_3ZPoBhRg+EpRfhox^svxMx56}318#)LUr)+->#b@E zl<{!uD=NxIzoOmnF3FbkuU;}zgOj!;DACOa4%uy}lzG!l{mHDW5WXUHmiHb+bEGKPEjiASF^Ir+b31L2xT(Th8Zco}ZU;S?r2mb%Qu4RXH-Z)G!ZZ4f_ z*{`;{V){d7(Y5GEVgWRsq7;M|(Uoxc?@#`p<$Ne8nt7rHGzgh3-+W)%mx3 zlt%d7LrM&ejNd~a_Y;=TcZXAZ>d529PK^AZPiL{qs4RyWKME_r+P9^gp%P&kAIlI~ z-xk%hre7hb-cs+t+%-DjJUI%*99t>)?-@VvQ4m#k1$a$R-{E65q+0Uk=D~sE`)8NR zej>zhlRou6JVmWi5Q}$KlcbF5n&(V)72IL3s=LoMkj4({j-(av8e5E(D#*R5Wr!L{ zM88;JU41#&!*aB;VxK*q020=6((spw(UKoudhXjPQWDapH6)=yHH^w%9n^74Q;;_r z)hV2)b#Ba|Nq^6f8qFKKnr1HYVL_tUd!zb!k8^FIh&8UJXmu9B60yuQY>RniD{uI# zA*#<>6Pxa5h#7h3S-$`et=aYed@3B{Wn1&hOtsWaK*)5(ZNqyQf^aFpKxagzhtHJ`Xm8^+zeWqzGy0_$R;-H@!_h98;WXSUUp??wDf&b1ab(^ zVxk=mQYakWTRq+dJwi6TNe-WhDDP8|E!KIJNWuPMjdN#dd4iy}tX8l=;Oj(>TC9+& zY5LdLqV&d=s=dnevQ-MEu!(5>=KqJi_l#IKscW_A$O#-1L z6a_*H0qKOME~QJ65;{l;NFa0)LRDJm2uOe=fKsJ5>BZwZ=k9Uu+2@{d_c(ixvG0#P z$N2tayg%kQ=R2SIy!qxkr{e-8eYniDWYc9*$eJpcbY%blV6s?<6Rjm*@t>|Du~s9h zbxm0vUM`&eU6mf=F(8R9ZKMdinRqzwQsjna9TjrJfuY(%39BhWnid{9*9`(060!JppB;u(sYRy+x6FA!QuNJ`J^iIy+X@SuPvZtGDFwtXZ+n`s5b=uZLs&FIRak zR5i22O|fHM7H2-#nfxXu`VX%jd~J6pbZ1Sl`P70CzUWZRkn8{Z=Xu2i{9dA0^olg$ z7eLYNZlIyyVC~h=mt{!DZ_%H4bYK0O%wbrb#51nUKNf)pm3(&e`1sJRO@Moo@Rt?IPlijmIBD3$C|V zdY(?zs4hF2o!Ogz>ibOr8QznnRfA$-!47`pHA7*BmuGhjYZoJa0nV&{=b7>S$2<~% zb0!;6@QA9ti+_JTY3V@eCi{KaAFJR=_-UF%bS~W!{SiUlkW5i8DG;@LCe^17$x;xx z2P>gOt~}0r#ddPwuJlzLh2~MQ`K`QgblikHi94g5Q=(xm$E-%ZYa2bF({H$}HS& zHh^|LL|T;p($T~=NsAzozt3Z7k&ipp){r@ks&&5~h^cRkt zJC|lOgL6R!@HLCPplc(B^TdlLv*xkGCy*AO-Y`Xzsa$5}ybaG7@p8)2cgdN(}LDWlil{*TQdWm|HGS!uWVzpbx zIj=%ZBRz`6?Pchx1JweU?8i3jVL3Oo7)bYQtKqV|Py^w$aDKAGPVDNUm1#rbi}Jte zX>tRUn45CDqGuvCIAowc2JAe!kIiNE`Af{#8oCvDpIGTfM)T*2QPOns@-0^z!mX`< z+bkwnZ)28cbB3Kh(%>cQVrVey2hPLB#*v^Vxi!~}7ZaI;;U5`{aYp_G)|5{Zq}C~y zs64xqo-y4X3G<%dxzQTA69@CWCF?~NbzCu{=V4XQV~c6Yt>2rK_n;fmRkOh@_I|3? zk-c{(K9$N9KrJ#hL&-|Pum+)TzwP`P#iv1#Du$Hl`>2y{#jaGm!q>5VK5%KQ1<`Ie zNe@mE;~MV3T_)H?tY5$JiUCV!tnTtb^R_ZOo##yxL=~olr)(u_T|WAr9C0JQHn{po zUmbh}xFDx;Usbqw^aw@nQ+#6Q2`aC2d2=IiJUM|o(s+rn<3cnl!>cuvLrkd4xA(rx zhdHZAu$^W!Z$P36B=85L&AGdcH+SUbb5g=|WM*?E&8r?Y{G=2)aK4d`3vqoJ1u%o{_%!cOtFrn$M z;8tHmo?Z8okHw<0X_LEBG^Al!68<&>3&jc7Y+0_YKSeZ-%@lo0&gM?~cI2MKfuFpL zGP>!}SzE^cEFLQWg}Ym2O%NN}5j8kS@{)^>^a>@p+)(@RhGGccz_aav&jA!FX2N}@ z>|?XUPp)=Lmb-P+GTCabA<1qURU0*y;m>_(NX)2^7DqK4?=DBh^bR)ne2sdGK!v4Vu3I>~||Cec8DQ1<_EMuq()MlQg01hP zJBd?yfe(&YoPgi7*Sfm9HQ3kkcV=-Fbv?i@QK4$ln^e`h^2VN|+;C}v?eKbTeZzHM zhLjeEZd~0U>09w0e+v_t#pc4Iu?a4hARCi~uUrWRjh%+R8DDdW)L9}~OY|~TO`EgE zuY&apx~s?I%#$%a)GfsZC3PX?fZ>|+4-Zj`E%USvq<(j5M%ZWO?!!kp5yS=_-FW27Oy{G-b$h|MT|3-X>J&jLAt*Ssg+@%lV zI=Z|j6ss4%ClXdEpi)+X9f0G>FG2lW0*F+g!b1m2XEnlXUG9w~&2Uf#|i$^F9gL;#qvwv+39hTkb2g2)>HC zSKAC#b(XypQVmPoAZC~IlT7$=eR)Dvi${k zC_g=qF+6a4!IHK)9Q@I|eA&_c>@xB7Pz2ylhArS}3dw9G<7o(c-MInp>!H(ErzfgI zj`~qI`hoTr-n}}fW)roz-#uG2icwuNe16U}Ug6ZEcR%3EFFeA z>*=<<^KRPoom!=jOuqmJ!75|f{J#&YfxiGdc9Q__F2JS83D^n~jk+&88purM68J0w z5(#eIKEBpdhXIYRYoXq|)VCU!;)%2PanBTWh2i)WksmceB4Fs_`Jn~G{A{%n>5wCM z6s;GSyaJnJ2C=U_sJ48&V%oQJc{kl3s3^q5$6^utC=#gA)T$Af--YAR7va=%af?K#;3|RF7)herWO;j}AAl20 z6W-pJ%r4vh(gVsix5VynQLowGZk7!VEF&K*I{%1xIL>Yv9f)jtneDJIh*kGE^haR& zU#7SbN0ViBQd}CFkNB9L9%x);bU@e0v6b+A6gAin`Y{|D3vApaxi=}Twn=;i*B z-;`SB8S4N;nJnW=FE@c;3vb!gYE}k^SO3@2k2gB-CpjOP`+}scLGRd3X?l5bT}R1R*Tb(L4U9P_d{gy=F{`Rh zeDsmTdNl}SvU#r;A_z~%!{8G6Lxr&GA>1i5j(l>#6%I%hjpfFCn0=ojA7&r4dE)B# zAe=`VTsH1zb^+qiS3d}=OE=YT)(fLq1<4ABGZ);K{t5u7);J9dYTMq| zZp4pa3m0`XlU&=X3Y7=3XQcu6NlEvNQj3ubh5il>m}&CTQ(>(IuO+mYyj_Lt@(VreZn~2BHuh=t&y07zl zdPU2UJO(SAbBi0<}^2G^Ju~I&E90@xoVaFBT{f@UI#o}02G3;rDJuV z4-1Ngi!=mu%3(sn*Z|Yy;}1rT1BqR51qz4n^PX(x?`EPShI5|lBK~0KQQ@nXp8z2d?*$B#Ij`Lw7VOWsmm2@Q9nmd;?Maxih~t#GoPaPYSC0=Wp`tY2IUdh;IIzsDmjbyHDIFY601F zbysChL<97N1OrdmU!XqXDWYGZ<05+3tfy?=*X!=-ME=fc|CMI{1JW#j$$9?eO>bH0 zTBcdBCktatimfaw#iz^;smGnc)Rhs1j*C;X04{S559ls3d(nlhozxuR=h;gs z^&K7KSI0UHKRGAiYWASD+_AT*L6~bz-eSGM#Ho(2i;Ns6~ZJ(hIkf%3y10-$+Arl*3^eh$UBx=X#~LlS^E1 zIWOA~m!BkIjf9|1Y*pLT1BacfS$m%ejcwVXaklYh*H_$TeTCu$Lv-KQC;N9t)>Lzc zJi(98r{o!Hq4snVin?`^!SkQtK5DOJc!SM%!9pV3;fUId4_cV|By7uKbWKf<-WY&+hgbM zX{L7EHU7Rb!C&VGXwn*kEd}J>zlPQ{n%6R)$-VwI*QhIJ|1B(RP%%+m0A; zI&89%xnV^3%ekCWcTi=+-76Zl0yRVMN9&!2-+Z05rgRtU|lu8BsY%l<6XxWA{}laXx@ zW$|_Kl&Pq(hFYtnD`7MH81_Hpyac7EpKSGBBzqn--5O}?g4a17bA;oj!;T4bnnFhW z^wv+^T-yXy%+bnTU8_GDNpW;9zD6LjVeFhwBL#Iw!4GjmAGfH+(Ps1~ zEKoD75bX8HIN)|hfK$Ikx0O-qkJGW}lb@p#Cl5_e8gB1RX~YJ?ce~ zNbg~1CNC1kJx`IghzZwm>uUl~UT#MYXB!_KT+?0DKZQbo^U@@XdDi*kKJ=JqoZD~c zcvAt2Hi^toge!}{9TOjbN;XK=>;5J2sKemT+MdN*Vjdu$wLIsMIsO{H2cQF^y66`q zkmk*uGs?0!n1t&pY@9h<-ef_Y)@LYfoypWLI?xHwLLX_jn$%JDV4kN|cSkss$%`sK)cM zuwDF-Kkk0i5P4N-@V2!woxs+vbKF+%@Wz7HNARmftWF zAX`lRAT{P?#ATe7)r(7k;c{oC%@SlW*Aph>WTq(G_J`G#(#`r#eJ>irr?u{hS$B4e zLTFhob;l3x(b$nZ3pg5sT|Q34wFd`x|ys9Eb(3l+~adm#I?r z>y!deHuuN!TI(j4?3$v-NfiKF)Kb2*qkxa5UH-nc*v^QV<7O^=d)1DHW|LoY@?B|a zK4!{6+4==uS7Z2GPfhi!mm-*y->8M+ZWVmxXZW8%zmcy0ZH%o>HV#o&#J2mg{`jI- zKxq8@Bb7i`y)kM^v^OX1dG9VhG6hln-2YLsiN8lC0vkLki2M1P@SAqc%BVEA%S<&6 zN}GPJ3HtWQ*Nr0yxjNOhvaf4K*t#}AR^;wR@qVq+CrqK5hpXt>jubwfIHByby-c+v z@W-3dr_+WH-IwEj0qz84o&^ACX98&N&FR1Qxu;e-f)&>ZA)TRi#0B@`&s1~^;rXmP zeQv^HlK^s0k#ygEP%Z(TWEB+}WXVs4GN<2{wg2rLH7vP{r3bwBBFCrBLzeP@zR*)= z@N&9EfV#DyAM9!0^j(|;N3`5ryjAv9K&Z$%2`lu2L4GU0$F6rLoc2U;aklXFzF*ac z3HRGSEfc2-S9*g)ln*iE4eEO;K2;LP^QWl7M8lg#E-S$bxjN-f?>__FW=J@(98&r` zy8V;Px9RSmPVreDjPL0@^Ky_&iT1B(oZU+c8UO6b?Qj-n;xlU2riYVSw2lTBf4RKy zuYgY5k-aX3Jav1;arXvi#SP!1byI!sJ{xkgkHbWGh)zJH>l?4SW4KDUM8-_812A1e ziBl*4^5#+Q64Q)05{_~mpg89Oy`RfV$St+*uJug;6HZ~r(eGeJz9Pz1} z8gbiYLg(1}c3Xk`EUq66R?Yqb1g&kXf{h=K=Byu~)n1ysJUE_P-1+iH%WUdy4l}t_ zu27j}V(*$mFOppPLfO`&1yVintP({~-z^^O&Ui4ItNBDpE7N0iZx@z?qtxE0`t1om zS?O(o?c(t?47@^;SM=BpG*E@yvrD#W+TWI$Uek+vP~Y1$4N}QP(!QYLg98@j$AWJ6 zRkc}7;&U%!Ssr(B2W|Up&&@PXwfhZ(&6fA+m;W93a-j^m;T14<)^j-c&borOczh|% zbv2wTYh`>&O+xliPqtBvtKGfw>pkcHUSkVT67(wZ!3>5)`}T~<3APal$pUrq1NY+Q zD`?=Oee6y5z2i5R!3`ypB*UVQw*_MV*t7=rAAhxG_fU{tfS9J4Imj&)O^|-`Q4LGo z9a>wW&>YEhWKsjv6zDv*{*)=PbIa0(iNMz#Vdu+j+D9u>nat;^rmgyRPWeXWm-Ahy zQZg_0>EX-j$x|r7Dx7{&+59tq>$(k)kRt@r`;;Yc4cuKu1(6+`!B3zP^LJjZaK9h# z9|D6hH4|G)?%w*W)|3+KEFstz`NG#h8=*YmiEX^w+v#m4N^Hp9`{p%mUYTx~;K z6|J_&cJeth95Mo?6z50c1N@9X!nFTSxbFX6?#OKE*5lbtX4m1c7GatKM$7$L&wD4A z4fC>L>ilSgVQ1=TEsLV?5r+rSWRz9CSQszzIM+>WOB0=7n{vDWeE*}FhbqDCvgK7_ zgOb>tTGJ~*Ec8ns`wUMD2+e_q)BY^dgd?#cFe9Dv0;ZI2`|Y&my>cNRw(9v<)=pG# zzSrt&y5WO?O+BRjtY4<)BATcd88L;J^jvF68RxT$=ry}il3&G#700jF{{lqBT^(lE z|E>7VqJ^S`D{s*OTQ(Bo)$VK^Zld)==ng5~TdS!n^>cyeEyYY@LhyKRkEPpX7fE=_ zvO%bjW1E^skh&^JnT@-~zWcp|+V*_&&tlJPU%g_86@2@CSFnrE;xu|xh@6e?fPx_< zP$4KDY5l=M@_X>?Xq&wkQD~YOwQMckc?u0qn52{zJ4NTLg$aC1og{&v^@QH)&Dyzv zeIsuhSC_&hoC&T#;nKg$J$!ct{4%+dwvT3cg}Oir-|LH{SE&>|e%m%`>Y3fk*9fu% zlK1g${=HZ4R24r>MSh>7q*m}44{GP7yl{wg%MtQsZ2AQVDDM;dDc`1=KRNje(EgYW zxNW$DYD6c0I|g@$`m}8m|o-hUp^9I%Z`N+8hM{_14y(qUwWA$(00+@H1(~E_`I2M!tkP!I4h5O`; zZyK2K3&2BS30M#$lBeG1lDOVC`SoQJwQzYWP2YWW6D7?3U^3}AHUoL*859aCC@tVJ#fY zX}ErPho8L0WLgtIAn!_fdU-PPxjriNFwbc(r6;sR6%Zi~EdDzz8+GL5# z{asl08EIx;Qu6{bsox|ge)e4jR=@-oAGL3E?|s>wn;Xe`58ZWQh%(8kAvSYjLi39dHs!;8MTqn?%5O|Gr!(5FEorhyLAo%db-^b;w9o@CHsI+hG|Tt zZ?Sgy5mGott=wQ)ZjbvHYeURl=GLp{cFU99UIJn*NYBbFl{! z7yMBmc*F;t5C5Lc!C)ni>TKjs<#wmhQR61Y<`hahVjSt^{8lG9)+WD+cOw!}aoa=N zc_o%VnU-rgo9nYl4-kelf5a6(o!99ekU_ceZ(KWm>=wvCxV8dlRCG_KX|W?)U|Gkf zaUx_vIabyZD`7ncA((mpO zPe(V1#SPLGwI|08?_qx60dUU<9j=vvJm+%Pw#0a6qBUw-?3Qd%N{d zZ^l;C+LeZyi%-@cH0**pzD}^X)eoZr8UAdZ z8SL3iHYr~5EZfYh_Kql<`WPaSg=jx1z!l?#FA4xI?LH4LXzX+9Yv5B4hd&RyjdE)| z9w>{c=>^Ja0LhlHe_Ce$_R!A{%-!vV_gfyt+UVEnS1chr^Ts4cITi`o+tD6l{`0^p zwti=o4g~3QnRBYts^cw!B>`^V?)h;IzP5{f+^B_lnb^YBNG$yYkgGguswG`Q*Wf0S zH@FKYIBzZ3>a3Qour-pOp6or+bAZtFt)JNU)#)w`s}te*C@JQtf1hK{%Qv>2R2eD}FHb4)c0SMrgkI;GA{I+m!*DuW9USNui_$6gMp0?>=Sd$Jxsm16u)RQdY$R zbrx5v>opB_skm1-i>iY?0M|}_(66O`XsjDSjomJ9&AP7U^JA7dPe%>H-#8h}_+&%_ z(&GCn}Eq zguqA`B?;?t;e8#)W}l~+o7F0sC=JRPnl;6GEOw9i%I`&=t@PyiN0nD&>Z0ps>gUt+ zAW#}){lDGsdOK#2-vhq%~d*%LvFHwu1iJ6QFV<~l7#BDDfQ(SKNmo+LQUsc z`8g`#yfzWFQ1CKt6#P#Ut&bd^{{5D)` zXSNR2#v2=IC>Vdal;3_*+F19Z$gaiqJ3A-aiH49zfz2*RAf*d2s*-jEePf=oGW#{Y zw+jpNYG_I~&J#`#08Dc0GPb?oQoOx>CDKmLRF(Y~K&H~xl*?4!G42;&9fU9*7`}`o^B=b_L12NV2TEMj6hI}*v zAL%E*Ud@r>NWV|$HGvdE>*@uw(_a_gp_b2ApZeGJ|E!HXd&Kbkr{6>WmF@`At#uVQ zygTXMj0CV!B2r;PxE673+XV){!97)Ecv%9&m^>v zld8%lcjc{Qny1+FYWpl7Tiw*K2J*PZFMz{hoJL-wriZ0|@lCp=i9))}d@J$`UOWr( z=LsRH#^|r7XOJLc?%Y8E`f8)`s6Xg!$MO!IwtX^$*~1J3hkdQl%8VGHhL)|0BuzRI zpEn?z{B^O+X}VZp>|2G!W>g5`nAa|Go7ZidkA7T+9pyhiZf0e6J=*XkSk{elwQX&+ zcE4x$2`5m1R_B(!qSHJJCHd;L%{Mb~pCtpEG8h(RD&7Coj!Yiy{wU&ocbI`TlZMvU37PL z0rOzFvBJraV!YFZYLSPko}0Nnu|8&w+k_m z$#h}1uPIK%DsxU=01;=KL+g9E8BIJ}W}YvaE;d-A=t0O^Go8&P<+bj}JGC&Gi@jMF zdW>%E?V-}Bf>eHOJj+zn#OfX~6^F~=m`XCgDW7~8cldf?pw~-aVNlpnTH4uDqh953 z0#m|=p*2hTxP5l&zH4!NbMj|l3|XILI7`91=<)Gw_q2^v!X*%QqhAI+x4fGAJmQ4} z(@55WsobiDRyePM_-f~FNX1cu{%~ZzPmGE0aMIFn(hnA{_PD4^DGHq{$g1szo9!fl z*Q3r3i|;2;zIX)jSq)ZZQcx`=Rz14hJ>qTutrp{uex@bll7^up-sHlUgYdp76|Y3d zXL^ude_Br^nOCF!ci^P<1JlBo;*T0U@7r+@6lTl1s;un@^S832d_@aOwDOvd8P#x1 zg}(#v_Ah`l3guq#f;+`&t&he%7O?*(v25}EJPA6Wj2m=~O2;x`J?{%izn8HO#imxK zF}*V+$^nWf(v!Y zW;!9*>=}JKd7PVpv`v$;idA=*WggUg{Q>FfRd2LA`kM#5k9EbN(Z|rKOjG9_cFfRW z%zWe?!muJ#UI^A8r;bFmNNt)IMSK*~Bw9PYt*=q@2s68Tt#VPMd#$5w>O6{PE4S*h zTxV~mgq0ntddf}as*FCfl3vO)yS=OR>`pDMb@2Pb8dZTG!I)v(B$S>Vg%!Ra`U}vA zSZF%(Yzui?`{0E6{8F~QWj5Wi^_yVXG}q$YH;Jo_IRX`|6#9i+??< zxyKg$he&XhLO$)TRHzV>U>Q`oXBkKN0DcO17`>pen7ANMHt^cE({{;fh&JD)5GEum z`@lnz#w&38M>Y&pO zpK&Srt*nYXs@3=n2t$J3<7~Ds`yOX%f-rp!z*dHG4YY}FX(?L8D5Z|GDfM)`T5+}G z@3e!x5S9GXla)H3B=3qjuJQ;3;twM{Ii1q)jS5{UFHBllIzRjhaIVZUXTFH{z#Z>^ z3ej|JU?a7s!DeXA%7*$a^Xw+X8NQAPI~fXgx+<_Y63=RSuVT#tSyB!qJS8%-GSBC9 z7}ki5l;2*wCKaaoYBmX8`OLL{3_Oo+A3t?AUH4sO{OlPWVOwns^Un8rV2={wO~(qC ztN+38S}r#z*^d|2YfMasm-Sl+Te)=Bwvb1*EWnw%Np4cX#+R7XgfxuQhieXlo1CF$ zxcacmhN|+^=<1X?FF2;FxiLy+cS$LZuG63}$>FBVf4(@@x za#g9=$=dnrYt;;xj7}zO|DgeS_%Tq$r{sk?rsruGroCp3%Nlkxyrcc2ha9E`fR;OrnqYAfzGLDSRWI zv9qYcnm82NCr_AdZ{#@9bmP?P9jZw@%Z_%((&3Tw3$kaQt)~OcQCg!oO*~8AiC%)D z(1dEqX^h6MeQ$(nEAJIfp`5hsD*%9VMfBc9KaK--{8AN~BZo}BonvuxOH|?u%`Yo5 zhn|;vHGmd6qu*r zXmis#OK2A0!NT|cN6{>6U23TMp2|MKwK#Jj9&MMT%_Yu=BB(c3G5M=18^?m(0@o|; zs58m_vZodFTYDXZNutBc#PKx4=-E*rvS;-CLYql3m4d_CnKj^@t!wZBZ=1KwW&##4 z#dUDJ5~i~v+u*wi9B5d7EJG{tO)~%K0UTWk-oH^>`Z%e^%+=ER%U zUg$p1SYYqic%*c0bvjOdu*OZsTeA>}-!|o_Tx~pWQt$ITGoNF(*tt}Q5ew<)WY|GL zOha?iL_CU~z6xuJ5a}yVvAobH*XA_K8))BlceM}cY+1EeHV(RzDjd{kyYyD08XqnZ ztvu9qCANQA;}*sxN`4w#QjSu%;QR7_LMDd%SPst=|F$jN#$D{hn59dHXZrHfu!K1h zrLL*~4C*QMT7-_vza~ zmOOmY6cal0Gzi{t<|DkU1SL>y+n)SbElPEW@_cPrW^rO{`KI5|T6~??<((OL1`MxU zOFQd}=6bd!FAAwC4J-&kiyhZ>AVA4@?(ln=@9Vv>#(W>1Oa(8DEZ9^z;J(N21iqJ9 zr0m`)@xR{Qu$*cFgDg8G(R{p8eMr}S1~kESP26hpkS4p}fQz6?^c$~1jzDt7@1T>x z3d4=FT^`)qqj?~D5Z*BE97dAQb2;=aKn~uh5vCUZ(B!nNF*wjjiW4)f{5Pa2IY)__{>q7-Gt{FQEUtmAOZn{_LKA zMGncz66FMYrtZOni>vD~;ci7Ubp^Nd#E??lnHJM5t79V5222{VD4xfBpCdwrF~=AF zrbZ3(L~~YYLT`s&lz7_iUx~auHx8Q>saut3z3e}oo*8nByyQG_zXlsaxHRj2$wd(58iJnV3 z)w`t^>e3X=;PmgS*BH69(boj6wh_tTrth0MK3@fj++P5T(Ykp?bR1Ob^3eI-J2%YI z4UEY=i_x3YDEkBux8D?6#8ipHEHcUiuS1l$lo9tlWROocx!{_XN`p`x`(=|Qo{V=G zNB-9GGK#kMWdPv1akI;`v#eZmHQarNFmn;TEkCI+7RUSCTyTL#(x|>McJvEix^WWq z3*b-ci)0~1hotuv$RcZrAaxhZ?W=A5!_v)H!KINSJgBhWW(2!%rVTVZuek+mOG-~4 z8+eDU_+!?Hf3z8kcgtA0m*?t))KOS%H6XoGF4L^j%=T}khRfL5Z7?%Vvpozhbxm`D z3(7q-o@()SseoO|1@seMf&-1Pa|cE%yJ@A*ZTsDw>;?pnvn#3>LbW(D*!q6T4#9+o zQ1F*4S8Q5y28Cf%AFkero+jur_Q%y;Sw0|&yu7FdYZ%cc0mpFZg3Ub7a;0!32EPCr z!XILJP0_-K5nBwrq(!b9+6}45Xi+rt2G@M3aJVwzmqSa}( zdY$cK1zaP<_$!`O{jKr2=4{K8eX6y!Wn2eQ<%+`Wi#Dw88w4FTNpf);s;b>dVAV~= znLz95>T@z-Ii6Mtp7p{^pM~%)AJ=sd-6yRe*!6V{#$JIg7Hi5b?0*=BLxb zJ===aQ{|}2S<3Aj^bK~4L2sxL+qKKR9>GFTZ$mJocImNv4w`U?Uu}^9w(towL&unB z*_xXM46-P~9!5}=n1e4yRbB_HDl6>V>xWldHfgxbI7Ha4ttQ@tfYTXC(y$%ZsXR@3v1bf8KP zW}7EP3`QS(VMEcfQ96rS37Y%E#~VUb(miX&DNYd}?Gy!IYcaPwwSGr;_)X zS;-R|gvJ5wb{UfqA6=H>?|HUqv8>(<1?6pNdqz$hy~?y>i(Wux#s7D!ZUBScN$1(1 zfq$^x;a|r$2LN-F|FtIrlka?-U@iIj!G1M~qZR=y)q>5gTaLQFo7JwjCw99_qB=de z1bEBC8U~DCrt#hiDA_>aH*WS|3xGP;t&}Dg&VDWqY&NY=&W4zz85XaEu!q8}6W%Gp zW=w(&KDTdOMGla(hd7Efx)Yk0%&sU8cERXou#5Ovxn|w;Ikq5OCbB!p4f@`aALeo5 z$Wb%cV$V)1B|rSCh{*1Di381h)q#CXbX_Z`bXdud6#j8$@QuwGbeda4|gG`#kS6MlPoI-A=RsJRQ7#e3~^DXN}B0yVXenkAH$~+ z&jby-^ZOaZxA*3h(+3l$9rb6{Ct6^xff>vR$HTybVQhVdH&1nJCnPDu=NEu^Yk2NR zB4^KZnD(9yo^<1?Y%5f97GKb^wU?bpW;O=uL<>uP3{gtm$OTm#->AV#?TAU?gs$ql zBn#HyMZVlv1uzNioLktd-9DYwbnH@&$U%aM2j+W?pJ#jA1O}h4A{!)-u`}^Gp3%GJ zxLq>`ON7yNQ=Tf(@L^iX6OI@1Z#>&DT-E9DYN2VxMIpcYeN|dc?Q*V0KgOqcVmi_L zq6ZEfjvj}XD`)nkw5>QCqTyxr#QWMFONJ`Pugidh*#VheAb!jW26rwT#@5Y7Lz%;9 zPn@AZB=nz)9e5<{wS*;Vn|ViUE~{)Z;mL4i%>cj86U)~Lp68GCUl7xwP_R;|z@zfO zzamOB9ulTJ+c7pMXSgm5`ITuhYqQvEG+GUk>((qV*oXy{L5miBr=nSEulVQ_-5V6K zqZXdLxTonxKepglGwTv83niERq-^`u&L7{KaNm>Hnyv(pkiE9Iey*kAA3PpEfHw0x zFRvc2mLew1-f2!zoAqrPTZz(8(SB})zB-`kDvZ3p&7x(DCH^t5}eYMOZ&6g6w) z+^z0{TT?nD8VsXG*jHgEZ6K#SfquM)_T-3zXI0^~b)9e+>iI^1FL3Nm z_rj$^j_5Onzb{n-E=Hjvc6!YZ{kB^8rf3&%Htq&p2I3{VD=f|z=PP}$9VB33rPsg( zXdePBUn^|2A!)g0=6UOLAFw4_uj+>v?|d9kHe707MZa;M0_PX#^}KRbqnX~56Bqs6 z|JY5K(5HH(N}f+mhTG*!e<0jh7(PgXb|tKAXQB5QE`P5xwX5`u2Hh;*(uZ>;UcRNd~yo@-}G^^o|?hc*+D5nSHIUH+zzNIao#^<3LNZV3faS~Skd1>jg?tDv1 zoVc8#r>)q1?`+*r3lK}PTa{x)$|WJn{vlMiT%2<(%MMbOy6pzZt15bbUUz6+$0fPs z{g4SRiAm)Ag6fU%%n<#6uF5io?fge6@xsd^zGYHt*Yf7(G8!cFYGIngBmt)jplh91ZBwuYpF)qOTC)%>OYz!|LMHNahe1tZx8B(P&^*V*Pingds}pv7UhN}AL?_3%?WZLHpbadtZ+p{W( zZ`SSAoJAGzpiJD>y*%LLLftltI@G}Lf=5eLQD4SU>^Aa8BJjlW(vus)Ilz9z{4`nA zj59RO!oj_de5cl0wzIEPu6&NY5$AQyQt&(Fcobers1OCgRv2kFYo*$15yqA-2?dR~ zx48g@?fy{4MMkUoS!Q7C^owY|TL&z5wZgZ?A?a}DJl&`xZd*MIQMm#+>Tm&&5ibHB z{@@k5bF%%j-Cwd-L`DB&>HDoFj&2d&wR;yEGz?FU1DG zhHu=6k-x2c1T3+g1$Dtn%#f@Z7`XRqwy1K=S=#V$z`dH`*Uu{eCbXH@h5lZfHF(jeGmZ_fR_II1d^T)3lMNpdIjNA?hG<}(* z+?s!x%lQTHS4ze&K%zm#&bd$JfnsJ8rE=_ImC?o{;_rIy`(sK%CN$~=f^E)C3=o%B z^-LBf)B{m#XG^9<52>cLZF%DinSyF@)8ZnhJFMM!<5CMjNq^Gp;f2^Go-RK{>Fs~Y zqN$@E5!;Ye3(C?~CSqX}EOec(7_acm9G}> z2%hCPrXSt!eaU{#&ya6Wgxe;RJFt@|GxjOXF$Eql0$+!!KCC9{{IM1!0JT@NGL)m(tDG3b$@5v``x|wxaW*J_Bm^el|S-ZV`ThRo;Bw)*P3fSBQ49W?3GsJ z`fuY{12y}O<#nF&@dmnDjynXCtSS)_3|zueV6*KuT3X0s0Fd+bVPEr0zN=6s(-Uhx zt0>OJ3{nnYqpGS+TU|#PfUau!%E2iS14!H`N3_ zA&VaRIjCg&7F|38)+g{@1Sb*%!ohmrLNKJLpC9Z%CO{p{)c`+vX98xb-@3ugr~LC~ zLhsPupEa;Rh9^u{Dny)p&`ev2SYnqb(yW<8rqaYFhCD&`E3I?+{d~iQMQ5eM3}zYy z1=9db>r0w-)c181E}KD60nFo)8jDynuFvEUa(DgwnWi*-->NTxkm=5f;cpi+kug1;?kiyl#v51ExrrFb z1dm2@+lsT3?2&HIY{ex57Ws$AA#4_Tg>AQzNEjVC8y}dDoU1-2}IKM;Y?YoSPyO1$QSbVoD`a8fI7g-|0Rr_|v zchcTse>EU@mOPA;72-w1a?G3z-!W}tQ&P`5I+qiqrXe&fNTOS^&i_!|>>>6>cFvh6 zog7!z2A3@P&}?TlDSMwvr5~DPy0sL*xnfKb3}*~^`6821t@Qz6AHZI-eS~%gFg)HU zRsXI0=o+h&@0w%dh_hbta2HqW)#)B@LTBLB-XYJ*=LlrYtaBzCvLj6HO6#@X!C)Sa zcwOx`E9cjd!}?gFjCe{|T+~Y(-9MM!qQufFL$5Q~PdSsnrpUa*4K#(_I2IBR z>Sxo0PJONVoHks8#?S?R`497mbL{?4gKStfjw(pzgp3!A$j7FUQ~W2|)zt?!xyomq zet?et`|v`S7W56V?T6RxK%r)drEkE~?d_^kp% zZl#Ga%CM;kZ{_^kDyfWGVZ5=>9=j|U`h3@;#H#NojX!|nfFDu=`8cf9VuiP2(NL0( zfm<3c-`>GaT9r{i%lQfn(4603XQ4Vh`iZ&L{7fYGV}8H3icT6N+m#6m09*&oXBP7y zwShuLRBP22;Uj_fEk<`8B#;bo$n+9%K`&sYm{?NSBT{x7ZXl-yt5;g|+%pmDXtqc% z5-SwB9y`I;Xg!~$G(7N|XLIj$hv;@1*~g99YCcGWSKx>2jind58tZD%PVVA4Iu zH+UHMbYWROCe6jj{y2y+*0o3P4J}1TY4~lIb|XDkr8@EOY0&GpQaj}3Eg)KSHM6hN zr;Qm_2*s%i{B|si0ogZQZXkV?Q%4H!x&bXgRgD5={KM2O(a|DZ{z}49Wi2-nlqmJK z)s9-pK#2AmSK2@Rdf+0AO@<8ut^fBqvwyVnfq{ItzhmC{YqJ{QP_qYraI9%K4T0Dx}JY`OA%e2-U~%kGF_ z`qh(Br7l0bNiI=n+yifVulB+$GW+@rE>)yJH2^6`Sm%FrYsl|8)^jJn=Cn!oY zvaJp>^v-ce!xoE-3L{YJTdF5lR)bh7%EoTA$=x88s^|uR7qk}n3K_sDlg}Z)}wxVNt5j@Vb%fzZ)Nx;#S96iZ%yz;!%_!iXfQ&tPT z7(gg|J;Q}xc(mG~wf5~Wl!fZ{mFUTPwiK$#Lv8j+5&9CJbgLwaU%$f2VO0${xv;v> zuc$(M{U5fpXRj*VS1ynAJ~3Vpru6dBOMMV(Sx-C#JRBQ4D(}w@mU3k|`5!~+XfteA z-`uP)K`G=P*tM1|J@M_TH7{q#07|9}GYf#Be6&|pjqFz*EkG8)xE72A&SBx~BWd-l zHgs!zwos49%yF16Mt2DF@a#`k-X5X;zZ`=&4&vfiOx@7kDcvk72qU7OPPNwSB z$w1I3A}_Qoi(cKbFz)2J(qYF#UfuRWXn+_<>X?JE_?ZWn;-$1{UGpiUYqN9V^AEER zGNyh_UhKqY-6>rD)hAMCQyI2#l)sZ;GGFaoaj&;ZnxB;;phO_H$$l+2N@Uy-w!QN6 zoY2jW`9^_Q^C9QysUoe$ey(5VBa04x(H- z1@H?0dLHZ!0J!}etF}sAourI*k**VXyyYsY z&g4d4AA3VJgG5c$fniPUhQTe#sqS`m?U5vpH@8VLT=|G; za{UHssieIfb-QeCs8g5w=7<{3Me<2eV?Dv3a0PRV)$osjk=;3hu%B>)=GflMiQIO; zI!#FaNUp6dELFFjxxH%hd41m0gR8UjiB+XM>_({?a1{3HKoX}?`SPE3AkP9Cc#Au2 zMQ8nzjPJ|xR7wfW4&Fw#2o~kKsJ`*e{H!xp0*_q=NWWe#WE#U(B zhg+6(hZM@;uedpLEl=&a<|_e}C;T`U{Ek)+`9>8qsU@mxXVosaJ@I4(|2sZm3zS8* zWd+Q!4PQ6&$%j`BfmOJWV2qsZbDZyY{<`zgfvoS#sPrkj8kRdDQmyW-QRtT@2+SUP z+&ya2l2dg^KM4Dtz!U1$=4XmRW3FLxG6jBcUHbALb|(MJwEe7*LVq2}gFY!KFD9U| z?2i2SXtPf-f=ix#Y7w>8*MenBO`H{HcUB!axn$`x*nhx<_H{hI|5Ve^&@`HJRW@?& zY8RuYtr)6Abp=lT%Q0_Aqiu(PJ}}^dhTcQFiPEM=1RXR8t-kUM>qSb2xN+-`62+<7 z*vu~u_IFS%@2#t!L^QR!EzPM3MOt86%3yZmGrAobMY`}JmisqJ6$aoez|0J;rx92j^k zuBA9@^V|4B)8O9HowtVqRdVmoGp6-y2=F#zfY>YpL;Lc41>b(Nuna5==SzxM0)J;Z z-(GS7wHI#Gz@NIQ{M5!bfvacj=JM^ju^i1{;c@5P_K9jKc4X3F_foN%IO|#>d|84r zU{(mJ3I6oq)vrzA!$;m82OMc9_ z@^jQD5en9IE`8efEQ!ONI30PsJLW1P*7^CsriSqS&+?M+p5N*PO37GFo#8?X7X}Cx zsNd0)dxdj+yrA_54Td+TBU4#~lXf39hs6#MxpkLryTYN4<9rYiWSJ`*w2kq_iF{C) zU-wU1q*weP2R@R`wqc1rsu*u1WPHBV1)vArkyR!zq-B>lX8(wk;THa9NvD4+sRW#o zIiB*d`<41FNO9uq<`)1d%V(?U*@55B^oFIelfF z_8pcrjz-RtAtADp@Z?V}{ge7TAMT`k`8aJQM^QRGX%lsBy^^6sqS=b~OkFa65Z61Z zS0p7d(&P!8y+PSGK#ZJ*5hAiV_3Ptq)fk}Z)L;LLeD6i?tvy0V?ScB{<^wQ69Y%EM z%E4}8-}({~Vkz-EVu@Ht%@C!DSp7t=Kus6}ghA@*ixZWA{uQ<*ehTn79{>G1UxMr&rkL+A z&DotS9oC-E1xrsd1u@CGVCq`SifL|cj&W(}m#y@W@{R|AT_kz&b1kD)V<1;}@R_kU z{H-8^q`6)9EcO^P){CRpQ7IN;QWaU2)O1+{%Z4=8$-{151q{;v{ws1`*+^d&Z=^ zS28pd6QLP`miwbsDY9?pwzJ7BjnZ2nD+}DwC^`#iUzkNqfP&S&@2E zchtf=8hL~yCm*ihJ5bNe_Y_z5>=NY z9_c0@rDMm_u?IY{sVnzGm}rMH@+OUC(4Wg#(syqxpV>JD+(#0iTyo8({N^;B%SLBN zhEv^#kMLfzSu4lIv#+&`0J8Q69mk(c29MoMP66kPzij+VZBf7(OrUiV^-WqW9t@@s28o|*gC^b|&ihCq{Vjhors zcN{EN#ir+*&XStp4lYNSf!jWE=3UL3M=KI z>b|r7Pb%kzxPhWP7^oA&Ig1hQt0gN}tth8}D=i|9=U#mjG+JNw?0-*T(|Eq@0D?Px zo>D=Aa=)kP-dfOB1MIx~Ul6;!@ZKkViFJ=Dxlv5=NTxH@y?SHK#?&b`ma0`P&C@J8 z>XRgY316>$Rj8}M=zb;omjDH=2Klr9EUS9PE+{0@jHJ8+yfrVikpvo`?C@Dk;OZl+Cf)+73J zOt$B)`>X%jIhyS3vY*I(>Zw;lv|I#*=!=DAxK(m?=Qtk3+f&8Zaj-}xMYlHnJcUpS zI9Z=Bd;`wt^4hF#>hVbBVK%dmd?6eKa<0<8yW+><_y~LK#&VonB07c`p>1QaRWtOToeI{tO&PLc1o2g*o;3-iH3PanS}5r$aK^ z^uFnKhk1{rt-L^4-O~(H?t|>WT95Tb%8}9ZqaeN!t}2SWNDB5YtDk#)nVUcPXYE1j}jXf_|A6& z&h(W|znb3e(d?CHj=n2y4vaDsp=5r=2(0|$@9Y1DRtw*ee~n!wVDEq@AfB;$q*^#-dh?`H74+o zhA9?>k(*P`5c>R|F%n_ZUE%y8Rm~~oMs7f4GygLfGnhocJU)I5ICHk~dh$b@FKbt> z*s$p8Rmsdv)G5Gju&Vo<++@iBd!!s6v|JeazTg_I^3(oMeo{e(wpR$>4hK%|5u@AP zf2IGl;Tq>XjT0JGnmTR>A6m1uOZKZb$?ZT9HIno^QeBI}V~KabOQ6}EoIwn!(UVXL z3%-A%CS`&+o@;8VlC@#O;ocJ!>eV)m1ajwvqzfvA)Iy<3;@bCH^DP{Mr?xSy)1JG9 z0za|z+B(1CuTvU9L`&V4n^ak+w77=@f$in9F32~R#oJA~7)7ICYu-th7^f#Y*C|~t zvR8XG9JXb$EqS3o!){L8O8i&BC*}7k{d4MpoULr=8+t;mXcmoU|46~pRBBq5L;oWM z4`UA%K=TnW4&NCyj<#ru!(n4zCda(0T4TEv{XRSYj$=Di!%h3l%?2mbN}Z3pmL`g_ zSUvw<%Djc;9RhI;VG$RUruXiOod8iB+MD;!l?G}Qil+;ivRuxSXO5h0xPNl~6mUC} zCk;Bcl4_uM4_ayN(pl`Ffl>O&W#&EAu4vbpdB23X`mvr6@MTv^{>CA~H_~w!hcX0L zc(n<;QQSHox0e-FX#bVXO~4r^ej5Oj6LYX^zsZWk{qBTJBi7_$7Wewegl^*V9Pauh@Zj9xN*Os*K_$q2t zRT@8|6rNlNV@V_7aX{Gb;FvZuvQq(S6T1T0?aVVScjO)Bu5AN<3Q=~de;i0vOe`sc z-YBr_fH|0<7lv2Qw5$6et`x)^<{})fkj2YTnY!6FGF%Hn_~6w7j;wxkz(KGEAJb$wy6T939~BLbp_`}t?B+lVKMxE<3O+UYc%F}K3T#QE znTh?Z%+;(idZ=h5#u9e@#t-TZfslPu0^`RFgW1VD)gOyM@_sS$m-{lT^k~hy^@P+b zqDdC4J|O-!(Tpv&qF$3Sr%-`(Q-SWc`>1Q#+~P5;eWpze?*l9vL zsWVc0W|h{d=gXmiTQ6TPVK>rXcC|OcRZ(==N)D;Beyl!vR5v<`k5s@X6X3BsT=|?CVA13^?j-1X%$G;!S%=b*fevGUS%vf6 zO4s`i|5Bd8oC2PU2)zVc9N2pKL#?P={2g0X_Pa=bMO>6ZR7h?)|4=T7va1;SAfHCz z>)v2n7c?g1=%*{R$U-Z)4EJmxs=~h@12hmB@ z1kpMocM=U)YjKbnC)|cOj+}seQ?R{-m!aZ__vGJ$ZNjJwJ+AZ9hEr1OWt8HhcqldE z@ag;3C=_P({JiK8Yf%U!Pxc{aPg$4AQdGS75TXQEw0!aEliY9zab7Ii^P`YKj41b6 zb0kXGpaHodrdi1WdX~*=5;oXhpVGDCAy~55T~`*)Qp!?XS{Z+B2ud|e+&)uS_hxHg zvx7E^o#In}AllOutERg1ChX@eLq`)AVX-WNCAWr^o7^I6fFqcUOWB5Uj zu1CDL$j>LL!=M&VH62i}A&jM`I}aJu7FDbs;H$)LCpa}C;k4&b+{Z%asygB>k8>sA z$a@I%s|21rjk5|_)3zfa&9~gmmM%!&BO_7zksZ zwYu5wt9;Zz8|tZz@#-dhBB-N(gq8*WYh?LIZ{x+rx7jx+n*Jtak}m&Y{f@tr!HO&% z=b_a$bR*d%BQ+BIXz-QRS7A?ymYkxA6^rLM#jC>~po0u!KGzPuFBYEyv>i{_QEz1M zOUG@+NU5WT`f~^9(R5qsN|8w9ZK9>o*68^j@=IzZxBPicI7cK;GkJwYUZ|XCJ+%9i zU{rpD`R(SiB=1mH;n*) z+Xy8*H9T?S&-?Xwo^|e0Z~f$4NC$S=Z%)z8_CC_^Dyhbi#o1HMMD4?i(Mc2H!-mO3F0WIW}~3{AsR;Vr~g2iq#7#)ghHDI z-gkc4b=q?uQ*$$4csiTIoPF1sqvU@7b6rz42Q{AO9}osHW3r`pq!}wF+-XK?RwMik71X%`|7-}I zz(AjA=*E+V`Crc~x0{{<@YU+o?&BNPXz|PU1QOLNN0ws|v_b-n z%-{%84Q3X=TD90*T*Q*FpDbR>vHA-K+4dYRN#d0y2(c_;fb)hYyi6d!k}Yzjvx`HW z8#TX^B(qh?)nko+;`5&o?BEq|Ctwc>At*=zw8|U9Y6IF zMsDKQ9X!syjt3`8&Lu0lQc$l(85^bidNA5@d6gs%rkfoNe8_0tXCx_H%LT~<-U)UN zmKm-hRt(?0y@+Y!EO@4s%uX&SN=(q)ZiaOKA4PrG|E( z@Z}V6Uo_~8>*L**fce4=4xd1i{n5_RjE~<0%N08|)0U*~Rcl0Y6Nu9s-*8w1kC<+c z%bvx0(pcs=Rrrt#`N8ulu}*&(=-FxqNNgVNGQ^y@EseQ`Dp!YO^+uD;)H6T@&S8On)JXbD^))D>d#uC%#L$IE<*cLb^_BT_3 zID$#_fRiuYM|&18eM@iF&DTmxw0P`Zk8UaM+BHoxU-9mhwu=P!D@nHQ_@EgluU|H` zPu#24nl%V7fRPi=Mx6L4c}tnWC_Z|TQ_Q7 z)u^R2!QjrET0e9-$HYRKA~Jnr3HagW^8a?;`CniEbE@j) z)FYJ!9X99fKy%ssmiO|p%aM!<-I@nD!8p#iSi6*6`K#|Lkzwz?L{PHoY`lAtl(8ls z@+0GvsN8ZizS34WL?tQ$9E;&`_zi+T@>~A^0srs*2LuZr*cgnFJw+Ilt+=LQdBwP4 za;qB5>fx}D$KjPmo)CiwlOP1GVr2lzOc|IZK!*qe-?0X-pN*&Y-RVKJAa)gmtmd_w zcMPVzhcomHtqsjD6@og!$F;F9ljSFIP;#M~@)EZg6$gi4DT!&Jm21kPjBcBdaiO+a zAI<8D4Cf!=SI0!@w}2rDm#U;69{W`9Ye^JI@k=sm>*q%|nO=(+;{TaOMqjy;v;CAZ zQ_|le(Hr+o7*1z7XL#X*aj}%q4(gN281jZQ(V+x-&B^Pq zaF)bveFCd8OlpjemJhBF7)7sUoB|Tr-|$ZOaZj?5b7$CYnMgZI+qb&yXdrL)zx}ac zr^r5${E0Htuw7W>5YnZ0_571B3p+FByE^Mjo6?fUxaDiSDFDs_|Dgtwvs-{|<>WlF znaN>hboZlc=}wQ+(RFXS!ap+g-)?Fr-1n6;|E`= zUjqP!UA-LbOPA+s-H8nmaTer^(n`vwp05iy-%z&N9QcSskw=AW;C;qwhpr#0mT@b4 zgZNp4p6e_KgC@6$x3_LjX1GrHn~bn>nYUlHNLuWsP>8-1RHRj0N_C3^r9z`b-V0G` zjPkp=R4`FM%>#$7?MFYl!Uq7{q|N%wD7QN!t#9wPk5@XS|Fz+kDzYkGZu0lwajr6j zrFp0jNVe@#kshKBHWcF6 z6V$n48f9tJlA2a=cF2MFvsd+F{sOenr7M}Ivv5Jo93F4e;np_c)@A}5y!F?=x!Y-P zo+^C)^O{Jnz#N6{KKe#WLgC0kU_nn_YjN7kL%DCwc&ojzSgLbFtzxUhs8nqZ2RPHT z#6N~1chJFs(M+DIx{@VCd*}3V(Ab$X7yzl<4i}4y_p~ zmebDT6K%J(4IpX#q7G{JvA`i_EP{A_sz11O{FbIT_hEQ6h*7t4(` zxipOv?p({XM5t7gOFl0Xvoqpb9#{<@)U=63wyp%kQ8Od` z32@XEGaAc6m2lE%KQ+!V&Zn%yL?M8%?cr+kEG17@=o{*z<~0y{JtJ_vuHyK`lycVE z8K0K`Lt6WR;ug6*Qk8hWCv#GM*evBi^%V{Hhk;B2KvUYN~D z(&hlyP%0HK>(bO#?V&Gol zg8B-vREOPFcYFMknOJ$Ki^4rYh_KMROEQYDb8v%qhUPR@m909-m;V+Zj7ieHz-0+bV$#d(u+pW75(pOK*b_OtdL$)g_3NV1tjC;#t>W&R_<=KwRr zJjOJp2Q?MN5du4XIA%AZD!j_aXEhsbk1UA3b-<{<^$LsAL;Ao{i)oRl@($lX<}ww!1OR4&Uw)l+G~cEz|U+`n8n#y0w^Z?d1tsvZvFGGniLU9QLzV6M!9KGSYW21AwqO2fiw$t) zQb(`kqO+;Pm93b=(mPsz1>2D^DydHm-tGA@ljH^j+R#>p=cV>4#7vxj4xpwQNASAj zLoU@~Tx$~NphAa2vFy#+#6GH8J zz9O)34vDk&(`g><+8Xa88qQe<6Jfw?1rkl+_HGn&$9P9c*$6g=W+|0HUJ<@%5y;C` z6lKAhTw)Z@1uNV{KQryrM5K}NIQt8ICJO5cLnW>gZyu(~pUF30KOA;x^C09{`ajg! z^ydgEx)h?M3?+hrO&*F1i)asU5jgbi%8BY)!{c$bdKb+B{NDLqfiV*{KcHgAmKxk2 zrYm%hJn@%%Ru3-Xql6|$bW(cGpR36j{>LIeSt>RSH#vGdD-FX@MQQtLO-utuM@62R zID82lsjm>}Vqye$#~Ieq?o^9DX9+Otu@8%5)U%HZI#AR}5Aef;ERqsG@~hlPwVug~799-oo@rt~}9lV_HSZ2fyYxxgg-)yOY&t&@hct~;vUP+4Jki&o0f&f9>& zwauySLdo#XoS7G%;VYjE#gRuq1yakLhL?^r?tG;aQb_F{+t6r z+f-3aX>CpW0WINzF-^yxbbk9=>mQv8_ZW~}Xp{6Nw{)O$ll_u<#5wm45Ri-O$7ar(^$SnSRfm${HHOe+s)){KgNqkH0u^3tp$ zlkz7Phs_&-NQ#)FdD(IBR^R#Moym;AhsC}t{>t>kZ-znoA->8rvZny=hev~rOMK_E zy@gvQf5Ka?%C<6PD{a;f7?*m+WZ#hrwDSw1vN`{i_^Yj_G=t5syxyGJKyQbCu(xk| z+_Ad+44DED$n0zkRsN;9sqMYV`U`o~vDZ_98jspi{UvoYb3ok6U%R)k9OQC%^x4m9 zFupM-OMB-O>Aqy?@k_RYDKucc=9cg+>_3LAur30IuB z`R#Wo#!W5-ObCAhFHi@{>wUlfLjh8RUSQjNJDp~`K^yMPPUSuzB*9A>ybf>9KkRAD zluBi3bn>I4>@qp|#>7l6p476oEKsL&OLYV?kNf)$zbemRP65Uud{&*(ozjPb%6Y7( zfHBram%xcdcB(MC8tcf^&Wa-c3&{foA#9Z}HQ**BTmA7j zvUW&qSM-n~YJRS+sKW}YD$Fu4O}L~JU-U0$Ojl|gQlX?! z#Y!;tX*z)UH6VX$d?{{gF&P^j_`%TF9f})=V>Y)Xl>g?9|Pgm{$JiKGf)YxtV>!I`lX|!f23@G16FbfiJ(G9igl$cH zWYgRt{X$&UfDo>7u9+Ge#}2s(>lgkUPPTWyF_5@TipEoZ1q_lJUW@aU>>C{nC2GB^ z|48uO!WIj?+L>)?wB?`!Mvd#A0_MmZX1w-oww?v0ULG4U+F(5#5SAx+|Eo(FF~mfv z&e)R$6`B1=`fAi%K25B}YrF%-QVxEd40d3TNaM z_@HI0Zh!DK#=KamY%z;kJ`Un0PWiTB55WxU^;Tatj5q4;aMV`RbB)V+>8%E9#r$`B zD%hYGsBsDy_4~X__Bnn~zkk@@B$yIYUf+9IvCCSv7FlP;vv3ZN#g1!b-4w8ubXcFdH(7`kDB@$b`$Gi+}VoS+$r$P@!zwO$Mo$u;qr}N&vHJtj$T8pz!OQpUQ)Pi zu`v?P_f_o41EI`StkaXaM1BY4Wvnrs-oSeQ!H2@^s)CS znB9WaVGPiGUFYhT{>IDd_l1cU%d43?u0Agjl!y&`K=ptY@l)6&-XV+D%JfgvUC3nM zlWGY~NLcJ_Mu(4$~ zAM;r;CW&^SUF=Ue_!@C&NLCE_;pwL$Z5KH?Rx;6Y{$=BTx2YjVrQT(W|FE4(G`;)bSJ$gSy zfBgW-80W**Htv9*mFBuOJ>%6yr?chvO2TWm32(P6NvZHt&?+$?AV6P}220StvH07% z#Pu|=-4QItz925^?(O0cDuz!jEaWXE_P+~Y^9%LWmYuYfQwY*e$l)6kzL~&3#Q_b1 z_eCZ{Il44%2ZXtx4mir-c8$%EsYne@7GAGss)HLtrJn^^!2VMG28B~HlM_R*VeFyd z$|^g4?&@97Wh(O<(D zU~vLiGT~~~+1GcNHE`8)Y@cp~T_cD$A-xAWR7eN8adKPFjxS ztfx*Es9TH+4%=_8Y~_}&?p9F>!6bA+e&Q$Qve}q#JI%)xuC+D_HY1~6Y%Y8BCdn^U zta*`K`r((MoNnnhB`aPPb17SpG3>AHdd(>I2+Zw>r2ePaYc1JFLP{3i-POwC;$|{V z=`e$AUC;4Mo2s7KIc(lNY`RmY$Rm~!?T6K1EJxLIZOZ@#Y|+RCg^=~$gRIWPX0K(K z(%3*z4rivcvzm!f2M)M5-0xDZotCFpZ~{tZKKZ~AP|$FT@rfCqs+a%f8?7HK*unx# z%aHf36~0u!Zbqg`!u?S=7W5fYm4zFc!CJj2o$Y7J&%`n?xE8ff1}g|u!74ad=%n3O z(jg;g27BjuP^w37mzzx=*Ud6cGsSXhh$ShfeZi=F^z|%RP7mxmT{MO{_wDt6nvVW| zH?_%>uypA=3Kb>4N`@Ld=Jq?USAnW+nr_xE`dgi8fZeDQfc`CcGVUHEGMe%r)LGXd z;j33!Qr`VBkY5&zn$vxwPPl9{|AF z=*C;80HKXBn!N)zw*@iD+1a5|m_r(w!!aRY&(>h$^2YgVS+%J=WN7j0yL;C21Dgv^ zg}e2tfg115V(xlyZki0ZZ<{BvUU%(kmbNe}WnVSut*PKmQ_o2DV$=_DX zg*W}tTmvg{eIO}xzLlyZkNVLU!XE-k73FR95R#e(>f%#b<9z%8h22SwC z3ar#{EFCh;G9Ttx^}Isp*ah}8L|`b%hPis;o`)(T&++d^dHt`T2zJpA9+I>G7m#9J z*=}C7H&tHz;;^gZ^~UQzS8WcsYFeu&mz+Q5BfER_R;%zsm1#%~^L9-Hy?J}w{l}5) zSNPZ?8E<)7K6(G`5ml6?juiad1S-hU835f2*W~|+c|`y7|LBVNzuOu5h9FLk#x3PH zMERs@yrS=zf@ecD@pF;F?VSXV&a$7o)du5{Ayl{uSHLJy&|`2c=X2++BWg&Ngtf03 zUHZkFS7&ACcJOr-?!Y1R5<{(eboz~@%e2oszN=v3IMVRlM*UxG6IE4>hREIbxNDyV z^sE|&EX{IS5%QfDt+^TztVy(>jJ{<0hai>(?_@sL7j*a1xrn?kIT{w|b#0|OA~g+a zp}NUkAyG5pscLeC1{!Fxv{rpd5yABAUsFg;3sgk&l4skOf^YE=vh3D^P26Y}RS%ql z`t8`37NlGR8NHoP_;5SdeoHu9PU}i!=;%yC8be+v z%eT_o(V+O2ka*isPI>`s8>aOfgN7D{h+etims`xwl{8!Z)GyJRtr8h)Cf403SZ5-3 zC7rKb=!P?~YiDzbw<8&dBhQMq*=S};>0#a4IR8);0`74flK>;YM#;jzqRAr%G@$!Q zWVEt-GSCLpzsob~G2ZYaq`hsliU5WvX=clP!+GNQ2tGi!QPT+9`-_h~ctb8Tm*3Lx zsCfVnXqaSCcyx_N9U=HgCkG#TuQ{CgtyHspSqkzI63_cc<>sG_2*B~PmA>2jz%CQui=lR4QAq0}aeXtzvv|}_8(E0J*8Wp)b zP?T`Rq`VY8xSg z=5K_5*)l8}BcDxv0>s=Q63q&6N-MzcQehKHzwK90irp_=t5bjyoh~sfwGSY(ghabi z>MBU&4pBCZrPhtQ)(hWy#*xiDPWDx%4$;tM;V}(#-ES~AM}NL!lpSo zWTEe7{9jES=L!tLwC~wa4FW2}=-Khh$H_KsLZb4l1UOF5R{YHm;w!_vzRlzkFQcJc zCf{@hG|OY?5yMM=u?aK7u`QSGd2(BskW|&+&&KJRzoZ{^g59s?db~c4yw|zXqZA@3 z)l#~AbGBLIn4spOcin(9cXyujy8i#LVfcTVz{9!2^$kr*wG_N#^*nV&SKL3se>uU% zjr5{j3iwppJA?4NW`>fqB-@@8$+b!oMZ}49$dd22|3-2cPe}i@tjnhJHHQjAsW$Ux zM^kL|N-O+5p%&(4oTRU>T2UGbSV+XWkO92g$m^mb1gQ3~zQ&6W50xX~KXEJk{(TLm z7mR4{z#Ltm2IA*Q#qG;b#A?o*^xl*eAsj2;A?Y zF3Z6}&Sb}SIp9nnO{mBJc0M-XcT9dz{ph*?IY7q02%+7rAmgkvnIq0Jt?reDeZOV2SN@|PtaxE6$JI0+qs~eJ<-cuT@i5)M z3ijLfb-;L_K{EPYMQ(~@Gp?bA$G2^FQc9eC?czty_zSCj7rmgwhYRB`?|gpr+N91 zq}%vx)r#@K0s&J&@vPKer(Ej^KAgSSI9tI!Y1Q~Gk!w;n_}SGVj5w=#Y9P2tK74rxdGaA<%3T4^(fK2S? z)puVrlwW@W&rvE}A1s;|rnVZ}LV}VJydYY{FX7XjKch2!Q*$uu(<@-hIDR=&eO8ZA z7YC|rZIt8`F+Sh)04*)b``HCf!b_POBz)#Aj!`5TF2TG?@7*TGRmuasx>1L6c(F!p%QM|jgPo3~+^>k`0`m6zceG!U6>l4Al7wWEPL>N`2hmXz9cqy15XPlO5}`~Luy8U8yQ25qyX^o79PJ`a z6dA>9i73NVuQ4aHw=5SJN~6V-I#3#dvG~Y>$bCyLr_Fo)8C%nyo0L|8_Uv?f)%bB8 z=rEcFIt>Xem=KuZOHXbu zQE+j+aQOW?(LWFEJ`ZOU7q6;XxlXA0Tpy+Qz@#V#Wv6gS8W8|jeqA&5|8W`rOa3MQ zl7Gp++v6$k5aYhc zIFL9pId3@wVf4`zTd=@%U7@7_Jq}5z6>_%7Ss~hd-NiB`&i#SDvs`D@zGhORP}Gg& zFepmBaUU7!YmnXeLH_Q)nd=!2b-PBV4E}C~Gi{Vi&ar_0-KXCy2GG!AnAx+Bq|FPf z#W8CxYr8v2lC7;$qMk#hcAb&d=HXWUcj8!&+m|~Ynp{*D)Vf0HPW@%zCLxU-88F%ZGq`w}jGOUu_sd~-R=xKvi)(9SMq5Lnw<(U( z*J4wKv)9eEPdmBXYs@dUveNn|&Uzy~SuNFmhUhC@C+O1K1eDIWZ@_BV(5~BG<}__`P?v z*K4b{qRWV-@~la1jbbDn1?zIBu03e3&3G{pIa`-)w!0H9(8muJnP+b8?RDa(Yj;JZ zPLI|Qin>@Ic%iRuB`*z&TYd2{W~z}RvtV`#G#SK3X)GL-3pawb-SazQe9Np}$h^eq z|n#S_%s<5JoR!>eRla@^z*Z{opI!OSe@=99Afw4iJ5d$w1(OyC3LxFlg`_pDiXinR&-R7Y&Om-X!eTPdT? z2=3U2hSNfS{l6AhAy7 zW`H@8qk7(dr$VP-9ntOwNcc13!>MPl@s~Vq-4>nhP=)qLCuU_!HmrEcKR}8 z_nAjfFAnB_jJMMh?G#tj4Y(`NsdUZV zl)=b?D8p1iG%)O49AlB9F2J_muy+TTb={ECY zfbZTFL=)E;s?82>7Z=R7gO_;Ae$urZn>wjGIjKSdf4U;R#4&b^qgY;OJhZV*^LfmX za;yGDdUiH$PNFl(jGb53Kcg6`JV=b^YR{{0Ucb=s>VK=^l3Ji~0E;7SXZ8dj$UiR0 zF0LY^`*6t6?bl3aqJ68(1YE68dRZah!{9`WQ+%3PWf;qql24@&G-3|n1}YgoZ@WkO zv>Pty8-^X^bnEtPaJ_s25Uv{gLhgwZUpBkC-4+BFsqF|$mcYl&l+`WvXViYGjyHuM z4IFbmdT#*EF&zGNxZSm9(~Jt{LY7vPqq{q!)9$LKUy(D zU-HYtS_oR|v)uTq9689T@McgL>e-^h+i8xRAH7oOkXJUTS^dhrrDakRRvhJ;0rT(< z$x;71Q5Po9^2=CR2{HM*MYVFcbmVMctF;*LvMQmA{F;n)i`GMBDcAl-(+3N%ae|X4U z!rjeV>T+Z*j8AlA=X)aGgGA;XPSrH3pk;fuVT6{2a|Bpf3A}?is}G0_x!a_8MRwnL z0lY;|PE+6NS|>_!)Y|z7b7pdWb;tfpS<%JIM~IQKd*tme3Phk1O6CMothDr(kV{qx z^y!-?fGyNad)n??r&n;?SN}7S^Jyg&^=pvOX6Kpl<@PwWIMdB6nQN(6Zq;i$FDeL0 zJ~gjQi-KZWppj)nJgU>+S@>D2zt@1Uzy^3tER0z17x#)#0h!N9u`n##x~LCTaA~c< zj7oK{u^HPcPdJ#qn;G3=bV3+{RDk^RgAu9ayy559C)GYWxGb-+!jNm)SP{d>-$Y5;k@*q z@Cu#oFZJDZnrxbA<-vvG-wB~$VY$B(LRVz}G1JA_4TbqJi^LwE_DkJ~bMo)KXD!PE z%Ef(ANq^w|{Vh9zB-FLrRd@@qJ`iM~Jd#wn2PioK{M(b$ktM#J07Cpz5A@(C0QEBz z_U9*nruyz9p@tJcE`SU?X6XpS=8+KyxFf>2L3!k(*@NFxKl9`S z5EXaa-?VRh0vIU!qj%3qeOSz7M+SESI0yOqv*p~yKX$QgYs=b!+wE;Vj!vm(LLc8%rGZF7+7#xcWOOR7<4rLu3`b(w%|NPd>Cf zidGXbFU*Kx6SGe_jF9F5gYCjNoJ3%YIWQxjK?Vp2asnC_aRCprtHL^F3sXv2Gs zy%nxE<#`h4Oo)uV%p7$#Xjf=_hAT=?$uB}8DbcOLhHz}bcD*B3Uo=7>w9=>mz5VgA zALr{n3Fqa$Ge2Fzd8w>#pW9Z0aDwep+G_!W_*hGi&s|H-qEZfX9=C?}^ zPIVgxCL!{i1?cA{AL1HEwZEAfv zAz6${bUIIlu2B;CyQ5q>u@`i5pDRW3ndZXog!{p-mro6nUzu$64Ls&QGj-$S2_u9Amxt2g4H;vGJ{1MaT`HMDS^QR{ zS!4DtggzftK1$a)4EZ5UQd~pw==Fj^CtNVDW&KiXxr#;2YPajE0$;#t;7u!{U30j! zxoH$EW!+z3IdI|6@oDN%Yr+X2a$cV`LZXU`V=rPp{X3bN;QB*0HohgT8x1pawj_2# zeGV(3WW*;U@BJ;A%rDv!#*^SgJ?3)p#(a0EkuGO!q=4*4_cG4Jt}7QeB-0gFY4p6? zK8!h?sTZG3FFYORAIHkQrChQL-{^ho^gtE+qq@QIGj^iM*rQ07%c;c>`>CI)x4)}f zYO|jtUuV&{Lv$PiRGPc?GfiYpla{Q~O^L=|&wn|mI8doKgF=$chBR!nJ zJK1>wt@j*@)4vvVsgd=h7R>qG9bsiivWbiQmoBlAS_E+o&bKI7=Kau)HL{?}dMYc$ zS!~ceFVh)ItBh5fH0|-B*Z%Oob#Ufag{u`uudBin6X|wWGdIb=$Rd+3?t)bi%E--n z0bx-i9YoFwH>h!%RYyzIm;`l1I{~-1&qRA`aPBRB;;!u+2%rZ#`LmB?SnnMd;{7CQ z0yeuDbfPQ0eVNM5Mqy6L1(85YX^IgO4y%(GY@m4c&MQ>4$BVmhg93kGQW^P zpWt!J4rNWy3E#6PfWO1Tt)0d@t{5|>^b1P1>ooGkHmF0)K-H%?p|)x}qNFrz-Y-s( zSgJ@i7M%PMW|dFFZ>eoU)Hn`6iM z_4Wq>Ehhl>SO5Mfj}7-`$L4lR>8>h@V>*>f?00()tnH1X%~4dj-{1W`qGAeG+){eZ z)v6eI{Xd zl*|p$81{{xd{CV`^NVLpf4=fa+pl+9C*oN0%>V5mox^q^PgUH_4M-T%CplxrqPw(` zzeGiAY``Y~F5IlK)0o(bH*!FFU+_F8<%Z9q;HY&tm%DNHva^g6IzaH1{Xf)pUglUr zgQk80n1`GI9)9IlnEp(AR&F)iH+gu?oi6_>K#ttrqAp~^ap2P?*LtinOVnkVsO7gK zY!_gw7ME%ohT5tNrC-NrcO&DXAq`SnRU;AZ!ZQs}%5GDDpz z!8R>8NFJ{a+L0*!={nkF@Kw;%f1eA!RjNuZVb9D>$H{-5e6}p4(743_zwR%A@U8?~ zSmR?QlKkByzgwzZ5{UK>%$|D(7^=#2Z{%`(5%yguS~42?HOWoIFe^M zLi02CJbld#c`N3y?JS?&(ZY41k@K8O7oA`#(n#pzL{_=H;-x~;*`N3B31x(5@0zt-zD~TADRK*vl!a96X-g)= zHUPGR4Uc_xC1rXGtK@FSYS1D&UowU;*?{#aP!)wmiwKTemmT;_-dZ@6f*f`)({@U- zhriTntTc!|qzTWQTLqjItRGVyhEYVb;l&=s%DI!qCO8=tvWDIFplJnk1BAQv%lqoN zF%#@c=weCFE~snGF=Dyu&AZZZbpb0ah>rU?vkjA(;Px8Ujw8`e6|vkjWYs!Xc&tmV zpWK{|Kim&LB%To^p&@+eP2zcvdl@Bo0+5jP4VbXePazvNfW`_=#HQpIWn-Y3Fwb_$c=Oy zeDg)BQM`ubwiL5aYW^Ui%fD#Ax@{gf884{0qVuGzSsYgURCTNGe|Dom3j@8+&X{g@ zW7@viR9mev+EB+v;I`fP(5M)R)iH^|Pj`>ne)NuiSlh0ZgQj6B(z#38;~x0#Ij*mL zeCUutNq5+NvDDy+J?e&2_D=wn`X!C-v^J{CYR)0#&(4POHLEoL6F}+qF8k}{<1hUO zl#r-RxY4!DZ*dU}2TmSMPhsH)oNx>k6VL!w4-9z}m!tl5S6$$PoqG9}%Y?n?nw9D4 zN5|IwAmvDgc+|nKvjv?kGhf{M(Dcb&l*)4>{eC}t?F8UzZF+3D z!Xw|%W@p*86XLeVmGdKUa@v24APD!SF49^3ZMj1aO^+W8QE<^eEjtv zsvxUTc>1+>gZ1E8s?Jv5P9|90=5S+we|0i_3`%6%iOXt|E9*DkjjK2e?svdU?PX_o zuThE~(5FeZm>iv}@y96^A2F#d(Z1}5o&a#UgA5BAxZpsSTaq>>fSM2wrI3oF)UBrB z6TmS)fBR0zO-iuPyH_afOrZ>(-A}G+IyvwdD%X15<%SvcE^0bOhS*4G{7lIL{g{8` zNmG6IGIOCp}B0sVg`{jg6O(cP@F(&WlB=mX`GFkWRum;1fxOqso<(3Z; z?v%9&ahw+}eUG6I3QD4X<*eg*FFNFv9SmXQK%zr+r6A)Z2KN8ucIk4$Tj_TbO&hLtQWEKZ6r`WT8>Sb1#l@r4N&gn0s&mbbM0Gf^Z)+^95qo&_u>MdsKr_f%$_PQ~(Y z?KLNvGOx(RLz{Wm%&+`f5jH^aV%<}F1pEpTT)X7|) zDKzU5_7LZd(LgJbGi$E-Dm+@4umJJ)#lFWpzbSDW?wxbw;or_Y>}T=^)+K8+d5lf; zNc0(>&dltou~UvgP1~+#Wr8{NFbu3mPfm^R8{02ssWY#XOd2%ug>EXu@dmpDQmHau zDo9aVn#2(KV~@a*s*YMX5AnF8iN-Tpf2H4aN7$0xl5#Of`HT^T0y_bas3!pB$ph>e zSfB@G>n(TLWP=r64QGcT9T~Rn#DR8`*aQ!n;-+P0{nQoQL#$P5z1IpS&i<)7Q9sdC z(R^@98b^(^UFsUe>IAURRL7J-UR4`EeN&DQJh8i2uW?+sOg^=~n2q3FR>v*zt;6F1 zZb=J2;t@+wKTS`jMVgWmd~`JB$0H}uk$h_1nT-o&xh$ulXOew%XxeLq(AWTY`&0?q z|MLXUVZqcG?0&dL6{x`kPwb=C+@BvVP@$QGEy>K|iCyUF;IUl=RKR3$_l`SD%P)(y z)n^dVe`^xDaY=<4le?d1iM2=T>=O<(b$yJEJ5~YeTfwly?YD_NJ8?Xuk;Yx^%3wF2 zT_4~^y<0=a>d%jSoIAC3!U+-=yAo7(&ii9`qnxPs)tdS+GdM+C980ktjr|=0c zf>_fP1y_=J({{kfZoMv-kY+cXUff_LOspyynT)=gVS;^)1#8T-H}K7~G2PxvcZqlK zpAT5q&)+hGNf`e;T0sVxoa;BsX4|BO8x1z>-#WLW>q2FH@LBv!GZ_xE%C5GJZjY%0 z;?tCzokc3@rQv#}^4!eZNH3=>)a6?J%&Hsf>d93-3kgRRkQk*$gO+)$;0rSVx_heK z{{2VU6PC4`IwaplCVP9oF#au>MO@tpfM?OX=33CFt*C`q==4GOYtnSUn|jLzm4Tt6 ztC_8O5zW7=;~F?SoLuk&D-`;Ei@#GK7LfRKI11@Vo6N;dw9xwr*UdM#hx^$t(lzf-f7J1KU_AW z#+%^_N*dU%K<*B-3qPHwk7_;^4R-oocXv0ay+qP>V+G>rZ8zUDJt9?<*S!G5vn>UUxq-P?w#$yqDI^xrqr96lWrcp zAW#*EQv&o&euMVR@5O4l7Kmdo$=^LwR@}TJjDdC)DMHwuQXAV5j^dq6+XLw}Q;!na zDkU!J_)F!>FDZRYuLFm$W@Dpu$mX}JkmMV7M@qOti1%?@oL4~1&{#^5@8g{c`x2_s zQ#`?bVgPJ1?;{a;|GwV6)45+N4Fuf^dT7(yz}i7{W#ZiUyqmSkcO(!ds?GUbehpEJ zwEKQvS-%5&*nJ73{X)W^3QEj7R4#1sh`Kbrf5mOb@dP0IR34ZpA1|f?TnQfJpmX*> z8wB`3BcZv>p_5B`;MK6z*a102AP_V5bQ~G^$cqG^SEEEMeh?X(I4WPt48*Hg&-xU# zOYOh>Id5*4MX}|*$;6*F>byJ-;=f*FQ$C@~qNU&Aorkj0VrCsFvvS*O*zHcV*&<^m z%ZZp;nr%(n>Q0n5c|a;N6bt9(GmhiD-SHE~HH=nCd|Fk+<-13$fttUcT~8v9Sea-w zxh=2qyinj2H%H0ua~P|**Y#t(yxo+;p)7NCtS#ao@GZN?AQ!OF<&pDH^*g#t>y%e% z*sRww&2=8^o;GYz(M&9rBfp@|Eis`1@q@|8>>aTYQjB3m)f$cJ?E*x|J~MjT*&eq& zmzplg`b+6UvI1Axs-Qg9Jh`gylMvVNGlZ))-^9<1A?*2s#W*d@XlWiQ>)i<;n%>}} z$iRmA@xr0kK~E)3jPR$idq?w{#dQCCjuTCg0Pv#y17Y1m3Q|uIR;a1Ks?G{-f)bxx z(Af6fpIv3LnK3;UUp@gS1?|r?;&J6T>^Pr7_Z+S_0zcGaZ;Kl{v}_Hz@f%?0@ka&qp*>X!jXWM! zvQ>SWICXD$BQG{F|g>k=WRU>DQ>G$)`Nwb|MbI;}-J*ICaQDnj?ziMkx&Yb`< zQjcuE{>E2^6TnCMQ+&Nk>!f0~q<1ncjspYx_QTgCbCjS&;hm67D`ig&!(CsD>Xj3K zqspvb&{5I)>c`*w+FX33;_r`BGC8_?Gy)&`&97x41JuR#vPPSgTaxA>wQ)g&aEw~< zmgcC&F&EF*oj7_*4o_s+Z+cB$+_hX)(|JwXq|Q>bFE`AS@l=QPeu8CtBVX@ntk$Q# zE>kO9Q9Bljn$=!Cmb7k){*AAj%f~~O_ZPr7Cz)y_Gr$hK#9ZZuNqFaOc$sIAZ`k4F zE>C|TJzmXyk@DqWvP5b6pfG$2)k<+a#n=2?>YI>Wo#Tq=Q!IR38kONNW$kLrF``RRp(PEO>kw}kyoule;qDoy~o>NdAX9W1=e zgyY1_$mT1CI+3%?(7jj}pB8j!yAQJ=*Ivoja%@3Xp+}Zml|d517+GXt*yaA=FmNg) zA^gTJ?zWFbIAm4<0Y%NaKlSi#TT397))m@xRS|w2+Mg5VxS|cWc%6p#kiF5rXA#?o zF;F(%p?jc!YmJD6tZzZhU1maO1uM(>-iN2Jn=h-29F9N?y}XUSzNA?`Dgeg=CBMOZ zx2uzOi(LmmhE9x6ae*dT)y}TI5);m|Nkk8m5p#%FOu9?PRuB@w!X23PeZ9qwx?Sp# zul6(vtsD^WLqH=!gN4dW6KybzUjkdqsqkPKd{MH5;*PG!OT_?%! zHRBSy?Q_I+<9%0&D5nK;h#OxO^3>Rws{Y~27e8(Mb@X{e5+z@HxH|UA-YWDawR6r2 zpQ62{XZbqtbc9T_vWjf!!6C>Zui0yW~e;?+@^J{r?D>W_ot@A4FC^0G^RVadc zF;=(N)#O&DqwR=U%-#?85vUCt^z~h_#Ee2u39=hDov8{tX|1v`p^3R@Qx_;OUQT4Z zQNE?25t=x_y5d#meA#E|1+4$#vJfJS+ufmBIWe%#_w3L(QQViPmmAQvrMO8fsH>bzjS6-6vXn8!E?PBdZt>m6)A8X& zSh!En&$U5_ZgW!MXJEVpI&A4sHrJU=^dOyh0(c`nlMSV z|E^)wIbHu6|A!|4=aB7FT&BIDvaAb{n@#{-asH=!grG$l<^*t%T&fnns^Ob^-Xa4*DfBumG8(|DOPMUSWiT672A&U4xb!t(g;k=;-sutt~87VPVA@B3xzKq z|9%p=7UC2*yH24*P3@_vm`vh%C8s>kZS~Vk{A2bVLXSH!du+CQ`c0m}T1WPlM=35- z;u06I9+aev$uL#lv8>qf1okIZ7N)6kQK}}hmA>5-O0jttq{2*v1*@RGSvgeRG&INv z<*M%-L>>Xd9$&Et99h6_F2?@qPze6jk&~-zGdMj>2z<<}?&R|1FGKERX!G3_PZaV6 z@lS!t#(Jc&(LUGUZFGAI!bqXJd$gl8bz;9AN_>nkt$G+&$61C)pP9I_{`#7R`ggwNfCn9TV|=r3nkilGV~3tcWZ zmxAWTm_Bd+l0L>r1oz|yyG`4@8h0@nb*QrtkRCUpm5;}UbKSdN$g@v}^Q*(c)QI_& zDme`0FFP^GPW40+Acjw-6Qyude1R@|KvMB&fiJ10!+;rkTN;UYOiTXgwYAx^IKsXl z+PZ4vOR)adUK!;T`hpgIHbU5ah=G9Zh_|XPzm#yx!zK;CD^^g#R+xnxE=ssFI8sOm zj<`sF77#4ZR6!Lv@^ohUP6gb7G?R#qvkt;u+$Vr0vvnoL{HJST+SYpIV0MnWi7*UWsZX9pU0P#oKTzeN`_+`>osz4-&Q9Y{6ezn;g3B~ z*Ao}?o8?2LXmc@Ko%lDxU|y%QZtaRwE%9@4At5N-pr@Ms59TqXaj5(pSm3wYV`Q^7U)USwA_BU@>;wuFaky)gxT3V5!@vCr+tNvp!Xk2 zNq9NIi1Cj$xuV3wuNK(<^FgLF2Feh^@qE_0N5=^K4V! zp=@*V6JomlMp^l1W5eK%_-mz}x91eq;LMSN+0dO*ht6YhmwST!ag)~6S{ZZb}sCwXcrsv{F z;9q9==D(mi%>#elAEkXOx-kLo9S1oNzOde(6CShPZ%|c8y-SKi^Tefib5BuC{H(lmDo{ge0T(zqwS_lY3MSYU@H)4rLcYvut z?x%iF46E)-s8!&;b>oSWpn2g$=_jmByORzWMP&gFUwM?3GG3z~ zu@9}@?YWcawtwM(l&(c#uc#ooNSALO7VqB8vSg7kjtwavNxzC77{q{r(0q{~5FT{# z%ob)!F7ef2*bpK3rd!-ihCaX1;u6;EGpQN433++?7dGJ4rKAmH39Urazsd zAc-*nfSY{`|=x`+wYAYD?l&T(LL}rnbFzLOjXa0kJ5t$H3Wfiw{lk8 zUx|LXt7XoyCnRz%!qh^%2SmO6SIim_ev$?Mq}?j(HH{^ zf_+QnN|}b1$q@L_(qK{{ILv2HZ|?+Pwm&JXq~-CN8ts0gP1c@Qtwmh7PDP{|m$mpl z4kYyL0m@a?@|%`OGAhX}$nYl+uXUaPKxwyn(lR%OR;2q^E1$nMYvO0Z_=anw_!q8b zK0hQm$&Gxh?sAqbELWwwSm(x&#YW0^Q**5)JJ<${v|m~7axNID z2G(k6CM}0^YZrX_AdmZQlXb7MJM*)DeAGPqur}z0O{TVy#mgw$h&#F>Nlj@pHDN)5 zDtaii8k@GrBrw2a^apF&e8?4l*6+}?GC&#al#DK60UXP1WpRPWV1p`Q(fdPM0*}$xlLd^H zPhTrq0!F1^<6JMM?caLv{IU1(c+iC%pJ{UJ( z?3t8#9O0US1=cLy`tEK%S^&;Sjl~hR$)aNO4F5inY3rx1nGvA=gD(=3|9eh^Y{Ikgf zgz%;SauQYvzAe}Qzg01k6N$Ib>isjQhx1RV}ikcf|(hZL+>wRoZ3B z)081#;;s6!EpKP<6joOpLrXybUZP~YnTgl+5lrMt)GNT2SqfL=s;b`YZ!%fI_~hxD z(1gX9`5X96e#13(BI^u)nS@VWlEPrY=LebBc6go8>hnQdqDyos8W~KN1%An7sJQ&4 z{RH>YSg1T>Su|<%RuC-*+2efF%$h$){<*qD*o^1vmDh62&`>8F3;_j<=z@>`Gb_fI;hd>Wo7AU~L-#1R0Z-E+GvESfAY=O%$SEGv8QLKZEvs^t5l-kFhp*YC=k1o0&9u zxp`rHwxxyakGlbZZ9S==Krx*tH@^FSK2BHx<&7g8xzwRPb#}31ZWUwDA5b=z2RBmc zbPGnA)f&fKu#j0C^Z8oRS$?Qi=!NUXABM!L-eHMOd4@oPq>nt+fLp7_e2sK7Sr6t@ zG_c-UZzSZ3YP4OO=F2y_jUH&0&%kv!GtXql*;lmMBkd>c>iKAH_3hRbe=0vzUZtd|9nbX6aJp-ij@uOSnFK!AGJNYf)J*vAJwidZ9us{L;RQ zliHm^?%KShQn0?o04#T(GQ*-k8>4ig=doq=0i2t(IeEOc zr$q!Tx+Qv6E{E2O6L}DIL~Vh{`efT^>RgL|Al>Zv2>KqNL^uRyxwLP)r)l}H@w+(_ zZRQGaRZy1}#~%Fq_k?mu_AE^WALTo_mrBUOHgA2BYE5c7M}<<521ta_%`?9c4wY+x z-E$IEpCje$dlg6d?|$f-*Zjmnn zWC0sQ7#PJRoD-syhVtLDbxwuNhTq0omLyf77ht4MafIChjoBTL;U%t-j`jK`@bi)E zs{8~|AAi;rFm(rU=c;B`e>kznCi<>~nOdclnbNh_M9z2#T56|n4+$u+CB@7bcIW-v!_3qLn z5E9Z`5`x7BAfWK?|0MN3J3_us_EOrVt9Yq?Z8Pz1wLNF9Mh)?0uTa@$W^`sK&Dd^e z8INQCCZXWu9Smx=v`uvG`9nC!8=V08f)IJaDiQyE`xRiGe*xa!|Ff>Y(a@>rM^N^Q z3aHDvR@eg_OBS)`5c;o#8>*%|I#Ai=Kdtv=O}h-8@>GpYfCky3!1G&&uM~V6n?%v) zB0L*{PXI+c-P^H$S*}xz_Txel`I+7hA`Rk~YX|pj^nlwZ07l^lBT00E`y(C<2a5ZS z9w8#(3d5UEW-k|{wEPU+Gsvlf?z>J=g`TU7mtKPAGS^P5Ke7->78*tw8Aq+1jXu_z z@HOEN?Acp$PQQ={i_!B-Z`@o)BkPC#IExD?ie0(RXvOaM1y^5J*sc8RBINDSA@DZv zP2UONdLeglS+&I%|1;1x#q1?2(6B#Ah=EJU=PRUUP6-)*@77P3eiq6QKNzrSE2?O7d1|LrZ6T4qKb%O2w_( z3SVV-p+zlU2ftE!?ElGKz(b+uW=fqMGfIBcccMmJA-WrhL_TVk>yBQD7P;?arRfzP zY5j6ywGb?bL@ST34@;uw*xTnFnZ(o>9{<2I@R5ufJ?ME65R_L!b|P=+3mFzIUL0Gx za>c;&Qttq&3EB{xUv)9{ESiV4f8D)Z?@PBvMem#Q_J`5xc=D}dvxVFW=qq}?GJt;J zO#9KaU;06MZ>-Q`1(Tt~~^-=mA~Mfs3-NMUtuw0LjbNFFWCTxhvMA8sG%UFrTK~=fbKe0!Y?K>0_L)YZrApOEg{AtoOX#)VdKS|F%+zeL;qLHp3X#2)}hg>;4UWg2(YMHe%41mC(l$XQP+2o7;%g~hK_ zOAKP~2bu147F(zqnYpcxU{~s{Z$H9z`XsISi`5c5itE7=en;e$7Y*OyUF*jrWYFwz z*D6r4F)bUbQ&#vbffOX(5h0w6tvUgmO$47AitE@)NR`m@cXhm+f4f@Et5=THxb(SF zxWZP#yx4^6g$$wkaIAua;7NX2`&_58J7G54+&qE-nN)j-Ifwmy`Tk=r-{muN(D|J_ z)t3E>*qyMW^xXSxzhY$9;r5=Er<**Vg}ND;Kt1j}!LAyDG@I4iW%feUG~%;pOP&j9 zFd1>bKbHjG96JHH*T`*uiU^Uvr%_9tuRNaga9Pr1K6ZT-;!WvxIBJ|59SjpV90MG$ zOs4eHf;vkPmv#0l&cbDPOWUe~^YIyw%N`5sJVkPS*H9bU?jGsc{+^s)r84b>tUW05 zs-{n#)Rc@mIahFLihXK#M(F>6aLl;ykSEyY4XWwBjWy0}jjCy|v;E{;sU1SH2e z<5s`Kj@iD#Od$n(!m>EI)ov$i&Nnb*QjbiimA`N{4s0Pwk~^%HvP>zJw(absEpCss;NtR-*2 zG$la7Z%a!FmU=PY6Zzi%`ha*emI|tfMAcYup@j$JiZ~g54F(mNmM%NEAOC@SJ@B3p zuw_D%_ditu(JI3iprrR7+XMV@W-sNqdjhr7Tcp7-0m#=&6&h#%dIBhMU_Svs35r~H zr)H2QloK*u*W=!;D!Hp$`n6K%dkigeQ*uR`x>{*<#_6R}=HWfFq}Ar$@Wh`l1f@cZ)%&4T z4&NBLQnVr72=wzM`bXtN+@J4znVYVOo9EU-*eD)wkSTh16wQ85;`I8kmha{7tg7aA z&(im)nO&+~QGfVC2AoMnD)**}w8~`JuUwS#sIo9i_eyqyIcbAH`tjf)Y%=<6s-^jU zbPru_phVZS3NHrYubH2o{wQ+olpVbZgq@tDi^#ngK}@xo1oMrb2>na>*{pauG+;&W z9N>i)ILg_DI0+(DqXko~e+#7PwYJb0Csj5_$eC% z%TiRLSgpgrD5t>*Y%)j>zIv+J)YigFBJv@Z*6+Nym??U8;>YL52+ljMaG0+>m5(HPN! zPRpSTlM920k?k{bXXVF7ha~Qzec^qY7nC6p{4(E@<1DpF!0|&+mjV zn-?+XKYc6sK)CF)jKr;uI3-S_$NE`119NR3x<34_wz>{xiyU|i5(XP5f8_GptE&`r zE0NhC!Y1HOFNw;c`m3EsMZXeP(ihIe%}duo*7U-1xtB{KmY(K%e&iUwBz9S)X5i-|TmVrmu1>~&b+a_UI$b!aO#76P#_DH-+opEnQ0}Bx0Z0g|t zZZ;sm-=PiuuAiFNASD_Sam;iRK=4!*89g$8!PQxK5cxa74ZZPVlm2T33=+9J=7@Gv zP|XisxLZWgPInvPeAqB5Ez;!zE>4fN*o*`L5yD#9h3;UgPx$VhUiHo+!lJOhiB~9| zh#_+PFg2Q&eJ5NrVp_g?p~Fc+v}V*Smv1B5Yi;$u$u+OifLgy74%|@38(D}MZ9c^# zK^11(HAce}f)vFR>DcpRpw2T@^~%rMl4M=AxD3dYPNCJbeXi&F>u%bcx^V}V{la#x zSve2%HH^<}E5bgeI@P+z^W6$SoFJO&QAlX&r+=nxRUe7aDDp**Nk z8pU@xNbUt}R9fv@Wf|JnEumI?N5P{{8t$V$u`f~@fE;#kvy|yJ`E&=Egxp3r(_6Z# zu#`VHjTL`u{VN{YR@URu9x;nuD9TVc+Zs#c8(X`YnaBK2{~Gic(JfmT=%tsJL^tr- zI4*LLsxVtPVwXE+|LtsL@IxMF%9RkYExj@MuXKe3z@4EDo8w>gPmZ1}Oy;b<4hv@0 ztCEBrJ=tYntBakoI<<=b_lW-`9`CjkDj-r6DfO4&FKfI}o~i|8X46WHLY81ZZXxjhgBVHNM=YLyIjqLFLcuCt#%f_ zkMC2q6~Wj!y~qp%?KvT?lPr+QhXH3CexLWhltgzcK?(1YX}d5fB}Qedzqs3I=y73E zDrc@FrZWQTF~SWr*K!WOMvmMqmP3M`CL>&cul?P_gaqFPZVm^=Z+y?+nuLBN+@c=?b!vgZBq2PNpB znn7((6i2@on+roH=vMyYD5a5-#~_hV5me06WZgT+JO3$bo%75>>8|Tm)N(JjNp>CJ zkwaJRR(-5@SEHlH>esESYH3&LHpGuoYfM%$p9Qm5pLv)oajKBlCjj$4$zx*KOXV&A zfc~zY>Inejn>Lx^XSJGX_1a!9^d?nd&T7PtGG^a+c5up*b!!&$q;kJv^H_FR;L4*8 z3>u$<_x<#eqO1qD_#_dz1O$O1q_~Dp0IWfVRHtV`v}uWs>8|04z83ulwEOMla%|dy zjY6P+98ioswnG+Wk+iDI-Tc|h#2elqyY!TdVekO}&iftBn`c`7#1+`fHX zxpS(VtUXLflKQpdhwhTi86Au=dsga$E);yGW3Z3QU1j!H|3ues!$oxOTOYS^17o1% zhZ>b`0qyFz71ZGaO&?IAN_r$I-&(=1*W9`fSHnmApu{yNuxn|L)Vfn8u4edbq2vUR zqn&x%Aty#Cjibf?8VMFo2%*O_sy6pZpliE(l}Zz^B&ZY8=y#V6r@@bwiJf(sE{hr$ zFgf45JlZ^h@bB`T;>g}GHbSbi{oWSpf!Lc_D5m_9n3sL^_i2l(vr^-+g}MHp4Qo=F zKP3MN07Po2WcR*zau;(m((Nj2jT5z*^6={8a`n-9@}y~=CTFEEbDg~fR8(Et_&t;e z($XLy4bmNobVxTM-~dBN!wlUZNJ&w_6PdD3=`CM7BV zkPkc={wZTm$HcC{5RyFrYnEBJr+1P>_9!*6@Z~pz@_9-!1`z$!LE7xWg~^4UR^LNT(m?>sHf+|C&;&H6oK&%qBnyX?uqk-s!@tp zxF6|0@IxD4jSJP>7t5;OYx_2>pLnazb(^4u-?X->_0>> zO+>2-<3HnMt8rP#O{`lvGu^07i*K8j^p+|`W8}LlaYzB*o2mIl84ev@g-Ta|5{kym zCAEZ=5vzoofpqhx429pck|@EFpOPPLhM!)h?t*LeyYCl zA0}fXh$y?9kRa%oV|aPk5CR{d_4~fJb+kiY+G0o^YM*AItt>R=iTL3&44U#@OlBe%%<2!el|BeT%`l!>G+=ZN>colDnHyv+VHG=gu zH#2Hd!Lr-1`2u~Y`_USRNvmZ&w?eN;HFRGsltyWKGQlBCB!vwJbNgQ zXzID+_DNVdg#ShID^Hcdb(6vshDmeJd75T--ky8k z6a?#7jn$6cQBBT?g{^#+JzT1GAu=h~oaQLjr$49dXjh*{n2WS;SPtQA@B%wt(+j@p zpTmcmdWGsDH%)&qfCx+#w>-3qmKJGzC=@4_ZKjoekm~4% zI$?h{ToHj1Napw=z<1yLY%d36s?S{JtWNi}ioXJcIdsW7Q^=Zj$actU0HTIK{K&4j z!Bs-q;Vl*N8UHF2O%>$^vA-Cn$Ng?iXYXv#Aa@*o;7|NCgZ6{kVIs5t-EvmKSB3oa*V0EmbO>|pVGJ>xC}cdYqOQ$$CmL$YEv02jmq2~0H)psfj~Say ze4}o@iu%F(!k|R?<_Ah6%Qy3)n$6QK?Sn=_+ZK*E%0CJ}laHUqPBE+Ia8E=pX|oTp zAP{5}kPXtRDi(--+~&$jYV&|SS^lvB4c4h8n^cW^nf0fMNoC(^b=U-F6P9?+eIG89 z(yrTxw(Qs@6SfvJU0eQo44(-2M%mynRMCa)hMq{ByqfsFkEhEoH`*F>_BAuDY@E}) z5w+88SUK0^L+xY`(W`>niOPKrJgC0@$9mL>o+Jl5u%C6pB7|8E8Or+Fm{=qO)p4^4|)%kGN1ywwm?bPa~Ynx<9_=U|^rz`0*zQo?@tYYi&hN zlj7JZB1XU`qB;3+BdWE5F3tMzpU?J2mB`1$=4@%$ho%;&yQnAhy?wBlY|yzS%Qe|V z*jL?p93D*UJ5EY0KN(|l5%kOY@MxJkT-@fhDsHbh3-+sW5vqW!0I9md{sJwv=^gdW z9?Bu=FTj&glR;m9ntWJs!jjrf;$C`^#;IZcY_w2_Wu*jDP=2v1PKz`6I7!wNhbm!9 zvW8RaezP>qGYHCA17-}@3(S@kM;{Znkkrx z3r;LkRY|_jGc*--G`5ayAp6`8zJE%kBzqFUn_EVg$L2I9EV#cu^xn{TR2rep^X|0e z&eUGYmd?%LCL@VZ$6;9LBjHz?Z~9e?CMXk>34N3IE#|rC2sg4h{XnE`3GVpL6AxCUR z2#+aRWYZ8a^4kQo5V5yO$Lj;t`~yw)$`MYEkN6>UR4~l>-Yns?_8BPC7aYZ@-WpeXH!|l;1jWR>L=^A6z9}-{1ldBb0hLuXCgR#;AxCCBR1WVDFZSQpin9{dW z(G6dx9c^`(`iid6kDC^w&;@4W5wZlvp1^-4dEUR#V>!5vPK5EO53Mo-wS|Dtm?SGk zs4vI3aHtsLyR!@~xY?TmJAF?6`R56ECVJEN594yDJmi7feyMzdqq({-5(Ud@zXkZOe*8db*h+I;NSMVzjAA>p zK-eqho~enU=*7{iS;&S;;i*|B)i8C|$>`ec!K~(;S67SQM@ChGqZ0CyX&r|>$G1cg z*&ngTB7L}q4xP!5J5~$4J@HoR3%Y(_s%CH_-Ow}MC9ddG0^=Tz<=m4ZlcKvz94>~C z(A=~D=yaW1G~KMnrvyCT8yN3;9{Wl(@5+69mW3ju)PFN%zFAl-ON@twjF2B$i6WY) zu-4WyY~(S6-kL{;dgB5u&7*x&aiz%ry{tHi`{47J(ZoaW^;Vw<88*qs**P%!w>Mg` zCSBhXR;iHgXYuBpS#GS>bjs&NsjFkS1f`qa!WW4=YB~VU_H_E!*o=J?VDW(=D5yTo z?2<&K*Up9<=H4>$RMoA$U7yA3P<5m4^;-m3u{qe6-`}{RfEcwT5rmOGY zPODDX{0)?C(ir{GvukdrINK|}Zqs48V(LWF zAXn7_ImURFJ;a{Pcc%7b#68^Vr=uG8vAQQeKEsGZ`zr5O{)lEI_>R?thZ5^FLxccT zfZcxTowVSB?Cd9`IedMwh%oOlB;x*#^=#FlkO}VQfw*#l662ST>(L^T#lg2mZxL;{ z^U~q(&*5>L5(>TzyD7V~G;OZD{*Jol1C)dqmnv~lKfcDYprKBxXwzk3`ZXHn9pirY)?^O2UF@FZ8Q7H!pPS-?!<9zWBf zvbmit7-R5x>+lL#l^(8q>a^<7tJO6?e${y^G^U)YK7&$j?!fyv&he}xyBd+vVx-Y8 z*R99YAYDVTrLoe&@TZt!5A3gX75w)g_y<1KUK1DpMd>byzmg_JWPQ+=qH zW_Xis6$AhA=7;UzWhz(K{G{;pHr@}gU6>h$)}w_9*XQaL-=ASjOr#G!C82Zn%+^7W zS`@0f@o?%p0a=_y^a(xe$t#H9P##-PzYqAMS==Nw`c@QM;RgCxo8xmZV)D;+3Lo7? zNPvW^P%2sqpR1l>2*}E28e3u^g1!6HfTGYyWx|`^fcRJFEMZ-GK7^Axj2)VYyyZ z8)9V&Sx8KK42uIujM7Tnq_O@gM0?s3@|ZDJ zdjI~=)-9ng@5Yn3^~>&TbYdB4cZ#!p9^9pyu*2(;(^#1%6C?leMoIs00+0L2Y*pKI zFYm4{xP2VXaqU9MJ>D zQor%i+Qo6qK-H!ALxI885nkQ&Q#Y^juNrgtyCdE)yM&z#FHy{uW*cb-3RGnmlvzG{ z)($U`HL2CleGh-Xi!o!F+-@jmuBz?*=o=^Yd{DBzW$F7=%Pb$Tl(B zZ@8XRmwt!arFQ6R7k|-;sNJ{yRa`SE*1$iDmC&T3v_;`)lR zLV`9~-g!+Z%L|Q`n!LesTV^NiTdH)7#!G}e<7@KkEBoI!XCs)p35K4U94M0-hh}E0 zn8_;5JPMT+@Qc4M?BkR|Bvn&Z^DVA^i?B*>2aC6o5#g(t=37bJyOgd51l4`En0_Rg z8GJagI2)8g?^%PPUH2uUF!-omIFgn~eIbahwzOuHw5zsk8J|{rx`Z`CxwGX?zD5|3 zsf+ER{JEJAtL&*LOyf>`*5@SM5%Qxz<>0rGABsfjZbx&qzd3yGjBV9zmlZc*l^3p3 z#)HBUQslSjZiKEk+O4j4D_Ikj$Hja&p z978jM_q9UK-FFr`WC#vKtR*Ls@C(9`k*Y=yG zh1$)8dG6X`r5L2+w_<@Rg{))2;*(W2oOLFHM0+Mu4Z&Vh$_2c2$F4P58NAOue!70I zcrwZWs{Y*YEAL1=yt$1Xd4t8YG$d`Z?Ut_E{6W%qLx( ziJ$G#X+shHE1uM(tt45315*)k&EE}v?Dges_HlHsw>o*fq=~7b^IG4$PW(x)EsA=+ znkOAY%I#%)>Oy=Ng7CY!`o-BneX_4FqL>ghY3rBgH-pBupV1PUe2&@IFRr~k^E|Y} zvEMCfH8MaSVW?y0xL-KML1sc{b~YKSro^07_Pco;mKX*-S(+XZ8$9_?)Q(OrIIlEj z^W7_9aWiA9nj+jmbND(XX==tLU+`#S)k=8s41{eH8&%Ha$(nS7Q^47w*6oawNw_+b z*P$QAk$Ihl5_f8<_5=3_BXnf_!XZvy=^kwu26wDKE97R{{%rfRKrbnFM~G6--7x{} zE3|=8{`MqEXkzsd4>D=8vR3)<>OIreFiM?_ej;VpPiTx| zWv~aIF(7(WIo6-k5r-a`eit*_U?!$!Opi_D7vkjLrb33Y349Q%TX=Pwl6B~h^%!v} z3UuweatV@Ms-NL(-?epqRBPXuC~FGnGslMM~TA~ z)=iD51e5m|QidkF6>siObw_eV;D+9#DN3(fX(oAP;RJkCeIeUT$6~v~rQ#ZQag?>N zEwb*Q7jtixOef^|a9ikfoYm;VD-d0G470*-g!pHYhI$1{(!ujYIv3S4JQz3HJc#S4 zd0BkgltDr*&~~Sr6)E`k$;_nxxBEhew70c6MT6d;grM@UC&GpfRsA#7F|B`gCBgHo z5F`?*M?Nc2ziVppv2jkgB`8e&6{)#5`l+2@XlMK4TJi7#vSz$!p1X_d!MaJwz=Xar ztq}X^kU^{};R1^XHy5c*u7f?3F$YGfi*AIRR+CWY%e2<;gbMu8l%ISLym7ael2BjE z1t4=CE-)paroYvP9M9}$hq?IeWpp2S6D=6}a_-hk6{2>;Kgcoa7*$)3#r6Iwv*aa2 zwVz+0)fyoin@Ws=t+Rs13(vCZhTrrys8mJ$-g?PuZo87rz*mZ+`S!^CQ@K?dmh^&5 z564-qc2SjxMCM z=fR*sY1B4fatRPt~`>3Lg3IQLY{ z80O(h1D}+xYvU z_HVMA=+9bxPrA}AKeawaF?cFX3rLt6+c#3w4LQtbadR}xy4IT?aWUVtaxf^MjZ|Il_X$L<- zoL~2O3T}3hJKH$jW~B0SG$=J^wpkCmbqlU;KD{T}@aHD;EQP9+0I%K9jqqHh)qVOE z?v@0E1>YC1-u~QhST=~xbt7p27k&8zepf7t0;yVF5)$B}W6JKHC269b#mtCDE6yV{ z)@hk-coaHbSlNQ2G-{hTR-d4~*P-MgX^lHlt`qwPdaoU-Z64q7!rRc>!JCOqVJC+@ za-vK%=-yB1(I+xN`EvHNU8@hl*1C(d@MOn!PRm`BS~goy+rslly6!^WemkB!jFw9; z5H%t>qOY@isafo>RAUgsvr+jL!(tgra(jN-xr}OGx%4phBpmJy+l2g5K)`<1)>ZE9HTT&_;X1mkMla#r4{w$k_2rFA3t%E= z>3M1L^VL=?jw0M~{Vtt|mqh2yTk!`q43jyr+l%lrH|qOV+v#%3Jykz_e8}WX@c}k$ z8xs)|FNN)X<4`@qhk(ex+tT@M!wy+Bmz?xVd3s7GUYR@uk+N^)!udESJ*wOLOh$W$ z1GDt?3)bqDvGwmsCtW!Z&EQEtyFEQIPt6ELDK{7>NLryOiz@kHZ~Ul#nJHJAg^y`` zT4aTtkT~aKUd)t|I>95uIwTQVTQiK#%DJCgwkrvb8}|u6Y&mr-{_sBO7?4)bvn-M? zhdknR>e*i$!ZZMi%qQFJ4rBBZqwgdV{HMn6ZjuL(-y@tSUJ%+~3{anXzvcBv(^0sd zlwLUags*6#E1=wo`vGN-x(mN-@2I(nklWIv;||SG$^zLQbNe91by3>6o`NxgIE;jzGc%p zxz5q)Cj2L2c`WOcp9e&<>Xlt3JL|uQVSb@w>-0){pFPM9+-Z0*|OU7m{ z$!3`lqUW|ZH@bldZ+Fim>-2Pe&!lu~T1QLp>&+GA35XP+JiV_=IY~dlXPQ@5aZ)x~ zg9v<3e+DH~2B9^nmy^e7d9o=7-|UZvOUO3bT$Gz;ZSG_&+!kAH zeB|!VP!$jJ<7XOJWPJ}wMxWqCDzd*g4bB2qR^7v?^$W4E1Ys7@R%-$;I9k0)P4AYC`Hj+jQsOUl2m$&V+ z`VXVWi!;q8CdxPHQjO_za_%eQ&Ph$+zpME)-fW;hPqp85w9)Wt$sA*X*(!)9IAjQ$ zVa^YA&^2)IR?{hwHPM;=E{jQ5BES87M;zz>{^0=AFA3+2Kg!el%RdY6QXP?azPQ!GDP*U-Xg;B~vA?4~^NM<=y5P=PlEhgBc{hFU z2z#~VXG#6s0gOf)aARE>mFq_Xp1S;$!xJfk)}@NiUyZG3ZK$e*|6$|Q$&O=Px&%Y989dJiPI7Bovs%{$-DwfYo9y7CO@=FK+AAs5%^OJ$OywNMn@CWp#z4k(M58@v^=TziV zAiDe2dEf>Jw2ybO=MWp10gIu%eWsSB^#~8v>60^543V$2WwLV$%?zGJK){c+S9|inV+4j#LRx;{9j*l%-wr~d1Jw( zDHc78l>H-t&djjlSv2v&-HG%K1jOA64BQhEx4_RRLmz*d-};zpAuO@ui)9YmlUQY| zJ8Ighj)QBl5EM3yj(RF_k8o3B^9MeZs!tDtHDrL?SLAh}O==(--*|YhQwh~JcYpnj zcAB~R#7|41RQHFYHnG=Y^<2GaJXFjV?&x_5ufNjiO?#b&O_(1$FKS*2XBeo>^8vS& z3y-u$tZZm~zR%jBS<=Zx5wD+`{4P@j3hk$=CtaH>ri3q9{AIYvnzAiP@+(rwb|OQ6 zmSb1)$=yeNrPdos9CwF)If8WPHGz|iPbIa}nn?Yg&-|Ut^bfsMjE4DdZ|CgDh{+3D zD}5C&3z6+>dWZeIzeTvO74}-RR53NI&TwVOyLm=onuqyRb7r$2du9`RX6yx7A#rlU z%Z6L0DM^#XTyE{$!*=pShwAfM3f6j*!n9gCK+`#x$k!}2VZZ|0(> zbAerM2m~;g;+hr={46qFTzRIl*G_?8Mj^%q*~Np;L){Uh!S?5_p$o(EVv1FQ!wK=Gid!_na23Xu=e)3)#}4vt5G-o5WAQ3;@xug1Rw zJe9JqiBAh&gdlsi;dRQqnt+W_+YtJdKjwOoZhqEvT{Tx$3mgH^INKWw@Kg$k)KHsxV%sxoNq7WZ?wBL&Pzb8jV0qG>7Us> zOtjdF@u9)B-+jsXd+k~|rjg^Ms7c}0=K?_~48ccC4LIHRZys*?Vz8w@^1^$}*7E(Q zaZ%>dBV;}{uJ0ylW^J)~7KzUh<=TKx_?lqyq)QB>9KOk-=FPeFVMPX4uc`_oH0GM;Zbr%E9q~$-!CgPwtQCAAIx)S)6PyrW{%6jH(hT{NkQw2q=&C2Tmu(p z%yS{FCwPN{Dki(i;1~EokLQe-x?fhcjKh>K)4w50$3M@3GCBh%uvNZ?Og5m7`z`p1I|@uv#eJPS;-%MRppu?@@ihXXap zPeYxNH_avUdGYPrI8oB+ttZE$P)-6VNK_wJu8*{6cpFO)hQANk`brN~=>JSln5pMJ zViEZu!Yd_qMLoQbzFmKt*A{x1leD?Guy(U+*IVoREI(NqwS2&-Jyx3LqB@a{7|xUE zp_ls(oOC$7sP&0OyFF=SSRKm)EH+Z6gYf0Md~t5V*`v_gyTGtgVm?2K~)-d+%7|cpF)IC-rv<6OsSx=t8cUl>d+G6bqpeC zu3mUqkKJAPxZ(~44PmG5>fIM3rd)DOGmH*+E5LXAet%YLZj!e&+|}xysDXaQr1f;J zko5^X9pwa_*GJB`KF;v-k!S?ZZoRGyv<`b$c1OZTBgi|Lo=CS|lNdc>ukTHVz%ZYh z8w`$Q2C=ruwx-%W_~EX;TaZU831=escH0d-oCRopyft#R=&0~!y>!%B-Z$}aDWwp8YwmHQ&{f+E~-F!BvOZWRgI9QRo=%@8%@)Tl*d zp~JWm*EBQ#DJzU4uRAol@8`3ZdxTvuRk`pHh#LN|5lG@}AlukKx6tLbiuEA+Aj|rw9sBpU@&vJa%EtZ2qCwDaPk%F()@!Xe3>1#DTlf zd#mXYO)PFouGS`;&?PE5?HJhY)+6_~(w)}L4S`EEW(lN8s+vhGS|`pqwNX1K{Zn5R zz6(vTr!knwNg^#kga@xS>EqST`Ee znBoiF7{LsYi4<@`Wj`{p9#;Mug~S=sMenbwQ>;n_2Lh1+_n+S1*vtZQ?)~A&;HFLk zl@z4VQHfE3=m1?tT3qG7kpk9DzFH_Z)|QP13HtUr(`!B9&=G=j%$DJEH{#h?rCFCAN-`{o zyVx>CZa)i;)Ue6Dq63ba z&?U_L7+xjl4NDj$UPvo`Cz{Zb0|s&-w?{jpm8v1O)`_A<#?%cZv(*HybfG0-4+{A= zMIJ0Gi8%3pgf-`3?$=(L$7=tT;7^s>Sp5GJAdT*p_$^MD-|51PT?-iev`1YoaqGYr z;g)n%c7AfZK(-(49}>7}awwFnpziP^fIvuSAkcaE{qGpqIGb2Ptf2Pi!BuFCvg$M& zmRIsi{jYJZ_U}IgQSAHOTu!75<6E#FX5kWxH;Tjslb#)AKD3NivovXgiq&?m8#_jI zEk!h!x1;4mj(;`Fwx6v@{wVVP^D_0=7H$ryisaOC`b@S{9L@>j##pe@$H%BK-;5Sd z^j67=dA_`SSrh+So1=WTCo)ry#@G*~<{{QjwTR7}yVLL}dpoNA%XZ8&YXw}|*P`4z z)LysnH4*IPVjEwxEnpdnqsDfsYr?2BVs7U*Ml#cBq_KQ!u`%F6wYo7?A1GYnZYY{B z=(cYtnJM~QXRZak5fLSWExms-%1;Q~JWkd2sjjPZH&H-=-mrh$%({1D0RLyQh>w<- zfiH!hNSfYv%p+u1I#D)ow~5QHk8tF^L!%OP%0_ytd4!tz-$i z9{XFkh+#0coAiSQgqPD#!6g;0d$8$Wv^2 z+b3B!I0(^}TkfQYn-n8VeJDzQK6iM(|LCl6qeIEf*;%{Uq;k5_j?jvYfPertFH;gy z9rB(dM>Yi~k*S_IvAdIEL`SeYeJ402cY|j^B84yrH2k{1`t5U??3fVdAv6;{44=&% zB@IliB>~D)!#5Hs2~xVd*?yFBA>;K;MAg}-G3dm`rMIE)O2ewB=vTFy7Q=b{!qOBK zyw?-S^)^i{27@GJ#gvOa)f;d!H<{FM)Hr^BO~G)d@up^3ADx|PG{$qLpaq}X^c9iu zO3(WTz$qF|5^zLK@;vOo$7~4@!c@lCO74*`w{_N1v@! z-y959P2xHPD>N}r+6E;$Fh=1|qT5%!5iE){RemzA>mzpW(9BcW2<0*|nX>yH*n}XHr`f*mhN(yt` zhFFAqsw7r&D`qk?wT($eSVB{6a!qCd9|k-vh13zC^uAXZopZDI0M>re35-BHaARB; ziL0&dc~1W;i*^1_7MoN80|)zxw;%WI>1gHSs^L3&YUtEgwoMoJqjMuMZTM`he;hun zlh@`|ye`G{7j8KxKZSCpMw zijPQRUw$YkMw!Dvs0yq9*53_DQWd@ZhqXOVW91wP?w14B)*47-QGkwHfgM4(je;mKADik zyX&5@``E>EK10=pUs}o38ZutfXcEMtz(utC1diQ1FmykgVQsBGNLURRX`VaW$QD#F z_)=zh`l42y>s^L;fpzbW4c`+|kE-xzv3k1t`q@&qqdrpZnuuAaSn;MiY4qv1HjlKo zC#!1nqD=LLi%`$MA+hd+iD{#}e?5ZFY19I)%_6}Nw`x^EMf8@Balp8pRQ1DxDp=Js zImOk0Z03d{cLz?iGsi|UJ5zBNcaAy%MP+s04U_sFTAECswR_H{+HhYUe_%w9RaBdj z;HB8E^ICWd?-N;oVG*n?D}|0uY4R}Hmzn3S#7GK)_T0S&w66F4tc~{|>Z(R0O+;@< zm%6P^!Xr4zIG-FA!N%@Nx<*80raO~33-bn(|Ew}!!nh}JN4udCieYfSIIfl5M)$Mp zaLGqo3g&PH=ed$F{tvCq#JCc=kHG!B{%;@JtwgDEa*Fb z&bL7O#<6)>nV%vX_Z~ca9KpxU*iF4pV`=k{6KAO`r(hyQM7I)6pF3&ijvl9@lx_)6 zy3x|B@2#@2ospRK>U82?guHrO`J*3pg`sM{r)R2(+L{30l1+Ad%AmvkgyezGKGw9s z-RybUyl+8Pl(+*)k^<~j&D*5$S;b;*`i0Ui+$_c46AGRjXMcx=73c8QWv1*!?F9zK zY(Wi@nU~!=%u$aRzQ1XM@^8?O3qSaf%CfKT7G9hbx%AG>kE)$v4=Ie?TY+vIJ5Esc z1v|$Su8m^>tdd8@UoQwvhf*S^quED^U4VvT8Q)HUj%HISI7BDqL4@UFv?#pjmK?gE z!x93Qxz(1}r!;Bhf`y+FSzur4l&T%L+}*KIlt28~vyDhzI&kjSz*Em|F6_F68J`=f zB&ZX6Kn+n5-8fNTuJisI8uq~1`;N)Ifgt=8 zC-r+I^k5+ptup^au_f7vVf^0{v6Avag0_nneQy`jSv9>Y3+z_7SWj-Sk z2;@xz0wG^$_!Y2FP-{aLD?_KtjhdhgK92x9_5x^e9=HB`Wq4Cyf zSr7bASwIXDKn$`AAR3@({0B(P+R_H79~+oim_eQYW}yQ@<;Se9XL5i*-4bw@gvtkG z{DbxT$E!j0CMVL#z?d%rf{|YkDp27XkP_JLiXNUzHMG!2UqcB3vFCw6z{{^I!yBRm z0?C1`OkiLW$Uh>niWnLKb#XC3)pphvf6Ime;QXgPAB!=7K(|joAVA;0t_*Lm-CsB( z2e6eP#7NNwVh4s=+g+hdEC4A_f&S$#6X4F6;6N@Akf_lZ1v{LY*Dbinc@GC^_++G_31=75eNi+ z4g%3%;O#A6=80K=flUT`5i28As2$7@3IjGB{+1F4ppMx;O=F`2fqLgaAkquePDHp% zIuf(6w!fN$3y_`}+8~KDfcBRTp=1h0Q6Nr zh3bofK&1t6m*(O}jlY5aOdLrIYsbI)c@Bd_`d8QkOLmMK1fu>W+qtH-;x5C)A!b%) zP&2TFnG2wAYpcJB1OV~v+de&aV8}c(Kp=_>MD)zdLu$7U;m6Pur7rRox_VG3lu3KI<#qpt z{qL!9&U@r!-7yFcEK~H$mP#@EGVg*JyxNwYBVXHK4P^m=_q@^N*=Ck^87U93w6=3r z1sekn`|l1@0<_xa-t@}=ZQSXy6O;e+Hw|iPZFGei&Osz*D&}rLy>5u}vKnj#E`t;x z_E5k#UcKP&0x)0sg-mr~5a{)n%WITj>M~5x=6o@MEyPTLsN%|HKm`yBwBLl|0mdlc z>*Zze>F6?1$<7*Z7ErUR%n=R1lHoX-ml6YkmfPVjEdy+FgiCW5U;)90wZ#>qMhl?g z$qj{j*+HN}X}C+KJj&oQ3NYY6_s&f@&{aFIArx|zGou5jaGj3x!9WB91Dxx{fFeKo zFDlHy-q6m>2B?w!lfwNOr)VS)XbOn6STES3%tHjwFV8Fwwt|5z{u6=$ z;{ChEe*OLLP6J;&sh~YZ1?d7@b!+?OHRcaO{2LAhG-CjRUNv8s0U9;F^s+Eueh-up zE*X_bs=sOC5JL+ilPFU2Uk@0qoGOh|))3K;v@ZE`du*1@%0X1*jfx8ryQ@lS1JD8n^7Sd++KosuG zdg=G8kuR*@aX7*OT0yw1nf#Ie6M3~};GqZ7^iN>6fw4g0F7C2>F&jey>6=*s$%s9x z*u~IP-|RfF)aP(IFYf(mCC`by^aE`$aS$lq?LS%bzoVMr%>}#hi>R(9$u-!RHUs>fE%qw^e-j{&;L8kGTOspVAB1T3)aAs|F4RTY| zk+K^IWS;>G3XtyCmEk>+a~)C=Nae4=S#;oXl>uFR0F3*^CAHRh9ZvpyckZ020k(ia zt^v!8U?vd)0%icd=%VFZS^Pi2*DwpJ3%Z^FFhRi7T@2!-P;dU4Ck7XW^BPptCj7%h zAgD?Ja2IO?<7|JU)PdCETsPOisy;i4(F3FB3#8u{XI;741(>6mJw!x7{2EM&hBY+- zFkDf9dM{$|z5c=|D5_n9vB#@^><&mH3B(rXC-?rnGQ5q_{=z6;w*;1MLpo>ffj}|9 z^t~tyLDydtt!pu!>?J4DZ}^|w{+F8*b2hYqu(4k=PM?-z$>vo6^{ZcI5-I*)Opa@qZ?|qeGkyR>UqFm~ zadnEN{lNr^VL;4f^gCL=2Db*w)n5m~B`?4@UbG*JlYio@?TpN<04EGMIUCdSQkwWJ|!IRYzE1(^L8i7ay0 z5>?I4g}jE?VzT3m2xxi%NCGa}js@6n;;;G!#7-Py0WtX}?z~ppKDsVXj6FagJip6K z)-V4T^Ez$+K*AS}1J*|n$K{?6iQW1&mVd};FX03}@AtJ*A`U$fqId=Z!2>b(#j$)3 z{olmvWW-H}dT^!z)*$OL5r5);6FINY&WPU+Ic;{mMi3VWl*@P7bOw8){pz*lKlwWl zc^KOL6B}Lun>FK+d*0Kz>;-i8y!?K#AlOp&7t9_=9wGXs5U>T*R38ZD%)r-BtFr{j zR?UEAn0lESMumP^#0ykwd&4V(i*s3JlxQ?JQ-GD2b2)JT6nX{K+QtS*dasf2NT-Ql z*$4#cdUILAH5QED62dH?K*ih&@}C4+)6@*e)NH_p*Dahg9@Tt%!0tQ)=FUa0b|?Bb z)!G4KXABe>|BpyRZ7(pb5LnYNAj!X|n$EJnVgCtURAC0t^Zfqm_~m>Mn=@E9CjjRi zrv?H6h1OqJhWDr0zp4K^-v7-#4`Xq~`Z#jL{lPcOr=WUhr>w*u|FI5d<2AJeRL85Wd%E$phrciv4grZwKrz!nuh;Mp%~nDFFJ zm?cnAGJ@F20J}~m5W6cT;W>8>-5pZx>^+3sJC&02ddurwf6R@bA>Peip;y+*Ea1c9pkFZXdV0{gdE=f(io z8UWnhKRX3i$aM~T_{HgSv^fa03fO*%U$gBz1fNF1xeE55?EMPb`G{3VjTJ%_;Xw6D zm&^I@VSmu9z~=vKT*!fq043O81Dly`B>M>%(jvf+0-@-y3)ouva{ISvP_Uu75@1Y# zji7%G!8JggFhfB@Ak{zyfF!?g=Y35$ybOfdn*z{lKx1>1j|s(rDGMy9i*W}p3+^S! z01(9JJRA6Lk?$I0e1vQI4Q>#qkN2|wjkLRf1U9FB$3+_I^5>PBE12iDgbZKSofmK( zSwP-McA>wc*?%(6i;sW>vHzzEc?IiSv)$bHI`)CF0|AwNiVG}7JiOms{tTF|#(!|{_vuGa^{OaXJ)>U0R zXBEFj*RXg9>}3GmyeOAX%5|)(e9ieGF+?H42TbrFP%3Z}To`@EDS-9g2g1P5z)s8- z*1&-SI~EhOzfL#Y>WOAJMgf6<55@TBi0{9g4DXjmF`b?N@i*r@k^JXG z_hoUo-kqWO1EP2XH&9~wb!B+#@BD?iEXNI?(ilWSzu!Cw52{{3xHKI2dw&9e5RK)T z&4ps!c{eUUmG`dz8Qy5$iGQi&@-upudvWqyZQDX&Hp|7{b%c|PHO*d z4V(G>=6{~s{*!R7zRL$te-kF>e-kbqN4?Cre01|SV|n3E##O4jeERWs+nGh;-)A9} W9wFU0|C2lLPaW|8^{eMg@BabQrW9%b literal 0 HcmV?d00001 From 4a965cdb05cbf98b3335ffc25ef8612b381c2a80 Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Mon, 11 Feb 2019 08:11:24 -0600 Subject: [PATCH 031/107] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fbb06237..e2bade1c 100755 --- a/README.md +++ b/README.md @@ -13,7 +13,9 @@ # 当前阶段 -Swift 5.0 翻译中,请到 [Issues](https://github.com/SwiftGGTeam/the-swift-programming-language-in-chinese/issues) 中认领章节(把 Issue 的 Assignee 设置成你自己就表示认领,不要认领已经有人认领的章节)。在翻译时可以通过 Calibre 软件对 document 目录下不同历史版本文档进行 diff,检查待更新部分。 +Swift 5.0 翻译中,请到 [Issues](https://github.com/SwiftGGTeam/the-swift-programming-language-in-chinese/issues) 中认领章节(把 Issue 的 Assignee 设置成你自己就表示认领,不要认领已经有人认领的章节)。 + +在翻译时可以通过 Calibre 软件对 [document 目录下](https://github.com/SwiftGGTeam/the-swift-programming-language-in-chinese/tree/gh-pages/document)不同历史版本文档进行 diff,检查待更新部分。 diff 操作如下: From 3857433e94f59a076356e64c061eeb8ce79c2d5c Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Mon, 11 Feb 2019 08:11:49 -0600 Subject: [PATCH 032/107] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e2bade1c..c295aaa6 100755 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Swift 5.0 翻译中,请到 [Issues](https://github.com/SwiftGGTeam/the-swift-programming-language-in-chinese/issues) 中认领章节(把 Issue 的 Assignee 设置成你自己就表示认领,不要认领已经有人认领的章节)。 -在翻译时可以通过 Calibre 软件对 [document 目录下](https://github.com/SwiftGGTeam/the-swift-programming-language-in-chinese/tree/gh-pages/document)不同历史版本文档进行 diff,检查待更新部分。 +在翻译时可以通过 Calibre 软件对 [document 目录下](https://github.com/SwiftGGTeam/the-swift-programming-language-in-chinese/tree/gh-pages/document) 不同版本的文档进行 diff,检查待更新部分。 diff 操作如下: From 096d239c8394c5bd364b1f9a839f27f6e3dd5ea4 Mon Sep 17 00:00:00 2001 From: Karsa Wu Date: Fri, 15 Feb 2019 22:05:25 +0800 Subject: [PATCH 033/107] Basic operator (#888) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 修改第二章部分细节 * update control flow * 调整 Functions 章节细节 * 重新整理翻译工作主要贡献者记录 * 更新贡献者记录文件 1. 移除与官方文档无关内容 2. 归档主要贡献者记录并附录在文档最后一页 * 删除多余内容 * 更新 ReferenceManual AboutTheLanguageReference * 更新 README & 添加文档 * update basic chapter Swift5 --- source/chapter2/02_Basic_Operators.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/chapter2/02_Basic_Operators.md b/source/chapter2/02_Basic_Operators.md index 8fb666a7..4fc80d13 100755 --- a/source/chapter2/02_Basic_Operators.md +++ b/source/chapter2/02_Basic_Operators.md @@ -176,7 +176,7 @@ a += 2 > 注意 > -> Swift 也提供恒等(`===`)和不恒等(`!==`)这两个比较符来判断两个对象是否引用同一个对象实例。更多细节在[类与结构](./09_Classes_and_Structures.html)。 +> Swift 也提供恒等(`===`)和不恒等(`!==`)这两个比较符来判断两个对象是否引用同一个对象实例。更多细节在[类与结构](./09_Classes_and_Structures.html)章节的 **Identity Operators** 部分。 每个比较运算都返回了一个标识表达式是否成立的布尔值: From 0a30944f53d63abd2e40dce242a8fca92be68a30 Mon Sep 17 00:00:00 2001 From: BqLin Date: Fri, 15 Feb 2019 22:05:48 +0800 Subject: [PATCH 034/107] =?UTF-8?q?=E5=AE=8C=E6=88=90=20=20chapter3/07=5FA?= =?UTF-8?q?ttributes=20=E7=BF=BB=E8=AF=91=20(#884)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chapter2/05_Control_Flow 优化翻译细节 * chapter3/07_Attributes 粗译 * chapter3/07_Attributes 完成校稿 --- source/chapter2/05_Control_Flow.md | 2 +- source/chapter3/07_Attributes.md | 322 ++++++++++++++++++++++------- 2 files changed, 252 insertions(+), 72 deletions(-) diff --git a/source/chapter2/05_Control_Flow.md b/source/chapter2/05_Control_Flow.md index 8aa7cf6b..7c6f4ef7 100755 --- a/source/chapter2/05_Control_Flow.md +++ b/source/chapter2/05_Control_Flow.md @@ -779,7 +779,7 @@ if #available(iOS 10, macOS 10.12, *) { 在它一般的形式中,可用性条件使用了一个平台名字和版本的列表。平台名字可以是 `iOS`,`macOS`,`watchOS` 和 `tvOS`——请访问[声明属性](../chapter3/06_Attributes.html)来获取完整列表。除了指定像 iOS 8 或 macOS 10.10 的大版本号,也可以指定像 iOS 11.2.6 以及 macOS 10.13.3 的小版本号。 ```swift -if #available(platform name version, ..., *) { +if #available(平台名称 版本号, ..., *) { APIs 可用,语句将执行 } else { APIs 不可用,语句将不执行 diff --git a/source/chapter3/07_Attributes.md b/source/chapter3/07_Attributes.md index 6e36d5a5..1810c261 100755 --- a/source/chapter3/07_Attributes.md +++ b/source/chapter3/07_Attributes.md @@ -1,171 +1,337 @@ # 特性(Attributes) -特性提供了有关声明和类型的更多信息。在 Swift 中有两种特性,分别用于修饰声明和类型。 +在 Swift 中有两种特性,分别用于修饰声明和类型。特性提供了有关声明和类型的更多信息。例如,使用 `discardableResult` 特性声明的函数,表明该函数虽然有返回值,但如果没有使用该返回值,编译器不会产生警告。 -您可以通过以下方式指定一个特性:符号 `@` 后跟特性的名称和特性接收的任何参数: +您可以通过以下方式指定一个特性,通过符号 `@` 后跟特性的名称和特性接收的任何参数: -> @ `特性名` +@`特性名` -> @ `特性名`(`特性参数`) +@`特性名`(`特性参数`) -有些声明特性通过接收参数来指定特性的更多信息以及它是如何修饰某个特定的声明的。这些特性的参数写在圆括号内,它们的格式由它们所属的特性来定义。 +有些声明特性通过接收参数来指定特性的更多信息以及它是如何修饰某个特定的声明的。这些_特性的参数_写在圆括号内,它们的格式由它们所属的特性来定义。 -##声明特性 +## 声明特性 声明特性只能应用于声明。 -`available` + +### `available` -将 `available` 特性用于声明时,表示该声明的生命周期与特定的平台和操作系统版本有关。 +将 `available` 特性用于声明时,表示该声明的生命周期是相对于特定的平台和操作系统版本。 `available` 特性经常与参数列表一同出现,该参数列表至少有两个特性参数,参数之间由逗号分隔。这些参数由以下这些平台名字中的一个起头: -- iOS -- iOSApplicationExtension -- macOS -- macOSApplicationExtension -- watchOS -- watchOSApplicationExtension -- tvOS -- tvOSApplicationExtension +- `iOS` +- `iOSApplicationExtension` +- `macOS` +- `macOSApplicationExtension` +- `watchOS` +- `watchOSApplicationExtension` +- `tvOS` +- `tvOSApplicationExtension` +- `swift` + +当然,你也可以用一个星号(`*`)来表示上面提到的所有平台。指定 Swift 版本的 `available` 特性参数,不能使用星号表示。 -当然,你也可以用一个星号(*)来表示上面提到的所有平台。 其余的参数,可以按照任何顺序出现,并且可以添加关于声明生命周期的附加信息,包括重要事件。 -- `unavailable` 参数表示该声明在指定的平台上是无效的。 +- `unavailable` 参数表示该声明在指定的平台上是无效的。当指定 Swift 版本可用性时不可使用该参数。 - `introduced` 参数表示指定平台从哪一版本开始引入该声明。格式如下: -`introduced`=` 版本号 ` +`introduced`: `版本号` -*版本号*由一个或多个正整数构成,由句点分隔的。 +*版本号*由一至三个正整数构成,由句点分隔的。 - `deprecated` 参数表示指定平台从哪一版本开始弃用该声明。格式如下: -`deprecated`=` 版本号 ` +`deprecated`: `版本号` -可选的*版本号*由一个或多个正整数构成,由句点分隔的。省略版本号表示该声明目前已弃用,当弃用出现时无需给出任何有关信息。如果你省略了版本号,冒号(:)也可省略。 +可选的*版本号*由一个或多个正整数构成,由句点分隔的。省略版本号表示该声明目前已弃用,当弃用出现时没有给出任何有关信息。如果你省略了版本号,冒号(`:`)也可省略。 -- `obsoleted` 参数表示指定平台从哪一版本开始废弃该声明。当一个声明被废弃后,它就从平台中移除,不能再被使用。格式如下: +- `obsoleted` 参数表示指定平台或语言从哪一版本开始废弃该声明。当一个声明被废弃后,它就从平台或语言中移除,不能再被使用。格式如下: -`obsoleted`=` 版本号 ` +`obsoleted`: `版本号` -*版本号*由一个或多个正整数构成,由句点分隔的。 +*版本号*由一至三个正整数构成,由句点分隔的。 - `message` 参数用来提供文本信息。当使用被弃用或者被废弃的声明时,编译器会抛出警告或错误信息。格式如下: -`message`=` 信息内容 ` +`message`: `信息内容` -信息内容由一个字符串构成。 +_信息内容_由一个字符串构成。 - `renamed` 参数用来提供文本信息,用以表示被重命名的声明的新名字。当使用声明的旧名字时,编译器会报错提示新名字。格式如下: -`renamed`=` 新名字 ` +`renamed`: `新名字` -新名字由一个字符串构成。 +_新名字_由一个字符串构成。 -你可以将 `renamed` 参数和 `unavailable` 参数以及类型别名声明组合使用,以此向用户表示某个声明已经被重命名。当某个声明的名字在一个框架或者库的不同发布版本间发生变化时,这会相当有用。 +你可以将 `renamed` 参数和 `unavailable` 参数用于 `available` 特性,来表示声明在不同平台和 Swift 版本上的可用性。如下所示,表示声明的名字在一个框架或者库的不同发布版本间发生了变化。以此组合表示该声明被重命名的编译错误。 ```swift // 首发版本 protocol MyProtocol { -// 这里是协议定义 + // 这里是协议定义 } ``` ```swift // 后续版本重命名了 MyProtocol protocol MyRenamedProtocol { -// 这里是协议定义 + // 这里是协议定义 } @available(*, unavailable, renamed:"MyRenamedProtocol") typealias MyProtocol = MyRenamedProtocol ``` -你可以在某个声明上使用多个 `available` 特性,以指定该声明在不同平台上的可用性。编译器只有在当前目标平台和 `available` 特性中指定的平台匹配时,才会使用 `available` 特性。 +你可以在某个声明上使用多个 `available` 特性,以指定该声明在不同平台和 Swift 版本上的可用性。编译器只有在与 `available` 特性中指定的平台或语言版本匹配时,才会使用 `available` 特性。 如果 `available` 特性除了平台名称参数外,只指定了一个 `introduced` 参数,那么可以使用以下简写语法代替: -@available(平台名称 版本号,*) +@available(`平台名称` `版本号`, *) + +@available(swift `版本号`) `available` 特性的简写语法可以简明地表达出声明在多个平台上的可用性。尽管这两种形式在功能上是相同的,但请尽可能地使用简写语法形式。 ```swift @available(iOS 10.0, macOS 10.12, *) class MyClass { -// 这里是类定义 + // 这里是类定义 } ``` -`discardableResult` +当 `available` 特性需要同时指定 Swift 版本和平台可用性,需要使用单独的 `available` 特性来声明。 -该特性用于的函数或方法声明,以抑制编译器中 函数或方法的返回值被调而没有使用其结果的警告。 +```swift +@available(swift 3.0.2) +@available(macOS 10.12, *) +struct MyStruct { + // 这里是结构体定义 +} +``` -`GKInspectable` + +### `discardableResult` + +该特性用于的函数或方法声明,以抑制编译器中函数或方法的返回值被调而没有使用其结果的警告。 + + +### `dynamicCallable` + +该特性用于类、结构体、枚举或协议,以将该类型的实例视为可调用的函数。该类型必须实现 `dynamicallyCall(withArguments:)`、`dynamicallyCall(withKeywordArguments:)` 方法之一,或两者同时实现。 + +你可以调用 `dynamicCallable` 特性的实例,就像是调用一个任意数量参数的函数。 + +```swift +@dynamicCallable +struct TelephoneExchange { + func dynamicallyCall(withArguments phoneNumber: [Int]) { + if phoneNumber == [4, 1, 1] { + print("Get Swift help on forums.swift.org") + } else { + print("Unrecognized number") + } + } +} + +let dial = TelephoneExchange() + +// 使用动态方法调用 +dial(4, 1, 1) +// 打印“Get Swift help on forums.swift.org” + +dial(8, 6, 7, 5, 3, 0, 9) +// 打印“Unrecognized number” + +// 直接调用底层方法 +dial.dynamicallyCall(withArguments: [4, 1, 1]) +``` + +`dynamicallyCall(withArguments:)` 方法的声明必须至少有一个参数遵循 [`ExpressibleByArrayLiteral`](https://developer.apple.com/documentation/swift/expressiblebyarrayliteral) 协议,如 `[Int]`,而返回值类型可以是任意类型。 + +```swift +@dynamicCallable +struct Repeater { + func dynamicallyCall(withKeywordArguments pairs: KeyValuePairs) -> String { + return pairs + .map { label, count in + repeatElement(label, count: count).joined(separator: " ") + } + .joined(separator: "\n") + } +} + +let repeatLabels = Repeater() +print(repeatLabels(a: 1, b: 2, c: 3, b: 2, a: 1)) +// a +// b b +// c c c +// b b +// a +``` + +`dynamicallyCall(withKeywordArguments:)` 方法声明必须至少有一个参数遵循 [`ExpressibleByDictionaryLiteral`](https://developer.apple.com/documentation/swift/expressiblebydictionaryliteral) 协议,返回值可以任意类型。参数的 [`Key`](https://developer.apple.com/documentation/swift/expressiblebydictionaryliteral/2294108-key) 必须遵循 [`ExpressibleByStringLiteral`](https://developer.apple.com/documentation/swift/caseiterable) 协议。上述的示例使用 [`KeyValuePairs`](https://developer.apple.com/documentation/swift/keyvaluepairs) 作为参数类型,以便调用者可以传入重复的参数标签,`a` 和 `b` 在调用 `repeat`中多次使用。 + +如果你同时实现两种 `dynamicallyCall` 方法,则当在方法调用中包含关键字参数时,会调用 `dynamicallyCall(withKeywordArguments:)` 方法,否则调用 `dynamicallyCall(withArguments:)` 方法。 + +你只能调用参数和返回值与 `dynamicallyCall` 方法实现匹配的动态调用实例。在下面示例的调用无法编译,因为其 `dynamicallyCall(withArguments:)` 实现不接受 `KeyValuePairs` 参数。 + +```swift +repeatLabels(a: "four") // Error +``` + + +### `dynamicMemberLookup` + +该特性用于类、结构体、枚举或协议,让其能在运行时查找成员。该类型必须实现 `subscript(dynamicMemberLookup:)` 下标。 + +在显式成员表达式中,如果没有成名指定成员,则该表达式被理解为对该类型的 `subscript(dynamicMemberLookup:)` 下标的调用,传递包含成员名称字符串的参数。下标的参数只需遵循 `ExpressibleByStringLiteral` 协议,返回值类型可以为任意类型。在大多数情况下,下标的参数是一个 `String` 值。例如: + +```swift +@dynamicMemberLookup +struct DynamicStruct { + let dictionary = ["someDynamicMember": 325, + "someOtherMember": 787] + subscript(dynamicMember member: String) -> Int { + return dictionary[member] ?? 1054 + } +} +let s = DynamicStruct() + +// 使用动态成员查找 +let dynamic = s.someDynamicMember +print(dynamic) +// 打印“325” + +// 直接调用底层下标 +let equivalent = s[dynamicMember: "someDynamicMember"] +print(dynamic == equivalent) +// 打印“true” +``` + + +### `GKInspectable` 应用此属性,暴露一个自定义 GameplayKit 组件属性给 SpriteKit 编辑器 UI。 -`objc` + +### `inlinable` -该特性用于修饰任何可以在 Objective-C 中表示的声明。比如,非嵌套类、协议、非泛型枚举(仅限原始值为整型的枚举)、类和协议中的属性和方法(包括存取方法)、构造器、析构器以及下标运算符。`objc` 特性告诉编译器这个声明可以在 Objective-C 代码中使用。 +该特性用于函数、方法、计算属性、下标、便利构造器或析构器的声明,以将该声明的实现公开为模块公开接口的一部分。编译器允许在调用处把 `inlinable` 标记的符号替换为符号实现的副本。 -标有 `objc` 特性的类必须继承自 Objective-C 中定义的类。如果你将 `objc` 特性应用于一个类或协议,它也会隐式地应用于类或协议中兼容 Objective-C 的成员。对于标记了 `objc` 特性的类,编译器会隐式地为它的子类添加 `objc` 特性。标记了 `objc` 特性的协议不能继承没有标记 `objc` 的协议。 +内联代码可以与任意模块中 `public` 标记的符号进行交互,它在相同模块中标记 `usableFromInline` 特性的部分,可以与 `internal` 标记的符号进行交互。 -如果你将 `objc` 特性应用于枚举,每一个枚举用例都会以枚举名称和用例名称组合的方式暴露在 Objective-C 代码中。例如,在 `Planet` 枚举中有一个名为 `Venus` 的用例,该用例暴露在 Objective-C 代码中时叫做 `PlanetVenus`。 +该特性不能用于嵌套在函数内的声明,或标记了 `fileprivate` 或 `private` 的声明。在内联函数定义的函数和闭包是隐式非内联的,即使他们不能标记该特性。 -`objc` 特性有一个可选的参数,由标识符构成。当你想把 objc 所修饰的实体以一个不同的名字暴露给 Objective-C 时,你就可以使用这个特性参数。你可以使用这个参数来命名类、枚举类型、枚举用例、协议、方法、存取方法以及构造器。下面的例子把 `ExampleClass` 中的 `enabled` 属性的取值方法暴露给 Objective-C,名字是 `isEnabled`,而不是它原来的属性名。 - -```swift -@objc -class ExampleClass: NSObject { -var enabled: Bool { -@objc(isEnabled) get { -// 返回适当的值 } -} -} -``` - -`nonobjc` + +### `nonobjc` 该特性用于方法、属性、下标、或构造器的声明,这些声明本可以在 Objective-C 代码中使用,而使用 `nonobjc` 特性则告诉编译器这个声明不能在 Objective-C 代码中使用。 +该特性用在扩展中,与在没有明确标记为 `objc` 特性的扩展中给每个成员添加该特性具有相同效果。 + 可以使用 `nonobjc` 特性解决标有 `objc` 的类中桥接方法的循环问题,该特性还允许对标有 `objc` 的类中的构造器和方法进行重载。 标有 `nonobjc` 特性的方法不能重写标有 `objc` 特性的方法。然而,标有 `objc` 特性的方法可以重写标有 `nonobjc` 特性的方法。同样,标有 `nonobjc` 特性的方法不能满足标有 `@objc` 特性的协议中的方法要求。 -`NSApplicationMain` + +### `NSApplicationMain` -在类上使用该特性表示该类是应用程序委托类,使用该特性与调用 `NSApplicationMain`(\_:_:) 函数并且把该类的名字作为委托类的名字传递给函数的效果相同。 +在类上使用该特性表示该类是应用程序委托类,使用该特性与调用 `NSApplicationMain(_:_:)` 函数并且把该类的名字作为委托类的名字传递给函数的效果相同。 -如果你不想使用这个特性,可以提供一个 main.swift 文件,并在代码**顶层**调用 `NSApplicationMain`(\_:_:) 函数,如下所示: +如果你不想使用这个特性,可以提供一个 `main.swift` 文件,并在代码**顶层**调用 `NSApplicationMain(_:_:)` 函数,如下所示: ```swift import AppKit NSApplicationMain(CommandLine.argc, CommandLine.unsafeArgv) ``` -`NSCopying` + +### `NSCopying` -该特性用于修饰一个类的存储型变量属性。该特性将使属性的设值方法使用传入值的副本进行赋值,这个值由传入值的 `copyWithZone`(\_:) 方法返回。该属性的类型必需符合 `NSCopying` 协议。 +该特性用于修饰一个类的存储型变量属性。该特性将使属性的设值方法使用传入值的副本进行赋值,这个值由传入值的 `copyWithZone(_:)` 方法返回。该属性的类型必需符合 `NSCopying` 协议。 `NSCopying` 特性的行为与 Objective-C 中的 `copy` 特性相似。 -`NSManaged` + +### `NSManaged` 该特性用于修饰 `NSManagedObject` 子类中的实例方法或存储型变量属性,表明它们的实现由 `Core Data` 在运行时基于相关实体描述动态提供。对于标记了 `NSManaged` 特性的属性,`Core Data` 也会在运行时为其提供存储。应用这个特性也意味着 `objc` 特性。 -`testable` + +### `objc` + +该特性用于修饰任何可以在 Objective-C 中表示的声明。比如,非嵌套类、协议、非泛型枚举(仅限原始值为整型的枚举)、类和协议中的属性和方法(包括存取方法)、构造器、析构器以及下标运算符。`objc` 特性告诉编译器这个声明可以在 Objective-C 代码中使用。 + +该特性用在扩展中,与在没有明确标记为 `nonobjc` 特性的扩展中给每个成员添加该特性具有相同效果。 + +编译器隐式地将 `objc` 特性添加到 Objective-C 中定义的任何类的子类。但是,子类不能是泛型的,并且不能继承于任何泛型类。你可以将 `objc` 特性显式添加到满足这些条件的子类,来指定其 Objective-C 名称,如下所述。添加了 `objc` 的协议不能继承于没有此特性的协议。 + +在以下情况中隐式添加了 `objc` 特性。 + +- 父类有 `objc` 特性,且重写为子类的声明。 +- 遵循带有 `objc` 特性协议的声明。 +- 带有 `IBAction`、`IBOutlet`、`IBDesignable`、`IBInspectable`、`NSManaged` 或 `GKInspectable` 特性的声明。 + +如果你将 `objc` 特性应用于枚举,每一个枚举用例都会以枚举名称和用例名称组合的方式暴露在 Objective-C 代码中。例如,在 `Planet` 枚举中有一个名为 `Venus` 的用例,该用例暴露在 Objective-C 代码中时叫做 `PlanetVenus`。 + +`objc` 特性有一个可选的参数,由标识符构成。当你想把 `objc` 所修饰的实体以一个不同的名字暴露给 Objective-C 时,你就可以使用这个特性参数。你可以使用这个参数来命名类、枚举类型、枚举用例、协议、方法、存取方法以及构造器。如果你要指定类、协议或枚举在 Objective-C 下的名称,在名称上包含三个字母的前缀,如 [Objective-C 编程](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html#//apple_ref/doc/uid/TP40011210) 中的 [约定](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Conventions/Conventions.html#//apple_ref/doc/uid/TP40011210-CH10-SW1)。下面的例子把 `ExampleClass` 中的 `enabled` 属性的取值方法暴露给 Objective-C,名字是 `isEnabled`,而不是它原来的属性名。 + +```swift +class ExampleClass: NSObject { + @objc var enabled: Bool { + @objc(isEnabled) get { + // 返回适当的值 + } + } +} +``` + + +### `objcMembers` + +该特性用于类声明,以将 `objc` 特性应用于该类、扩展、子类以及子类的扩展的所有 Objective-C 兼容成员。 + +大多数代码应该使用 `objc` 特性,以暴露所需的声明。如果需要暴露多个声明,可以将其分组到添加 `objc` 特性的扩展中。`objcMembers` 特性为大量使用 Objective-C 运行时的内省工具的库提供了便利。添加不必要的 `objc` 特性会增加二进制体积并影响性能。 + + +### `requires_stored_property_inits` + +该特性用于类声明,以要求类中所有存储属性提供默认值作为其定义的一部分。对于从中继承的任何类都推断出 `NSManagedObject` 特性。 + + +### `testable` 在导入允许测试的编译模块时,该特性用于修饰 `import` 声明,这样就能访问被导入模块中的任何标有 `internal` 访问级别修饰符的实体,犹如它们被标记了 `public` 访问级别修饰符。测试也可以访问使用 `internal` 或者 `public` 访问级别修饰符标记的类和类成员,就像它们是 `open` 访问修饰符声明的。 -`UIApplicationMain` + +### `UIApplicationMain` 在类上使用该特性表示该类是应用程序委托类,使用该特性与调用 `UIApplicationMain` 函数并且把该类的名字作为委托类的名字传递给函数的效果相同。 -如果你不想使用这个特性,可以提供一个 main.swift 文件,并在代码顶层调用 `UIApplicationMain`(\_:\_:\_:) 函数。比如,如果你的应用程序使用一个继承于 UIApplication 的自定义子类作为主要类,你可以调用 `UIApplicationMain`(\_:\_:\_:) 函数而不是使用该特性。 +如果你不想使用这个特性,可以提供一个 `main.swift` 文件,并在代码顶层调用 `UIApplicationMain(_:_:_:_:)` 函数。比如,如果你的应用程序使用一个继承于 UIApplication 的自定义子类作为主要类,你可以调用 `UIApplicationMain(_:_:_:_:)` 函数而不是使用该特性。 + + +### `usableFromInline` + +该特性用于函数、方法、计算属性、下标、构造器或析构器的声明,以在同一模块中允许该符号用于内联代码的声明。声明必须具有 `internal` 访问级别修饰符。 + +与 `public` 访问修饰符相同的是,该特性将声明公开为模块公共接口的一部分。区别于 `public`,编译器不允许在模块外部的代码通过名称引用 `usableFromInline` 标记的声明,即使导出了声明符号也是无法引用。但是,模块外的代码仍然可以通过运行时交换声明符号。 + +标记为 `inlinable` 特性的声明,在内联代码中可以隐式使用。虽然 `inlinable` 或 `usableFromInline` 可以用于 `internal` 声明,但这两者不能同时使用。 + + +### `warn_unqualified_access` + +该特性应用于顶级函数、实例方法、类方法或静态方法,以在没有前置限定符(例如模块名称、类型名称、实例变量或常量)的情况下使用该函数或方法时触发警告。使用该特性可以帮助减少在同一作用于访问同名函数之间的歧义。 + +例如,Swift 标准库包含 [`min(_:_:)`](https://developer.apple.com/documentation/swift/1538339-min/) 顶级函数和用于序列比较元素的 [`min()`](https://developer.apple.com/documentation/swift/sequence/1641174-min) 方法。序列方法声明使用了 `warn_unqualified_access`,以减少在 `Sequence` 扩展中使用它们的歧义。 -###Interface Builder 使用的声明特性 + +### Interface Builder 使用的声明特性 `Interface Builder` 特性是 `Interface Builder` 用来与 Xcode 同步的声明特性。`Swift` 提供了以下的 `Interface Builder` 特性:`IBAction`,`IBOutlet`,`IBDesignable`,以及 `IBInspectable` 。这些特性与 Objective-C 中对应的特性在概念上是相同的。 @@ -174,15 +340,18 @@ NSApplicationMain(CommandLine.argc, CommandLine.unsafeArgv) `IBAction` 和 `IBOutlet` 特性都意味着 `objc` 特性。 -##类型特性 +## 类型特性 类型特性只能用于修饰类型。 -`autoclosure` + +### `autoclosure` -这个特性通过把表达式自动封装成无参数的闭包来延迟表达式的计算。它可以修饰类型为返回表达式结果类型的无参数函数类型的函数参数。关于如何使用 autoclosure 特性的例子,请参阅 [自动闭包](http://wiki.jikexueyuan.com/project/swift/chapter2/07_Closures.html/) 和 [函数类型](http://wiki.jikexueyuan.com/project/swift/chapter3/03_Types.html)。 +这个特性通过把表达式自动封装成无参数的闭包来延迟表达式的计算。它可以修饰类型为返回表达式结果类型的无参数函数类型的函数参数。关于如何使用 autoclosure 特性的例子,请参阅 [自动闭包](https://docs.swift.org/swift-book/LanguageGuide/Closures.html#ID543) 和 [函数类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID449)。 + + +### `convention` -`convention` 该特性用于修饰函数类型,它指出了函数调用的约定。 convention 特性总是与下面的参数之一一起出现。 @@ -195,8 +364,19 @@ convention 特性总是与下面的参数之一一起出现。 使用 C 函数调用约定的函数也可用作使用 Objective-C 块调用约定的函数,同时使用 Objective-C 块调用约定的函数也可用作使用 Swift 函数调用约定的函数。然而,只有非泛型的全局函数、局部函数以及未捕获任何局部变量的闭包,才可以被用作使用 C 函数调用约定的函数。 -`escaping` -在函数或者方法声明上使用该特性,它表示参数将不会被存储以供延迟执行,这将确保参数不会超出函数调用的生命周期。在使用 `escaping` 声明特性的函数类型中访问属性和方法时不需要显式地使用 `self.`。关于如何使用 `escaping` 特性的例子,请参阅 [逃逸闭包](http://wiki.jikexueyuan.com/project/swift/chapter2/07_Closures.html)。 + +### `escaping` + +在函数或者方法声明上使用该特性,它表示参数将不会被存储以供延迟执行,这将确保参数不会超出函数调用的生命周期。在使用 `escaping` 声明特性的函数类型中访问属性和方法时不需要显式地使用 `self.`。关于如何使用 `escaping` 特性的例子,请参阅 [逃逸闭包](https://docs.swift.org/swift-book/LanguageGuide/Closures.html#ID546)。 + + +## Switch Case 特性 + +你只能在 switch cases 中使用 switch case 特性。 + +### `unknown` + +次特性用于 switch case,表示在编译时该地方不会匹配枚举的任何情况。有关如何使用 `unknown` 特性的示例,可参阅 [Switching over Future Enumeration Cases](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID602)。 > 特性语法 > From b6a56e5ebcc39a196db08a02f803ef729af21ff5 Mon Sep 17 00:00:00 2001 From: Karsa Wu Date: Sat, 16 Feb 2019 04:25:00 +0800 Subject: [PATCH 035/107] update compatibility chapter (#889) --- source/chapter1/02_version_compatibility.md | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/source/chapter1/02_version_compatibility.md b/source/chapter1/02_version_compatibility.md index 62331f44..0b1f829d 100755 --- a/source/chapter1/02_version_compatibility.md +++ b/source/chapter1/02_version_compatibility.md @@ -1,15 +1,10 @@ # 版本兼容性 + +本书描述的是在 Xcode 10.2 中的默认 Swift 版本 Swift 5。你可以使用 Xcode10.2 来构建 Swift 5、Swift 4.2 或 Swift 写的项目 -本书描述的是 Swift 4.1,是 Xcode 9.2 中包含的默认版本。你可以用 Xcode 9.2 来构建用 Swift 4 或 Swift 3 写的项目。 +当您使用 Xcode 10.2 构建 Swift 4 和 Swift 4.2 代码时,除了下面的功能仅支持 Swift 5,其他大多数功能都依然可用。 -> 注意 -> -> 当 Swift 4 编译器编译 Swift 3 版本的代码时,它识别的语言版本为 3.2 版本。因此,你可以使用像 `#if swift(>=3.2)` 条件编译块来编写多版本编译器可以并存的代码。 +* **try?** 表达式不会为已返回可选类型的代码引入额外的可选类型层级。 +* 大数字的整型字面量初始化代码的类型将会被正确推导,例如 **UInt64(0xffff_ffff_ffff_ffff)** 将会被推导为整型类型而非溢出。 -当你用 Xcode 9.2 编译 Swift 3 的代码,Swift 4 中大部分功能是可以使用的。也就是说,下面的功能仅仅是 Swift 4 的代码中可以使用: - -* 字符串的子串操作返回的实例是 `Substring` 类型,不再是 `String` 类型。 -* 在更少的地方显式的添加 `@objc` 属性。 -* 同一文件中类型的扩展可以访问这个类型的私有成员。 - -用 Swift 4 写的项目可以依赖用 Swift 3 写的项目,反之亦然。这意味着,如果你将一个大的项目分解成多个框架(framework),你可以每次一个框架地迁移 Swift 3 代码到 Swift 4。 +用 Swift 5 写的项目可以依赖用 Swift 4.2 或 Swift 4 写的项目,反之亦然。这意味着,如果你将一个大的项目分解成多个框架(framework),你可以每次一个框架地迁移 Swift 4 代码到 Swift 5。 From 0d9f9f64c23c512d8719aadc53660bb7fdee93ef Mon Sep 17 00:00:00 2001 From: Tongzhou Ding Date: Sun, 17 Feb 2019 20:25:37 +0800 Subject: [PATCH 036/107] Update chapter3_declaration.md with Swift 5 (#890) --- source/chapter3/06_Declarations.md | 454 ++++++++++++++++++++++------- 1 file changed, 345 insertions(+), 109 deletions(-) diff --git a/source/chapter3/06_Declarations.md b/source/chapter3/06_Declarations.md index 8a03290a..f7061888 100755 --- a/source/chapter3/06_Declarations.md +++ b/source/chapter3/06_Declarations.md @@ -1,9 +1,10 @@ + # 声明(Declarations) -*声明(declaration)* 用以向程序里引入新的名字或者结构。举例来说,可以使用声明来引入函数和方法,变量和常量,或者定义新的具有命名的枚举、结构、类和协议类型。还可以使用声明来扩展一个既有的具有命名的类型的行为,或者在程序里引入在其它地方声明的符号。 +*声明(declaration)* 用以向程序里引入新的名字或者结构。举例来说,可以使用声明来引入函数和方法,变量和常量,或者定义新的具有命名的枚举、结构体、类和协议类型。还可以使用声明来扩展一个既有的具有命名的类型的行为,或者在程序里引入在其它地方声明的符号。 -在 Swift 中,大多数声明在某种意义上讲也是定义,因为声明往往伴随着实现或初始化。由于协议并不提供实现,大多数协议成员仅仅只是声明而已。为了方便起见,也是因为这些区别在 Swift 中并不是很重要,“声明”这个术语同时包含了声明和定义两种含义。 +在 Swift 中,大多数声明在某种意义上讲也是定义,因为它们在声明时往往伴随着实现或初始化。由于协议并不提供实现,大多数协议成员仅仅只是声明而已。为了方便起见,也是因为这些区别在 Swift 中并不是很重要,“声明”这个术语同时包含了声明和定义两种含义。 > 声明语法 > @@ -36,7 +37,7 @@ Swift 的源文件中的顶级代码(top-level code)由零个或多个语句 ## 代码块 -*代码块(code block)* 可以将一些声明和控制结构组织在一起。它有如下的形式: +*代码块(code block)* 可以将一些声明和控制结构体组织在一起。它有如下的形式: ```swift { @@ -91,7 +92,7 @@ let 常量名称: 类型 = 表达式 常量声明在“常量名称”和用于初始化的“表达式”的值之间定义了一种不可变的绑定关系;当常量的值被设定之后,它就无法被更改。这意味着,如果常量以类对象来初始化,对象本身的内容是可以改变的,但是常量和该对象之间的绑定关系是不能改变的。 -当一个常量被声明为全局常量时,它必须拥有一个初始值。在类或者结构中声明一个常量时,它将作为*常量属性(constant property)*。常量声明不能是计算型属性,因此也没有存取方法。 +当一个常量被声明为全局常量时,它必须拥有一个初始值。在函数或者方法中声明一个常量时,它并不需要拥有一个初始值,只需要保证在第一次对其进行读操作之前为其设置一个值。在类或者结构体中声明一个常量时,它将作为*常量属性(constant property)*。常量声明不能是计算型属性,因此也没有存取方法。 如果常量名称是元组形式,元组中每一项的名称都会和初始化表达式中对应的值进行绑定。 @@ -118,7 +119,7 @@ print("The second number is \(secondNumber).") > 常量声明语法 > > -> *常量声明* → [*特性列表*](06_Attributes.html#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **let** [*模式构造器列表*](pattern-initializer-list) +> *常量声明* → [*特性列表*](06_Attributes.html#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **let** [*模式构造器列表*](pattern-initializer-list) > > *模式构造器列表* → [*模式构造器*](#pattern-initializer) | [*模式构造器*](#pattern-initializer) **,** [*模式构造器列表*](#pattern-initializer-list) > @@ -127,6 +128,7 @@ print("The second number is \(secondNumber).") > *构造器* → **=** [*表达式*](04_Expressions.html#expression) + ## 变量声明 *变量声明(variable declaration)* 可以在程序中引入一个具有命名的变量,它以关键字 `var` 来声明。 @@ -148,7 +150,7 @@ print("The second number is \(secondNumber).") var 变量名称: 类型 = 表达式 ``` -可以在全局范围,函数内部,或者在类和结构的声明中使用这种形式来声明一个变量。当变量以这种形式在全局范围或者函数内部被声明时,它代表一个存储型变量。当它在类或者结构中被声明时,它代表一个*存储型变量属性(stored variable property)*。 +可以在全局范围,函数内部,或者在类和结构体的声明中使用这种形式来声明一个变量。当变量以这种形式在全局范围或者函数内部被声明时,它代表一个存储型变量。当它在类或者结构体中被声明时,它代表一个*存储型变量属性(stored variable property)*。 用于初始化的表达式不可以在协议的声明中出现,在其他情况下,该表达式是可选的。如果没有初始化表达式,那么变量声明必须包含类型标注(`:` *type*)。 @@ -172,7 +174,7 @@ var 变量名称: 类型 { } ``` -可以在全局范围、函数内部,以及类、结构、枚举、扩展的声明中使用这种形式的声明。当变量以这种形式在全局范围或者函数内部被声明时,它表示一个计算型变量。当它在类、结构、枚举、扩展声明的上下文中被声明时,它表示一个*计算型属性(computed property)*。 +可以在全局范围、函数内部,以及类、结构体、枚举、扩展的声明中使用这种形式的声明。当变量以这种形式在全局范围或者函数内部被声明时,它表示一个计算型变量。当它在类、结构体、枚举、扩展声明的上下文中被声明时,它表示一个*计算型属性(computed property)*。 getter 用来读取变量值,setter 用来写入变量值。setter 子句是可选的,getter 子句是必须的。不过也可以将这些子句都省略,直接返回请求的值,正如在 [只读计算型属性](../chapter2/10_Properties.html#computed_properties) 中描述的那样。但是如果提供了一个 setter 子句,就必须也提供一个 getter 子句。 @@ -198,7 +200,7 @@ var 变量名称: 类型 = 表达式 { } ``` -可以在全局范围、函数内部,或者类、结构的声明中使用这种形式的声明。当变量以这种形式在全局范围或者函数内部被声明时,观察器表示一个存储型变量观察器。当它在类和结构的声明中被声明时,观察器表示一个属性观察器。 +可以在全局范围、函数内部,或者类、结构体的声明中使用这种形式的声明。当变量以这种形式在全局范围或者函数内部被声明时,观察器表示一个存储型变量观察器。当它在类和结构体的声明中被声明时,观察器表示一个属性观察器。 可以为任何存储型属性添加观察器。也可以通过重写父类属性的方式为任何继承的属性(无论是存储型还是计算型的)添加观察器 ,正如 [重写属性观察器](../chapter2/13_Inheritance.html#overriding_property_observers) 中所描述的。 @@ -277,6 +279,7 @@ typealias 类型别名 = 现存类型 ``` 当声明一个类型的别名后,可以在程序的任何地方使用“别名”来代替现有类型。现有类型可以是具有命名的类型或者混合类型。类型别名不产生新的类型,它只是使用别名来引用现有类型。 + 类型别名声明可以通过泛型参数来给一个现有泛型类型提供名称。类型别名为现有类型的一部分或者全部泛型参数提供具体类型。例如: ```swift @@ -294,6 +297,13 @@ typealias DictionaryOfInts = Dictionary ``` 因为类型别名可以和现有类型相互交换使用,类型别名不可以引入额外的类型约束。 + +如果在声明处省略所有泛型参数,一个类型别名可以传递已有类型的所有泛型参数。例如,此处声明的 `Diccionario` 类型别名拥有和 `Dictionary` 同样的约束和泛型参数。 + +```swift +typealias Diccionario = Dictionary +``` + 在协议声明中,类型别名可以为那些经常使用的类型提供一个更短更方便的名称,例如: ```swift @@ -313,11 +323,9 @@ func sum(_ sequence: T) -> Int where T.Element == Int { > 类型别名声明语法 -> +> > -> *类型别名声明* → [*类型别名头*](#typealias-head) [*类型别名赋值*](#typealias-assignment) -> -> *类型别名头* → [*特性列表*](06_Attributes.html#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **typealias** [*类型别名名称*](#typealias-name) +> *类型别名声明* → [*特性列表*](06_Attributes.html#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **typealias** [*类型别名名称*](#typealias-name) [*类型别子句*](#typealias-clause) [*类型别名赋值*](#typealias-assignment) > > *类型别名名称* → [*标识符*](02_Lexical_Structure.html#identifier) > @@ -346,7 +354,11 @@ func 函数名称(参数列表) { 函数可以使用元组类型作为返回类型来返回多个值。 -函数定义可以出现在另一个函数声明内。这种函数被称作*嵌套函数(nested function)*。更多关于嵌套函数的讨论,请参阅 [嵌套函数](../chapter2/06_Functions.html#Nested_Functions)。 +函数定义可以出现在另一个函数声明内。这种函数被称作*嵌套函数(nested function)*。 + +大多数时候,嵌套函数都是可逃逸的函数。仅当一个嵌套函数捕获了某个确保了永不逃逸的值——例如一个输入输出参数——或者传入一个非逃逸函数参数的时候,这个嵌套函数才是非逃逸的。 + +更多关于嵌套函数的讨论,请参阅 [嵌套函数](../chapter2/06_Functions.html#Nested_Functions)。 ### 参数名 @@ -355,25 +367,25 @@ func 函数名称(参数列表) { `参数名称`: `参数类型` -一个参数有一个内部名称,这个内部名称可以在函数体内被使用。还有一个外部名称,当调用函数时这个外部名称被作为实参的标签来使用。默认情况下,第一个参数的外部名称会被省略,第二个和之后的参数使用它们的内部名称作为它们的外部名称。例如: +每个参数有一个参数名称,这个名称与实参标签一样都可以在函数体内被使用。默认情况下,参数名也会被作为实参标签来使用。例如: ```swift func f(x: Int, y: Int) -> Int { return x + y } -f(1, y: 2) // 参数 y 有标签,参数 x 则没有 +f(x: 1, y: 2) // 参数 x 和 y 都有标签 ``` 可以按照如下两种形式之一,重写参数名称的默认行为: -`外部参数名称` `内部参数名称`: `参数类型` -_ `内部参数名称`: `参数类型` +`实参标签` `参数名称`: `参数类型` +_ `参数名称`: `参数类型` -在内部参数名称前的名称会作为这个参数的外部名称,这个名称可以和内部参数的名称不同。外部参数名称在函数被调用时必须被使用,即对应的参数在方法或函数被调用时必须有外部名。 +在参数名称前的名称会作为这个参数的显式实参标签,它可以和参数名称不同。在函数或方法调用时,相对应的参数必须使用这个实参标签。 -内部参数名称前的下划线(`_`)可使该参数在函数被调用时没有名称。在函数或方法调用时,对应的参数必须没有名字。 +参数名称前的下划线(`_`)可以去除参数的实参标签。在函数或方法调用时,相对应的参数必须去除标签。 ```swift -func f(x x: Int, withY y: Int, _ z: Int) -> Int { return x + y + z } -f(x: 1, withY: 2, 3) // 参数 x 和 y 是有标签的,参数 z 则没有 +func repeatGreeting(_ greeting: String, count n: Int) { /* Greet n times */ } +repeatGreeting("Hello, world!", count: 2) // count 有标签, greeting 没有 ``` @@ -391,39 +403,38 @@ f(x: 1, withY: 2, 3) // 参数 x 和 y 是有标签的,参数 z 则没有 不要使用传递给输入输出参数的值,即使原始值在当前作用域中依然可用。当函数返回时,你对原始值所做的更改会被拷贝的值所覆盖。不要依赖于引用调用的优化机制来试图避免这种覆盖。 -不能将同一个值传递给多个输入输出参数,因为这种情况下的拷贝与覆盖行为的顺序是不确定的,因此原始值的最终值也将无法确定。例如: +不能将同一个值传递给多个输入输出参数,因为这种情况下的拷贝与覆盖行为的顺序是不确定的,因此原始值的最终值也将无法确定。 + +更多关于内存安全和内存独占权的讨论,请参阅 [内存安全](../chapter2/24_MemorySafety.html)。 + +如果一个闭包或者嵌套函数捕获了一个输入输出参数,那么这个闭包或者嵌套函数必须是非逃逸的。如果你需要捕获一个输入输出参数,但并不对其进行修改或者在其他代码中观察其值变化,那么你可以使用捕获列表来显式地表明这是个不可变捕获。 ```swift -var x = 10 -func f(inout a: Int, inout _ b: Int) { - a += 1 - b += 10 +func someFunction(a: inout Int) -> () -> Int { + return { [a] in return a + 1 } } -f(&x, &x) // 编译报错 error: inout arguments are not allowed to alias each other ``` +如果你需要捕获并修改一个输入输出参数,使用一个显式局部拷贝来进行修改操作,在一些例如多线程的场景中,这样做可以确保函数返回之前所有的修改都已完成。 + 如果嵌套函数在外层函数返回后才调用,嵌套函数对输入输出参数造成的任何改变将不会影响到原始值。例如: ```swift -func outer(inout a: Int) -> () -> Void { - func inner() { - a += 1 - } - return inner +func multithreadedFunction(queue: DispatchQueue, x: inout Int) { + // 创建一个局部拷贝并在适当时候手动拷贝回去 + var localX = x + defer { x = localX } + + // 并行地操作 localX,然后在函数返回前一直等待 + queue.async { someMutatingOperation(&localX) } + queue.sync {} } - -var x = 10 -let f = outer(&x) -f() -print(x) -// 打印“10” ``` -调用嵌套函数 `inner()` 对 `a` 递增后,`x` 的值并未发生改变,因为 `inner()` 在外层函数 `outer()` 返回后才被调用。若要改变 `x` 的值,必须在 `outer()` 返回前调用 `inner()`。 - 关于输入输出参数的详细讨论,请参阅 [输入输出参数](../chapter2/06_Functions.html#in_out_parameters)。 + ### 特殊参数 参数可以被忽略,数量可以不固定,还可以为其提供默认值,使用形式如下: @@ -434,7 +445,7 @@ _ : 参数类型 参数名称: 参数类型 = 默认参数值 ``` -以下划线(`_`)命名的参数会被显式忽略,无法在函数体内使用。 +以下划线(`_`)命名的参数会被显式忽略,无法在函数内使用。 一个参数的基本类型名称如果紧跟着三个点(`...`),会被视为可变参数。一个函数至多可以拥有一个可变参数,且必须是最后一个参数。可变参数会作为包含该参数类型元素的数组处理。举例来讲,可变参数 `Int...` 会作为 `[Int]` 来处理。关于使用可变参数的例子,请参阅 [可变参数](../chapter2/06_Functions.html#variadic_parameters)。 @@ -454,7 +465,7 @@ f(x: 7) // 无效,该参数没有外部名称 子类重写超类中的方法必须以 `override` 声明修饰符标记。重写方法时不使用 `override` 修饰符,或者被 `override` 修饰符修饰的方法并未对超类方法构成重写,都会导致编译错误。 -枚举或者结构体中的类型方法,要以 `static` 声明修饰符标记,而对于类中的类型方法,除了使用 `static`,还可使用 `class` 声明修饰符标记。 +枚举或者结构体中的类型方法,要以 `static` 声明修饰符标记,而对于类中的类型方法,除了使用 `static`,还可使用 `class` 声明修饰符标记。类中使用 `class` 声明修饰的方法可以被子类实现重写;类中使用 `static` 声明修饰的方法不可被重写。 ### 抛出错误的函数和方法 @@ -471,7 +482,7 @@ func 函数名称(参数列表) throws -> 返回类型 { `throws` 关键字是函数的类型的一部分,非抛出函数是抛出函数的子类型。所以,可以在使用抛出函数的地方使用非抛出函数。 -不能仅基于函数能否抛出错误来进行函数重载。也就是说,可以基于函数的函数类型的参数能否抛出错误来进行函数重载。 +不能仅基于函数能否抛出错误来进行函数重写。也就是说,可以基于函数的函数类型的参数能否抛出错误来进行函数重写。 抛出方法不能重写非抛出方法,而且抛出方法不能满足协议对于非抛出方法的要求。也就是说,非抛出方法可以重写抛出方法,而且非抛出方法可以满足协议对于抛出方法的要求。 @@ -488,6 +499,20 @@ func someFunction(callback: () throws -> Void) rethrows { 重抛函数或者方法不能够从自身直接抛出任何错误,这意味着它不能够包含 `throw` 语句。它只能够传递作为参数的抛出函数所抛出的错误。例如,在 `do-catch` 代码块中调用抛出函数,并在 `catch` 子句中抛出其它错误都是不允许的。 +```swift +func alwaysThrows() throws { + throw SomeError.error +} +func someFunction(callback: () throws -> Void) rethrows { + do { + try callback() + try alwaysThrows() // 非法, alwaysThrows() 不是一个抛出函数类型的参数 + } catch { + throw AnotherError.error + } +} +``` + 抛出方法不能重写重抛方法,而且抛出方法不能满足协议对于重抛方法的要求。也就是说,重抛方法可以重写抛出方法,而且重抛方法可以满足协议对于抛出方法的要求。 @@ -496,20 +521,22 @@ func someFunction(callback: () throws -> Void) rethrows { Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它的调用者。`Never` 返回类型的函数或方法可以称为不归,不归函数、方法要么引发不可恢复的错误,要么永远不停地运作,这会使调用后本应执行得代码就不再执行了。但即使是不归函数、方法,抛错函数和重抛出函数也可以将程序控制转移到合适的 `catch` 代码块。 不归函数、方法可以在 guard 语句的 else 字句中调用,具体讨论在[*Guard 语句*](10_Statements.html#guard_statements)。 -你可以重载一个不归方法,但是新的方法必须保持原有的返回类型和没有返回的行为。 + +你可以重写一个不归方法,但是新的方法必须保持原有的返回类型和没有返回的行为。 > 函数声明语法 > -> *函数声明* → [*函数头*](#function-head) [*函数名*](#function-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*函数签名*](#function-signature) [*函数体*](#function-body)可选 +> *函数声明* → [*函数头*](#function-head) [*函数名*](#function-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*函数签名*](#function-signature) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause) [*函数体*](#function-body)可选 > *函数头* → [*特性列表*](06_Attributes.html#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **func** > > *函数名* → [*标识符*](02_Lexical_Structure.html#identifier) | [*运算符*](02_Lexical_Structure.html#operator) - - +> +> +> > *函数签名* → [*参数子句列表*](#parameter-clauses) **throws**可选 [*函数结果*](#function-result)可选 > *函数签名* → [*参数子句列表*](#parameter-clauses) **rethrows** [*函数结果*](#function-result)可选 > @@ -517,15 +544,13 @@ Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它 > > *函数体* → [*代码块*](#code-block) - -> *参数子句列表* → [*参数子句*](#parameter-clause) [*参数子句列表*](#parameter-clauses)可选 > > *参数子句* → **(** **)** | **(** [*参数列表*](#parameter-list) **)** > > *参数列表* → [*参数*](#parameter) | [*参数*](#parameter) **,** [*参数列表*](#parameter-list) > -> *参数* → **let**可选 [*外部参数名*](#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.html#type-annotation) [*默认参数子句*](#default-argument-clause)可选 -> *参数* → **inout** [*外部参数名*](#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.html#type-annotation) +> *参数* → [*外部参数名*](#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.html#type-annotation) [*默认参数子句*](#default-argument-clause)可选 +> *参数* → [*外部参数名*](#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.html#type-annotation) > *参数* → [*外部参数名*](#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.html#type-annotation) **...** > > *外部参数名* → [*标识符*](02_Lexical_Structure.html#identifier) | **_** @@ -535,6 +560,7 @@ Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它 > *默认参数子句* → **=** [*表达式*](04_Expressions.html#expression) + ## 枚举声明 在程序中使用*枚举声明(enumeration declaration)* 来引入一个枚举类型。 @@ -569,12 +595,12 @@ enum 枚举名称: 采纳的协议 { ```swift enum Number { - case Integer(Int) - case Real(Double) + case integer(Int) + case real(Double) } // f 的类型为 (Int) -> Number -let f = Number.Integer +let f = Number.integer // 利用 f 把一个整数数组转成 Number 数组 let evenInts: [Number] = [0, 2, 4, 6].map(f) @@ -591,8 +617,8 @@ let evenInts: [Number] = [0, 2, 4, 6].map(f) ```swift enum Tree { - case Empty - indirect case Node(value: T, left: Tree, right:Tree) + case empty + indirect case node(value: T, left: Tree, right:Tree) } ``` @@ -618,7 +644,7 @@ enum 枚举名称: 原始值类型, 采纳的协议 { ```Swift enum ExampleEnum: Int { - case A, B, C = 5, D + case a, b, c = 5, d } ``` @@ -627,35 +653,34 @@ enum ExampleEnum: Int { 如果原始值类型被指定为 `String` 类型,你不用明确地为用例指定原始值,每个没有指定原始值的用例会隐式地将用例名字作为原始值。 ```swift -enum WeekendDay: String { - case Saturday, Sunday +enum GamePlayMode: String { + case cooperative, individual, competitive } ``` -在上面这个例子中,`WeekendDay.Saturday` 的原始值是 `"Saturday"`,`WeekendDay.Sunday` 的原始值是 `"Sunday"`。 +在上面这个例子中,`GamePlayMode.cooperative` 的原始值是 `"cooperative"`,`GamePlayMode.individual` 的原始值是 `"individual"`,`GamePlayMode.competitive` 的原始值是 `"competitive"`。 -枚举用例具有原始值的枚举类型隐式地符合定义在 Swift 标准库中的 `RawRepresentable` 协议。所以,它们拥有一个 `rawValue` 属性和一个可失败构造器 `init?(rawValue: RawValue)`。可以使用 `rawValue` 属性去获取枚举用例的原始值,例如 `ExampleEnum.B.rawValue`。还可以根据原始值来创建一个相对应的枚举用例,只需调用枚举的可失败构造器,例如 `ExampleEnum(rawValue: 5)`,这个可失败构造器返回一个可选类型的用例。要获得更多关于具有原始值的枚举用例的信息和例子,请参阅 [原始值](../chapter2/08_Enumerations.html#raw_values)。 +枚举用例具有原始值的枚举类型隐式地符合定义在 Swift 标准库中的 `RawRepresentable` 协议。所以,它们拥有一个 `rawValue` 属性和一个可失败构造器 `init?(rawValue: RawValue)`。可以使用 `rawValue` 属性去获取枚举用例的原始值,例如 `ExampleEnum.b.rawValue`。还可以根据原始值来创建一个相对应的枚举用例,只需调用枚举的可失败构造器,例如 `ExampleEnum(rawValue: 5)`,这个可失败构造器返回一个可选类型的用例。要获得更多关于具有原始值的枚举用例的信息和例子,请参阅 [原始值](../chapter2/08_Enumerations.html#raw_values)。 ### 访问枚举用例 -使用点语法(`.`)来引用枚举类型的枚举用例,例如 `EnumerationType.EnumerationCase`。当枚举类型可以由上下文推断而出时,可以省略它(但是 `.` 仍然需要),正如 [枚举语法](../chapter2/08_Enumerations.html#enumeration_syntax) 和 [显式成员表达式](04_Expressions.html#explicit_member_expression) 所述。 +使用点语法(`.`)来引用枚举类型的枚举用例,例如 `EnumerationType.enumerationCase`。当枚举类型可以由上下文推断而出时,可以省略它(但是 `.` 仍然需要),正如 [枚举语法](../chapter2/08_Enumerations.html#enumeration_syntax) 和 [显式成员表达式](04_Expressions.html#explicit_member_expression) 所述。 可以使用 `switch` 语句来检验枚举用例的值,正如 [使用 switch 语句匹配枚举值](../chapter2/08_Enumerations.html#matching_enumeration_values_with_a_switch_statement) 所述。枚举类型是模式匹配的,依靠 `switch` 语句 `case` 块中的枚举用例模式,正如 [枚举用例模式](07_Patterns.html#enumeration_case_pattern) 所述。 > 枚举声明语法 -> - +> +> > *枚举声明* → [*特性列表*](06_Attributes.html#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 [*联合风格枚举*](#union-style-enum) > *枚举声明* → [*特性列表*](06_Attributes.html#attributes)可选 [*访问级别修饰符*](#access-level-modifier) 可选 [*原始值风格枚举*](#raw-value-style-enum) - - +> > *联合风格枚举* → **indirect**可选 **enum** [*枚举名称*](#enum-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [类型继承子句](03_Types.html#type-inheritance-clause)可选 **{** [*多个联合风格枚举成员*](#union-style-enum-members)可选 **}** > > *多个联合风格枚举成员* → [*联合风格枚举成员*](#union-style-enum-member) [*多个联合风格枚举成员*](#union-style-enum-members)可选 > -> *联合风格枚举成员* → [*声明*](#declaration) | [*联合风格枚举用例子句*](#union-style-enum-case-clause) +> *联合风格枚举成员* → [*声明*](#declaration) | [*联合风格枚举用例子句*](#union-style-enum-case-clause) | [*编译控制流语句*](05_Statements.html#compiler-control-statement) > > *联合风格枚举用例子句* → [*特性列表*](06_Attributes.html#attributes)可选 **indirect**可选 **case** [*联合风格枚举用例列表*](#union-style-enum-case-list) > @@ -666,13 +691,14 @@ enum WeekendDay: String { > *枚举名称* → [*标识符*](02_Lexical_Structure.html#identifier) > > *枚举用例名称* → [*标识符*](02_Lexical_Structure.html#identifier) - - -> *原始值风格枚举* → **enum** [*枚举名称*](#enum-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [类型继承子句](03_Types.html#type-inheritance-clause) **{** [*多个原始值风格枚举成员*](#raw-value-style-enum-members) **}** +> +> +> +> *原始值风格枚举* → **enum** [*枚举名称*](#enum-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*类型继承子句*](03_Types.html#type-inheritance-clause) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause) **{** [*多个原始值风格枚举成员*](#raw-value-style-enum-members) **}** > > *多个原始值风格枚举成员* → [*原始值风格枚举成员*](#raw-value-style-enum-member) [*多个原始值风格枚举成员*](#raw-value-style-enum-members)可选 > -> *原始值风格枚举成员* → [*声明*](#declaration) | [*原始值风格枚举用例子句*](#raw-value-style-enum-case-clause) +> *原始值风格枚举成员* → [*声明*](#declaration) | [*原始值风格枚举用例子句*](#raw-value-style-enum-case-clause) | [*编译控制流语句*](05_Statements.html#compiler-control-statement) > > *原始值风格枚举用例子句* → [*特性列表*](06_Attributes.html#attributes)可选 **case** [*原始值风格枚举用例列表*](#raw-value-style-enum-case-list) > @@ -718,15 +744,21 @@ struct 结构体名称: 采纳的协议 { > 结构体声明语法 -> +> > -> *结构体声明* → [*特性列表*](06_Attributes.html#attributes)可选 [*访问级别修饰符*](#access-level-modifier) 可选 **struct** [*结构体名称*](#struct-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [类型继承子句](03_Types.html#type-inheritance-clause)可选 [*结构体主体*](#struct-body) +> *结构体声明* → [*特性列表*](06_Attributes.html#attributes)可选 [*访问级别修饰符*](#access-level-modifier) 可选 **struct** [*结构体名称*](#struct-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*类型继承子句*](03_Types.html#type-inheritance-clause)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*结构体主体*](#struct-body) > > *结构体名称* → [*标识符*](02_Lexical_Structure.html#identifier) > > *结构体主体* → **{** [*多条声明*](#declarations)可选 **}** +> +> +> *结构体多个成员* → [*结构体成员*](#struct-member) [*结构体多个成员*](#struct-members)可选 +> +> *结构体成员* → [*声明*](#declaration) | [*编译控制流语句*](05_Statements.html#compiler-control-statement) + ## 类声明 可以在程序中使用*类声明(class declaration)* 来引入一个类。类声明使用关键字 `class`,遵循如下的形式: @@ -763,13 +795,18 @@ class 类名: 超类, 采纳的协议 { > 类声明语法 -> +> > -> *类声明* → [*特性列表*](06_Attributes.html#attributes)可选 [访问级别修饰符](#access-level-modifier)可选 **class** [*类名*](#class-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*类型继承子句*](03_Types.html#type-inheritance-clause)可选 [*类主体*](#class-body) +> *类声明* → [*特性列表*](06_Attributes.html#attributes)可选 [访问级别修饰符](#access-level-modifier)可选 **final**可选 **class** [*类名*](#class-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*类型继承子句*](03_Types.html#type-inheritance-clause)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*类主体*](#class-body) +> *类声明* → [*特性列表*](06_Attributes.html#attributes)可选 **final** [访问级别修饰符](#access-level-modifier)可选 **class** [*类名*](#class-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*类型继承子句*](03_Types.html#type-inheritance-clause)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*类主体*](#class-body) > > *类名* → [*标识符*](02_Lexical_Structure.html#identifier) > > *类主体* → **{** [*多条声明*](#declarations)可选 **}** +> +> *类多个成员* → [*类成员*](#class-member) [*类多个成员*](#class-members)可选 +> +> *类成员* → [*声明*](#declaration) | [*编译控制流语句*](05_Statements.html#compiler-control-statement) ## 协议声明 @@ -794,19 +831,19 @@ protocol 协议名称: 继承的协议 { 默认地,符合某个协议的类型必须实现所有在协议中声明的属性、方法和下标。即便如此,可以用 `optional` 声明修饰符标注协议成员声明,以指定它们的实现是可选的。`optional` 修饰符仅仅可以用于使用 `objc` 特性标记过的协议。因此,仅仅类类型可以采用并符合包含可选成员要求的协议。更多关于如何使用 `optional` 声明修饰符的信息,以及如何访问可选协议成员的指导——例如不能确定采纳协议的类型是否实现了它们时——请参阅 [可选协议要求](../chapter2/21_Protocols.html#optional_protocol_requirements) -为了限制协议只能被类类型采纳,需要使用 `class` 关键字来标记协议,将 `class` 关键在写在冒号后面的继承的协议列表的首位。例如,下面的协议只能被类类型采纳: +为了限制协议只能被类类型采纳,需要使用 `AnyObject` 关键字来标记协议,将 `AnyObject` 关键在写在冒号后面的继承的协议列表的首位。例如,下面的协议只能被类类型采纳: ```swift -protocol SomeProtocol: class { +protocol SomeProtocol: AnyObject { /* 这里是协议成员 */ } ``` -任何继承自标记有 `class` 关键字的协议的协议也仅能被类类型采纳。 +任何继承自标记有 `AnyObject` 关键字的协议的协议也仅能被类类型采纳。 > 注意 > -> 如果协议已经用 `objc` 特性标记了,`class` 要求就隐式地应用于该协议,无需显式使用 `class` 关键字。 +> 如果协议已经用 `objc` 特性标记了,`AnyObject` 要求就隐式地应用于该协议,无需显式使用 `AnyObject` 关键字。 协议类型是命名的类型,因此它们可以像其他命名类型一样使用,正如 [协议作为类型](../chapter2/21_Protocols.html#protocols_as_types) 所讨论的。然而,不能构造一个协议的实例,因为协议实际上不提供它们指定的要求的实现。 @@ -814,15 +851,19 @@ protocol SomeProtocol: class { > 协议声明语法 -> - -> *协议声明* → [*特性列表*](06_Attributes.html#attributes)可选 [访问级别修饰符](#access-level-modifier)可选 **protocol** [*协议名称*](#protocol-name) [*类型继承子句*](03_Types.html#type-inheritance-clause)可选 [*协议主体*](#protocol-body) +> +> +> *协议声明* → [*特性列表*](06_Attributes.html#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **protocol** [*协议名称*](#protocol-name) [*类型继承子句*](03_Types.html#type-inheritance-clause)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*协议主体*](#protocol-body) > > *协议名称* → [*标识符*](02_Lexical_Structure.html#identifier) > > *协议主体* → **{** [*协议成员声明列表*](#protocol-member-declarations)可选 **}** -> - +> +> *协议多个成员* → [*协议成员*](#protocol-member) [*协议多个成员*](#protocol-members)可选 +> +> *协议成员* → [*协议成员声明*](#protocol-member-declaration) | [*编译控制流语句*](05_Statements.html#compiler-control-statement) +> +> > *协议成员声明* → [*协议属性声明*](#protocol-property-declaration) > *协议成员声明* → [*协议方法声明*](#protocol-method-declaration) > *协议成员声明* → [*协议构造器声明*](#protocol-initializer-declaration) @@ -857,7 +898,7 @@ var 属性名: 类型 { get set } 协议可以通过在协议声明主体中引入一个协议方法声明,来声明符合的类型必须实现的方法。协议方法声明和函数方法声明有着相同的形式,但有两项例外:它们不包括函数体,也不能包含默认参数。关于如何实现协议中的方法要求的例子,请参阅 [方法要求](../chapter2/21_Protocols.html#method_requirements)。 -使用 `static` 声明修饰符可以在协议声明中声明一个类型方法。结构体实现这些方法时使用 `static` 声明修饰符,类在实现这些方法时,除了使用 `static` 声明修饰符,还可以选择使用 `class` 声明修饰符。通过扩展实现时亦是如此。 +使用 `static` 声明修饰符可以在协议声明中声明一个类型方法。类在实现这些方法时使用 `class` 声明修饰符。结构体实现这些方法时必须使用 `static` 声明修饰符。通过扩展实现时亦是如此(类的扩展中使用 `class` 声明修饰符,结构体的扩展中使用 `static` 声明修饰符)。 另请参阅 [函数声明](#function_declaration)。 @@ -865,9 +906,10 @@ var 属性名: 类型 { get set } > 协议方法声明语法 > > -> *协议方法声明* → [*函数头*](#function-head) [*函数名*](#function-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*函数签名*](#function-signature) +> *协议方法声明* → [*函数头*](#function-head) [*函数名*](#function-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*函数签名*](#function-signature) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 + ### 协议构造器声明 协议可以通过在协议声明主体中引入一个协议构造器声明,来声明符合的类型必须实现的构造器。协议构造器声明 @@ -883,8 +925,8 @@ var 属性名: 类型 { get set } > 协议构造器声明语法 > > -> *协议构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **throws**可选 -> *协议构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **rethrows** +> *协议构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **throws**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 +> *协议构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **rethrows** [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 ### 协议下标声明 @@ -902,20 +944,39 @@ subscript (参数列表) -> 返回类型 { get set } > 协议下标声明语法 > -> *协议下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*getter-setter 关键字代码块*](#getter-setter-keyword-block) +> *协议下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*getter-setter 关键字代码块*](#getter-setter-keyword-block) + ### 协议关联类型声明 使用关键字 `associatedtype` 来声明协议关联类型。关联类型为作为协议声明的一部分,为某种类型提供了一个别名。关联类型和泛型参数子句中的类型参数很相似,但是它们和 `Self` 一样,用于协议中。`Self` 指代采纳协议的类型。要获得更多信息和例子,请参阅 [关联类型](../chapter2/22_Generics.html#associated_types)。 +在协议声明中使用泛型 `where` 子句来为继承的协议关联类型添加约束,且不需要重新声明关联类型。例如下面代码中的 `SubProtocol` 声明。 + +```swift +protocol SomeProtocol { + associatedtype SomeType +} + +protocol SubProtocolA: SomeProtocol { + // 此类语法会引发警告。 + associatedtype SomeType: Equatable +} + +// 建议使用此语法。 +protocol SubProtocolB: SomeProtocol where SomeType: Equatable { } +``` + + + 另请参阅 [类型别名声明](#type_alias_declaration)。 > 协议关联类型声明语法 > > -> *协议关联类型声明* → [*类型别名头*](#typealias-head) [*类型继承子句*](03_Types.html#type-inheritance-clause)可选 [*类型别名赋值*](#typealias-assignment)可选 +> *协议关联类型声明* → [*特性列表*](06_Attributes.html#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **associatedtype** [*类型别名头*](#typealias-head) [*类型继承子句*](03_Types.html#type-inheritance-clause)可选 [*类型别名赋值*](#typealias-assignment)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 ## 构造器声明 @@ -1007,8 +1068,8 @@ if let actualInstance = SomeStruct(input: "Hello") { > 构造器声明语法 > > -> *构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **throws**可选 [*构造器主体*](#initializer-body) -> *构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **rethrows**可选 [*构造器主体*](#initializer-body) +> *构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **throws**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*构造器主体*](#initializer-body) +> *构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **rethrows**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*构造器主体*](#initializer-body) > > *构造器头* → [*特性列表*](06_Attributes.html#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **init** > *构造器头* → [*特性列表*](06_Attributes.html#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **init** **?** @@ -1046,12 +1107,6 @@ deinit { *扩展声明(extension declaration)* 可以扩展一个现存的类型的行为。扩展声明使用关键字 `extension`,遵循如下格式: -```swift -extension 类型名称: 采纳的协议 { - 声明语句 -} -``` - ```swift extension 类型名称 where 要求 { 声明语句 @@ -1064,22 +1119,189 @@ extension 类型名称 where 要求 { 扩展声明可以为现存的类、结构体、枚举添加协议一致性,但是不能为类添加超类,因此在扩展声明的类型名称的冒号后面仅能指定一个协议列表。 +扩展声明可以包含构造器声明。这意味着,如果被扩展的类型在其他模块中定义,构造器声明必须委托另一个在那个模块中声明的构造器,以确保该类型能被正确地初始化。 + 现存类型的属性、方法、构造器不能在扩展中被重写。 -扩展声明可以包含构造器声明。这意味着,如果被扩展的类型在其他模块中定义,构造器声明必须委托另一个在那个模块中声明的构造器,以确保该类型能被正确地初始化。 +通过指定采纳的协议,扩展声明可以为一个现有的类、结构体或者枚举类型添加协议遵循: + +```swift +extension 类型名称: 采纳的协议 where 约束条件 { + 多条声明 +} +``` + +协议声明不能为现有的类添加类的继承关系,因此你只能在 “类型名称” 的冒号后面添加一系列协议。 + + + +### 条件遵循 + +你可以扩展一个泛型类型并使其有条件地遵循某协议,此后此类型的实例只有在特定的限制条件满足时才遵循此协议。在扩展声明中加入限制条件来为协议添加条件遵循。 + + + +## 已重写的限制条件会在某些泛型上下文中失效 + +对于一些通过条件遵循获得了特定行为的类型,在某些泛型上下文中,并不能够确保能够使用协议限制中的特定实现。为了说明这个行为,下面的例子中定义了两个协议以及一个有条件地遵循两个协议的泛型类型。 + +```swift +protocol Loggable { + func log() +} +extension Loggable { + func log() { + print(self) + } +} + +protocol TitledLoggable: Loggable { + static var logTitle: String { get } +} +extension TitledLoggable { + func log() { + print("\(Self.logTitle): \(self)") + } +} + +struct Pair: CustomStringConvertible { + let first: T + let second: T + var description: String { + return "(\(first), \(second))" + } +} + +extension Pair: Loggable where T: Loggable { } +extension Pair: TitledLoggable where T: TitledLoggable { + static var logTitle: String { + return "Pair of '\(T.logTitle)'" + } +} + +extension String: TitledLoggable { + static var logTitle: String { + return "String" + } +} +``` + +当其泛型类型遵循 `Loggable` 协议以及 `TitleLoggale` 协议时,结构体 `Pair` 遵循 `Loggable` 协议以及 `TitleLoggale` 协议。下面的例子中,`oneAndTwo` 是 `Pair` 的一个实例。因为 `String` 遵循 `TitleLoggable` ,因此 `oneAndTwo` 也遵循此协议。当 `log()` 方法被 `oneAndTwo` 直接调用时,此方法使用的是包含标题的特定版本。 + +```swift +let oneAndTwo = Pair(first: "one", second: "two") +oneAndTwo.log() +// Prints "Pair of 'String': (one, two)" +``` + +虽然如此,当 `oneAndTwo` 在泛型上下文中使用,或者它是 `Loggable` 类型的实例时,包含标题的特定版本 `log()` 方法不会被使用。Swift 只会根据这样的规则来选择 `log()` 的实现版本—— `Pair` 遵循 `Loggable` 所需要的最少的限制条件。因此 `Loggable` 所提供的默认实现版本会被使用。 + +```swift +func doSomething(with x: T) { + x.log() +} +doSomething(with: oneAndTwo) +// Prints "(one, two)" +``` + +当传入 `doSomething(_:)` 的实例调用 `log()` 时,打印结果省略了自定义标题。 + + + +### 协议遵循决不能冗余 + +一个具体的类型只能够遵循某特定协议一次。Swift 会把冗余的协议遵循标记为错误。你会在两种场景中遇到这种错误。第一种场景是,使用不同的限制条件来多次显式地遵循同一协议。第二种场景是,多次隐式地继承同一协议。以上两种场景会在下面章节中讨论。 + + + +## 解决显式冗余 + +对同一具体类型的多个扩展不能遵循同一协议,即便这些扩展有不同的显式限制条件。这个限制的具体示例在下面的例子中。两个扩展声明都试图添加对 `Serializable` 的条件遵循,一个为 `Int` 类型元素的数组,另一个为 `String` 类型元素的数组。 + +```swift +protocol Serializable { + func serialize() -> Any +} + +extension Array: Serializable where Element == Int { + func serialize() -> Any { + // implementation + } +} +extension Array: Serializable where Element == String { + func serialize() -> Any { + // implementation + } +} +// 报错: redundant conformance of 'Array' to protocol 'Serializable' +``` + +如果你需要基于多个具体类型来添加条件遵循,那么创建一个新的协议,然后让每个类型都遵循此协议,最后在声明条件遵循时使用此协议作为条件限制。 + +```swift +protocol SerializableInArray { } +extension Int: SerializableInArray { } +extension String: SerializableInArray { } + +extension Array: Serializable where Element: SerializableInArray { + func serialize() -> Any { + // 具体实现 + } +} +``` + + + +## 解决隐式冗余 + +当一个具体类型有条件地遵循某协议,此类型会隐式地使用相同的条件遵循任一父协议。 + +如果你需要让一个类型有条件地遵循两个继承自同一父协议的协议,请显式地声明对父协议的遵循。这可以避免使用不同的限制条件隐式遵循同一父协议两次。 + +下面的例子中显式地声明了 `Array` 对 `Loggable` 的条件遵循,避免了在声明对 `TitledLoggable` 和 `TitledLoggable` 声明条件遵循时发生冲突。 + +```swift +protocol MarkedLoggable: Loggable { + func markAndLog() +} + +extension MarkedLoggable { + func markAndLog() { + print("----------") + log() + } +} + +extension Array: Loggable where Element: Loggable { } +extension Array: TitledLoggable where Element: TitledLoggable { + static var logTitle: String { + return "Array of '\(Element.logTitle)'" + } +} +extension Array: MarkedLoggable where Element: MarkedLoggable { } + +``` + +如果不显式声明对 `Loggable` 的条件遵循,`Array` 其他的扩展会隐式地创建此声明,并引发错误: + +```swift +extension Array: Loggable where Element: TitledLoggable { } +extension Array: Loggable where Element: MarkedLoggable { } +// 报错: redundant conformance of 'Array' to protocol 'Loggable' +``` > 扩展声明语法 -> +> > -> *扩展声明* → [特性](06_Attributes.html#type_attributes)可选 [访问级别修饰符](#access-level-modifier)可选 **extension** [*类型标识符*](03_Types.html#type-identifier) [*类型-继承-子句*](03_Types.html#type-inheritance-clause)可选 [*扩展主体*](#extension-body) +> *扩展声明* → [特性](06_Attributes.html#type_attributes)可选 [访问级别修饰符](#access-level-modifier)可选 **extension** [*类型标识符*](03_Types.html#type-identifier) [*类型-继承-子句*](03_Types.html#type-inheritance-clause)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*扩展主体*](#extension-body) > -> *扩展声明* → [特性](06_Attributes.html#type_attributes)可选 [访问级别修饰符](#access-level-modifier)可选 **extension** [*类型标识符*](03_Types.html#type-identifier) [*泛型-where-子句*](03_Types.html#type-inheritance-clause) [*扩展主体*](#extension-body) > *扩展主体* → **{** [*多条声明*](#declarations)可选 **}** > *多条声明* → [单条声明](#subscript_declaration) [多条声明](#declarations) 可选 -> *单条声明* → [声明语句](#declarations) | [编译器-控制-语句](10_Statements.html#compiler-control-statement) +> *单条声明* → [声明语句](#declarations) | [*编译控制流语句*](05_Statements.html#compiler-control-statement) + ## 下标声明 *下标声明(subscript declaration)* 用于为特定类型的对象添加下标支持,通常也用于为访问集合、列表和序列中的元素提供语法便利。下标声明使用关键字 `subscript`,形式如下: @@ -1103,7 +1325,9 @@ subscript (参数列表) -> 返回类型 { 圆括号以及其中的 setter 名称是可选的。如果提供了 setter 名称,它会作为 setter 的参数名称。如果不提供 setter 名称,那么 setter 的参数名称默认是 `value`。setter 名称的类型必须与返回类型相同。 -可以重载下标,只要参数列表或返回类型不同即可。还可以重写继承自超类的下标,此时必须使用 `override` 声明修饰符声明被重写的下标。 +可以重写下标,只要参数列表或返回类型不同即可。还可以重写继承自超类的下标,此时必须使用 `override` 声明修饰符声明被重写的下标。 + +在默认情况下,下标中的参数不会含有 同样可以在协议声明中声明下标,正如 [协议下标声明](#protocol_subscript_declaration) 中所述。 @@ -1111,13 +1335,13 @@ subscript (参数列表) -> 返回类型 { > 下标声明语法 -> +> > -> *下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*代码块*](#code-block) -> *下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*getter-setter 代码块*](#getter-setter-block) -> *下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*getter-setter 关键字代码块*](#getter-setter-keyword-block) +> *下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*代码块*](#code-block) +> *下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*getter-setter 代码块*](#getter-setter-block) +> *下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*getter-setter 关键字代码块*](#getter-setter-keyword-block) > -> *下标头* → [*特性列表*](06_Attributes.html#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **subscript** [*参数子句*](#parameter-clause) +> *下标头* → [*特性列表*](06_Attributes.html#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **subscript** [*泛型参数子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) > > *下标结果* → **->** [*特性列表*](06_Attributes.html#attributes)可选 [*类型*](03_Types.html#type) @@ -1260,6 +1484,18 @@ Swift 定义了大量的优先级组来与标准库的运算符配合使用, 该修饰符用于修饰类的指定构造器或便利构造器,表示该类所有的子类都必须实现该构造器。在子类实现该构造器时,必须同样使用 `required` 修饰符修饰该构造器。 +`unowned` + +该修饰符用于修饰存储型变量、常量或者存储型变量属性,表示该变量或属性持有其存储对象的无主引用。如果在此存储对象释放后尝试访问该对象,会引发运行时错误。如同弱引用一样,该引用类型的变量或属性必须是类类型。与弱引用不同的是,这种类型的变量或属性是非可选的。关于 `unowned` 更多的信息和例子,请参阅 [无主引用](../chapter2/16_Automatic_Reference_Counting.html#unowned_references) + +`unowned(safe)` + +`unowned` 的显式写法 + +`unowned(unsafe)` + +该修饰符用于修饰存储型变量、常量或者存储型变量属性,表示该变量或属性持有其存储对象的无主引用。如果在此存储对象释放后尝试访问该对象,会直接访问该对象释放前存储的内存地址,因此这是非内存安全的操作。如同弱引用一样,该引用类型的变量或属性必须是类类型。与弱引用不同的是,这种类型的变量或属性是非可选的。关于 `unowned` 更多的信息和例子,请参阅 [无主引用]( + `weak` 该修饰符用于修饰变量或存储型变量属性,表示该变量或属性持有其存储的对象的弱引用。这种变量或属性的类型必须是可选的类类型。使用 `weak` 修饰符可避免强引用循环。关于 `weak` 修饰符的更多信息和例子,请参阅 [弱引用](../chapter2/16_Automatic_Reference_Counting.html#resolving_strong_reference_cycles_between_class_instances)。 From a93c26c7a41d5ee52096fd8462fed369d25f2497 Mon Sep 17 00:00:00 2001 From: Tongzhou Ding Date: Mon, 25 Feb 2019 21:51:10 +0800 Subject: [PATCH 037/107] Update chapter3_expressions.md with Swift 5 (#891) --- source/chapter3/04_Expressions.md | 317 +++++++++++++++++++++++++----- 1 file changed, 273 insertions(+), 44 deletions(-) diff --git a/source/chapter3/04_Expressions.md b/source/chapter3/04_Expressions.md index c071f432..2fd0841c 100644 --- a/source/chapter3/04_Expressions.md +++ b/source/chapter3/04_Expressions.md @@ -142,7 +142,7 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try `is` 运算符在运行时检查表达式能否向下转化为指定的类型,如果可以则返回 `ture`,否则返回 `false`。 -`as` 运算符在编译时执行向上转换和桥接。向上转换可将表达式转换成超类的实例而无需使用任何中间变量。以下表达式是等价的: +`as` 运算符在编译时执行向上转换和桥接。向上转换可将表达式转换成父类的实例而无需使用任何中间变量。以下表达式是等价的: ```swift func f(any: Any) { print("Function for Any") } @@ -186,7 +186,7 @@ f(x as Any) > *基本表达式* → [*标识符*](02_Lexical_Structure.md#identifier) [*泛型实参子句*](08_Generic_Parameters_and_Arguments.md#generic-argument-clause)可选 > *基本表达式* → [*字面量表达式*](#literal-expression) > *基本表达式* → [*self 表达式*](#self-expression) -> *基本表达式* → [*超类表达式*](#superclass-expression) +> *基本表达式* → [*父类表达式*](#superclass-expression) > *基本表达式* → [*闭包表达式*](#closure-expression) > *基本表达式* → [*圆括号表达式*](#parenthesized-expression) > *基本表达式* → [*隐式成员表达式*](#implicit-member-expression) @@ -241,29 +241,36 @@ var emptyArray: [Double] = [] var emptyDictionary: [String : Double] = [:] ``` +Xcode 使用 playground 字面量对程序编辑器中的颜色、文件或者图片创建可交互的展示。在 Xcode 之外的空白文本中,playground 字面量使用一种特殊的字面量语法来展示。 + +更多关于在 Xcode 中使用 playground 字面量的信息,请参阅 [添加颜色、文件或图片字面量](https://help.apple.com/xcode/mac/current/#/dev4c60242fc) + > 字面量表达式语法 -> - +> +> > *字面量表达式* → [*字面量*](02_Lexical_Structure.md#literal) > *字面量表达式* → [*数组字面量*](#array-literal) | [*字典字面量*](#dictionary-literal) | [*练习场字面量*](#playground-literal) > *字面量表达式* → **#file** | **#line** | **#column** | **#function** -> - + + +> > *数组字面量* → [[*数组字面量项列表*](#array-literal-items)可选 **]** - +> > *数组字面量项列表* → [*数组字面量项*](#array-literal-item) **,**可选 | [*数组字面量项*](#array-literal-item) **,** [*数组字面量项列表*](#array-literal-items) - +> > *数组字面量项* → [*表达式*](#expression) -> - +> +> > *字典字面量* → [[*字典字面量项列表*](#dictionary-literal-items) **]** | **[** **:** **]** - +> > *字典字面量项列表* → [*字典字面量项*](#dictionary-literal-item) **,**可选 | [*字典字面量项*](#dictionary-literal-item) **,** [*字典字面量项列表*](#dictionary-literal-items) - +> > *字典字面量项* → [*表达式*](#expression) **:** [*表达式*](#expression)。 +> +> *playground 字面量* → **#colorLiteral ( red : [*表达式*](#expression) , green :[*表达式*](#expression) [*表达式*](#e[*表达式*](#expression) xpression) , blue :[*表达式*](#expression) , alpha : [*表达式*](#expression) )** +> *playground 字面量* → **#fileLiteral ( resourceName : [*表达式*](#expression) )** +> playground 字面量* → **#imageLiteral ( resourceName : [*表达式*](#expression) )** - - ### Self 表达式 `self` 表达式是对当前类型或者当前实例的显式引用,它有如下形式: @@ -306,34 +313,34 @@ struct Point { > *self 方法表达式* → **self** **.** [*标识符*](02_Lexical_Structure.md#identifier) -> *self 下标表达式* → **self** [ [*函数调用参数表*](#function-call-argument-list­) **]** +> *self 下标表达式* → **self** **[** [*函数调用参数表*](#function-call-argument-list­) **]** > *self 构造器表达式* → **self** **.** **init** ### 父类表达式 -*父类*表达式可以使我们在某个类中访问它的超类,它有如下形式: +*父类*表达式可以使我们在某个类中访问它的父类,它有如下形式: > super.`成员名称` > super[`下标索引`] > super.init(`构造器参数`) -第一种形式用来访问超类的某个成员,第二种形式用来访问超类的下标,第三种形式用来访问超类的构造器。 +第一种形式用来访问父类的某个成员,第二种形式用来访问父类的下标,第三种形式用来访问父类的构造器。 -子类可以通过超类表达式在它们的成员、下标和构造器中使用超类中的实现。 +子类可以通过父类表达式在它们的成员、下标和构造器中使用父类中的实现。 > 父类表达式语法 > -> *超类表达式* → [*超类方法表达式*](#superclass-method-expression) | [*超类下标表达式*](#superclass-subscript-expression) | [*超类构造器表达式*](#superclass-initializer-expression) +> *父类表达式* → [*父类方法表达式*](#superclass-method-expression) | [*父类下标表达式*](#superclass-subscript-expression) | [*父类构造器表达式*](#superclass-initializer-expression) > -> *超类方法表达式* → **super** **.** [*标识符*](02_Lexical_Structure.md#identifier) +> *父类方法表达式* → **super** **.** [*标识符*](02_Lexical_Structure.md#identifier) -> *超类下标表达式* → **super** [[*函数调用参数表*](#function-call-argument-list­) **]** +> *父类下标表达式* → **super** [[*函数调用参数表*](#function-call-argument-list­) **]** -> *超类构造器表达式* → **super** **.** **init** +> *父类构造器表达式* → **super** **.** **init** ### 闭包表达式 @@ -374,9 +381,13 @@ myFunction { $0 + $1 } 关于如何将闭包作为参数来传递的内容,请参阅 [函数调用表达式](#function_call_expression)。 +使用闭包表达式时,可以不必将其存储在一个变量或常量中,例如作为函数调用的一部分来立即使用一个闭包。在上面的例子中,传入 `myFunction` 的闭包表达式就是这种立即使用类型的闭包。因此,一个闭包是否逃逸与其使用时的上下文相关。一个会被立即调用或者作为函数的非逃逸参数传递的闭包表达式是非逃逸的,否则,这个闭包表达式是逃逸的。 + 关于逃逸闭包的内容,请参阅[逃逸闭包](./chapter2/07_Closures.html#escaping_closures) -#### 捕获列表 + + +## 捕获列表 默认情况下,闭包会捕获附近作用域中的常量和变量,并使用强引用指向它们。你可以通过一个*捕获列表*来显式指定它的捕获行为。 @@ -420,9 +431,10 @@ closure() 如果捕获列表中的值是类类型,你可以使用 `weak` 或者 `unowned` 来修饰它,闭包会分别用弱引用和无主引用来捕获该值。 ```swift -myFunction { print(self.title) } // 以强引用捕获 -myFunction { [weak self] in print(self!.title) } // 以弱引用捕获 -myFunction { [unowned self] in print(self.title) } // 以无主引用捕获 +myFunction { print(self.title) } // 隐式强引用捕获 +myFunction { [self] in print(self.title) } // 显式强引用捕获 +myFunction { [weak self] in print(self!.title) } // 弱引用捕获 +myFunction { [unowned self] in print(self.title) } // 无主引用捕获 ``` 在捕获列表中,也可以将任意表达式的值绑定到一个常量上。该表达式会在闭包被创建时进行求值,闭包会按照指定的引用类型来捕获表达式的值。例如: @@ -435,24 +447,26 @@ myFunction { [weak parent = self.parent] in print(parent!.title) } 关于闭包表达式的更多信息和例子,请参阅 [闭包表达式](../chapter2/07_Closures.html#closure_expressions)。关于捕获列表的更多信息和例子,请参阅 [解决闭包引起的循环强引用](../chapter2/23_Automatic_Reference_Counting.html#resolving_strong_reference_cycles_for_closures)。 > 闭包表达式语法 -> - +> +> > *闭包表达式* → **{** [*闭包签名*](#closure-signature)可选 [*语句*](#statements) **}** - - -> *闭包签名* → [*参数子句*](#parameter-clause) [*函数结果*](05_Declarations.html#function-result)可选 **in** +> +> +> +> 闭包签名* → [*参数子句*](#parameter-clause) [*函数结果*](05_Declarations.html#function-result)可选 **in** > *闭包签名* → [*标识符列表*](#identifier-list) [*函数结果*](05_Declarations.md#function-result)可选 **in** > *闭包签名* → [*捕获列表*](#capture-list) [*参数子句*](05_Declarations.md#parameter-clause) [*函数结果*](05_Declarations.md#function-result)可选 **in** > *闭包签名* → [*捕获列表*](#capture-list) [*标识符列表*](02_Lexical_Structure.md#identifier-list) [*函数结果*](05_Declarations.md#function-result)可选 **in** > *闭包签名* → [*捕获列表*](#capture-list) **in** - - -> *捕获列表* → [ [*捕获列表项列表*](#capture-list-items) **]** - +> +> +> +> 捕获列表* → [ [*捕获列表项列表*](#capture-list-items) **]** +> > *捕获列表项列表* → [*捕获列表项*](#capture-list-item) | [*捕获列表项*](#capture-list-item) **,** [*捕获列表项列表*](#capture-list-items) - +> > *捕获列表项* → [*捕获说明符*](#capture-specifier)可选 [*表达式*](#expression) - +> > *捕获说明符* → **weak** | **unowned** | **unowned(safe)** | **unowned(unsafe)** @@ -493,6 +507,11 @@ x = .AnotherValue 元组表达式可以一个表达式都没有,也可以包含两个或是更多的表达式。单个表达式用括号括起来就是括号表达式了。 +> 注意 +> +> 在 Swift 中,空的元组表达式和空的元组类型都写作 `()`。由于 `Void` 是 `()` 的类型别名,因此可以使用它来表示空的元组类型。虽然如此,`Void` 就像所有的类型别名一样,永远是一个类型——不能表示空的元组表达式。 + + > 元组表达式语法 > @@ -503,6 +522,7 @@ x = .AnotherValue > *元组元素* → [*表达式*](#expression) | [*标识符*](identifier) **:** [*表达式*](#expression) + ### 通配符表达式 *通配符表达式*可以在赋值过程中显式忽略某个值。例如下面的代码中,`10` 被赋值给 `x`,而 `20` 则被忽略: @@ -517,7 +537,153 @@ x = .AnotherValue > *通配符表达式* → **_** + + +### Key-path 表达式 + +Key-path 表达式引用一个类型的属性或下标。在动态语言中使场景可以使用 Key-path 表达式,例如观察键值对。格式为: + +> **\类型名.路径** + +*类型名*是一个具体类型的名称,包含任何泛型参数,例如 `String`、`[Int]` 或 `Set`。 + +*路径*可由属性名称、下标、可选链表达式或者强制解包表达式组成。以上任意 key-path 组件可以以任何顺序重复多次。 + +在编译期,key-path 表达式会被一个 [KeyPath](https://developer.apple.com/documentation/swift/keypath) 类的实例替换。 + +对于所有类型,都可以通过传递 key-path 参数到下标方法 `subscript(keyPath:)` 来访问它的值。例如: + +```swift +struct SomeStructure { + var someValue: Int +} + +let s = SomeStructure(someValue: 12) +let pathToProperty = \SomeStructure.someValue + +let value = s[keyPath: pathToProperty] +// 值为 12 +``` + +在一些可以通过类型推断来确定所访问的具体类型的上下文中,可以省略 key-path 前的类型名字。下面的代码使用 `\.someProperty` 代替了 `SomeClass.someProperty` : + +```swift +class SomeClass: NSObject { + @objc var someProperty: Int + init(someProperty: Int) { + self.someProperty = someProperty + } +} + +let c = SomeClass(someProperty: 10) +c.observe(\.someProperty) { object, change in + // ... +} +``` + +使用 `self` 作为路径可以创建一个恒等 key path (`\.self`)。恒等 key path 可以作为整个实例的引用,因此你仅需一步操作便可以利用它来访问以及修改其存储的所有数据。例如: + +```swift +var compoundValue = (a: 1, b: 2) +// 等价于 compoundValue = (a: 10, b: 20) +compoundValue[keyPath: \.self] = (a: 10, b: 20) +``` + +通过点语法,可以让路径包含多个属性名称,以此来访问某实例的属性的属性。下面的代码使用 key-path 表达式 `\OuterStructure.outer.someValue` 来访问 `OuterStructure` 类型中 `outer` 属性的 `someValue` 属性。 + +```swift +struct OuterStructure { + var outer: SomeStructure + init(someValue: Int) { + self.outer = SomeStructure(someValue: someValue) + } +} + +let nested = OuterStructure(someValue: 24) +let nestedKeyPath = \OuterStructure.outer.someValue + +let nestedValue = nested[keyPath: nestedKeyPath] +// nestedValue 的值为 24 +``` + +路径中也可以包含使用中括号的下标访问,只要下标访问的参数类型满足 `Hashable` 协议即可。下面的例子在 key path 中使用了下标来访问数组的第二个元素。 + +```swift +let greetings = ["hello", "hola", "bonjour", "안녕"] +let myGreeting = greetings[keyPath: \[String].[1]] +// myGreeting 的值为 'hola' +``` + +下标访问中使用的值可以是一个变量或者字面量,并且 key-path 表达式会使用值语义来捕获此值。下面的代码在 key-path 表达式和闭包中都使用了 `index` 变量来访问 `greetings` 数组的第三个元素。当 `index` 被修改时,key-path 表达式仍旧引用数组第三个元素,而闭包则使用了新的索引值。 + +```swift +var index = 2 +let path = \[String].[index] +let fn: ([String]) -> String = { strings in strings[index] } + +print(greetings[keyPath: path]) +// 打印 "bonjour" +print(fn(greetings)) +// 打印 "bonjour" + +// 将 'index' 设置为一个新的值不会影响到 'path' +index += 1 +print(greetings[keyPath: path]) +// 打印 "bonjour" + +// 'fn' 闭包使用了新值。 +print(fn(greetings)) +// 打印 "안녕" +``` + +路径可以使用可选链和强制解包。下面的代码在 key path 中使用了可选链来访问可选字符串的属性。 + +```swift +let firstGreeting: String? = greetings.first +print(firstGreeting?.count as Any) +// 打印 "Optional(5)" + +// 使用 key path 实现同样的功能 +let count = greetings[keyPath: \[String].first?.count] +print(count as Any) +// 打印 "Optional(5)" +``` + +可以混合使用各种 key-path 组件来访问一些深度嵌套类型的值。下面的代码通过组合不同的组件,使用 key-path 表达式访问了一个字典数组中不同的值和属性。 + +```swift +let interestingNumbers = ["prime": [2, 3, 5, 7, 11, 13, 17], + "triangular": [1, 3, 6, 10, 15, 21, 28], + "hexagonal": [1, 6, 15, 28, 45, 66, 91]] +print(interestingNumbers[keyPath: \[String: [Int]].["prime"]] as Any) +// 打印 "Optional([2, 3, 5, 7, 11, 13, 17])" +print(interestingNumbers[keyPath: \[String: [Int]].["prime"]![0]]) +// 打印 "2" +print(interestingNumbers[keyPath: \[String: [Int]].["hexagonal"]!.count]) +// 打印 "7" +print(interestingNumbers[keyPath: \[String: [Int]].["hexagonal"]!.count.bitWidth]) +// 打印 "64" +``` + +关于更多如何使用 key path 与 Objective-C APIs 交互的信息,请参阅 [在 Swift 中使用 Objective-C 运行时特性](https://developer.apple.com/documentation/swift/using_objective_c_runtime_features_in_swift)。关于更多 key-value 编程和 key-value 观察的信息,请参阅 [Key-Value 编程](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueCoding/index.html#//apple_ref/doc/uid/10000107i) 和 [Key-Value 观察编程](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html#//apple_ref/doc/uid/10000177i) + +> key-path 表达式语法 +> +> +> *key-path 表达式* → **\\** [类型](03_Types.md#type)可选 **.** [多个 key-path 组件](#key-path-components) +> +> *多个 key-path 组件* → [key-path 组件](#key-path-component) | [key-path 组件](#key-path-component) **.** [多个 key-path 组件](#key-path-components) +> +> *key-path 组件* → [标识符](02_Lexical_Structure.html#identifier) [多个 key-path 后缀](#key-path-postfixes)可选 | [多个 key-path 后缀](#key-path-postfixes) +> +> *多个 key-path 后缀* → [key-path 后缀](#key-path-postfix) [多个 key-path 后缀](#key-path-postfixes)可选 +> +> *key-path 后缀* → **?** | **!** | **self** | **\[** [函数调用参数表](#function-call-argument-list) **\]** + + + + ### 选择器表达式 *选择器表达式*可以让你通过选择器来引用在 Objective-C 中方法(method)和属性(property)的 setter 和 getter 方法。 @@ -560,7 +726,7 @@ let anotherSelector = #selector(SomeClass.doSomething(_:) as (SomeClass) -> (Str > > 虽然方法名或者属性名是个表达式,但是它不会被求值。 -更多关于如何在 Swift 代码中使用选择器来与 Objective-C API 进行交互的信息,请参阅 [Using Swift with Cocoa and Objective-C (Swift 4.1)](https://developer.apple.com/library/prerelease/content/documentation/Swift/Conceptual/BuildingCocoaApps/index.html#//apple_ref/doc/uid/TP40014216) 中[Objective-C Selectors](https://developer.apple.com/library/prerelease/content/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithObjective-CAPIs.html#//apple_ref/doc/uid/TP40014216-CH4-ID59)部分。 +更多关于如何在 Swift 代码中使用选择器来与 Objective-C API 进行交互的信息,请参阅 [在 Swift 中使用 Objective-C 运行时特性](https://developer.apple.com/documentation/swift/using_objective_c_runtime_features_in_swift)。 > 选择器表达式语法 @@ -568,14 +734,66 @@ let anotherSelector = #selector(SomeClass.doSomething(_:) as (SomeClass) -> (Str > *选择器表达式* → __#selector__ **(** [*getter:表达式*](#expression) **)** > *选择器表达式* → __#selector__ **(** [*setter:表达式*](#expression) **)** + + +## Key-path 字符串表达式 + +key-path 字符串表达式可以访问一个引用 Objective-C 属性的字符串,通常在 key-value 编程和 key-value 观察 APIs 中使用。其格式如下: + +> `#keyPath` ( `属性名` ) + +属性名必须是一个可以在 Objective-C 运行时使用的属性的引用。在编译期,key-path 字符串表达式会被一个字符串字面量替换。例如: + +```swift +class SomeClass: NSObject { + @objc var someProperty: Int + init(someProperty: Int) { + self.someProperty = someProperty + } +} + +let c = SomeClass(someProperty: 12) +let keyPath = #keyPath(SomeClass.someProperty) + +if let value = c.value(forKey: keyPath) { + print(value) +} +// 打印 "12" +``` + +当在一个类中使用 key-path 字符串表达式时,可以省略类名,直接使用属性名来访问这个类的某个属性。 + +```swift +extension SomeClass { + func getSomeKeyPath() -> String { + return #keyPath(someProperty) + } +} +print(keyPath == c.getSomeKeyPath()) +// 打印 "true" +``` + +由于 key-path 字符串表达式在编译期才创建,编译期可以检查属性是否存在,以及属性是否暴露给 Objective-C 运行时。 + +关于更多如何使用 key path 与 Objective-C APIs 交互的信息,请参阅 [在 Swift 中使用 Objective-C 运行时特性](https://developer.apple.com/documentation/swift/using_objective_c_runtime_features_in_swift)。关于更多 key-value 编程和 key-value 观察的信息,请参阅 [Key-Value 编程](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueCoding/index.html#//apple_ref/doc/uid/10000107i) 和 [Key-Value 观察编程](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html#//apple_ref/doc/uid/10000177i) + +> 注意 +> +> 尽管*属性名*是一个表达式,但它永远不会被求值 + +> key-path 字符串表达式语法 +> +> *key-path 字符串表达式* → **#keyPath (** [表达式](#expression) **)** + + ## 后缀表达式 *后缀表达式*就是在某个表达式的后面运用后缀运算符或其他后缀语法。从语法构成上来看,基本表达式也是后缀表达式。 关于这些运算符的更多信息,请参阅 [基本运算符](../chapter2/02_Basic_Operators.html) 和 [高级运算符](../chapter2/26_Advanced_Operators.html)。 -关于 Swift 标准库提供的运算符的更多信息,请参阅 [*Swift Standard Library Operators Reference*](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Reference/Swift_StandardLibrary_Operators/index.html#//apple_ref/doc/uid/TP40016054)。 +关于 Swift 标准库提供的运算符的更多信息,请参阅 [运算符定义](https://developer.apple.com/documentation/swift/operator_declarations)。 > 后缀表达式语法 @@ -620,10 +838,19 @@ myData.someMethod {$0 == 13} ``` > 函数调用表达式语法 - -> *函数调用表达式* → [*后缀表达式*](#postfix-expression) [*圆括号表达式*](#parenthesized-expression) -> *函数调用表达式* → [*后缀表达式*](#postfix-expression) [*圆括号表达式*](#parenthesized-expression)可选 [*尾随闭包*](#trailing-closure) - +> +> *函数调用表达式* → [*后缀表达式*](#postfix-expression) [*函数调用参数子句*](#function-call-argument-clause) +> *函数调用表达式* → [*后缀表达式*](#postfix-expression) [*函数调用参数子句*](#function-call-argument-clause)可选 [*尾随闭包*](#trailing-closure) +> +> +> *函数调用参数子句* → **(** **)** | **(** [*函数调用参数表*](#function-call-argument-list) **)** +> +> *函数调用参数表* → [函数调用参数](#function-call-argument) | [函数调用参数](#function-call-argument) **,** [*函数调用参数表*](#function-call-argument-list) +> +> *函数调用参数* → [表达式](#expression) | [标识符](02_Lexical_Structure.html#identifier) **:** [*表达式*](#expression) +> *函数调用参数* → [运算符](02_Lexical_Structure.html#operator) | [标识符](02_Lexical_Structure.html#identifier) **:** [*运算符*](02_Lexical_Structure.html#operator) +> +> > *尾随闭包* → [*闭包表达式*](#closure-expression) @@ -633,7 +860,7 @@ myData.someMethod {$0 == 13} > `表达式`.init(`构造器参数`) -你可以在函数调用表达式中使用构造器表达式来初始化某个类型的新实例。也可以使用构造器表达式来代理给超类构造器。 +你可以在函数调用表达式中使用构造器表达式来初始化某个类型的新实例。也可以使用构造器表达式来代理给父类构造器。 ```swift class SomeSubClass: SomeSuperClass { @@ -696,6 +923,8 @@ t.0 = t.1 对于模块的成员来说,只能直接访问顶级声明中的成员。 +使用 `dynamicMemberLookup` 属性声明的类型包含可以在运行时查找的成员,具体请参阅 [属性](07_Attributes.html) + 为了区分只有参数名有所不同的方法或构造器,在圆括号中写出参数名,参数名后紧跟一个冒号,对于没有参数名的参数,使用下划线代替参数名。而对于重载方法,则需使用类型标注进行区分。例如: ```swift From a4c5b36ff13be9f7632e13230b95ab141a25df55 Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Mon, 25 Feb 2019 07:53:17 -0600 Subject: [PATCH 038/107] Update 11_Methods.md --- source/chapter2/11_Methods.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/chapter2/11_Methods.md b/source/chapter2/11_Methods.md index 6bb16678..4848b4d9 100755 --- a/source/chapter2/11_Methods.md +++ b/source/chapter2/11_Methods.md @@ -218,7 +218,7 @@ struct LevelTracker { 除了类型属性和类型方法,`LevelTracker` 还监测每个玩家的进度。它用实例属性 `currentLevel` 来监测每个玩家当前的等级。 -为了便于管理 `currentLevel` 属性,`LevelTracker` 定义了实例方法 `advance(to:)`。这个方法会在更新 `currentLevel` 之前检查所请求的新等级是否已经解锁。`advance(to:)` 方法返回布尔值以指示是否能够设置 `currentLevel`。因为允许在调用 `advance(to:)` 时候忽略返回值,不会产生编译警告,所以函数被标注为 `@discardableResult` 属性,更多关于属性信息,请参考[属性](../chapter3/07_Attributes.html)章节。 +为了便于管理 `currentLevel` 属性,`LevelTracker` 定义了实例方法 `advance(to:)`。这个方法会在更新 `currentLevel` 之前检查所请求的新等级是否已经解锁。`advance(to:)` 方法返回布尔值以指示是否能够设置 `currentLevel`。因为允许在调用 `advance(to:)` 时候忽略返回值,不会产生编译警告,所以函数被标注为 `@discardableResult` 属性,更多关于属性信息,请参考[特性](../chapter3/07_Attributes.html)章节。 下面,`Player` 类使用 `LevelTracker` 来监测和更新每个玩家的发展进度: From afc5131f594c83f7219e4699ee6f96caf6671976 Mon Sep 17 00:00:00 2001 From: Tongzhou Ding Date: Fri, 8 Mar 2019 07:33:26 +0800 Subject: [PATCH 039/107] Nothing updated in Swift 5. Format-updated. (#892) --- source/chapter3/09_Generic_Parameters_and_Arguments.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/source/chapter3/09_Generic_Parameters_and_Arguments.md b/source/chapter3/09_Generic_Parameters_and_Arguments.md index 8a26ef49..5b430516 100755 --- a/source/chapter3/09_Generic_Parameters_and_Arguments.md +++ b/source/chapter3/09_Generic_Parameters_and_Arguments.md @@ -62,15 +62,13 @@ simpleMax(3.14159, 2.71828) // T 被推断为 Double 类型 > *泛形形参* → [*类型名称*](03_Types.html#type-name) > *泛形形参* → [*类型名称*](03_Types.html#type-name) **:** [*类型标识符*](03_Types.html#type-identifier) > *泛形形参* → [*类型名称*](03_Types.html#type-name) **:** [*协议合成类型*](03_Types.html#protocol-composition-type) - - +> > *约束子句* → **where** [*约束列表*](#requirement-list) > *约束列表* → [*约束*](#requirement) | [*约束*](#requirement) **,** [*约束列表*](#requirement-list) > *约束* → [*一致性约束*](#conformance-requirement) | [*同类型约束*](#same-type-requirement) - - +> > *一致性约束* → [*类型标识符*](03_Types.html#type-identifier) **:** [*类型标识符*](03_Types.html#type-identifier) > *一致性约束* → [*类型标识符*](03_Types.html#type-identifier) **:** [*协议合成类型*](03_Types.html#protocol-composition-type) From 125fdaf25f62e41c2d4e5eec86e50555ba7fadf9 Mon Sep 17 00:00:00 2001 From: Tongzhou Ding Date: Sat, 9 Mar 2019 22:10:57 +0800 Subject: [PATCH 040/107] Update `attributes.md`. Nothing updated in Swift 5. Re-corrected some translation. (#893) --- source/chapter3/07_Attributes.md | 36 +++++++++++++++++++------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/source/chapter3/07_Attributes.md b/source/chapter3/07_Attributes.md index 1810c261..83881547 100755 --- a/source/chapter3/07_Attributes.md +++ b/source/chapter3/07_Attributes.md @@ -221,9 +221,9 @@ print(dynamic == equivalent) 该特性用于函数、方法、计算属性、下标、便利构造器或析构器的声明,以将该声明的实现公开为模块公开接口的一部分。编译器允许在调用处把 `inlinable` 标记的符号替换为符号实现的副本。 -内联代码可以与任意模块中 `public` 标记的符号进行交互,它在相同模块中标记 `usableFromInline` 特性的部分,可以与 `internal` 标记的符号进行交互。 +内联代码可以与任意模块中 `public` 访问级别的符号进行交互,同时可以与在相同模块中标记 `usableFromInline` 特性的 `internal` 访问级别的符号进行交互。内联代码不能与 `private` 或 `fileprivate` 级别的符号进行交互。 -该特性不能用于嵌套在函数内的声明,或标记了 `fileprivate` 或 `private` 的声明。在内联函数定义的函数和闭包是隐式非内联的,即使他们不能标记该特性。 +该特性不能用于嵌套在函数内的声明,也不能用于 `fileprivate` 或 `private` 访问级别的声明。在内联函数定义的函数和闭包是隐式非内联的,即使他们不能标记该特性。 ### `nonobjc` @@ -327,7 +327,7 @@ class ExampleClass: NSObject { 该特性应用于顶级函数、实例方法、类方法或静态方法,以在没有前置限定符(例如模块名称、类型名称、实例变量或常量)的情况下使用该函数或方法时触发警告。使用该特性可以帮助减少在同一作用于访问同名函数之间的歧义。 -例如,Swift 标准库包含 [`min(_:_:)`](https://developer.apple.com/documentation/swift/1538339-min/) 顶级函数和用于序列比较元素的 [`min()`](https://developer.apple.com/documentation/swift/sequence/1641174-min) 方法。序列方法声明使用了 `warn_unqualified_access`,以减少在 `Sequence` 扩展中使用它们的歧义。 +例如,Swift 标准库包含 [`min(_:_:)`](https://developer.apple.com/documentation/swift/1538339-min/) 顶级函数和用于序列比较元素的 [`min()`](https://developer.apple.com/documentation/swift/sequence/1641174-min) 方法。序列方法声明使用了 `warn_unqualified_access`,以减少在 `Sequence` 扩展中使用它们的歧义。 @@ -337,7 +337,7 @@ class ExampleClass: NSObject { `IBOutlet` 和 `IBInspectable` 用于修饰一个类的属性声明,`IBAction` 特性用于修饰一个类的方法声明,`IBDesignable` 用于修饰类的声明。 -`IBAction` 和 `IBOutlet` 特性都意味着 `objc` 特性。 +应用 `IBAction`、`IBOutlet`、`IBDesignable` 或者 `IBInspectable` 特性都意味着同时应用 `objc` 特性。 ## 类型特性 @@ -379,15 +379,21 @@ convention 特性总是与下面的参数之一一起出现。 次特性用于 switch case,表示在编译时该地方不会匹配枚举的任何情况。有关如何使用 `unknown` 特性的示例,可参阅 [Switching over Future Enumeration Cases](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID602)。 > 特性语法 -> -> *特性 *→ @ 特性名 特性参数子句可选 -> *特性名* → 标识符 -> *特性参数子句* → ( 均衡令牌列表可选 ) -> *特性列表* → 特性 特性列表可选 -> -> *均衡令牌列表* → 均衡令牌 均衡令牌列表可选 -> *均衡令牌* → ( 均衡令牌列表可选 ) -> *均衡令牌* → [ 均衡令牌列表可选 ] -> *均衡令牌* → { 均衡令牌列表可选} +> +> +> *特性*→ [特性名](#attribute_name) [特性参数子句](#atribute_argument_clause)可选 +> +> *特性名* → [标识符](02_Lexical_Structure.html#identifier) +> +> *特性参数子句* → **(** [均衡令牌列表](#balanced_tokens)可选 **)** +> +> *特性列表* → [特性](#attribute) [特性列表](#attributes)可选 +> +> +> *均衡令牌列表* → [均衡令牌](#balanced_token) [均衡令牌列表](#balanced_tokens)可选 +> +> *均衡令牌* → **(** [均衡令牌列表](#balanced_tokens)可选 **)** +> *均衡令牌* → **\[** [均衡令牌列表](#balanced_tokens)可选 **\]** +> *均衡令牌* → **{** [均衡令牌列表](#balanced_tokens)可选 **}** > *均衡令牌* → 任意标识符,关键字,字面量或运算符 -> *均衡令牌* → 任意标点除了 (,),[,],{,或 } +> *均衡令牌* → 任意标点除了 **(**,**)**,**[**,**]**,**{**,或 **}** From 582d450a7526ac27a22056b29d71c1e1b852c2a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zhiyu=20Zhu/=E6=9C=B1=E6=99=BA=E8=AF=AD?= Date: Sun, 10 Mar 2019 07:31:03 -0400 Subject: [PATCH 041/107] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=8B=B1=E6=96=87?= =?UTF-8?q?=E5=8E=9F=E7=89=88=E9=93=BE=E6=8E=A5=20(#894)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c295aaa6..74ed9c20 100755 --- a/README.md +++ b/README.md @@ -3,9 +3,9 @@ 中文版 Apple 官方 Swift 教程《The Swift Programming Language》 -[英文原版在线版](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/index.html#//apple_ref/doc/uid/TP40014097-CH3-ID0) +[英文原版在线版](https://docs.swift.org/swift-book/) -[英文原版ePub版](https://swift.org/documentation/) +[英文原版ePub版](https://docs.swift.org/swift-book/TheSwiftProgrammingLanguageSwift5.epub) # 在线阅读 From 899f708be286c0781eeccb1e86f6fe3cbb188004 Mon Sep 17 00:00:00 2001 From: Jax Wu Date: Mon, 25 Mar 2019 21:25:46 +0800 Subject: [PATCH 042/107] update revision history content --- source/chapter1/04_revision_history.md | 994 ++++++------------------- 1 file changed, 224 insertions(+), 770 deletions(-) diff --git a/source/chapter1/04_revision_history.md b/source/chapter1/04_revision_history.md index 6618f7f2..830bbc92 100644 --- a/source/chapter1/04_revision_history.md +++ b/source/chapter1/04_revision_history.md @@ -1,800 +1,254 @@ # Swift 文档修订历史 -本页面根据 [Document Revision History](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/RevisionHistory.html) 进行适配更新。 +### 2019-01-24 -本页内容包括: +* 更新到 Swift 5。 +* 添加了[动态调用](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID603)章节,其中包含有关使用 DynamicCallable 属性动态调用实例作为函数的信息。 +* 添加了 [unknown](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID605) 和[未来枚举匹配](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID602)章节,其中包含了使用 `unknown` 来处理未来枚举可能发生改变的情形。 +* 在 [Key-Path] 表达式章节添加了标示 key path (\.self) 相关内容。 +* 在[可选编译块](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID539)章节新增了小于比较符 `<` 相关内容。 -- [Swift 4.1 更新](#swift_4_1) -- [Swift 4.0.3 更新](#swift_4_0_3) -- [Swift 4.0 更新](#swift_4_0) -- [Swift 3.1 更新](#swift_3_1) -- [Swift 3.0 更新](#swift_3_0) -- [Swift 2.2 更新](#swift_2_2) -- [Swift 2.1 更新](#swift_2_1) -- [Swift 2.0 更新](#swift_2_0) -- [Swift 1.2 更新](#swift_1_2) -- [Swift 1.1 更新](#swift_1_1) -- [Swift 1.0 更新](#swift_1_0) +### 2018-09-17 - -### Swift 4.1 更新 +* 更新至 Swift 4.2 。 +* 在[遍历枚举情形](https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html#ID581)章节添加了访问所有枚举情形的内容。 +* 在[编译诊断](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID582)章节添加了有关 `#error` 和 `#warning` 相关内容。 +* 在[属性声明](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)章节中补充了 `inlinable` 和 `usableFromInline` 属性相关的内联信息。 +* 在[属性声明](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)章节中添加了 `requires_stored_property_inits` 和 `warn_unqualified_access` 属性相关的信息。 +* 在[可选编译块](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID539)章节新增了如何根据 Swift 编译器版本对代码进行对应编译处理的内容。 +* 在[字面量语法](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID390)章节补充了 `#dsohandle` 相关内容。 - - - - - - - - - - - - - -
发布日期语法变更记录
2018-03-29 - -
+### 2018-03-29 - -### Swift 4.0.3 更新 +* 更新至 Swift 4.1 +* 在[等价运算符](https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html#ID45)章节添加了等价运算符的合成实现信息。 +* 在[声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html)一章的[申明拓展](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID378)部分和[协议](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html)一章的[有条件地遵循协议](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID574)部分添加了协议的有条件遵循相关内容。 +* 在[关联类型约束中使用协议](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID575)章节中添加了递归协议约束的内容。 +* 在[条件编译块](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID539)章节中添加了 `canImport()` 和 `targetEnvironment()` 平台条件相关内容。 - - - - - - - - - - - - - -
发布日期语法变更记录
2017-12-04 -
    -
  • 更新至 Swift 4.0.3。
  • -
  • 更新 Key-Path 表达式,现在 key path 支持下标子路径。
  • -
-
+### 2017-12-04 - -### Swift 4.0 更新 +* 更新至 Swift 4.0.3。 +* 更新 [Key-Path](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID563) 表达式章节,现在 key path 支持下标子路径。 - - - - - - - - - - - - - -
发布日期语法变更记录
2017-09-19 -
    -
  • 更新至 Swift 4.0。
  • -
  • Added information about exclusive access to memory to the Memory Safety chapter.
  • -
  • Added the Associated Types with a Generic Where Clause section, now that you can use generic where clauses to constrain associated types.
  • -
  • Added information about multiline string literals to the String Literals section of the Strings and Characters chapter, and to the String Literals section of the Lexical Structure chapter.
  • -
  • Updated the discussion of the objc attribute in Declaration Attributes, now that this attribute is inferred in fewer places.
  • -
  • Added the Generic Subscripts section, now that subscripts can be generic.
  • -
  • Updated the discussion in the Protocol Composition section of the Protocols chapter, and in the Protocol Composition Type section of the Types chapter, now that protocol composition types can contain a superclass requirement.
  • -
  • Updated the discussion of protocol extensions in Extension Declaration now that final isn’t allowed in them.
  • -
  • Added information about preconditions and fatal errors to the Assertions and Preconditions section.
  • -
-
+### 2017-09-19 - -### Swift 3.1 更新 +* 更新至 Swift 4.0。 +* 在[内存安全](https://docs.swift.org/swift-book/LanguageGuide/MemorySafety.html)章节补充了内存互斥访问相关的内容。 +* 添加了[带有泛型 Where 子句联类型](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID557)章节,现在可以使用泛型 `where` 子句约束关联类型。 +* 在[字符串和字符](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html)的[字面量](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html#ID286)一节以及[词法结构](https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html)的[字符串字面量](https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID417)一节中新增了多行字符串字面量相关内容。 +* 更新了[声明属性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)中 `objc` 属性的讨论,现在该属性是在更少的位置推断出来的。 +* 添加了[范型下标](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID558)章节,现在下标也支持范型特性了。 +* 更新了[协议](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html)一章中[协议组合](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID282)部分以及[类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html)一章中[协议组合类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID454)部分的讨论,现在协议组合类型支持进行父类约束了。 +* 更新了[拓展声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID378)中关于协议的讨论,现在它们不支持 `final` 特性了。 +* 在[断言和前置条件](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID335)部分增加了部分前置条件和致命错误的内容。 - - - - - - - - - - - - - -
发布日期语法变更记录
2017-03-27 -
    -
  • 更新至 Swift 3.1。
  • -
  • 增加通用 Where 子句扩展,其中包含需要的扩展信息。
  • -
  • 增加了一个区间迭代的例子到For-In 循环章节。
  • -
  • 增加一个可失败数值转换的例子到可失败构造器章节。
  • -
  • 增加关于使用 Swift 语言版本的 available 特性信息到声明特性章节。
  • -
  • 更新了函数类型章节中的描述,注意在写函数类型时不允许使用参数标签。
  • -
  • 更新了条件编译块章节中的 Swift 语言版本号的描述,现在可以使用可选的补丁版本号。
  • -
  • 更新了函数类型章节的描述,现在 Swift 区分了采用多参数的函数和采用元组类型的单个参数的函数。
  • -
  • 表达式章节中删除了动态表达式的部分,现在 type(of:) 是 Swift 标准库函数。
  • -
-
+### 2017-03-27 - -### Swift 3.0 更新 +* 更新至 Swift 3.1。 +* 增加[范型 Where 子句扩展](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID553),其中包含需要的扩展信息。 +* 增加了一个区间迭代的例子到 [For-In 循环](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID121)。 +* 增加一个可失败数值转换的例子[到可失败构造器](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID224)章节。 +* 增加关于使用 Swift 语言版本的 `available` 特性内容到[声明特性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)章节。 +* 更新了[函数类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID449)章节中的描述,注意在写函数类型时不允许使用参数标签。 +* 更新了[条件编译块](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID539)章节中的 Swift 语言版本号的描述,现在可以使用可选的补丁版本号。 +* 更新了[函数类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID449)>章节的描述,现在 Swift 区分了采用多参数的函数和采用元组类型的单个参数的函数。 +* 从[表达式](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html)章节中删除了动态表达式的部分,现在 `type(of:)` 是 Swift 标准库函数。 - - - - - - - - - - - - - - - - - -
发布日期语法变更记录
2016-10-27 -
    -
  • - 更新至 Swift 3.0.1。 -
  • -
  • - 更新自动引用计数章节中关于 weak 和 unowned 引用的讨论。 -
  • -
  • - 增加声明标识符章节中关于新的标识符 `unowned`,`unowend(safe)` 和 `unowned(unsafe)` 的描述。 -
  • -
  • - 增加Any 和 AnyObject 的类型转换一节中关于使用类型 `Any` 作为可选值的描述。 -
  • -
  • - 更新表达式章节,把括号表达式和元组表达式的描述分开。 -
  • -
-
2016-09-13
    -
  • - 更新至 Swift 3.0。 -
  • -
  • - 更新函数章节中关于函数的讨论,在函数定义一节中,标明所有函数参数默认都有函数标签。 -
  • -
  • - 更新高级操作符章节中关于操作符的讨论,现在你可以作为类型函数来实现,替代之前的全局函数实现方式。 -
  • -
  • - 增加访问控制章节中关于对新的访问级别描述符openfileprivate的信息 -
  • -
  • - 更新函数定义一节中关于inout的讨论,标明它放在参数类型的前面,替代之前放在参数名称前面的方式。 -
  • -
  • - 更新逃逸闭包自动闭包还有属性章节中关于@noescape@autoclosure的讨论,现在他们是类型属性,而不是定义属性。 -
  • -
  • - 增加高级操作符章节中自定义中缀操作符的优先级一节和定义章节中优先级组声明一节中关于操作符优先级组的信息。 +### 2016-10-27 -
  • -
  • - 更新一些讨论:使用 macOS 替换掉 OS X, Error 替换掉 ErrorProtocol,和更新一些协议名称,比如使用 ExpressibleByStringLiteral 替换掉 StringLiteralConvertible。 +* 更新至 Swift 3.0.1。 +* 更新[自动引用计数](https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html)章节中关于 weak 和 unowned 引用的讨论。 +* 增加[声明标识符](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID381)章节中关于新的标识符 `unowned`,`unowend(safe)` 和 `unowned(unsafe)` 的描述。 +* 增加[Any 和 AnyObject 的类型转换](https://docs.swift.org/swift-book/LanguageGuide/TypeCasting.html#ID342)一节中关于使用类型 `Any` 作为可选值的描述。 +* 更新[表达式](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html)章节,把括号表达式和元组表达式的描述分开。 -
  • -
  • - 更新泛型章节中泛型 Where 语句一节和泛型形参和实参章节,现在泛型的 where 语句写在一个声明的最后。 +### 2016-09-13 -
  • -
  • - 更新逃逸闭包一节,现在闭包默认为非逃逸的(noescaping)。 -
  • -
  • - 更新基础部分章节中可选绑定一节和语句章节中While 语句一节,现在 if,while 和 guard 语句使用逗号分隔条件列表,不需要使用 where 语句。 -
  • -
  • - 增加控制流章节中Switch一节和语句章节中Switch 语句一节关于 switch cases 可以使用多模式的信息。 -
  • -
  • - 更新函数类型一节,现在函数参数标签不包含在函数类型中。 -
  • -
  • - 更新协议章节中协议组合一节和类型章节中协议组合类型一节关于使用新的 Protocol1 & Protocol2 语法的信息。 -
  • -
  • - 更新动态类型表达式一节使用新的 type(of:) 表达式的信息。 -
  • -
  • - 更新行控制表达式一节使用 #sourceLocation(file:line:) 表达式的信息。 -
  • -
  • - 更新永不返回函数一节使用 新的 Never 类型的信息。 -
  • -
  • - 增加字面量表达式一节关于 playground 字面量的信息。 -
  • -
  • - 更新In-Out 参数一节,标明只有非逃逸闭包能捕获 in-out 参数。 -
  • -
  • - 更新默认参数值一节,现在默认参数不能在调用时候重新排序。 -
  • -
  • - 更新属性章节中关于属性参数使用分号的说明。 -
  • -
  • - 增加重新抛出函数和方法一节中关于在 catch 代码块中抛出错误的重新抛出函数的信息。 -
  • -
  • - 增加Selector 表达式一节中关于访问 Objective-C 中 Selector 的 getter 和 setter 的信息。 -
  • -
  • - 增加类型别名声明一节,标明函数类型作为参数类型必须使用括号包裹。 -
  • -
  • - 增加函数类型一节中关于泛型类型别名和在协议内使用类型别名的信息。 -
  • -
  • - 更新属性章节,标明 @IBAction,@IBOutlet 和 @NSManaged 隐式含有 @objc 属性。 -
  • -
  • - 增加声明属性一节中关于 @GKInspectable 的信息。 -
  • -
  • - 更新可选协议要求一节中关于只能在与 Objective-C 交互的代码中才能使用可选协议要求的信息。 -
  • -
  • - 删除函数声明一节中关于显式使用 let 关键字作为函数参数的信息。 -
  • -
  • - 删除语句一节中关于 Boolean 协议的信息, 现在这个协议已经被 Swift 标准库删除。 -
  • -
  • - 更正声明一节中关于 @NSApplicationMain 协议的信息。 -
  • -
-
+* 更新至 Swift 3.0。 +* 更新[函数](https://docs.swift.org/swift-book/LanguageGuide/Functions.html)一章和[函数声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID362)部分关于函数的讨论,在一节中,标明所有函数参数默认都有函数标签。 +* 更新[高级操作符](https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html)章节中关于操作符的讨论,现在你可以作为类型函数来实现,替代之前的全局函数实现方式。 +* 增加[访问控制](https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html)章节中关于对新的访问级别描述符 `open` 和 `fileprivate` 的信息。 +* 更新[函数声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID362)中关于 `inout` 的讨论,注意它现在出现在参数类型的前面,而不是在参数名称的前面。 +* 更新[逃逸闭包](https://docs.swift.org/swift-book/LanguageGuide/Closures.html#ID546)和[自动闭包](https://docs.swift.org/swift-book/LanguageGuide/Closures.html#ID543)还有[属性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html)章节中关于 `@noescape` 和 `@autoclosure` 的讨论,现在他们是类型属性,而不是定义属性。 +* 增加[高级操作符](https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html)一章中[自定义中缀操作符的优先级](https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html#ID47)部分和[定义](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html)一章中[优先级组声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID550)部分中关于操作符优先级组的信息。 +* 更新一些讨论:使用 macOS 替换掉 OS X, Error 替换掉 ErrorProtocol,和更新一些协议名称,比如使用 ExpressibleByStringLiteral 替换掉 StringLiteralConvertible。 +* 更新[泛型](https://docs.swift.org/swift-book/LanguageGuide/Generics.html)和[泛型形参和实参](https://docs.swift.org/swift-book/ReferenceManual/GenericParametersAndArguments.html)章节中[泛型 Where 语句](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID192)部分,现在泛型的 where 语句写在一个声明的最后。 +* 更新[逃逸闭包](https://docs.swift.org/swift-book/LanguageGuide/Closures.html#ID546)一节,现在闭包默认为非逃逸的(noescaping)。 +* 更新[基础部分](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html)一章中[可选绑定](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID333)部分和[语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html)一章中[While 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID432)部分,现在 if,`while` 和 `guard` 语句使用逗号分隔条件列表,不需要使用 `where` 语句。 +* 在[控制流](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html)一章的[Switch](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID129)和[语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html)一章的 [Switch 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID436) 部分中增加关于 switch cases 可以使用多模式的信息。 +* 更新[函数类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID449)一节,现在函数参数标签不包含在函数类型中。 +* 更新[协议](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html)一章[协议组合](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID282)部分和[类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html)一章[协议组合类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID454)部分关于使用新的 Protocol1 & Protocol2 语法的信息。 +* 更新动态类型表达式一节使用新的 `type(of:)` 表达式的信息。 +* 更新[行控制表达式](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID540)一节使用 `#sourceLocation(file:line:)` 表达式的信息。 +* 更新[永不返回函数](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID551)一节使用 新的 `Never` 类型的信息。 +* 增加[字面量表达式](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID390)一节关于 `playground` 字面量的信息。 +* 更新[In-Out 参数](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID545)一节,标明只有非逃逸闭包能捕获 `in-out` 参数。 +* 更新[默认参数值](https://docs.swift.org/swift-book/LanguageGuide/Functions.html#ID169)一节,现在默认参数不能在调用时候重新排序。 +* 更新[属性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html)章节中关于属性参数使用分号的说明。 +* 增加[重新抛出函数和方法](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID531)一节中关于在 catch 代码块中抛出错误的重新抛出函数的信息。 +* 增加[Selector 表达式](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID547)一节中关于访问 Objective-C 中 Selector 的 getter 和 setter 的信息。 +* 增加[类型别名声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID361)一节,标明函数类型作为参数类型必须使用括号包裹。 +* 增加[函数类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID449)一节中关于泛型类型别名和在协议内使用类型别名的信息。 +* 更新[属性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html)章节,标明 `@IBAction`,`@IBOutlet` 和 `@NSManaged` 隐式含有 `@objc` 属性。 +* 增加[声明属性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)一节中关于 `@GKInspectable` 的信息。 +* 更新[可选协议要求](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID284)一节中关于只能在与 `Objective-C` 交互的代码中才能使用可选协议要求的信息。 +* 删除[函数声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID362)一节中关于显式使用 `let` 关键字作为函数参数的信息。 +* 删除[语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html)一节中关于 `Boolean` 协议的信息, 现在这个协议已经被 Swift 标准库删除。 +* 更正[声明属性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)一节中关于 `@NSApplicationMain` 协议的信息。 - -### Swift 2.2 更新 +### 2016-03-21 - - - - - - - - - - - - - - - -
发布日期语法变更记录
2016-03-21
    -
  • - 更新至 Swift 2.2。 -
  • -
  • - 增加了编译配置语句一节中关于如何根据 Swift 版本进行条件编译。 -
  • -
  • - 增加了显示成员表达式一节中关于如何区分只有参数名不同的方法和构造器的信息。 -
  • -
  • - 增加了选择器表达式一节中针对 Objective-C 选择器的 #selector 语法。 -
  • -
  • - 更新了关联类型协议关联类型声明,使用 associatedtype 关键词修改了对于关联类型的讨论。 -
  • -
  • - 更新了可失败构造器一节中关于当构造器在实例完全初始化之前返回 nil的相关信息。 -
  • -
  • - 增加了比较运算符一节中关于比较元组的信息。 -
  • -
  • - 增加了关键字和标点符号一节中关于使用关键字作为外部参数名的信息。 -
  • -
  • - 增加了声明特性一节中关于@objc特性的讨论,并指出枚举(Enumeration)和枚举用例(Enumaration Case)。 -
  • -
  • - 增加了操作符一节中对于自定义运算符的讨论包含了.。 -
  • -
  • - 增加了重新抛出错误的函数和方法一节中关于重新抛出错误函数不能直接抛出错误的笔记。 -
  • -
  • - 增加了属性观察器一节中关于当作为 in-out 参数传递属性时,属性观察器的调用行为。 -
  • -
  • - 增加了Swift 初见一节中关于错误处理的内容。 -
  • -
  • - 更新了弱引用一节中的图片用以更清楚的展示重新分配过程。 -
  • -
  • - 删除了 C 语言风格的 for 循环,++ 前缀和后缀运算符,以及-- 前缀和后缀运算符。 -
  • -
  • - 删除了对变量函数参数和柯里化函数的特殊语法的讨论。 -
  • -
-
+* 更新至 Swift 2.2。 +* 增加了[编译配置语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID539)一节中关于如何根据 Swift 版本进行条件编译。 +* 增加了[显示成员表达式](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID400)一节中关于如何区分只有参数名不同的方法和构造器的信息。 +* 增加了[选择器表达式](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID547)一节中针对 Objective-C 选择器的 `#selector` 语法。 +* 更新了[关联类型](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID189)和[协议关联类型声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID374)中的关于使用 `associatedtype` 关键词修饰关联类型的讨论。 +* 更新了[可失败构造器](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID224)一节中关于当构造器在实例完全初始化之前返回 `nil` 的相关信息。 +* 增加了[比较运算符](https://docs.swift.org/swift-book/LanguageGuide/BasicOperators.html#ID70)一节中关于比较元组的信息。 +* 增加了[关键字和标点符号](https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID413)一节中关于使用关键字作为外部参数名的信息。 +* 增加了[声明特性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)一节中关于 `@objc` 特性的讨论,并指出枚举和枚举用例。 +* 增加了[操作符](https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID418)一节中对于自定义运算符的讨论包含了 `.`。 +* 增加了[重新抛出错误的函数和方法](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID531)一节中关于重新抛出错误函数不能直接抛出错误的笔记。 +* 增加了[属性观察器](https://docs.swift.org/swift-book/LanguageGuide/Properties.html#ID262)一节中关于当作为 in-out 参数传递属性时,属性观察器的调用行为。 +* 增加了[Swift 初见](https://docs.swift.org/swift-book/GuidedTour/GuidedTour.html)一节中关于错误处理的内容。 +* 更新了[弱引用](https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html#ID53)一节中的图片用以更清楚的展示重新分配过程。 +* 删除了 C 语言风格的 `for` 循环,`++` 前缀和后缀运算符,以及 `--` 前缀和后缀运算符。 +* 删除了对变量函数参数和柯里化函数的特殊语法的讨论。 - -### Swift 2.1 更新 +### 2015-10-20 - - - - - - - - - - - - - -
发布日期语法变更记录
2015-10-20 -
+* 更新至 Swift 2.1。 +* 更新了[字符串插值]和[字符串字面量]小节,现在字符串插值可包含字符串字面量。 +* 增加了在[非逃逸闭包]一节中关于 `@noescape` 属性的相关内容。 +* 更新了[声明特性]和[编译配置语句]小节中与 tvOS 相关的信息。 +* 增加了 [In-Out 参数]小节中与 in-out 参数行为相关的信息。 +* 增加了在[捕获列表]一节中关于指定闭包捕获列表被捕获时捕获值的相关内容。 +* 更新了使用[可选链式调用访问属性]一节,阐明了如何通过可选链式调用进行赋值。 +* 改进了[自动闭包]一节中对自闭包的讨论。 +* 在 [Swift 初见]()一节中更新了一个使用 `??` 操作符的例子。 - -### Swift 2.0 更新 +### 2015-09-16 - - - - - - - - - - - - - -
发布日期语法变更记录
2015-09-16
    -
  • - 更新至 Swift 2.0。 -
  • -
  • - 增加了对于错误处理相关内容,包括 错误处理一章、Do 语句Throw 语句Defer 语句以及try 运算符 的多个小节。 -
  • -
  • - 更新了表示并抛出错误一节,现在所有类型均可遵循 ErrorType 协议。 -
  • -
  • - 增加了将错误转换成可选值一节 try? 关键字的相关信息。 -
  • -
  • - 增加了枚举一章的递归枚举一节和声明一章的任意类型用例的枚举一节中关于递归枚举的内容。 -
  • -
  • - 增加了控制流一章中 a href="https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ControlFlow.html#//apple_ref/doc/uid/TP40014097-CH9-ID523">检查 API 可用性一节和语句一章中可用性条件一节中关于 API 可用性检查的内容。 -
  • +* 更新至 Swift 2.0 +* 在[错误处理](https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html)一章中增加了关于错误处理的相关内容,包括 [Do 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID533)、[Throw 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID518)、[Defer 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID532)以及 [try 运算符](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID516) +* 更新了[错误表示和抛出](https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html#ID509)一节,现在所有类型都可以遵循 `ErrorType` 协议了。 +* 在[将错误装换成可选值](https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html#ID542)一节增加了 `try` 关键字相关信息。 +* 在[枚举](https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html)一章的[递归枚举](https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html#ID536)部分以及以及[声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html)一章的[任意类型用例的枚举](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID365)一节中新增了递归枚举相关信息。 +* 在[控制流](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html)一章的 [API 可用性检查](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID523)一节和[语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html)一章的[可用性条件一节](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID522)中增加了关于 API 可用性检查相关的内容。 +* 在[控制流](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html)一章的 [尽早退出]()一节和[语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html)一章的 [Guard 语句]部分新增了与 `guard` 语句相关的内容。 +* 在[协议](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html)一章中[协议扩展](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID521)一节中新增了关于协议扩展的内容。 +* 在[访问控制](https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html)一章的[单元测试 target 的访问级别](https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html#ID519)一节中新增了关于单元测试访问控制相关的内容。 +* 在[模式](https://docs.swift.org/swift-book/ReferenceManual/Patterns.html)一章的[可选模式](https://docs.swift.org/swift-book/ReferenceManual/Patterns.html#ID520)一节中增加了可选模式相关内容。 +* 更新了 [Repeat-While](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID126) 一节中关于 `repeat-while` 循环相关的内容。 +* 更新了[字符串和字符](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html)一章,现在 `String` 类型在 Swift 标准库中不再遵循 `CollectionType` 协议。 +* 在[常量与变量打印](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID314)一节中增加了新 Swift 标准库中关于 `print(_:separator:terminator)` 相关内容。 +* 在[枚举](https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html)一章中的[原始值的隐式赋值](https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html#ID535)一节和[声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html)一章的[包含原始值类型的枚举](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID366)一节中增加了关于包含 `String` 原始值的枚举用例的行为相关内容。 +* 在[自动闭包](https://docs.swift.org/swift-book/LanguageGuide/Closures.html#ID543)一节中增加了关于 `@autoclosure` 特性的相关信息,包括它的 `@autoclosure(escaping)` 形式。 +* 更新了[声明特性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)一节中关于 `@avaliable` 和 `warn_unused_result` 特性的相关内容。 +* 更新了[类型特性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID350)一节中关于 `@convention` 特性的相关信息。 +* 在[可选绑定](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID333)一节中增加了关于使用 `where` 子句进行多可选绑定的相关内容。 +* 在[字符串字面量](https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID417)一节中新增了关于在编译时使用 `+` 运算符拼接字符串字面量的相关信息。 +* 在[元类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID455)一节中新增了关于元类型值的比较和使用它们通过构造器表达式构造实例相关内容。 +* 在[断言调试](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID336)一节中新增了关于用户定义断言何时会失效的注释内容。 +* 更新了[声明特性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)一节中对 `@NSManaged` 特性的讨论,现在这个特性可以被应用到一个确定实例方法。 +* 更新了[可变参数](https://docs.swift.org/swift-book/LanguageGuide/Functions.html#ID171)一节,现在可变参数可以声明在函数参数列表的任意位置中。 +* 在[重写可失败构造器](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID229)一节中新增了关于非可失败构造器相当于一个可失败构造器通过父类构造器的结果进行强制拆包的相关内容。 +* 在[任意类型用例的枚举](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID365)一节中增加了关于枚举用例作为函数的内容。 +* 在[构造器表达式](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID399)一节中新增关于显式引用一个构造器相关内容。 +* 在[编译控制语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID538)一节中新增了关于编译信息以及行控制语句相关信息。 +* 在[元类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID455)一节中新增了关于如何从元类型值中构造类实例相关内容。 +* 在[弱引用](https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html#ID53)一节中关于弱引用作为缓存所存在的不足的注释说明。 +* 更新了[类型特性](https://docs.swift.org/swift-book/LanguageGuide/Properties.html#ID264)一节,提到了存储型特性其实是懒加载。 +* 更新了[捕获类型](https://docs.swift.org/swift-book/LanguageGuide/Closures.html#ID103)一节,阐明了变量和常量在闭包中如何被捕获。 +* 更新了[声明特性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)一节,用以描述何时在类中使用 `@objc` 关键字。 +* 在[错误处理](https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html#ID512)一节中增加了关于执行 `throw` 语句的性能的讨论。在 [Do 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID533)一节的 do 语句部分也增加了类似内容。 +* 更新了[类型特性](https://docs.swift.org/swift-book/LanguageGuide/Properties.html#ID264)一节中关于类、结构体和枚举的存储型和计算型特性相关的内容。 +* 更新了 [Break 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID441)一节中关于带标签的 break 语句相关内容。 +* 在[属性观察器](https://docs.swift.org/swift-book/LanguageGuide/Properties.html#ID262)一节中更新了一处注释,用来明确 `willSet` 和 `didSet` 观察器的行为。 +* 在[访问级别](https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html#ID5)一节中新增了关于 `private` 作用域的相关信息说明。 +* 在[弱引用](https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html#ID53)一节中增加了关于弱应用在垃圾回收系统和 ARC 之间的区别的说明。 +* 更新了[字符串字面量中特殊字符](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html#ID295)一节中对 Unicode 标量更精确的定义。 -
  • - 增加了控制流一章的早期退出一节和语句一章的guard 语句中关于新 guard 语句的内容。 -
  • -
  • - 增加了协议一章中协议扩展一节中关于协议扩展的内容。 -
  • -
  • - 增加了访问控制一章中单元测试 target 的访问级别一节中关于单元测试的访问控制相关的内容。 -
  • -
  • - 增加了模式一章中可选模式一节中的新可选模式。 -
  • -
  • - 更新了 Repeat-While 一节中关于repeat-while循环的信息。 -
  • -
  • - 更新了字符串和字符一章,现在String在 Swift 标准库中不再遵循CollectionType协议。 -
  • -
  • - 增加了打印常量和变量一节中关于新 Swift 标准库中关于 print(_:separator:terminator) 的信息。 -
  • -
  • - 增加了枚举一章中原始值的隐式赋值一节和声明一章的包含原始值类型的枚举一节中关于包含String原始值的枚举用例的行为。 -
  • -
  • - 增加了自闭包一节中关于@autoclosure特性的相关信息,包括它的@autoclosure(escaping)形式。 -
  • -
  • - 更新了声明特性一节中关于@avaliablewarn_unused_result特性的相关内容。 -
  • -
  • - 更新了类型特性一节中关于@convention特性的相关信息。 -
  • -
  • - 增加了可选绑定一节中关于使用where子句进行多可选绑定的内容。 -
  • -
  • - 增加了字符串字面量一节中关于在编译时使用 + 运算符凭借字符串字面量的相关信息。 -
  • -
  • - 增加了元类型一节中关于元类型值的比较和使用它们通过构造器表达式构造实例。 -
  • -
  • - 增加了断言调试一节中关于用户定义断言是被警用的相关内容。 -
  • -
  • - 更新了声明特性一节中,对@NSManaged特性的讨论,现在这个特性可以被应用到一个确定实例方法。 -
  • -
  • - 更新了可变参数一节,现在可变参数可以声明在函数参数列表的任意位置中。 -
  • -
  • - 增加了重写可失败构造器一节中,关于非可失败构造器相当于一个可失败构造器通过父类构造器的结果进行强制拆包的相关内容。 -
  • -
  • - 增加了任意类型用例的枚举一节中关于枚举用例作为函数的内容。 -
  • -
  • - 增加了构造器表达式一节中关于显式引用一个构造器的内容。 -
  • -
  • - 更新了编译控制语句一节中关于编译信息以及行控制语句的相关信息。 -
  • -
  • - 更新了元类型一节中关于如何从元类型值中构造类实例。 -
  • -
  • - 更新了弱引用一节中关于弱引用作为缓存的显存的不足。 -
  • -
  • - 更新了类型特性一节,提到了存储型特性其实是懒加载。 -
  • -
  • - 更新了捕获类型一节,阐明了变量和常量在闭包中如何被捕获。 -
  • -
  • - 更新了声明特性一节用以描述如何在类中使用@objc关键字。 -
  • -
  • - 增加了错误处理一节中关于执行throw语句的性能的讨论。增加了 Do 语句一节中相似的信息。 -
  • -
  • - 更新了类型特性一节中关于类、结构体和枚举的存储型和计算型特性的信息。 -
  • -
  • - 更新了Break 语句一节中关于带标签的 break 语句。 -
  • -
  • - 更新了属性观察器一节,阐明了willSetdidSet观察器的行为。 -
  • -
  • - 增加了访问级一节中关于private作用域访问的相关信息。 -
  • -
  • - 增加了弱引用一节中关于若应用在垃圾回收系统和 ARC 之间的区别。 -
  • -
  • - 更新了字符串字面量中特殊字符一节中对 Unicode 标量更精确的定义。 -
  • -
-
- -### Swift 1.2 更新 - +### 2015-4-8 - - - - - - - - - - - - - -
发布日期语法变更记录
2015-4-8
    -
  • - 更新至 Swift 1.2。 -
  • -
  • - Swift 现在自身提供了一个Set集合类型,更多信息请看集合 +* 更新至 Swift 1.2。 +* Swift 现在自身提供了一个 `Set` 集合类型,更多信息请看 [Sets](https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html#ID484)。 +* `@autoclosure` 现在是一个参数声明的属性,而不是参数类型的属性。这里还有一个新的参数声明属性 `@noescape`。更多信息,请看[属性声明](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)。 +* 对于类型属性和方法现在可以使用 `static` 关键字作为声明描述符,更多信息,请看[类型变量属性](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID483)。 +* Swift 现在包含一个 `as?` 和 `as!` 的向下可失败类型转换运算符。更多信息,请看[协议遵循性检查](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID283)。 +* 增加了一个关于[字符串索引](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html#ID534)的新指导章节。 +* 从[溢出运算符](https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html#ID37)一节中移除了溢出除运算符(&/)和求余溢出运算符(&%)。 +* 更新了常量和常量属性在声明和构造时的规则,更多信息,请看[常量声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID355)。 +* 更新了字符串字面量中 Unicode 标量集的定义,请看[字符串字面量中的特殊字符](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html#ID295)。 +* 更新了[区间运算符](https://docs.swift.org/swift-book/LanguageGuide/BasicOperators.html#ID73)章节来提示当半开区间运算符含有相同的起止索引时,其区间为空。 +* 更新了[闭包引用类型](https://docs.swift.org/swift-book/LanguageGuide/Closures.html#ID104)章节来阐明对于变量的捕获规则。 +* 更新了[值溢出](https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html#ID38)章节堆有符号整数和无符号整数的溢出行为进行了阐明。 +* 更新了[协议声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID369)章节对协议声明时的作用域和成员等内容进行了阐明。 +* 更新了[捕获列表](https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html#ID58)章节对于闭包捕获列表中的弱引用和无主引用的使用语法进行了阐明。 +* 更新了[运算符](https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID418)章节,明确指明一些例子来说明自定义运算符所支持的特性,如数学运算符,各种符号,Unicode 符号块等。 +* 在函数作用域中的常量声明时可以不被初始化,它必须在第一次使用前被赋值。更多的信息,请看[常量声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID355)。 +* 在构造器中,常量属性有且仅能被赋值一次。更多信息,请看[在构造过程中给常量属性赋值](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID212)。 +* 多个可选绑定现在可以在`if`语句后面以逗号分隔的赋值列表的方式出现,更多信息,请看[可选绑定](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID333)。 +* 一个[可选链表达式](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID405)必须出现在后缀表达式中。 +* 协议类型转换不再局限于 `@obj` 修饰的协议了 +* 在运行时可能会失败的类型转换可以使用 `as?` 和 `as!` 运算符,而确保不会失败的类型转换现在使用 `as` 运算符。更多信息,请看[类型转换运算符](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID388)。 -
  • -
  • - @autoclosure现在是一个参数声明的属性,而不是参数类型的属性。这里还有一个新的参数声明属性@noescape。更多信息,请看属性声明 -
  • -
  • - 对于类型属性和方法现在可以使用static关键字作为声明描述符,更多信息,请看类型变量属性 -
  • -
  • - Swift 现在包含一个as?as!的向下可失败类型转换运算符。更多信息,请看协议遵循性检查 -
  • -
  • - 增加了一个新的指导章节,它是关于字符串索引的 -
  • -
  • - 从溢出运算符中移除了溢出除运算符(&/)和求余溢出运算符(&%)。 -
  • -
  • - 更新了常量和常量属性在声明和构造时的规则,更多信息,请看常量声明 -
  • -
  • - 更新了字符串字面量中 Unicode 标量集的定义,请看字符串字面量中的特殊字符 -
  • -
  • - 更新了区间运算符章节来提示当半开区间运算符含有相同的起止索引时,其区间为空。 -
  • -
  • - 更新了闭包引用类型章节来澄清对于变量的捕获规则 -
  • -
  • - 更新了值溢出章节来澄清有符号整数和无符号整数的溢出行为 -
  • -
  • - 更新了协议声明章节来澄清协议声明时的作用域和成员 -
  • -
  • - 更新了捕获列表章节来澄清对于闭包捕获列表中的弱引用和无主引用的使用语法。 -
  • -
  • - 更新了运算符章节来明确指明一些例子来说明自定义运算符所支持的特性,如数学运算符,各种符号,Unicode 符号块等 -
  • -
  • - 在函数作用域中的常量声明时可以不被初始化,它必须在第一次使用前被赋值。更多的信息,请看常量声明 -
  • -
  • - 在构造器中,常量属性有且仅能被赋值一次。更多信息,请看在构造过程中给常量属性赋值 -
  • -
  • - 多个可选绑定现在可以在if语句后面以逗号分隔的赋值列表的方式出现,更多信息,请看可选绑定 -
  • -
  • - 一个可选链表达式必须出现在后缀表达式中 -
  • -
  • - 协议类型转换不再局限于@obj修饰的协议了 -
  • -
  • - 在运行时可能会失败的类型转换可以使用as?as!运算符,而确保不会失败的类型转换现在使用as运算符。更多信息,请看类型转换运算符 -
  • -
-
+### 2014-10-16 - -### Swift 1.1 更新 +* 更新至 Swift 1.1。 +* 增加了关于[失败构造器](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID224)的完整章节。 +* 增加了协议中关于失败构造器要求的描述。 +* 常量和变量的 `Any` 类型现可以包含函数实例。更新了关于 `Any` 相关的示例来展示如何在 `switch` 语句中如何检查并转换到一个函数类型。 +* 带有原始值的枚举类型增加了一个 `rawValue` 属性替代 `toRaw()` 方法,同时使用了一个以 `rawValue` 为参数的失败构造器来替代 `fromRaw()` 方法。更多的信息,请看[原始值](https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html#ID149)和[带原始值的枚举类型](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID366)部分。 +* 自定义运算符现在可以包含 `?` 字符,更新[运算符](https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID418)章节描述了改进后的规则,并且从[自定义运算符](https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html#ID46)章节删除了重复的运算符有效字符集合。 - - - - - - - - - - - - - -
发布日期语法变更记录
2014-10-16 -
- - -### Swift 1.0 更新 - - - - - - - - - - - - - - -
发布日期语法变更记录
2014-08-18 -
+* 发布新的文档用以详述 Swift 1.0,苹果公司针对 iOS 和 OS X 应用的全新开发语言。 +* 在章节协议中,增加新的小节:[对构造器的规定](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID272)。 +* 在章节协议中,增加新的小节:[类专属协议](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID281)。 +* [断言](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID335)现在可以使用字符串内插语法,并删除了文档中有冲突的注释。 +* 更新了[连接字符串和字符](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html#ID291)小节来说明一个事实,那就是字符串和字符不能再用 `+` 号运算符或者复合加法运算符 `+=` 相互连接,这两种运算符现在只能用于字符串之间相连。请使用 `String` 类型的 `append` 方法在一个字符串的尾部增加单个字符。 +* 在[属性申明](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)章节增加了关于 `availability` 特性的一些信息。 +* [可选类型](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID330) 若有值时,不再隐式的转换为 `true`,同样,若无值时,也不再隐式的转换为 `false`,这是为了避免在判别 optional `Bool` 的值时产生困惑。 替代的方案是,用`==` 或 `!=` 运算符显式地去判断 Optinal 是否是 `nil`,以确认其是否包含值。 +* Swift 新增了一个 [Nil 合并运算符](https://docs.swift.org/swift-book/LanguageGuide/BasicOperators.html#ID72) (`a ?? b`), 该表达式中,如果 Optional `a` 的值存在,则取得它并返回,若 Optional `a`为`nil`,则返回默认值 `b` +* 更新和扩展[字符串的比较](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html#ID298),用以反映和展示'字符串和字符的比较',以及'前缀(prefix)/后缀(postfix)比较'都开始基于扩展字符集(extended grapheme clusters)规范的等价比较。 +* 现在,你可以通过下标赋值或者[可选调用链](https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html)中的可变方法和操作符来给属性设值。相应地更新了有关[通过可选链接访问属性](https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html#ID248)的信息,并扩展了[通过可选链接调用方法](https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html#ID249)时检查方法调用成功的示例,以显示如何检查属性设置是否成功。 +* 在章节可选链中,增加一个新的小节[访问可选类型的下标脚注](https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html#ID251)。 +* 更新章节[访问和修改数组](https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html#ID110)以标示:从该版本起,不能再通过 `+=` 运算符给一个数组添加一个新的项。对应的替代方案是,使 `append` 方法,或者通过 `+=` 运算符来添加一个只有一个项的数组。 +* 添加了一个提示:在[范围运算符](https://docs.swift.org/swift-book/LanguageGuide/BasicOperators.html#ID73)中,比如, `a...b` 和 `a..<b` ,起始值 `a` 不能大于结束值 `b` 。 +* 重写了[继承](https://docs.swift.org/swift-book/LanguageGuide/Inheritance.html)这一章:删除了本章中关于构造器重写的介绍性报道;转而将更多的注意力放到新增的部分——子类的新功能,以及如何通过重写(overrides)修改已有的功能。另外,[重写属性的 Getters 和 Setters](https://docs.swift.org/swift-book/LanguageGuide/Inheritance.html#ID200) 中的例子已经被替换为展示如何重写一个 `description` 属性。 (而关于如何在子类的构造器中修改继承属性的默认值的例子,已经被移到[构造过程](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html)这一章。) +* 更新了[构造器的继承与重写](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID221)小节以标示: 重写一个特定的构造器必须使用 `override` 修饰符。 +* 更新[Required 构造器](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID231)小节以标示:`required` 修饰符现在需要出现在所有子类的 required 构造器的声明中,而 required 构造器的实现,现在可以仅从父类自动继承。 +* 中置(Infix)的[运算符函数](https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html#ID42)不再需要`@infix` 属性。 +* [前置和后置运算符](https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html#ID43)的`@prefix` 和 `@postfix` 属性,已变更为 `prefix` 和 `postfix` 声明修饰符。 +* 增加一条注解:当 Prefix 和 postfix 运算符被作用于同一个操作数时,关于[前置和后置运算符](https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html#ID43)的执行顺序。 +* 在运算符函数中,[组合赋值运算符](https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html#ID44)不再使用 `@assignment` 属性来定义函数。 +* 在这个版本中,在定义[自定义操作符](https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html#ID46)时,`修饰符(Modifiers)的出现顺序发生变化`。比如现在,你该编写 `prefix operator`, 而不是 `operator prefix`。 +* 在[声明修饰符](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID381)章节增加关于 `dynamic` 声明修饰符的信息。 +* 增加[字面量](https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID414)的类型推导内容。 +* 为章节 Curried Functions 添加了更多的信息。 +* 加入新的章节[权限控制(https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html)。 +* 更新了[字符串和字符](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html)章节用以表明,在 Swift 中,`Character` 类型现在代表的是扩展字符集(extended grapheme cluster)中的一个 Unicode,为此,新增了小节 [Extended Grapheme Clusters](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html#ID296)。同时,为小节 [Unicode 标量](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html#ID294)和[字符串比较](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html#ID298)增加了更多内容。 +* 更新[字符串字面量](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html#ID286)章节:在一个字符串中,Unicode 标量(Unicode scalars) 以 `\u{n}`的形式来表示,`n` 是一个最大可以有8位的16进制数。 +* `NSString` `length` 属性已被映射到 Swift 的内建 `String`类型。(注意,这两属性的类型是`utf16Count`,而非 `utf16count`)。 +* Swift 的内建 `String` 类型不再拥有 `uppercaseString` 和 `lowercaseString` 属性。其对应部分在章节[字符串和字符](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html)已经被删除,并且各种对应的代码用例也已被更新。 +* 加入新的章节[没有外部名的构造器参数]()https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID210。 +* 加入新的章节 [Required 构造器](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID231)。 +* 加入新的章节[可选元组返回类型](https://docs.swift.org/swift-book/LanguageGuide/Functions.html#ID165)。 +* 更新了[类型标注](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID312)章节:多个相关变量可以用"类型标注”在同一行中声明为同一类型。 +* `@optional`, `@lazy`, `@final`, `@required` 等关键字被更新为 `optional`, `lazy`, `final`, `required` 参见[声明修饰符](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID381). +* 更新整本书中关于 `..<` 的引用,从半闭区间改为了[半开区间](https://docs.swift.org/swift-book/LanguageGuide/BasicOperators.html#ID75)。 +* 更新了小节[读取和修改字典](https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html#ID116): `Dictionary` 现在增加了一个 Boolean 型的属性:`isEmpty`。 +* 解释了哪些字符(集)可被用来定义[自定义操作符](https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html#ID46)。 +* `nil` 和布尔运算中的 `true` 和 `false` 现在被定义为[字面量](https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID414)。 +* Swift 中的数组 (`Array`) 类型从现在起具备了完整的值语义。具体信息被更新到[集合的可变性](https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html#ID106)和[数组](https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html#ID107)两小节,以反映这个新的变化。 此外,还解释了如何给 Strings, Arrays 和 Dictionaries 进行赋值和拷贝。 +* [数组类型速记语法](https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html#ID108)从 `SomeType[]` 更新为 `[SomeType]`。 +* 新增关于[字典类型的速记语法](https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html#ID114)的内容,现在书写格式为: `[KeyType: ValueType]`。 +* 加入新的小节:[字典键类型的哈希值](https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html#ID493)。 +* [闭包表达式](https://docs.swift.org/swift-book/LanguageGuide/Closures.html#ID95)示例中使用新的全局函数 `sorted` 取代原先的全局函数 `sort` 去展示如何返回一个全新的数组。 +* 更新关于[结构体逐一成员构造器](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID214)的描述:即使结构体的成员 `没有默认值`,逐一成员构造器也可以自动获得。 +* [半开区间运算符](https://docs.swift.org/swift-book/LanguageGuide/BasicOperators.html#ID75)由`..` 改为 `..<` +* 添加一个[泛型拓展](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID185)的示例。 From 64050823a2e4ec656df40436275a670229190ce8 Mon Sep 17 00:00:00 2001 From: Jax Wu Date: Tue, 26 Mar 2019 10:55:57 +0800 Subject: [PATCH 043/107] =?UTF-8?q?=E6=8C=89=E7=85=A7=E6=A0=A1=E5=AF=B9?= =?UTF-8?q?=E6=84=8F=E8=A7=81=E9=87=8D=E6=96=B0=E6=95=B4=E7=90=86=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 统一链接格式 2. 补充句号 3. 添加遗漏内容 & 修改其他格式问题 --- source/chapter1/04_revision_history.md | 61 +++++++++++++------------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/source/chapter1/04_revision_history.md b/source/chapter1/04_revision_history.md index 830bbc92..6c9ccbbc 100644 --- a/source/chapter1/04_revision_history.md +++ b/source/chapter1/04_revision_history.md @@ -3,14 +3,15 @@ ### 2019-01-24 * 更新到 Swift 5。 -* 添加了[动态调用](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID603)章节,其中包含有关使用 DynamicCallable 属性动态调用实例作为函数的信息。 -* 添加了 [unknown](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID605) 和[未来枚举匹配](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID602)章节,其中包含了使用 `unknown` 来处理未来枚举可能发生改变的情形。 -* 在 [Key-Path] 表达式章节添加了标示 key path (\.self) 相关内容。 +* 增加了[拓展字符串分隔符](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html#ID606)部分,另外在[字符串字面量](https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID417)部分更新了拓展字符串分隔符相关内容。 +* 添加了[动态调用](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID603)章节,其中包含有关使用 `dynamicCallable` 属性动态调用实例作为函数的信息。 +* 添加了[unknown](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID605)和[未来枚举匹配](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID602)章节,其中包含了使用 `unknown` 来处理未来枚举可能发生改变的情形。 +* 在[Key-Path]表达式章节添加了标示 key path (\.self) 相关内容。 * 在[可选编译块](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID539)章节新增了小于比较符 `<` 相关内容。 ### 2018-09-17 -* 更新至 Swift 4.2 。 +* 更新至 Swift 4.2。 * 在[遍历枚举情形](https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html#ID581)章节添加了访问所有枚举情形的内容。 * 在[编译诊断](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID582)章节添加了有关 `#error` 和 `#warning` 相关内容。 * 在[属性声明](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)章节中补充了 `inlinable` 和 `usableFromInline` 属性相关的内联信息。 @@ -20,7 +21,7 @@ ### 2018-03-29 -* 更新至 Swift 4.1 +* 更新至 Swift 4.1。 * 在[等价运算符](https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html#ID45)章节添加了等价运算符的合成实现信息。 * 在[声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html)一章的[申明拓展](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID378)部分和[协议](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html)一章的[有条件地遵循协议](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID574)部分添加了协议的有条件遵循相关内容。 * 在[关联类型约束中使用协议](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID575)章节中添加了递归协议约束的内容。 @@ -29,7 +30,7 @@ ### 2017-12-04 * 更新至 Swift 4.0.3。 -* 更新 [Key-Path](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID563) 表达式章节,现在 key path 支持下标子路径。 +* 更新[Key-Path](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID563)表达式章节,现在 key path 支持下标子路径。 ### 2017-09-19 @@ -47,7 +48,7 @@ * 更新至 Swift 3.1。 * 增加[范型 Where 子句扩展](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID553),其中包含需要的扩展信息。 -* 增加了一个区间迭代的例子到 [For-In 循环](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID121)。 +* 增加了一个区间迭代的例子到[For-In 循环](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID121)。 * 增加一个可失败数值转换的例子[到可失败构造器](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID224)章节。 * 增加关于使用 Swift 语言版本的 `available` 特性内容到[声明特性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)章节。 * 更新了[函数类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID449)章节中的描述,注意在写函数类型时不允许使用参数标签。 @@ -76,7 +77,7 @@ * 更新[泛型](https://docs.swift.org/swift-book/LanguageGuide/Generics.html)和[泛型形参和实参](https://docs.swift.org/swift-book/ReferenceManual/GenericParametersAndArguments.html)章节中[泛型 Where 语句](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID192)部分,现在泛型的 where 语句写在一个声明的最后。 * 更新[逃逸闭包](https://docs.swift.org/swift-book/LanguageGuide/Closures.html#ID546)一节,现在闭包默认为非逃逸的(noescaping)。 * 更新[基础部分](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html)一章中[可选绑定](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID333)部分和[语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html)一章中[While 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID432)部分,现在 if,`while` 和 `guard` 语句使用逗号分隔条件列表,不需要使用 `where` 语句。 -* 在[控制流](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html)一章的[Switch](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID129)和[语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html)一章的 [Switch 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID436) 部分中增加关于 switch cases 可以使用多模式的信息。 +* 在[控制流](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html)一章的[Switch](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID129)和[语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html)一章的[Switch 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID436)部分中增加关于 switch cases 可以使用多模式的信息。 * 更新[函数类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID449)一节,现在函数参数标签不包含在函数类型中。 * 更新[协议](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html)一章[协议组合](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID282)部分和[类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html)一章[协议组合类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID454)部分关于使用新的 Protocol1 & Protocol2 语法的信息。 * 更新动态类型表达式一节使用新的 `type(of:)` 表达式的信息。 @@ -122,25 +123,25 @@ * 更新了[字符串插值]和[字符串字面量]小节,现在字符串插值可包含字符串字面量。 * 增加了在[非逃逸闭包]一节中关于 `@noescape` 属性的相关内容。 * 更新了[声明特性]和[编译配置语句]小节中与 tvOS 相关的信息。 -* 增加了 [In-Out 参数]小节中与 in-out 参数行为相关的信息。 +* 增加了[In-Out 参数]小节中与 in-out 参数行为相关的信息。 * 增加了在[捕获列表]一节中关于指定闭包捕获列表被捕获时捕获值的相关内容。 * 更新了使用[可选链式调用访问属性]一节,阐明了如何通过可选链式调用进行赋值。 * 改进了[自动闭包]一节中对自闭包的讨论。 -* 在 [Swift 初见]()一节中更新了一个使用 `??` 操作符的例子。 +* 在[Swift 初见]()一节中更新了一个使用 `??` 操作符的例子。 ### 2015-09-16 -* 更新至 Swift 2.0 -* 在[错误处理](https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html)一章中增加了关于错误处理的相关内容,包括 [Do 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID533)、[Throw 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID518)、[Defer 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID532)以及 [try 运算符](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID516) +* 更新至 Swift 2.0。 +* 在[错误处理](https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html)一章中增加了关于错误处理的相关内容,包括[Do 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID533)、[Throw 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID518)、[Defer 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID532)以及[try 运算符](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID516)。 * 更新了[错误表示和抛出](https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html#ID509)一节,现在所有类型都可以遵循 `ErrorType` 协议了。 * 在[将错误装换成可选值](https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html#ID542)一节增加了 `try` 关键字相关信息。 * 在[枚举](https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html)一章的[递归枚举](https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html#ID536)部分以及以及[声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html)一章的[任意类型用例的枚举](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID365)一节中新增了递归枚举相关信息。 -* 在[控制流](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html)一章的 [API 可用性检查](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID523)一节和[语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html)一章的[可用性条件一节](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID522)中增加了关于 API 可用性检查相关的内容。 -* 在[控制流](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html)一章的 [尽早退出]()一节和[语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html)一章的 [Guard 语句]部分新增了与 `guard` 语句相关的内容。 +* 在[控制流](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html)一章的[API 可用性检查](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID523)一节和[语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html)一章的[可用性条件一节](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID522)中增加了关于 API 可用性检查相关的内容。 +* 在[控制流](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html)一章的[尽早退出]()一节和[语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html)一章的[Guard 语句]部分新增了与 `guard` 语句相关的内容。 * 在[协议](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html)一章中[协议扩展](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID521)一节中新增了关于协议扩展的内容。 * 在[访问控制](https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html)一章的[单元测试 target 的访问级别](https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html#ID519)一节中新增了关于单元测试访问控制相关的内容。 * 在[模式](https://docs.swift.org/swift-book/ReferenceManual/Patterns.html)一章的[可选模式](https://docs.swift.org/swift-book/ReferenceManual/Patterns.html#ID520)一节中增加了可选模式相关内容。 -* 更新了 [Repeat-While](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID126) 一节中关于 `repeat-while` 循环相关的内容。 +* 更新了[Repeat-While](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID126)一节中关于 `repeat-while` 循环相关的内容。 * 更新了[字符串和字符](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html)一章,现在 `String` 类型在 Swift 标准库中不再遵循 `CollectionType` 协议。 * 在[常量与变量打印](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID314)一节中增加了新 Swift 标准库中关于 `print(_:separator:terminator)` 相关内容。 * 在[枚举](https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html)一章中的[原始值的隐式赋值](https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html#ID535)一节和[声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html)一章的[包含原始值类型的枚举](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID366)一节中增加了关于包含 `String` 原始值的枚举用例的行为相关内容。 @@ -162,9 +163,9 @@ * 更新了[类型特性](https://docs.swift.org/swift-book/LanguageGuide/Properties.html#ID264)一节,提到了存储型特性其实是懒加载。 * 更新了[捕获类型](https://docs.swift.org/swift-book/LanguageGuide/Closures.html#ID103)一节,阐明了变量和常量在闭包中如何被捕获。 * 更新了[声明特性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)一节,用以描述何时在类中使用 `@objc` 关键字。 -* 在[错误处理](https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html#ID512)一节中增加了关于执行 `throw` 语句的性能的讨论。在 [Do 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID533)一节的 do 语句部分也增加了类似内容。 +* 在[错误处理](https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html#ID512)一节中增加了关于执行 `throw` 语句的性能的讨论。在[Do 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID533)一节的 do 语句部分也增加了类似内容。 * 更新了[类型特性](https://docs.swift.org/swift-book/LanguageGuide/Properties.html#ID264)一节中关于类、结构体和枚举的存储型和计算型特性相关的内容。 -* 更新了 [Break 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID441)一节中关于带标签的 break 语句相关内容。 +* 更新了[Break 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID441)一节中关于带标签的 break 语句相关内容。 * 在[属性观察器](https://docs.swift.org/swift-book/LanguageGuide/Properties.html#ID262)一节中更新了一处注释,用来明确 `willSet` 和 `didSet` 观察器的行为。 * 在[访问级别](https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html#ID5)一节中新增了关于 `private` 作用域的相关信息说明。 * 在[弱引用](https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html#ID53)一节中增加了关于弱应用在垃圾回收系统和 ARC 之间的区别的说明。 @@ -174,7 +175,7 @@ ### 2015-4-8 * 更新至 Swift 1.2。 -* Swift 现在自身提供了一个 `Set` 集合类型,更多信息请看 [Sets](https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html#ID484)。 +* Swift 现在自身提供了一个 `Set` 集合类型,更多信息请看[Sets](https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html#ID484)。 * `@autoclosure` 现在是一个参数声明的属性,而不是参数类型的属性。这里还有一个新的参数声明属性 `@noescape`。更多信息,请看[属性声明](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)。 * 对于类型属性和方法现在可以使用 `static` 关键字作为声明描述符,更多信息,请看[类型变量属性](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID483)。 * Swift 现在包含一个 `as?` 和 `as!` 的向下可失败类型转换运算符。更多信息,请看[协议遵循性检查](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID283)。 @@ -192,7 +193,7 @@ * 在构造器中,常量属性有且仅能被赋值一次。更多信息,请看[在构造过程中给常量属性赋值](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID212)。 * 多个可选绑定现在可以在`if`语句后面以逗号分隔的赋值列表的方式出现,更多信息,请看[可选绑定](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID333)。 * 一个[可选链表达式](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID405)必须出现在后缀表达式中。 -* 协议类型转换不再局限于 `@obj` 修饰的协议了 +* 协议类型转换不再局限于 `@obj` 修饰的协议了。 * 在运行时可能会失败的类型转换可以使用 `as?` 和 `as!` 运算符,而确保不会失败的类型转换现在使用 `as` 运算符。更多信息,请看[类型转换运算符](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID388)。 ### 2014-10-16 @@ -212,18 +213,18 @@ * [断言](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID335)现在可以使用字符串内插语法,并删除了文档中有冲突的注释。 * 更新了[连接字符串和字符](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html#ID291)小节来说明一个事实,那就是字符串和字符不能再用 `+` 号运算符或者复合加法运算符 `+=` 相互连接,这两种运算符现在只能用于字符串之间相连。请使用 `String` 类型的 `append` 方法在一个字符串的尾部增加单个字符。 * 在[属性申明](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)章节增加了关于 `availability` 特性的一些信息。 -* [可选类型](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID330) 若有值时,不再隐式的转换为 `true`,同样,若无值时,也不再隐式的转换为 `false`,这是为了避免在判别 optional `Bool` 的值时产生困惑。 替代的方案是,用`==` 或 `!=` 运算符显式地去判断 Optinal 是否是 `nil`,以确认其是否包含值。 -* Swift 新增了一个 [Nil 合并运算符](https://docs.swift.org/swift-book/LanguageGuide/BasicOperators.html#ID72) (`a ?? b`), 该表达式中,如果 Optional `a` 的值存在,则取得它并返回,若 Optional `a`为`nil`,则返回默认值 `b` +* [可选类型](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID330)若有值时,不再隐式的转换为 `true`,同样,若无值时,也不再隐式的转换为 `false`,这是为了避免在判别 optional `Bool` 的值时产生困惑。 替代的方案是,用`==` 或 `!=` 运算符显式地去判断 Optinal 是否是 `nil`,以确认其是否包含值。 +* Swift 新增了一个[Nil 合并运算符](https://docs.swift.org/swift-book/LanguageGuide/BasicOperators.html#ID72)(`a ?? b`), 该表达式中,如果 Optional `a` 的值存在,则取得它并返回,若 Optional `a`为`nil`,则返回默认值 `b` * 更新和扩展[字符串的比较](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html#ID298),用以反映和展示'字符串和字符的比较',以及'前缀(prefix)/后缀(postfix)比较'都开始基于扩展字符集(extended grapheme clusters)规范的等价比较。 * 现在,你可以通过下标赋值或者[可选调用链](https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html)中的可变方法和操作符来给属性设值。相应地更新了有关[通过可选链接访问属性](https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html#ID248)的信息,并扩展了[通过可选链接调用方法](https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html#ID249)时检查方法调用成功的示例,以显示如何检查属性设置是否成功。 * 在章节可选链中,增加一个新的小节[访问可选类型的下标脚注](https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html#ID251)。 * 更新章节[访问和修改数组](https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html#ID110)以标示:从该版本起,不能再通过 `+=` 运算符给一个数组添加一个新的项。对应的替代方案是,使 `append` 方法,或者通过 `+=` 运算符来添加一个只有一个项的数组。 -* 添加了一个提示:在[范围运算符](https://docs.swift.org/swift-book/LanguageGuide/BasicOperators.html#ID73)中,比如, `a...b` 和 `a..<b` ,起始值 `a` 不能大于结束值 `b` 。 -* 重写了[继承](https://docs.swift.org/swift-book/LanguageGuide/Inheritance.html)这一章:删除了本章中关于构造器重写的介绍性报道;转而将更多的注意力放到新增的部分——子类的新功能,以及如何通过重写(overrides)修改已有的功能。另外,[重写属性的 Getters 和 Setters](https://docs.swift.org/swift-book/LanguageGuide/Inheritance.html#ID200) 中的例子已经被替换为展示如何重写一个 `description` 属性。 (而关于如何在子类的构造器中修改继承属性的默认值的例子,已经被移到[构造过程](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html)这一章。) +* 添加了一个提示:在[范围运算符](https://docs.swift.org/swift-book/LanguageGuide/BasicOperators.html#ID73)中,比如, `a...b` 和 `a.. Date: Tue, 26 Mar 2019 15:10:57 +0800 Subject: [PATCH 044/107] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BC=BA=E5=A4=B1?= =?UTF-8?q?=E7=9A=84=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/chapter1/04_revision_history.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/chapter1/04_revision_history.md b/source/chapter1/04_revision_history.md index 6c9ccbbc..a0214bbb 100644 --- a/source/chapter1/04_revision_history.md +++ b/source/chapter1/04_revision_history.md @@ -127,7 +127,7 @@ * 增加了在[捕获列表]一节中关于指定闭包捕获列表被捕获时捕获值的相关内容。 * 更新了使用[可选链式调用访问属性]一节,阐明了如何通过可选链式调用进行赋值。 * 改进了[自动闭包]一节中对自闭包的讨论。 -* 在[Swift 初见]()一节中更新了一个使用 `??` 操作符的例子。 +* 在[Swift 初见](https://docs.swift.org/swift-book/GuidedTour/GuidedTour.html)一节中更新了一个使用 `??` 操作符的例子。 ### 2015-09-16 @@ -137,7 +137,7 @@ * 在[将错误装换成可选值](https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html#ID542)一节增加了 `try` 关键字相关信息。 * 在[枚举](https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html)一章的[递归枚举](https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html#ID536)部分以及以及[声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html)一章的[任意类型用例的枚举](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID365)一节中新增了递归枚举相关信息。 * 在[控制流](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html)一章的[API 可用性检查](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID523)一节和[语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html)一章的[可用性条件一节](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID522)中增加了关于 API 可用性检查相关的内容。 -* 在[控制流](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html)一章的[尽早退出]()一节和[语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html)一章的[Guard 语句]部分新增了与 `guard` 语句相关的内容。 +* 在[控制流](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html)一章的[尽早退出](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID525)一节和[语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html)一章的[Guard 语句]部分新增了与 `guard` 语句相关的内容。 * 在[协议](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html)一章中[协议扩展](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID521)一节中新增了关于协议扩展的内容。 * 在[访问控制](https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html)一章的[单元测试 target 的访问级别](https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html#ID519)一节中新增了关于单元测试访问控制相关的内容。 * 在[模式](https://docs.swift.org/swift-book/ReferenceManual/Patterns.html)一章的[可选模式](https://docs.swift.org/swift-book/ReferenceManual/Patterns.html#ID520)一节中增加了可选模式相关内容。 @@ -236,7 +236,7 @@ * 更新[字符串字面量](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html#ID286)章节:在一个字符串中,Unicode 标量(Unicode scalars)以 `\u{n}`的形式来表示,`n` 是一个最大可以有8位的16进制数。 * `NSString` `length` 属性已被映射到 Swift 的内建 `String`类型。(注意,这两属性的类型是`utf16Count`,而非 `utf16count`)。 * Swift 的内建 `String` 类型不再拥有 `uppercaseString` 和 `lowercaseString` 属性。其对应部分在章节[字符串和字符](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html)已经被删除,并且各种对应的代码用例也已被更新。 -* 加入新的章节[没有外部名的构造器参数]()https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID210。 +* 加入新的章节[没有外部名的构造器参数](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID210)。 * 加入新的章节[Required 构造器](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID231)。 * 加入新的章节[可选元组返回类型](https://docs.swift.org/swift-book/LanguageGuide/Functions.html#ID165)。 * 更新了[类型标注](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID312)章节:多个相关变量可以用"类型标注”在同一行中声明为同一类型。 From 55bd47a9b1609631b97a3f1756331a1fe7c635b8 Mon Sep 17 00:00:00 2001 From: Jax Wu Date: Tue, 26 Mar 2019 15:14:04 +0800 Subject: [PATCH 045/107] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=8E=9F=E6=9C=89?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=86=B2=E7=AA=81=E6=A0=87=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/chapter2/25_Access_Control.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/source/chapter2/25_Access_Control.md b/source/chapter2/25_Access_Control.md index 5254094d..35e887b2 100644 --- a/source/chapter2/25_Access_Control.md +++ b/source/chapter2/25_Access_Control.md @@ -207,11 +207,7 @@ public enum CompassPoint { ```swift public class A { -<<<<<<< HEAD - private func someMethod() {} -======= fileprivate func someMethod() {} ->>>>>>> /25_Access_Control 修正标点使用,更新代码 } internal class B: A { From b46d6e1337c14ca360bc97daf0028b3b01f41403 Mon Sep 17 00:00:00 2001 From: Jax Wu Date: Tue, 26 Mar 2019 20:14:08 +0800 Subject: [PATCH 046/107] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=B9=81=E4=BD=93?= =?UTF-8?q?=E7=AC=AC=E5=8D=81=E7=AB=A0=20Properties=20=E5=86=B2=E7=AA=81?= =?UTF-8?q?=20(#897)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source-tw/chapter2/10_Properties.md | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/source-tw/chapter2/10_Properties.md b/source-tw/chapter2/10_Properties.md index e9d83cd5..db6414f4 100644 --- a/source-tw/chapter2/10_Properties.md +++ b/source-tw/chapter2/10_Properties.md @@ -193,14 +193,9 @@ struct AlternativeRect { 只有 getter 沒有 setter 的計算屬性就是*只讀計算屬性*。只讀計算屬性總是返回一個值,可以通過點運算符訪問,但不能設置新的值。 -<<<<<<< HEAD -> 注意: -> 必須使用`var`關鍵字定義計算屬性,包括只讀計算屬性,因為他們的值不是固定的。`let`關鍵字只用來聲明常量屬性,表示初始化後再也無法修改的值。 -======= > 注意: > > 必須使用`var`關鍵字定義計算屬性,包括只讀計算屬性,因為它們的值不是固定的。`let`關鍵字只用來聲明常量屬性,表示初始化後再也無法修改的值。 ->>>>>>> a516af6a531a104ec88da0d236ecf389a5ec72af 只讀計算屬性的聲明可以去掉`get`關鍵字和花括號: @@ -237,14 +232,9 @@ println("the volume of fourByFiveByTwo is \(fourByFiveByTwo.volume)") 類似地,`didSet`觀察器會將舊的屬性值作為參數傳入,可以為該參數命名或者使用默認參數名`oldValue`。 -<<<<<<< HEAD -> 注意: -> `willSet`和`didSet`觀察器在屬性初始化過程中不會被調用,他們只會當屬性的值在初始化之外的地方被設置時被調用。 -======= > 注意: > > `willSet`和`didSet`觀察器在屬性初始化過程中不會被調用,它們只會當屬性的值在初始化之外的地方被設置時被調用。 ->>>>>>> a516af6a531a104ec88da0d236ecf389a5ec72af 這裡是一個`willSet`和`didSet`的實際例子,其中定義了一個名為`StepCounter`的類,用來統計當人步行時的總步數,可以跟計步器或其他日常鍛煉的統計裝置的輸入數據配合使用。 From 7b26ec50c3a76fa897769f07ced92d502436a0ed Mon Sep 17 00:00:00 2001 From: chenmingbiao Date: Tue, 26 Mar 2019 23:44:05 +0800 Subject: [PATCH 047/107] feature:Swift5-Enumerations --- source/chapter2/08_Enumerations.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/chapter2/08_Enumerations.md b/source/chapter2/08_Enumerations.md index 46887b43..0009b8c8 100755 --- a/source/chapter2/08_Enumerations.md +++ b/source/chapter2/08_Enumerations.md @@ -2,7 +2,7 @@ *枚举*为一组相关的值定义了一个共同的类型,使你可以在你的代码中以类型安全的方式来使用这些值。 -如果你熟悉 C 语言,你会知道在 C 语言中,枚举会为一组整型值分配相关联的名称。Swift 中的枚举更加灵活,不必给每一个枚举成员提供一个值。如果给枚举成员提供一个值(称为“原始”值),则该值的类型可以是字符串、字符,或是一个整型值或浮点数。 +如果你熟悉 C 语言,你会知道在 C 语言中,枚举会为一组整型值分配相关联的名称。Swift 中的枚举更加灵活,不必给每一个枚举成员提供一个值。如果给枚举成员提供一个值(称为原始值),则该值的类型可以是字符串、字符,或是一个整型值或浮点数。 此外,枚举成员可以指定*任意*类型的关联值存储到枚举成员中,就像其他语言中的联合体(unions)和变体(variants)。你可以在一个枚举中定义一组相关的枚举成员,每一个枚举成员都可以有适当类型的关联值。 @@ -46,7 +46,7 @@ enum Planet { } ``` -每个枚举定义了一个全新的类型。像 Swift 中其他类型一样,它们的名字(例如 `CompassPoint` 和 `Planet`)应该以一个大写字母开头。给枚举类型起一个单数名字而不是复数名字,以便于: +每个枚举定义了一个全新的类型。像 Swift 中其他类型一样,它们的名字(例如 `CompassPoint` 和 `Planet`)以一个大写字母开头。给枚举类型起一个单数名字而不是复数名字,以便于: ```swift var directionToHead = CompassPoint.west @@ -133,11 +133,11 @@ for beverage in Beverage.allCases { ## 关联值 -枚举语法那一小节的例子演示了如何定义和分类枚举的成员。你可以为 `Planet.earth` 设置一个常量或者变量,并在赋值之后查看这个值。然而,有时候能够把其他类型的*关联值*和成员值一起存储起来会很有用。这能让你连同成员值一起存储额外的自定义信息,并且你每次在代码中使用该枚举成员时,还可以修改这个关联值。 +枚举语法那一小节的例子演示了如何定义和分类枚举的成员。你可以为 `Planet.earth` 设置一个常量或者变量,并在赋值之后查看这个值。然而,有时候把其他类型的值和成员值一起存储起来会很有用。这额外的信息称为*关联值*,并且你每次在代码中使用该枚举成员时,还可以修改这个关联值。 你可以定义 Swift 枚举来存储任意类型的关联值,如果需要的话,每个枚举成员的关联值类型可以各不相同。枚举的这种特性跟其他语言中的可识别联合(discriminated unions),标签联合(tagged unions),或者变体(variants)相似。 -例如,假设一个库存跟踪系统需要利用两种不同类型的条形码来跟踪商品。有些商品上标有使用 `0` 到 `9` 的数字的 UPC 格式的一维条形码。每一个条形码都有一个代表“数字系统”的数字,该数字后接五位代表“厂商代码”的数字,接下来是五位代表“产品代码”的数字。最后一个数字是“检查”位,用来验证代码是否被正确扫描: +例如,假设一个库存跟踪系统需要利用两种不同类型的条形码来跟踪商品。有些商品上标有使用 `0` 到 `9` 的数字的 UPC 格式的一维条形码。每一个条形码都有一个代表数字系统的数字,该数字后接五位代表厂商代码的数字,接下来是五位代表“产品代码”的数字。最后一个数字是检查位,用来验证代码是否被正确扫描: @@ -162,7 +162,7 @@ enum Barcode { 这个定义不提供任何 `Int` 或 `String` 类型的关联值,它只是定义了,当 `Barcode` 常量和变量等于 `Barcode.upc` 或 `Barcode.qrCode` 时,可以存储的关联值的类型。 -然后可以使用任意一种条形码类型创建新的条形码,例如: +然后你可以使用任意一种条形码类型创建新的条形码,例如: ```swift var productBarcode = Barcode.upc(8, 85909, 51226, 3) @@ -178,7 +178,7 @@ productBarcode = .qrCode("ABCDEFGHIJKLMNOP") 这时,原始的 `Barcode.upc` 和其整数关联值被新的 `Barcode.qrCode` 和其字符串关联值所替代。`Barcode` 类型的常量和变量可以存储一个 `.upc` 或者一个 `.qrCode`(连同它们的关联值),但是在同一时间只能存储这两个值中的一个。 -像先前那样,可以使用一个 switch 语句来检查不同的条形码类型。然而,这一次,关联值可以被提取出来作为 switch 语句的一部分。你可以在 `switch` 的 case 分支代码中提取每个关联值作为一个常量(用 `let` 前缀)或者作为一个变量(用 `var` 前缀)来使用: +你可以使用一个 switch 语句来检查不同的条形码类型,和之前使用 Switch 语句来匹配枚举值的例子一样。然而,这一次,关联值可以被提取出来作为 switch 语句的一部分。你可以在 `switch` 的 case 分支代码中提取每个关联值作为一个常量(用 `let` 前缀)或者作为一个变量(用 `var` 前缀)来使用: ```swift switch productBarcode { From c27d3a44cd450d9b3454c08d8070eac7aced5666 Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Tue, 26 Mar 2019 19:49:34 -0500 Subject: [PATCH 048/107] Create .gitbook.yaml --- .gitbook.yaml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .gitbook.yaml diff --git a/.gitbook.yaml b/.gitbook.yaml new file mode 100644 index 00000000..b80eacb1 --- /dev/null +++ b/.gitbook.yaml @@ -0,0 +1,5 @@ +root: ./source/ + +structure: + readme: README.md + summary: SUMMARY.md From adc4897eff20327ccf1a0d31ca30892e891cef44 Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Tue, 26 Mar 2019 19:50:23 -0500 Subject: [PATCH 049/107] Update .gitbook.yaml --- .gitbook.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitbook.yaml b/.gitbook.yaml index b80eacb1..a3572a77 100644 --- a/.gitbook.yaml +++ b/.gitbook.yaml @@ -1,5 +1,5 @@ root: ./source/ structure: - readme: README.md + readme: ../README.md summary: SUMMARY.md From 7eb0b94d85d70ead1c7d856c0cc7b91a3942cec2 Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Tue, 26 Mar 2019 22:08:00 -0500 Subject: [PATCH 050/107] fix relative links --- source/SUMMARY.md | 2 +- source/chapter2/01_The_Basics.md | 30 +++++++++---------- source/chapter2/02_Basic_Operators.md | 14 ++++----- source/chapter2/03_Strings_and_Characters.md | 6 ++-- source/chapter2/04_Collection_Types.md | 10 +++---- source/chapter2/05_Control_Flow.md | 6 ++-- source/chapter2/07_Closures.md | 6 ++-- source/chapter2/08_Enumerations.md | 8 ++--- source/chapter2/09_Structures_And_Classes.md | 10 +++---- source/chapter2/10_Properties.md | 6 ++-- source/chapter2/11_Methods.md | 4 +-- source/chapter2/12_Subscripts.md | 4 +-- source/chapter2/14_Initialization.md | 8 ++--- source/chapter2/15_Deinitialization.md | 2 +- source/chapter2/16_Optional_Chaining.md | 2 +- source/chapter2/18_Type_Casting.md | 2 +- source/chapter2/19_Nested_Types.md | 2 +- source/chapter2/21_Protocols.md | 28 ++++++++--------- source/chapter2/22_Generics.md | 8 ++--- .../23_Automatic_Reference_Counting.md | 6 ++-- source/chapter2/25_Access_Control.md | 4 +-- source/chapter3/02_Lexical_Structure.md | 2 +- source/chapter3/04_Expressions.md | 2 +- 23 files changed, 86 insertions(+), 86 deletions(-) diff --git a/source/SUMMARY.md b/source/SUMMARY.md index 0e760d2a..c218a9e3 100755 --- a/source/SUMMARY.md +++ b/source/SUMMARY.md @@ -14,7 +14,7 @@ * [函数](chapter2/06_Functions.md) * [闭包](chapter2/07_Closures.md) * [枚举](chapter2/08_Enumerations.md) - * [类和结构体](chapter2/09_Classes_and_Structures.md) + * [类和结构体](chapter2/09_Structures_And_Classes.md) * [属性](chapter2/10_Properties.md) * [方法](chapter2/11_Methods.md) * [下标](chapter2/12_Subscripts.md) diff --git a/source/chapter2/01_The_Basics.md b/source/chapter2/01_The_Basics.md index 8dd5980b..9e28e84c 100755 --- a/source/chapter2/01_The_Basics.md +++ b/source/chapter2/01_The_Basics.md @@ -3,7 +3,7 @@ Swift 是一门开发 iOS, macOS, watchOS 和 tvOS 应用的新语言。然而,如果你有 C 或者 Objective-C 开发经验的话,你会发现 Swift 的很多内容都是你熟悉的。 -Swift 包含了 C 和 Objective-C 上所有基础数据类型,`Int` 表示整型值; `Double` 和 `Float` 表示浮点型值; `Bool` 是布尔型值;`String` 是文本型数据。 Swift 还提供了三个基本的集合类型,`Array`、`Set` 和 `Dictionary` ,详见[集合类型](./04_Collection_Types.html)。 +Swift 包含了 C 和 Objective-C 上所有基础数据类型,`Int` 表示整型值; `Double` 和 `Float` 表示浮点型值; `Bool` 是布尔型值;`String` 是文本型数据。 Swift 还提供了三个基本的集合类型,`Array`、`Set` 和 `Dictionary` ,详见[集合类型](./04_Collection_Types.md)。 就像 C 语言一样,Swift 使用变量来进行存储并通过变量名来关联值。在 Swift 中,广泛的使用着值不可变的变量,它们就是常量,而且比 C 语言的常量更强大。在 Swift 中,如果你要处理的值不需要改变,那使用常量可以让你的代码更加安全并且更清晰地表达你的意图。 @@ -122,7 +122,7 @@ print(friendlyWelcome) // 输出“Bonjour!” ``` -`print(_:separator:terminator:)` 是一个用来输出一个或多个值到适当输出区的全局函数。如果你用 Xcode,`print(_:separator:terminator:)` 将会输出内容到“console”面板上。`separator` 和 `terminator` 参数具有默认值,因此你调用这个函数的时候可以忽略它们。默认情况下,该函数通过添加换行符来结束当前行。如果不想换行,可以传递一个空字符串给 `terminator` 参数--例如,`print(someValue, terminator:"")` 。关于参数默认值的更多信息,请参考[默认参数值](./06_Functions.html#default_parameter_values)。 +`print(_:separator:terminator:)` 是一个用来输出一个或多个值到适当输出区的全局函数。如果你用 Xcode,`print(_:separator:terminator:)` 将会输出内容到“console”面板上。`separator` 和 `terminator` 参数具有默认值,因此你调用这个函数的时候可以忽略它们。默认情况下,该函数通过添加换行符来结束当前行。如果不想换行,可以传递一个空字符串给 `terminator` 参数--例如,`print(someValue, terminator:"")` 。关于参数默认值的更多信息,请参考[默认参数值](./06_Functions.md#default_parameter_values)。 Swift 用*字符串插值(string interpolation)*的方式把常量名或者变量名当做占位符加入到长字符串中,Swift 会用当前常量或变量的值替换这些占位符。将常量或变量名放入圆括号中,并在开括号前使用反斜杠将其转义: @@ -133,7 +133,7 @@ print("The current value of friendlyWelcome is \(friendlyWelcome)") > 注意 > -> 字符串插值所有可用的选项,请参考[字符串插值](./03_Strings_and_Characters.html#string_interpolation)。 +> 字符串插值所有可用的选项,请参考[字符串插值](./03_Strings_and_Characters.md#string_interpolation)。 ## 注释 @@ -344,7 +344,7 @@ let twoThousandAndOne = twoThousand + UInt16(one) 现在两个数字的类型都是 `UInt16`,可以进行相加。目标常量 `twoThousandAndOne` 的类型被推断为 `UInt16`,因为它是两个 `UInt16` 值的和。 -`SomeType(ofInitialValue)` 是调用 Swift 构造器并传入一个初始值的默认方法。在语言内部,`UInt16` 有一个构造器,可以接受一个 `UInt8` 类型的值,所以这个构造器可以用现有的 `UInt8` 来创建一个新的 `UInt16`。注意,你并不能传入任意类型的值,只能传入 `UInt16` 内部有对应构造器的值。不过你可以扩展现有的类型来让它可以接收其他类型的值(包括自定义类型),请参考[扩展](./20_Extensions.html)。 +`SomeType(ofInitialValue)` 是调用 Swift 构造器并传入一个初始值的默认方法。在语言内部,`UInt16` 有一个构造器,可以接受一个 `UInt8` 类型的值,所以这个构造器可以用现有的 `UInt8` 来创建一个新的 `UInt16`。注意,你并不能传入任意类型的值,只能传入 `UInt16` 内部有对应构造器的值。不过你可以扩展现有的类型来让它可以接收其他类型的值(包括自定义类型),请参考[扩展](./20_Extensions.md)。 ### 整数和浮点数转换 @@ -416,7 +416,7 @@ if turnipsAreDelicious { // 输出“Eww, turnips are horrible.” ``` -条件语句,例如 `if`,请参考[控制流](./05_Control_Flow.html)。 +条件语句,例如 `if`,请参考[控制流](./05_Control_Flow.md)。 如果你在需要使用 `Bool` 类型的地方使用了非布尔值,Swift 的类型安全机制会报错。下面的例子会报告一个编译时错误: @@ -436,7 +436,7 @@ if i == 1 { } ``` -`i == 1` 的比较结果是 `Bool` 类型,所以第二个例子可以通过类型检查。类似 `i == 1` 这样的比较,请参考[基本操作符](./05_Control_Flow.html)。 +`i == 1` 的比较结果是 `Bool` 类型,所以第二个例子可以通过类型检查。类似 `i == 1` 这样的比较,请参考[基本操作符](./05_Control_Flow.md)。 和 Swift 中的其他类型安全的例子一样,这个方法可以避免错误并保证这块代码的意图总是清晰的。 @@ -498,11 +498,11 @@ print("The status message is \(http200Status.description)") // 输出“The status message is OK” ``` -作为函数返回值时,元组非常有用。一个用来获取网页的函数可能会返回一个 `(Int, String)` 元组来描述是否获取成功。和只能返回一个类型的值比较起来,一个包含两个不同类型值的元组可以让函数的返回信息更有用。请参考[函数参数与返回值](./06_Functions.html#Function_Parameters_and_Return_Values)。 +作为函数返回值时,元组非常有用。一个用来获取网页的函数可能会返回一个 `(Int, String)` 元组来描述是否获取成功。和只能返回一个类型的值比较起来,一个包含两个不同类型值的元组可以让函数的返回信息更有用。请参考[函数参数与返回值](./06_Functions.md#Function_Parameters_and_Return_Values)。 > 注意 > -> 元组在临时组织值的时候很有用,但是并不适合创建复杂的数据结构。如果你的数据结构并不是临时使用,请使用类或者结构体而不是元组。请参考[类和结构体](./09_Classes_and_Structures.html)。 +> 元组在临时组织值的时候很有用,但是并不适合创建复杂的数据结构。如果你的数据结构并不是临时使用,请使用类或者结构体而不是元组。请参考[类和结构体](./09_Classes_and_Structures.md)。 ## 可选类型 @@ -576,7 +576,7 @@ if convertedNumber != nil { // 输出“convertedNumber has an integer value of 123.” ``` -更多关于 `if` 语句的内容,请参考[控制流](./05_Control_Flow.html)。 +更多关于 `if` 语句的内容,请参考[控制流](./05_Control_Flow.md)。 > 注意 > @@ -585,7 +585,7 @@ if convertedNumber != nil { ### 可选绑定 -使用*可选绑定(optional binding)*来判断可选类型是否包含值,如果包含就把值赋给一个临时常量或者变量。可选绑定可以用在 `if` 和 `while` 语句中,这条语句不仅可以用来判断可选类型中是否有值,同时可以将可选类型中的值赋给一个常量或者变量。`if` 和 `while` 语句,请参考[控制流](./05_Control_Flow.html)。 +使用*可选绑定(optional binding)*来判断可选类型是否包含值,如果包含就把值赋给一个临时常量或者变量。可选绑定可以用在 `if` 和 `while` 语句中,这条语句不仅可以用来判断可选类型中是否有值,同时可以将可选类型中的值赋给一个常量或者变量。`if` 和 `while` 语句,请参考[控制流](./05_Control_Flow.md)。 像下面这样在 `if` 语句中写一个可选绑定: @@ -595,7 +595,7 @@ if let constantName = someOptional { } ``` -你可以像上面这样使用可选绑定来重写 在[可选类型](./01_The_Basics.html#optionals)举出的 `possibleNumber` 例子: +你可以像上面这样使用可选绑定来重写 在[可选类型](./01_The_Basics.md#optionals)举出的 `possibleNumber` 例子: ```swift if let actualNumber = Int(possibleNumber) { @@ -634,7 +634,7 @@ if let firstNumber = Int("4") { > 注意 > -> 在 `if` 条件语句中使用常量和变量来创建一个可选绑定,仅在 `if` 语句的句中(`body`)中才能获取到值。相反,在 `guard` 语句中使用常量和变量来创建一个可选绑定,仅在 `guard` 语句外且在语句后才能获取到值,请参考[提前退出](./05_Control_Flow.html#early_exit)。 +> 在 `if` 条件语句中使用常量和变量来创建一个可选绑定,仅在 `if` 语句的句中(`body`)中才能获取到值。相反,在 `guard` 语句中使用常量和变量来创建一个可选绑定,仅在 `guard` 语句外且在语句后才能获取到值,请参考[提前退出](./05_Control_Flow.md#early_exit)。 ### 隐式解析可选类型 @@ -645,7 +645,7 @@ if let firstNumber = Int("4") { 这种类型的可选状态被定义为隐式解析可选类型(implicitly unwrapped optionals)。把想要用作可选的类型的后面的问号(`String?`)改成感叹号(`String!`)来声明一个隐式解析可选类型。 -当可选类型被第一次赋值之后就可以确定之后一直有值的时候,隐式解析可选类型非常有用。隐式解析可选类型主要被用在 Swift 中类的构造过程中,请参考[无主引用以及隐式解析可选属性](./23_Automatic_Reference_Counting.html#unowned_references_and_implicitly_unwrapped_optional_properties)。 +当可选类型被第一次赋值之后就可以确定之后一直有值的时候,隐式解析可选类型非常有用。隐式解析可选类型主要被用在 Swift 中类的构造过程中,请参考[无主引用以及隐式解析可选属性](./23_Automatic_Reference_Counting.md#unowned_references_and_implicitly_unwrapped_optional_properties)。 一个隐式解析可选类型其实就是一个普通的可选类型,但是可以被当做非可选类型来使用,并不需要每次都使用解析来获取可选值。下面的例子展示了可选类型 `String` 和隐式解析可选类型 `String` 之间的区别: @@ -734,7 +734,7 @@ do { 如果没有错误被抛出,`eatASandwich()` 函数会被调用。如果一个匹配 `SandwichError.outOfCleanDishes` 的错误被抛出,`washDishes()` 函数会被调用。如果一个匹配 `SandwichError.missingIngredients` 的错误被抛出,`buyGroceries(_:)` 函数会被调用,并且使用 `catch` 所捕捉到的关联值 `[String]` 作为参数。 -抛出,捕捉,以及传播错误会在[错误处理](./17_Error_Handling.html)章节详细说明。 +抛出,捕捉,以及传播错误会在[错误处理](./17_Error_Handling.md)章节详细说明。 ## 断言和先决条件 @@ -743,7 +743,7 @@ do { 你使用断言和先决条件来表达你所做的假设和你在编码时候的期望。你可以将这些包含在你的代码中。断言帮助你在开发阶段找到错误和不正确的假设,先决条件帮助你在生产环境中探测到存在的问题。 -除了在运行时验证你的期望值,断言和先决条件也变成了一个在你的代码中的有用的文档形式。和在上面讨论过的[错误处理](./17_Error_Handling.html)不同,断言和先决条件并不是用来处理可以恢复的或者可预期的错误。因为一个断言失败表明了程序正处于一个无效的状态,没有办法去捕获一个失败的断言。 +除了在运行时验证你的期望值,断言和先决条件也变成了一个在你的代码中的有用的文档形式。和在上面讨论过的[错误处理](./17_Error_Handling.md)不同,断言和先决条件并不是用来处理可以恢复的或者可预期的错误。因为一个断言失败表明了程序正处于一个无效的状态,没有办法去捕获一个失败的断言。 使用断言和先决条件不是一个能够避免出现程序出现无效状态的编码方法。然而,如果一个无效状态程序产生了,断言和先决条件可以强制检查你的数据和程序状态,使得你的程序可预测的中止(译者:不是系统强制的,被动的中止),并帮助使这个问题更容易调试。一旦探测到无效的状态,执行则被中止,防止无效的状态导致的进一步对于系统的伤害。 diff --git a/source/chapter2/02_Basic_Operators.md b/source/chapter2/02_Basic_Operators.md index 4fc80d13..5fe0ac2d 100755 --- a/source/chapter2/02_Basic_Operators.md +++ b/source/chapter2/02_Basic_Operators.md @@ -2,11 +2,11 @@ *运算符*是检查、改变、合并值的特殊符号或短语。例如,加号(`+`)将两个数相加(如 `let i = 1 + 2`)。更复杂的运算例子包括逻辑与运算符 `&&`(如 `if enteredDoorCode && passedRetinaScan`)。 -Swift 支持大部分标准 C 语言的运算符,且为了减少常见编码错误做了部分改进。如:赋值符(`=`)不再有返回值,这样就消除了手误将判等运算符(`==`)写成赋值符导致代码错误的缺陷。算术运算符(`+`,`-`,`*`,`/`,`%` 等)的结果会被检测并禁止值溢出,以此来避免保存变量时由于变量大于或小于其类型所能承载的范围时导致的异常结果。当然允许你使用 Swift 的溢出运算符来实现溢出。详情参见[溢出运算符](./26_Advanced_Operators.html#overflow_operators)。 +Swift 支持大部分标准 C 语言的运算符,且为了减少常见编码错误做了部分改进。如:赋值符(`=`)不再有返回值,这样就消除了手误将判等运算符(`==`)写成赋值符导致代码错误的缺陷。算术运算符(`+`,`-`,`*`,`/`,`%` 等)的结果会被检测并禁止值溢出,以此来避免保存变量时由于变量大于或小于其类型所能承载的范围时导致的异常结果。当然允许你使用 Swift 的溢出运算符来实现溢出。详情参见[溢出运算符](./26_Advanced_Operators.md#overflow_operators)。 Swift 还提供了 C 语言没有的区间运算符,例如 `a.. ## 术语 @@ -65,7 +65,7 @@ Swift 中所有数值类型都支持了基本的四则*算术运算符*: 10.0 / 2.5 // 等于 4.0 ``` -与 C 语言和 Objective-C 不同的是,Swift 默认情况下不允许在数值运算中出现溢出情况。但是你可以使用 Swift 的溢出运算符来实现溢出运算(如 `a &+ b`)。详情参见[溢出运算符](./26_Advanced_Operators.html#overflow_operators)。 +与 C 语言和 Objective-C 不同的是,Swift 默认情况下不允许在数值运算中出现溢出情况。但是你可以使用 Swift 的溢出运算符来实现溢出运算(如 `a &+ b`)。详情参见[溢出运算符](./26_Advanced_Operators.md#overflow_operators)。 加法运算符也可用于 `String` 的拼接: @@ -176,7 +176,7 @@ a += 2 > 注意 > -> Swift 也提供恒等(`===`)和不恒等(`!==`)这两个比较符来判断两个对象是否引用同一个对象实例。更多细节在[类与结构](./09_Classes_and_Structures.html)章节的 **Identity Operators** 部分。 +> Swift 也提供恒等(`===`)和不恒等(`!==`)这两个比较符来判断两个对象是否引用同一个对象实例。更多细节在[类与结构](./09_Classes_and_Structures.md)章节的 **Identity Operators** 部分。 每个比较运算都返回了一个标识表达式是否成立的布尔值: @@ -201,7 +201,7 @@ if name == "world" { // 输出“hello, world", 因为 `name` 就是等于 "world” ``` -关于 `if` 语句,请看[控制流](./05_Control_Flow.html)。 +关于 `if` 语句,请看[控制流](./05_Control_Flow.md)。 如果两个元组的元素相同,且长度相同的话,元组就可以被比较。比较元组大小会按照从左到右、逐值比较的方式,直到发现有两个值不等时停止。如果所有的值都相等,那么这一对元组我们就称它们是相等的。例如: @@ -327,7 +327,7 @@ for index in 1...5 { // 5 * 5 = 25 ``` -关于 `for-in` 循环,请看[控制流](./05_Control_Flow.html)。 +关于 `for-in` 循环,请看[控制流](./05_Control_Flow.md)。 ### 半开区间运算符 @@ -349,7 +349,7 @@ for i in 0.. ### 单侧区间 diff --git a/source/chapter2/03_Strings_and_Characters.md b/source/chapter2/03_Strings_and_Characters.md index 01dff2d7..a03e1d46 100755 --- a/source/chapter2/03_Strings_and_Characters.md +++ b/source/chapter2/03_Strings_and_Characters.md @@ -149,7 +149,7 @@ constantString += " and another Highlander" ## 字符串是值类型 -在 Swift 中 `String` 类型是*值类型*。如果你创建了一个新的字符串,那么当其进行常量、变量赋值操作,或在函数/方法中传递时,会进行值拷贝。在前述任一情况下,都会对已有字符串值创建新副本,并对该新副本而非原始字符串进行传递或赋值操作。值类型在 [结构体和枚举是值类型](./09_Classes_and_Structures.html#structures_and_enumerations_are_value_types) 中进行了详细描述。 +在 Swift 中 `String` 类型是*值类型*。如果你创建了一个新的字符串,那么当其进行常量、变量赋值操作,或在函数/方法中传递时,会进行值拷贝。在前述任一情况下,都会对已有字符串值创建新副本,并对该新副本而非原始字符串进行传递或赋值操作。值类型在 [结构体和枚举是值类型](./09_Classes_and_Structures.md#structures_and_enumerations_are_value_types) 中进行了详细描述。 Swift 默认拷贝字符串的行为保证了在函数/方法向你传递的字符串所属权属于你,无论该值来自于哪里。你可以确信传递的字符串不会被修改,除非你自己去修改它。 @@ -171,7 +171,7 @@ for character in "Dog!🐶" { // 🐶 ``` -`for-in` 循环在 [For 循环](./05_Control_Flow.html#for_loops) 中进行了详细描述。 +`for-in` 循环在 [For 循环](./05_Control_Flow.md#for_loops) 中进行了详细描述。 另外,通过标明一个 `Character` 类型并用字符字面量进行赋值,可以建立一个独立的字符常量或变量: @@ -463,7 +463,7 @@ Swift 提供了三种方式来比较文本值:字符串字符相等、前缀 ### 字符串/字符相等 -字符串/字符可以用等于操作符(`==`)和不等于操作符(`!=`),详细描述在[比较运算符](./02_Basic_Operators.html#comparison_operators): +字符串/字符可以用等于操作符(`==`)和不等于操作符(`!=`),详细描述在[比较运算符](./02_Basic_Operators.md#comparison_operators): ```swift let quotation = "We're a lot alike, you and I." diff --git a/source/chapter2/04_Collection_Types.md b/source/chapter2/04_Collection_Types.md index e7fa4698..dac39962 100755 --- a/source/chapter2/04_Collection_Types.md +++ b/source/chapter2/04_Collection_Types.md @@ -8,7 +8,7 @@ Swift 语言中的 `Arrays`、`Sets` 和 `Dictionaries` 中存储的数据值类 > 注意 > -> Swift 的 `Arrays`、`Sets` 和 `Dictionaries` 类型被实现为*泛型集合*。更多关于泛型类型和集合,参见 [泛型](./23_Generics.html)章节。 +> Swift 的 `Arrays`、`Sets` 和 `Dictionaries` 类型被实现为*泛型集合*。更多关于泛型类型和集合,参见 [泛型](./23_Generics.md)章节。 ## 集合的可变性 @@ -261,7 +261,7 @@ for (index, value) in shoppingList.enumerated() { 一个类型为了存储在集合中,该类型必须是*可哈希化*的——也就是说,该类型必须提供一个方法来计算它的*哈希值*。一个哈希值是 `Int` 类型的,相等的对象哈希值必须相同,比如 `a==b`,因此必须 `a.hashValue == b.hashValue`。 -Swift 的所有基本类型(比如 `String`、`Int`、`Double` 和 `Bool`)默认都是可哈希化的,可以作为集合的值的类型或者字典的键的类型。没有关联值的枚举成员值(在[枚举](./08_Enumerations.html)有讲述)默认也是可哈希化的。 +Swift 的所有基本类型(比如 `String`、`Int`、`Double` 和 `Bool`)默认都是可哈希化的,可以作为集合的值的类型或者字典的键的类型。没有关联值的枚举成员值(在[枚举](./08_Enumerations.md)有讲述)默认也是可哈希化的。 > 注意 > @@ -273,7 +273,7 @@ Swift 的所有基本类型(比如 `String`、`Int`、`Double` 和 `Bool`) > * `a == b` 意味着 `b == a`(对称性) > * `a == b && b == c` 意味着 `a == c`(传递性) -关于遵循协议的更多信息,请看[协议](./22_Protocols.html)。 +关于遵循协议的更多信息,请看[协议](./22_Protocols.md)。 ### 集合类型语法 @@ -396,7 +396,7 @@ for genre in favoriteGenres { // Hip hop ``` -更多关于 `for-in` 循环的信息,参见[For 循环](./05_Control_Flow.html#for_loops)。 +更多关于 `for-in` 循环的信息,参见[For 循环](./05_Control_Flow.md#for_loops)。 Swift 的 `Set` 类型没有确定的顺序,为了按照特定顺序来遍历一个 `Set` 中的值可以使用 `sorted()` 方法,它将返回一个有序数组,这个数组的元素排列顺序由操作符'<'对元素进行比较的结果来确定。 @@ -640,7 +640,7 @@ for (airportCode, airportName) in airports { // LHR: London Heathrow ``` -更多关于 `for-in` 循环的信息,参见[For 循环](./05_Control_Flow.html#for_loops)。 +更多关于 `for-in` 循环的信息,参见[For 循环](./05_Control_Flow.md#for_loops)。 通过访问 `keys` 或者 `values` 属性,我们也可以遍历字典的键或者值: diff --git a/source/chapter2/05_Control_Flow.md b/source/chapter2/05_Control_Flow.md index 7c6f4ef7..7c9fea73 100755 --- a/source/chapter2/05_Control_Flow.md +++ b/source/chapter2/05_Control_Flow.md @@ -36,7 +36,7 @@ for (animalName, legCount) in numberOfLegs { // cats have 4 legs ``` -字典的内容理论上是无序的,遍历元素时的顺序是无法确定的。将元素插入字典的顺序并不会决定它们被遍历的顺序。关于数组和字典的细节,参见[集合类型](./04_Collection_Types.html)。 +字典的内容理论上是无序的,遍历元素时的顺序是无法确定的。将元素插入字典的顺序并不会决定它们被遍历的顺序。关于数组和字典的细节,参见[集合类型](./04_Collection_Types.md)。 `for-in` 循环还可以使用数字范围。下面的例子用来输出乘法表的一部分内容: @@ -70,7 +70,7 @@ print("\(base) to the power of \(power) is \(answer)") 这个例子计算 base 这个数的 power 次幂(本例中,是 `3` 的 `10` 次幂),从 `1`(`3` 的 `0` 次幂)开始做 `3` 的乘法, 进行 `10` 次,使用 `1` 到 `10` 的闭区间循环。这个计算并不需要知道每一次循环中计数器具体的值,只需要执行了正确的循环次数即可。下划线符号 `_` (替代循环中的变量)能够忽略当前值,并且不提供循环遍历时对值的访问。 -在某些情况下,你可能不想使用包括两个端点的闭区间。想象一下,你在一个手表上绘制分钟的刻度线。总共 `60` 个刻度,从 `0` 分开始。使用半开区间运算符(`..<`)来表示一个左闭右开的区间。有关区间的更多信息,请参阅[区间运算符](./02_Basic_Operators.html#range_operators)。 +在某些情况下,你可能不想使用包括两个端点的闭区间。想象一下,你在一个手表上绘制分钟的刻度线。总共 `60` 个刻度,从 `0` 分开始。使用半开区间运算符(`..<`)来表示一个左闭右开的区间。有关区间的更多信息,请参阅[区间运算符](./02_Basic_Operators.md#range_operators)。 ```swift let minutes = 60 @@ -541,7 +541,7 @@ default: - `return` - `throw` -我们将会在下面讨论 `continue`、`break` 和 `fallthrough` 语句。`return` 语句将会在[函数](./06_Functions.html)章节讨论,`throw` 语句会在[错误抛出](./18_Error_Handling.html#throwing_errors)章节讨论。 +我们将会在下面讨论 `continue`、`break` 和 `fallthrough` 语句。`return` 语句将会在[函数](./06_Functions.md)章节讨论,`throw` 语句会在[错误抛出](./18_Error_Handling.md#throwing_errors)章节讨论。 ### Continue diff --git a/source/chapter2/07_Closures.md b/source/chapter2/07_Closures.md index 92026e1b..31486436 100755 --- a/source/chapter2/07_Closures.md +++ b/source/chapter2/07_Closures.md @@ -137,7 +137,7 @@ reversedNames = names.sorted(by: { $0 > $1 } ) reversedNames = names.sorted(by: >) ``` -更多关于运算符方法的内容请查看[运算符方法](./26_Advanced_Operators.html#operator_methods)。 +更多关于运算符方法的内容请查看[运算符方法](./26_Advanced_Operators.md#operator_methods)。 ## 尾随闭包 @@ -243,7 +243,7 @@ func makeIncrementer(forIncrement amount: Int) -> () -> Int { } ``` -`makeIncrementer` 返回类型为 `() -> Int`。这意味着其返回的是一个*函数*,而非一个简单类型的值。该函数在每次调用时不接受参数,只返回一个 `Int` 类型的值。关于函数返回其他函数的内容,请查看[函数类型作为返回类型](./06_Functions.html#function_types_as_return_types)。 +`makeIncrementer` 返回类型为 `() -> Int`。这意味着其返回的是一个*函数*,而非一个简单类型的值。该函数在每次调用时不接受参数,只返回一个 `Int` 类型的值。关于函数返回其他函数的内容,请查看[函数类型作为返回类型](./06_Functions.md#function_types_as_return_types)。 `makeIncrementer(forIncrement:)` 函数定义了一个初始值为 `0` 的整型变量 `runningTotal`,用来存储当前总计数值。该值为 `incrementer` 的返回值。 @@ -300,7 +300,7 @@ incrementByTen() > 注意 > -> 如果你将闭包赋值给一个类实例的属性,并且该闭包通过访问该实例或其成员而捕获了该实例,你将在闭包和该实例间创建一个循环强引用。Swift 使用捕获列表来打破这种循环强引用。更多信息,请参考[闭包引起的循环强引用](./23_Automatic_Reference_Counting.html#strong_reference_cycles_for_closures)。 +> 如果你将闭包赋值给一个类实例的属性,并且该闭包通过访问该实例或其成员而捕获了该实例,你将在闭包和该实例间创建一个循环强引用。Swift 使用捕获列表来打破这种循环强引用。更多信息,请参考[闭包引起的循环强引用](./23_Automatic_Reference_Counting.md#strong_reference_cycles_for_closures)。 ## 闭包是引用类型 diff --git a/source/chapter2/08_Enumerations.md b/source/chapter2/08_Enumerations.md index 0009b8c8..a0f5b539 100755 --- a/source/chapter2/08_Enumerations.md +++ b/source/chapter2/08_Enumerations.md @@ -8,7 +8,7 @@ 在 Swift 中,枚举类型是一等(first-class)类型。它们采用了很多在传统上只被类(class)所支持的特性,例如计算属性(computed properties),用于提供枚举值的附加信息,实例方法(instance methods),用于提供和枚举值相关联的功能。枚举也可以定义构造函数(initializers)来提供一个初始值;可以在原始实现的基础上扩展它们的功能;还可以遵循协议(protocols)来提供标准的功能。 -想了解更多相关信息,请参见[属性](./10_Properties.html),[方法](./11_Methods.html),[构造过程](./14_Initialization.html),[扩展](./20_Extensions.html)和[协议](./21_Protocols.html)。 +想了解更多相关信息,请参见[属性](./10_Properties.md),[方法](./11_Methods.md),[构造过程](./14_Initialization.md),[扩展](./20_Extensions.md)和[协议](./21_Protocols.md)。 ## 枚举语法 @@ -86,7 +86,7 @@ case .west: ……以此类推。 -正如在[控制流](./05_Control_Flow.html)中介绍的那样,在判断一个枚举类型的值时,`switch` 语句必须穷举所有情况。如果忽略了 `.west` 这种情况,上面那段代码将无法通过编译,因为它没有考虑到 `CompassPoint` 的全部成员。强制穷举确保了枚举成员不会被意外遗漏。 +正如在[控制流](./05_Control_Flow.md)中介绍的那样,在判断一个枚举类型的值时,`switch` 语句必须穷举所有情况。如果忽略了 `.west` 这种情况,上面那段代码将无法通过编译,因为它没有考虑到 `CompassPoint` 的全部成员。强制穷举确保了枚举成员不会被意外遗漏。 当不需要匹配每个枚举成员的时候,你可以提供一个 `default` 分支来涵盖所有未明确处理的枚举成员: @@ -128,7 +128,7 @@ for beverage in Beverage.allCases { // juice ``` -在前面的例子中,使用的语法表明这个枚举遵循 [CaseIterable](https://developer.apple.com/documentation/swift/caseiterable) 协议。想了解 protocols 相关信息,请参见[协议](./21_Protocols.html)。 +在前面的例子中,使用的语法表明这个枚举遵循 [CaseIterable](https://developer.apple.com/documentation/swift/caseiterable) 协议。想了解 protocols 相关信息,请参见[协议](./21_Protocols.md)。 ## 关联值 @@ -217,7 +217,7 @@ enum ASCIIControlCharacter: Character { } ``` -枚举类型 `ASCIIControlCharacter` 的原始值类型被定义为 `Character`,并设置了一些比较常见的 ASCII 控制字符。`Character` 的描述详见[字符串和字符](./03_Strings_and_Characters.html)部分。 +枚举类型 `ASCIIControlCharacter` 的原始值类型被定义为 `Character`,并设置了一些比较常见的 ASCII 控制字符。`Character` 的描述详见[字符串和字符](./03_Strings_and_Characters.md)部分。 原始值可以是字符串、字符,或者任意整型值或浮点型值。每个原始值在枚举声明中必须是唯一的。 diff --git a/source/chapter2/09_Structures_And_Classes.md b/source/chapter2/09_Structures_And_Classes.md index fdce2153..f6ce6e88 100755 --- a/source/chapter2/09_Structures_And_Classes.md +++ b/source/chapter2/09_Structures_And_Classes.md @@ -20,7 +20,7 @@ Swift 中结构体和类有很多共同点。两者都可以: * 通过扩展以增加默认实现之外的功能 * 遵循协议以提供某种标准功能 -更多信息请参见 [属性](./10_Properties.html)、[方法](./11_Methods.html)、[下标](./12_Subscripts.html)、[构造过程](./14_Initialization.html)、[扩展](./20_Extensions.html) 和 [协议](./21_Protocols.html)。 +更多信息请参见 [属性](./{1}md{2})、[方法](./{1}md{2})、[下标](./{1}md{2})、[构造过程](./{1}md{2})、[扩展](./{1}md{2}) 和 [协议](./{1}md{2})。 与结构体相比,类还有如下的附加功能: @@ -29,7 +29,7 @@ Swift 中结构体和类有很多共同点。两者都可以: * 析构器允许一个类实例释放任何其所被分配的资源 * 引用计数允许对一个类的多次引用 -更多信息请参见 [继承](./13_Inheritance.html)、[类型转换](./18_Type_Casting.html)、[析构过程](./15_Deinitialization.html) 和 [自动引用计数](./23_Automatic_Reference_Counting.html)。 +更多信息请参见 [继承](./{1}md{2})、[类型转换](./{1}md{2})、[析构过程](./{1}md{2}) 和 [自动引用计数](./{1}md{2})。 类支持的附加功能是以增加复杂性为代价的。作为一般准则,优先使用结构体,因为它们更容易理解,仅在适当或必要时才使用类。实际上,这意味着你的大多数自定义数据类型都会是结构体和枚举。更多详细的比较参见 [在结构和类之间进行选择](https://developer.apple.com/documentation/swift/choosing_between_structures_and_classes)。 @@ -82,7 +82,7 @@ let someResolution = Resolution() let someVideoMode = VideoMode() ``` -结构体和类都使用构造器语法来创建新的实例。构造器语法的最简单形式是在结构体或者类的类型名称后跟随一对空括号,如 `Resolution()` 或 `VideoMode()`。通过这种方式所创建的类或者结构体实例,其属性均会被初始化为默认值。[构造过程](./14_Initialization.html) 章节会对类和结构体的初始化进行更详细的讨论。 +结构体和类都使用构造器语法来创建新的实例。构造器语法的最简单形式是在结构体或者类的类型名称后跟随一对空括号,如 `Resolution()` 或 `VideoMode()`。通过这种方式所创建的类或者结构体实例,其属性均会被初始化为默认值。[构造过程](./{1}md{2}) 章节会对类和结构体的初始化进行更详细的讨论。 ### 属性访问 @@ -120,7 +120,7 @@ print("The width of someVideoMode is now \(someVideoMode.resolution.width)") let vga = Resolution(width: 640, height: 480) ``` -与结构体不同,类实例没有默认的成员逐一构造器。[构造过程](./14_Initialization.html) 章节会对构造器进行更详细的讨论。 +与结构体不同,类实例没有默认的成员逐一构造器。[构造过程](./{1}md{2}) 章节会对构造器进行更详细的讨论。 ## 结构体和枚举是值类型 @@ -251,7 +251,7 @@ if tenEighty === alsoTenEighty { 请注意,“相同”(用三个等号表示,`===`)与“等于”(用两个等号表示,`==`)的不同。“相同”表示两个类类型(class type)的常量或者变量引用同一个类实例。“等于”表示两个实例的值“相等”或“等价”,判定时要遵照设计者定义的评判标准。 -当在定义你的自定义结构体和类的时候,你有义务来决定判定两个实例“相等”的标准。在章节 [等价操作符](./26_Advanced_Operators.html#equivalence_operators) 中将会详细介绍实现自定义 == 和 !== 运算符的流程。 +当在定义你的自定义结构体和类的时候,你有义务来决定判定两个实例“相等”的标准。在章节 [等价操作符](./{1}md{2}) 中将会详细介绍实现自定义 == 和 !== 运算符的流程。 ### 指针 diff --git a/source/chapter2/10_Properties.md b/source/chapter2/10_Properties.md index 0b47856a..006d349b 100755 --- a/source/chapter2/10_Properties.md +++ b/source/chapter2/10_Properties.md @@ -11,7 +11,7 @@ 简单来说,一个存储属性就是存储在特定类或结构体实例里的一个常量或变量。存储属性可以是*变量存储属性*(用关键字 `var` 定义),也可以是*常量存储属性*(用关键字 `let` 定义)。 -可以在定义存储属性的时候指定默认值,请参考[默认构造器](./14_Initialization.html#default_initializers)一节。也可以在构造过程中设置或修改存储属性的值,甚至修改常量存储属性的值,请参考[构造过程中常量属性的修改](./14_Initialization.html#assigning_constant_properties_during_initialization)一节。 +可以在定义存储属性的时候指定默认值,请参考[默认构造器](./14_Initialization.md#default_initializers)一节。也可以在构造过程中设置或修改存储属性的值,甚至修改常量存储属性的值,请参考[构造过程中常量属性的修改](./14_Initialization.md#assigning_constant_properties_during_initialization)一节。 下面的例子定义了一个名为 `FixedLengthRange` 的结构体,该结构体用于描述整数的区间,且这个范围值在被创建后不能被修改。 @@ -210,7 +210,7 @@ print("the volume of fourByFiveByTwo is \(fourByFiveByTwo.volume)") 属性观察器监控和响应属性值的变化,每次属性被设置值的时候都会调用属性观察器,即使新值和当前值相同的时候也不例外。 -你可以为除了延时加载存储属性之外的其他存储属性添加属性观察器,你也可以在子类中通过重写属性的方式为继承的属性(包括存储属性和计算属性)添加属性观察器。你不必为非重写的计算属性添加属性观察器,因为你可以直接通过它的 setter 监控和响应值的变化。属性重写请参考[重写](./13_Inheritance.html#overriding)。 +你可以为除了延时加载存储属性之外的其他存储属性添加属性观察器,你也可以在子类中通过重写属性的方式为继承的属性(包括存储属性和计算属性)添加属性观察器。你不必为非重写的计算属性添加属性观察器,因为你可以直接通过它的 setter 监控和响应值的变化。属性重写请参考[重写](./13_Inheritance.md#overriding)。 可以为属性添加其中一个或两个观察器: @@ -225,7 +225,7 @@ print("the volume of fourByFiveByTwo is \(fourByFiveByTwo.volume)") > > 在父类初始化方法调用之后,在子类构造器中给父类的属性赋值时,会调用父类属性的 `willSet` 和 `didSet` 观察器。而在父类初始化方法调用之前,给子类的属性赋值时不会调用子类属性的观察器。 > -> 有关构造器代理的更多信息,请参考[值类型的构造器代理](./14_Initialization.html#initializer_delegation_for_value_types)和[类的构造器代理](./14_Initialization.html#initializer_delegation_for_class_types)。 +> 有关构造器代理的更多信息,请参考[值类型的构造器代理](./14_Initialization.md#initializer_delegation_for_value_types)和[类的构造器代理](./14_Initialization.md#initializer_delegation_for_class_types)。 下面是一个 `willSet` 和 `didSet` 实际运用的例子,其中定义了一个名为 `StepCounter` 的类,用来统计一个人步行时的总步数。这个类可以跟计步器或其他日常锻炼的统计装置的输入数据配合使用。 diff --git a/source/chapter2/11_Methods.md b/source/chapter2/11_Methods.md index 4848b4d9..130c704b 100755 --- a/source/chapter2/11_Methods.md +++ b/source/chapter2/11_Methods.md @@ -48,7 +48,7 @@ counter.reset() // 计数值现在是0 ``` -函数参数可以同时有一个局部名称(在函数体内部使用)和一个外部名称(在调用函数时使用),详情参见[指定外部参数名](./06_Functions.html#specifying_external_parameter_names)。方法参数也一样,因为方法就是函数,只是这个函数与某个类型相关联了。 +函数参数可以同时有一个局部名称(在函数体内部使用)和一个外部名称(在调用函数时使用),详情参见[指定外部参数名](./06_Functions.md#specifying_external_parameter_names)。方法参数也一样,因为方法就是函数,只是这个函数与某个类型相关联了。 ### self 属性 @@ -110,7 +110,7 @@ print("The point is now at (\(somePoint.x), \(somePoint.y))") 上面的 `Point` 结构体定义了一个可变方法 `moveBy(x:y :)` 来移动 `Point` 实例到给定的位置。该方法被调用时修改了这个点,而不是返回一个新的点。方法定义时加上了 `mutating` 关键字,从而允许修改属性。 -注意,不能在结构体类型的常量(a constant of structure type)上调用可变方法,因为其属性不能被改变,即使属性是变量属性,详情参见[常量结构体的存储属性](./10_Properties.html#stored_properties_of_constant_structure_instances): +注意,不能在结构体类型的常量(a constant of structure type)上调用可变方法,因为其属性不能被改变,即使属性是变量属性,详情参见[常量结构体的存储属性](./10_Properties.md#stored_properties_of_constant_structure_instances): ```swift let fixedPoint = Point(x: 3.0, y: 3.0) diff --git a/source/chapter2/12_Subscripts.md b/source/chapter2/12_Subscripts.md index fc181156..54e565bc 100755 --- a/source/chapter2/12_Subscripts.md +++ b/source/chapter2/12_Subscripts.md @@ -66,7 +66,7 @@ numberOfLegs["bird"] = 2 上例定义一个名为 `numberOfLegs` 的变量,并用一个包含三对键值的字典字面量初始化它。`numberOfLegs` 字典的类型被推断为 `[String: Int]`。字典创建完成后,该例子通过下标将 `String` 类型的键 `bird` 和 `Int` 类型的值 `2` 添加到字典中。 -更多关于 `Dictionary` 下标的信息请参考 [读取和修改字典](./04_Collection_Types.html#accessing_and_modifying_a_dictionary)。 +更多关于 `Dictionary` 下标的信息请参考 [读取和修改字典](./04_Collection_Types.md#accessing_and_modifying_a_dictionary)。 > 注意 > @@ -106,7 +106,7 @@ struct Matrix { } ``` -`Matrix` 提供了一个接受两个入参的构造方法,入参分别是 `rows` 和 `columns`,创建了一个足够容纳 `rows * columns` 个 `Double` 类型的值的数组。通过传入数组长度和初始值 `0.0` 到数组的构造器,将矩阵中每个位置的值初始化为 `0.0`。关于数组的这种构造方法请参考 [创建一个带有默认值的数组](./04_Collection_Types.html#creating_an_array_with_a_default_value)。 +`Matrix` 提供了一个接受两个入参的构造方法,入参分别是 `rows` 和 `columns`,创建了一个足够容纳 `rows * columns` 个 `Double` 类型的值的数组。通过传入数组长度和初始值 `0.0` 到数组的构造器,将矩阵中每个位置的值初始化为 `0.0`。关于数组的这种构造方法请参考 [创建一个带有默认值的数组](./04_Collection_Types.md#creating_an_array_with_a_default_value)。 你可以通过传入合适的 `row` 和 `column` 的数量来构造一个新的 `Matrix` 实例: diff --git a/source/chapter2/14_Initialization.md b/source/chapter2/14_Initialization.md index 1c45deec..27cae5fc 100755 --- a/source/chapter2/14_Initialization.md +++ b/source/chapter2/14_Initialization.md @@ -4,7 +4,7 @@ 你要通过定义*构造器*来实现构造过程,它就像用来创建特定类型新实例的特殊方法。与 Objective-C 中的构造器不同,Swift 的构造器没有返回值。它们的主要任务是保证某种类型的新实例在第一次使用前完成正确的初始化。 -类的实例也可以通过实现*析构器*来执行它释放之前自定义的清理工作。想了解更多关于析构器的内容,请参考[析构过程](./15_Deinitialization.html)。 +类的实例也可以通过实现*析构器*来执行它释放之前自定义的清理工作。想了解更多关于析构器的内容,请参考[析构过程](./15_Deinitialization.md)。 @@ -259,7 +259,7 @@ let twoByTwo = Size(width: 2.0, height: 2.0) 构造器可以通过调用其它构造器来完成实例的部分构造过程。这一过程称为*构造器代理*,它能避免多个构造器间的代码重复。 -构造器代理的实现规则和形式在值类型和类类型中有所不同。值类型(结构体和枚举类型)不支持继承,所以构造器代理的过程相对简单,因为它们只能代理给自己的其它构造器。类则不同,它可以继承自其它类(请参考[继承](./13_Inheritance.html))。这意味着类有责任保证其所有继承的存储型属性在构造时也能正确的初始化。这些责任将在后续章节[类的继承和构造过程](#class_inheritance_and_initialization)中介绍。 +构造器代理的实现规则和形式在值类型和类类型中有所不同。值类型(结构体和枚举类型)不支持继承,所以构造器代理的过程相对简单,因为它们只能代理给自己的其它构造器。类则不同,它可以继承自其它类(请参考[继承](./13_Inheritance.md))。这意味着类有责任保证其所有继承的存储型属性在构造时也能正确的初始化。这些责任将在后续章节[类的继承和构造过程](#class_inheritance_and_initialization)中介绍。 对于值类型,你可以使用 `self.init` 在自定义的构造器中引用相同类型中的其它构造器。并且你只能在构造器内部调用 `self.init`。 @@ -267,7 +267,7 @@ let twoByTwo = Size(width: 2.0, height: 2.0) > 注意 > -> 假如你希望默认构造器、逐一成员构造器以及你自己的自定义构造器都能用来创建实例,可以将自定义的构造器写到扩展(`extension`)中,而不是写在值类型的原始定义中。想查看更多内容,请查看[扩展](./20_Extensions.html)章节。 +> 假如你希望默认构造器、逐一成员构造器以及你自己的自定义构造器都能用来创建实例,可以将自定义的构造器写到扩展(`extension`)中,而不是写在值类型的原始定义中。想查看更多内容,请查看[扩展](./20_Extensions.md)章节。 下面例子定义一个自定义结构体 `Rect`,用来代表几何矩形。这个例子需要两个辅助的结构体 `Size` 和 `Point`,它们各自为其所有的属性提供了默认初始值 `0.0`。 @@ -329,7 +329,7 @@ let centerRect = Rect(center: Point(x: 4.0, y: 4.0), > 注意 > -> 如果你想用另外一种不需要自己定义 `init()` 和 `init(origin:size:)` 的方式来实现这个例子,请参考[扩展](./21_Extensions.html)。 +> 如果你想用另外一种不需要自己定义 `init()` 和 `init(origin:size:)` 的方式来实现这个例子,请参考[扩展](./21_Extensions.md)。 ## 类的继承和构造过程 diff --git a/source/chapter2/15_Deinitialization.md b/source/chapter2/15_Deinitialization.md index d54ea0a4..e17a00a9 100755 --- a/source/chapter2/15_Deinitialization.md +++ b/source/chapter2/15_Deinitialization.md @@ -5,7 +5,7 @@ ## 析构过程原理 -Swift 会自动释放不再需要的实例以释放资源。如[自动引用计数](./23_Automatic_Reference_Counting.html)章节中所讲述,Swift 通过*自动引用计数(ARC)* 处理实例的内存管理。通常当你的实例被释放时不需要手动地去清理。但是,当使用自己的资源时,你可能需要进行一些额外的清理。例如,如果创建了一个自定义的类来打开一个文件,并写入一些数据,你可能需要在类实例被释放之前手动去关闭该文件。 +Swift 会自动释放不再需要的实例以释放资源。如[自动引用计数](./23_Automatic_Reference_Counting.md)章节中所讲述,Swift 通过*自动引用计数(ARC)* 处理实例的内存管理。通常当你的实例被释放时不需要手动地去清理。但是,当使用自己的资源时,你可能需要进行一些额外的清理。例如,如果创建了一个自定义的类来打开一个文件,并写入一些数据,你可能需要在类实例被释放之前手动去关闭该文件。 在类的定义中,每个类最多只能有一个析构器,而且析构器不带任何参数和圆括号,如下所示: diff --git a/source/chapter2/16_Optional_Chaining.md b/source/chapter2/16_Optional_Chaining.md index bf8c3ac3..514f947a 100755 --- a/source/chapter2/16_Optional_Chaining.md +++ b/source/chapter2/16_Optional_Chaining.md @@ -216,7 +216,7 @@ func printNumberOfRooms() { } ``` -这个方法没有返回值。然而,没有返回值的方法具有隐式的返回类型 `Void`,如[无返回值函数](./06_Functions.html#functions_without_return_values)中所述。这意味着没有返回值的方法也会返回 `()`,或者说空的元组。 +这个方法没有返回值。然而,没有返回值的方法具有隐式的返回类型 `Void`,如[无返回值函数](./06_Functions.md#functions_without_return_values)中所述。这意味着没有返回值的方法也会返回 `()`,或者说空的元组。 如果在可选值上通过可选链式调用来调用这个方法,该方法的返回类型会是 `Void?`,而不是 `Void`,因为通过可选链式调用得到的返回值都是可选的。这样我们就可以使用 `if` 语句来判断能否成功调用 `printNumberOfRooms()` 方法,即使方法本身没有定义返回值。通过判断返回值是否为 `nil` 可以判断调用是否成功: diff --git a/source/chapter2/18_Type_Casting.md b/source/chapter2/18_Type_Casting.md index abf12bed..4cb08914 100644 --- a/source/chapter2/18_Type_Casting.md +++ b/source/chapter2/18_Type_Casting.md @@ -4,7 +4,7 @@ 类型转换在 Swift 中使用 `is` 和 `as` 操作符实现。这两个操作符分别提供了一种简单达意的方式去检查值的类型或者转换它的类型。 -你也可以用它来检查一个类型是否遵循了某个协议,就像在[检验协议遵循](./21_Protocols.html#checking_for_protocol_conformance)部分讲述的一样。 +你也可以用它来检查一个类型是否遵循了某个协议,就像在[检验协议遵循](./21_Protocols.md#checking_for_protocol_conformance)部分讲述的一样。 ## 为类型转换定义类层次 diff --git a/source/chapter2/19_Nested_Types.md b/source/chapter2/19_Nested_Types.md index 27dd8010..812ab678 100755 --- a/source/chapter2/19_Nested_Types.md +++ b/source/chapter2/19_Nested_Types.md @@ -64,7 +64,7 @@ struct BlackjackCard { `BlackjackCard` 结构体拥有两个属性——`rank` 与 `suit`。它也同样定义了一个计算型属性 `description`,`description` 属性用 `rank` 和 `suit` 中的内容来构建对扑克牌名字和数值的描述。该属性使用可选绑定来检查可选类型 `second` 是否有值,若有值,则在原有的描述中增加对 `second` 的描述。 -因为 `BlackjackCard` 是一个没有自定义构造器的结构体,在[结构体的逐一成员构造器](./14_Initialization.html#memberwise_initializers_for_structure_types)中可知,结构体有默认的成员构造器,所以你可以用默认的构造器去初始化新常量 `theAceOfSpades`: +因为 `BlackjackCard` 是一个没有自定义构造器的结构体,在[结构体的逐一成员构造器](./14_Initialization.md#memberwise_initializers_for_structure_types)中可知,结构体有默认的成员构造器,所以你可以用默认的构造器去初始化新常量 `theAceOfSpades`: ```swift let theAceOfSpades = BlackjackCard(rank: .ace, suit: .spades) diff --git a/source/chapter2/21_Protocols.md b/source/chapter2/21_Protocols.md index 150e1825..8646fb14 100644 --- a/source/chapter2/21_Protocols.md +++ b/source/chapter2/21_Protocols.md @@ -148,7 +148,7 @@ print("And another one: \(generator.random())") ## 异变方法要求 -有时需要在方法中改变(或*异变*)方法所属的实例。例如,在值类型(即结构体和枚举)的实例方法中,将 `mutating` 关键字作为方法的前缀,写在 `func` 关键字之前,表示可以在该方法中修改它所属的实例以及实例的任意属性的值。这一过程在 [在实例方法中修改值类型](./11_Methods.html#modifying_value_types_from_within_instance_methods) 章节中有详细描述。 +有时需要在方法中改变(或*异变*)方法所属的实例。例如,在值类型(即结构体和枚举)的实例方法中,将 `mutating` 关键字作为方法的前缀,写在 `func` 关键字之前,表示可以在该方法中修改它所属的实例以及实例的任意属性的值。这一过程在 [在实例方法中修改值类型](./11_Methods.md#modifying_value_types_from_within_instance_methods) 章节中有详细描述。 如果你在协议中定义了一个实例方法,该方法会改变遵循该协议的类型的实例,那么在定义协议时需要在方法前加 `mutating` 关键字。这使得结构体和枚举能够遵循此协议并满足此方法要求。 @@ -212,11 +212,11 @@ class SomeClass: SomeProtocol { 使用 `required` 修饰符可以确保所有子类也必须提供此构造器实现,从而也能符合协议。 -关于 `required` 构造器的更多内容,请参考 [必要构造器](./14_Initialization.html#required_initializers)。 +关于 `required` 构造器的更多内容,请参考 [必要构造器](./14_Initialization.md#required_initializers)。 > 注意 > -> 如果类已经被标记为 `final`,那么不需要在协议构造器的实现中使用 `required` 修饰符,因为 `final` 类不能有子类。关于 `final` 修饰符的更多内容,请参见 [防止重写](./13_Inheritance.html#preventing_overrides)。 +> 如果类已经被标记为 `final`,那么不需要在协议构造器的实现中使用 `required` 修饰符,因为 `final` 类不能有子类。关于 `final` 修饰符的更多内容,请参见 [防止重写](./13_Inheritance.md#preventing_overrides)。 如果一个子类重写了父类的指定构造器,并且该构造器满足了某个协议的要求,那么该构造器的实现需要同时标注 `required` 和 `override` 修饰符: @@ -242,7 +242,7 @@ class SomeSubClass: SomeSuperClass, SomeProtocol { ### 可失败构造器要求 -协议还可以为遵循协议的类型定义可失败构造器要求,详见 [可失败构造器](./14_Initialization.html#failable_initializers)。 +协议还可以为遵循协议的类型定义可失败构造器要求,详见 [可失败构造器](./14_Initialization.md#failable_initializers)。 遵循协议的类型可以通过可失败构造器(`init?`)或非可失败构造器(`init`)来满足协议中定义的可失败构造器要求。协议中定义的非可失败构造器要求可以通过非可失败构造器(`init`)或隐式解包可失败构造器(`init!`)来满足。 @@ -320,9 +320,9 @@ protocol DiceGameDelegate { `DiceGame` 协议可以被任意涉及骰子的游戏遵循。 -`DiceGameDelegate` 协议可以被任意类型遵循,用来追踪 `DiceGame` 的游戏过程。为了防止强引用导致的循环引用问题,可以把协议声明为弱引用,更多相关的知识请看 [类实例之间的循环强引用](./23_Automatic_Reference_Counting.html#strong_reference_cycles_between_class_instances),当协议标记为类专属可以使 `SnakesAndLadders` 类在声明协议时强制要使用弱引用。若要声明类专属的协议就必须继承于 `AnyObject` ,更多请看 [类专属的协议](#class_only_protocol)。 +`DiceGameDelegate` 协议可以被任意类型遵循,用来追踪 `DiceGame` 的游戏过程。为了防止强引用导致的循环引用问题,可以把协议声明为弱引用,更多相关的知识请看 [类实例之间的循环强引用](./23_Automatic_Reference_Counting.md#strong_reference_cycles_between_class_instances),当协议标记为类专属可以使 `SnakesAndLadders` 类在声明协议时强制要使用弱引用。若要声明类专属的协议就必须继承于 `AnyObject` ,更多请看 [类专属的协议](#class_only_protocol)。 -如下所示,`SnakesAndLadders` 是 [控制流](./05_Control_Flow.html) 章节引入的蛇梯棋游戏的新版本。新版本使用 `Dice` 实例作为骰子,并且实现了 `DiceGame` 和 `DiceGameDelegate` 协议,后者用来记录游戏的过程: +如下所示,`SnakesAndLadders` 是 [控制流](./05_Control_Flow.md) 章节引入的蛇梯棋游戏的新版本。新版本使用 `Dice` 实例作为骰子,并且实现了 `DiceGame` 和 `DiceGameDelegate` 协议,后者用来记录游戏的过程: ```swift class SnakesAndLadders: DiceGame { @@ -357,7 +357,7 @@ class SnakesAndLadders: DiceGame { } ``` -关于这个*蛇梯棋*游戏的详细描述请参阅 [中断(Break)](./05_Control_Flow.html#break)。 +关于这个*蛇梯棋*游戏的详细描述请参阅 [中断(Break)](./05_Control_Flow.md#break)。 这个版本的游戏封装到了 `SnakesAndLadders` 类中,该类遵循了 `DiceGame` 协议,并且提供了相应的可读的 `dice` 属性和 `play()` 方法。( `dice` 属性在构造之后就不再改变,且协议只要求 `dice` 为可读的,因此将 `dice` 声明为常量属性。) @@ -416,7 +416,7 @@ game.play() ## 在扩展里添加协议遵循 -即便无法修改源代码,依然可以通过扩展令已有类型遵循并符合协议。扩展可以为已有类型添加属性、方法、下标以及构造器,因此可以符合协议中的相应要求。详情请在 [扩展](./20_Extensions.html) 章节中查看。 +即便无法修改源代码,依然可以通过扩展令已有类型遵循并符合协议。扩展可以为已有类型添加属性、方法、下标以及构造器,因此可以符合协议中的相应要求。详情请在 [扩展](./20_Extensions.md) 章节中查看。 > 注意 > @@ -465,7 +465,7 @@ print(game.textualDescription) ## 有条件地遵循协议 -泛型类型可能只在某些情况下满足一个协议的要求,比如当类型的泛型形式参数遵循对应协议时。你可以通过在扩展类型时列出限制让泛型类型有条件地遵循某协议。在你采纳协议的名字后面写泛型 `where` 分句。更多关于泛型 `where` 分句,见 [泛型 Where 分句](./22_Generics.html##where_clauses)。 +泛型类型可能只在某些情况下满足一个协议的要求,比如当类型的泛型形式参数遵循对应协议时。你可以通过在扩展类型时列出限制让泛型类型有条件地遵循某协议。在你采纳协议的名字后面写泛型 `where` 分句。更多关于泛型 `where` 分句,见 [泛型 Where 分句](./22_Generics.md##where_clauses)。 下面的扩展让 `Array` 类型只要在存储遵循 `TextRepresentable` 协议的元素时就遵循 `TextRepresentable` 协议。 @@ -512,7 +512,7 @@ print(somethingTextRepresentable.textualDescription) ## 协议类型的集合 -协议类型可以在数组或者字典这样的集合中使用,在 [协议类型](./21_Protocols.html##protocols_as_types) 提到了这样的用法。下面的例子创建了一个元素类型为 `TextRepresentable` 的数组: +协议类型可以在数组或者字典这样的集合中使用,在 [协议类型](./21_Protocols.md##protocols_as_types) 提到了这样的用法。下面的例子创建了一个元素类型为 `TextRepresentable` 的数组: ```swift let things: [TextRepresentable] = [game, d12, simonTheHamster] @@ -603,7 +603,7 @@ protocol SomeClassOnlyProtocol: AnyObject, SomeInheritedProtocol { > 注意 > -> 当协议定义的要求需要遵循协议的类型必须是引用语义而非值语义时,应该采用类类型专属协议。关于引用语义和值语义的更多内容,请查看 [结构体和枚举是值类型](./09_Classes_and_Structures.html#structures_and_enumerations_are_value_types) 和 [类是引用类型](./09_Classes_and_Structures.html#classes_are_reference_types)。 +> 当协议定义的要求需要遵循协议的类型必须是引用语义而非值语义时,应该采用类类型专属协议。关于引用语义和值语义的更多内容,请查看 [结构体和枚举是值类型](./09_Classes_and_Structures.md#structures_and_enumerations_are_value_types) 和 [类是引用类型](./09_Classes_and_Structures.md#classes_are_reference_types)。 ## 协议合成 @@ -673,7 +673,7 @@ beginConcert(in: seattle) ## 检查协议一致性 -你可以使用[类型转换](./18_Type_Casting.html)中描述的 `is` 和 `as` 操作符来检查协议一致性,即是否符合某协议,并且可以转换到指定的协议类型。检查和转换协议的语法与检查和转换类型是完全一样的: +你可以使用[类型转换](./18_Type_Casting.md)中描述的 `is` 和 `as` 操作符来检查协议一致性,即是否符合某协议,并且可以转换到指定的协议类型。检查和转换协议的语法与检查和转换类型是完全一样的: * `is` 用来检查实例是否符合某个协议,若符合则返回 `true`,否则返回 `false`; * `as?` 返回一个可选值,当实例符合某个协议时,返回类型为协议类型的可选值,否则返回 `nil`; @@ -751,7 +751,7 @@ for object in objects { 使用可选要求时(例如,可选的方法或者属性),它们的类型会自动变成可选的。比如,一个类型为 `(Int) -> String` 的方法会变成 `((Int) -> String)?`。需要注意的是整个函数类型是可选的,而不是函数的返回值。 -协议中的可选要求可通过可选链式调用来使用,因为遵循协议的类型可能没有实现这些可选要求。类似 `someOptionalMethod?(someArgument)` 这样,你可以在可选方法名称后加上 `?` 来调用可选方法。详细内容可在[可选链式调用](./16_Optional_Chaining.html)章节中查看。 +协议中的可选要求可通过可选链式调用来使用,因为遵循协议的类型可能没有实现这些可选要求。类似 `someOptionalMethod?(someArgument)` 这样,你可以在可选方法名称后加上 `?` 来调用可选方法。详细内容可在[可选链式调用](./16_Optional_Chaining.md)章节中查看。 下面的例子定义了一个名为 `Counter` 的用于整数计数的类,它使用外部的数据源来提供每次的增量。数据源由 `CounterDataSource` 协议定义,它包含两个可选要求: @@ -902,7 +902,7 @@ extension PrettyTextRepresentable { ### 为协议扩展添加限制条件 -在扩展协议的时候,可以指定一些限制条件,只有遵循协议的类型满足这些限制条件时,才能获得协议扩展提供的默认实现。这些限制条件写在协议名之后,使用 `where` 子句来描述,正如[泛型 Where 子句](./22_Generics.html#where_clauses)中所描述的。 +在扩展协议的时候,可以指定一些限制条件,只有遵循协议的类型满足这些限制条件时,才能获得协议扩展提供的默认实现。这些限制条件写在协议名之后,使用 `where` 子句来描述,正如[泛型 Where 子句](./22_Generics.md#where_clauses)中所描述的。 例如,你可以扩展 `Collection` 协议,适用于集合中的元素遵循了 `Equatable` 协议的情况。通过限制集合元素遵 `Equatable` 协议, 作为标准库的一部分, 你可以使用 `==` 和 `!=` 操作符来检查两个元素的等价性和非等价性。 diff --git a/source/chapter2/22_Generics.md b/source/chapter2/22_Generics.md index 9ad5ad3b..bc70d0da 100644 --- a/source/chapter2/22_Generics.md +++ b/source/chapter2/22_Generics.md @@ -17,7 +17,7 @@ func swapTwoInts(_ a: inout Int, _ b: inout Int) { } ``` -这个函数使用输入输出参数(`inout`)来交换 `a` 和 `b` 的值,具体请参考[输入输出参数](./06_Functions.html#in_out_parameters)。 +这个函数使用输入输出参数(`inout`)来交换 `a` 和 `b` 的值,具体请参考[输入输出参数](./06_Functions.md#in_out_parameters)。 `swapTwoInts(_:_:)` 函数将 `b` 的原始值换成了 `a`,将 `a` 的原始值换成了 `b`,你可以调用这个函数来交换两个 `Int` 类型变量: @@ -237,7 +237,7 @@ if let topItem = stackOfStrings.topItem { `swapTwoValues(_:_:)` 函数和 `Stack` 适用于任意类型。不过,如果能对泛型函数或泛型类型中添加特定的*类型约束*,这将在某些情况下非常有用。类型约束指定类型参数必须继承自指定类、遵循特定的协议或协议组合。 -例如,Swift 的 `Dictionary` 类型对字典的键的类型做了些限制。在 [字典的描述](./04_Collection_Types.html#dictionaries) 中,字典键的类型必须是可哈希(hashable)的。也就是说,必须有一种方法能够唯一地表示它。字典键之所以要是可哈希的,是为了便于检查字典中是否已经包含某个特定键的值。若没有这个要求,字典将无法判断是否可以插入或替换某个指定键的值,也不能查找到已经存储在字典中的指定键的值。 +例如,Swift 的 `Dictionary` 类型对字典的键的类型做了些限制。在 [字典的描述](./04_Collection_Types.md#dictionaries) 中,字典键的类型必须是可哈希(hashable)的。也就是说,必须有一种方法能够唯一地表示它。字典键之所以要是可哈希的,是为了便于检查字典中是否已经包含某个特定键的值。若没有这个要求,字典将无法判断是否可以插入或替换某个指定键的值,也不能查找到已经存储在字典中的指定键的值。 这个要求通过 `Dictionary` 键类型上的类型约束实现,它指明了键必须遵循 Swift 标准库中定义的 `Hashable` 协议。所有 Swift 的基本类型(例如 `String`、`Int`、`Double` 和 `Bool`)默认都是可哈希的。 @@ -420,7 +420,7 @@ struct Stack: Container { ### 扩展现有类型来指定关联类型 -[在扩展添加协议一致性](./21_Protocols.html#adding_protocol_conformance_with_an_extension)中描述了如何利用扩展让一个已存在的类型符合一个协议,这包括使用了关联类型协议。 +[在扩展添加协议一致性](./21_Protocols.md#adding_protocol_conformance_with_an_extension)中描述了如何利用扩展让一个已存在的类型符合一个协议,这包括使用了关联类型协议。 Swift 的 `Array` 类型已经提供 `append(_:)` 方法,`count` 属性,以及带有 `Int` 索引的下标来检索其元素。这三个功能都符合 `Container` 协议的要求,也就意味着你只需声明 `Array` 遵循`Container` 协议,就可以扩展 Array,使其遵从 Container 协议。你可以通过一个空扩展来实现这点,正如通过扩展采纳协议中的描述: @@ -460,7 +460,7 @@ protocol SuffixableContainer: Container { 在这个协议里,`Suffix` 是一个关联类型,就像上边例子中 `Container` 的 `Item` 类型一样。`Suffix` 拥有两个约束:它必须遵循 `SuffixableContainer` 协议(就是当前定义的协议),以及它的 `Item` 类型必须是和容器里的 `Item` 类型相同。`Item` 的约束是一个 `where` 分句,它在下面带有泛型 `Where` 分句的扩展中有讨论。 -这是上面 [强引用循环闭包](./23_Automatic_Reference_Counting.html#strong_reference_cycles_for_closures) 中 `Stack` 类型的扩展,它遵循了 SuffixableContainer 协议: +这是上面 [强引用循环闭包](./23_Automatic_Reference_Counting.md#strong_reference_cycles_for_closures) 中 `Stack` 类型的扩展,它遵循了 SuffixableContainer 协议: ```swift extension Stack: SuffixableContainer { diff --git a/source/chapter2/23_Automatic_Reference_Counting.md b/source/chapter2/23_Automatic_Reference_Counting.md index 597ff899..f9f4ed45 100755 --- a/source/chapter2/23_Automatic_Reference_Counting.md +++ b/source/chapter2/23_Automatic_Reference_Counting.md @@ -366,9 +366,9 @@ class City { 为了建立两个类的依赖关系,`City` 的构造器接受一个 `Country` 实例作为参数,并且将实例保存到 `country` 属性。 -`Country` 的构造器调用了 `City` 的构造器。然而,只有 `Country` 的实例完全初始化后,`Country` 的构造器才能把 `self` 传给 `City` 的构造器。在[两段式构造过程](./14_Initialization.html#two_phase_initialization)中有具体描述。 +`Country` 的构造器调用了 `City` 的构造器。然而,只有 `Country` 的实例完全初始化后,`Country` 的构造器才能把 `self` 传给 `City` 的构造器。在[两段式构造过程](./14_Initialization.md#two_phase_initialization)中有具体描述。 -为了满足这种需求,通过在类型结尾处加上感叹号(`City!`)的方式,将 `Country` 的 `capitalCity` 属性声明为隐式解包可选值类型的属性。这意味着像其他可选类型一样,`capitalCity` 属性的默认值为 `nil`,但是不需要展开它的值就能访问它。在[隐式解包可选值](./01_The_Basics.html#implicityly_unwrapped_optionals)中有描述。 +为了满足这种需求,通过在类型结尾处加上感叹号(`City!`)的方式,将 `Country` 的 `capitalCity` 属性声明为隐式解包可选值类型的属性。这意味着像其他可选类型一样,`capitalCity` 属性的默认值为 `nil`,但是不需要展开它的值就能访问它。在[隐式解包可选值](./01_The_Basics.md#implicityly_unwrapped_optionals)中有描述。 由于 `capitalCity` 默认值为 `nil`,一旦 `Country` 的实例在构造器中给 `name` 属性赋值后,整个初始化过程就完成了。这意味着一旦 `name` 属性被赋值后,`Country` 的构造器就能引用并传递隐式的 `self`。`Country` 的构造器在赋值 `capitalCity` 时,就能将 `self` 作为参数传递给 `City` 的构造器。 @@ -463,7 +463,7 @@ print(paragraph!.asHTML()) ![](https://docs.swift.org/swift-book/_images/closureReferenceCycle01_2x.png) -实例的 `asHTML` 属性持有闭包的强引用。但是,闭包在其闭包体内使用了 `self`(引用了 `self.name` 和 `self.text`),因此闭包捕获了 `self`,这意味着闭包又反过来持有了 `HTMLElement` 实例的强引用。这样两个对象就产生了循环强引用。(更多关于闭包捕获值的信息,请参考[值捕获](./07_Closures.html#capturing_values))。 +实例的 `asHTML` 属性持有闭包的强引用。但是,闭包在其闭包体内使用了 `self`(引用了 `self.name` 和 `self.text`),因此闭包捕获了 `self`,这意味着闭包又反过来持有了 `HTMLElement` 实例的强引用。这样两个对象就产生了循环强引用。(更多关于闭包捕获值的信息,请参考[值捕获](./07_Closures.md#capturing_values))。 > 注意 > diff --git a/source/chapter2/25_Access_Control.md b/source/chapter2/25_Access_Control.md index 35e887b2..782f9672 100644 --- a/source/chapter2/25_Access_Control.md +++ b/source/chapter2/25_Access_Control.md @@ -300,14 +300,14 @@ public struct TrackedString { ## 构造器 -自定义构造器的访问级别可以低于或等于其所属类型的访问级别。唯一的例外是[必要构造器](./14_Initialization.html#required_initializers),它的访问级别必须和所属类型的访问级别相同。 +自定义构造器的访问级别可以低于或等于其所属类型的访问级别。唯一的例外是[必要构造器](./14_Initialization.md#required_initializers),它的访问级别必须和所属类型的访问级别相同。 如同函数或方法的参数,构造器参数的访问级别也不能低于构造器本身的访问级别。 ### 默认构造器 -如[默认构造器](./14_Initialization.html#default_initializers)所述,Swift 会为结构体和类提供一个默认的无参数的构造器,只要它们为所有存储型属性设置了默认初始值,并且未提供自定义的构造器。 +如[默认构造器](./14_Initialization.md#default_initializers)所述,Swift 会为结构体和类提供一个默认的无参数的构造器,只要它们为所有存储型属性设置了默认初始值,并且未提供自定义的构造器。 默认构造器的访问级别与所属类型的访问级别相同,除非类型的访问级别是 `public`。如果一个类型被指定为 `public` 级别,那么默认构造器的访问级别将为 `internal`。如果你希望一个 `public` 级别的类型也能在其他模块中使用这种无参数的默认构造器,你只能自己提供一个 `public` 访问级别的无参数构造器。 diff --git a/source/chapter3/02_Lexical_Structure.md b/source/chapter3/02_Lexical_Structure.md index 038c985d..cf9d1133 100755 --- a/source/chapter3/02_Lexical_Structure.md +++ b/source/chapter3/02_Lexical_Structure.md @@ -300,7 +300,7 @@ let textB = "Hello world" > > *插值文本* → [*插值文本项*](#interpolated-text-item) [*插值文本*](#interpolated-text)可选 > -> *插值文本项* → **\\****(**[*表达式*](./04_Expressions.html)**)** | [*引用文本项*](#quoted-text-item) +> *插值文本项* → **\\****(**[*表达式*](./04_Expressions.md)**)** | [*引用文本项*](#quoted-text-item) > *转义字符* → **\\****0** | **\\****\\** | **\t** | **\n** | **\r** | **\\"** | **\\'** diff --git a/source/chapter3/04_Expressions.md b/source/chapter3/04_Expressions.md index 2fd0841c..e8e79ff6 100644 --- a/source/chapter3/04_Expressions.md +++ b/source/chapter3/04_Expressions.md @@ -383,7 +383,7 @@ myFunction { $0 + $1 } 使用闭包表达式时,可以不必将其存储在一个变量或常量中,例如作为函数调用的一部分来立即使用一个闭包。在上面的例子中,传入 `myFunction` 的闭包表达式就是这种立即使用类型的闭包。因此,一个闭包是否逃逸与其使用时的上下文相关。一个会被立即调用或者作为函数的非逃逸参数传递的闭包表达式是非逃逸的,否则,这个闭包表达式是逃逸的。 -关于逃逸闭包的内容,请参阅[逃逸闭包](./chapter2/07_Closures.html#escaping_closures) +关于逃逸闭包的内容,请参阅[逃逸闭包](./chapter2/07_Closures.md#escaping_closures) From 810eba11501f6763d34c1e5af6bf6aed3d933903 Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Tue, 26 Mar 2019 22:16:34 -0500 Subject: [PATCH 051/107] fix regex replacing mistakes --- source/chapter2/09_Structures_And_Classes.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/chapter2/09_Structures_And_Classes.md b/source/chapter2/09_Structures_And_Classes.md index f6ce6e88..a4a972f8 100755 --- a/source/chapter2/09_Structures_And_Classes.md +++ b/source/chapter2/09_Structures_And_Classes.md @@ -20,7 +20,7 @@ Swift 中结构体和类有很多共同点。两者都可以: * 通过扩展以增加默认实现之外的功能 * 遵循协议以提供某种标准功能 -更多信息请参见 [属性](./{1}md{2})、[方法](./{1}md{2})、[下标](./{1}md{2})、[构造过程](./{1}md{2})、[扩展](./{1}md{2}) 和 [协议](./{1}md{2})。 +更多信息请参见 [属性](./10_Properties.md)、[方法](./11_Methods.md)、[下标](./12_Subscripts.md)、[构造过程](./14_Initialization.md)、[扩展](./20_Extensions.md) 和 [协议](./21_Protocols.md)。 与结构体相比,类还有如下的附加功能: @@ -29,7 +29,7 @@ Swift 中结构体和类有很多共同点。两者都可以: * 析构器允许一个类实例释放任何其所被分配的资源 * 引用计数允许对一个类的多次引用 -更多信息请参见 [继承](./{1}md{2})、[类型转换](./{1}md{2})、[析构过程](./{1}md{2}) 和 [自动引用计数](./{1}md{2})。 +更多信息请参见 [继承](./13_Inheritance.md)、[类型转换](./18_Type_Casting.md)、[析构过程](./15_Deinitialization.md) 和 [自动引用计数](./23_Automatic_Reference_Counting.md)。 类支持的附加功能是以增加复杂性为代价的。作为一般准则,优先使用结构体,因为它们更容易理解,仅在适当或必要时才使用类。实际上,这意味着你的大多数自定义数据类型都会是结构体和枚举。更多详细的比较参见 [在结构和类之间进行选择](https://developer.apple.com/documentation/swift/choosing_between_structures_and_classes)。 @@ -82,7 +82,7 @@ let someResolution = Resolution() let someVideoMode = VideoMode() ``` -结构体和类都使用构造器语法来创建新的实例。构造器语法的最简单形式是在结构体或者类的类型名称后跟随一对空括号,如 `Resolution()` 或 `VideoMode()`。通过这种方式所创建的类或者结构体实例,其属性均会被初始化为默认值。[构造过程](./{1}md{2}) 章节会对类和结构体的初始化进行更详细的讨论。 +结构体和类都使用构造器语法来创建新的实例。构造器语法的最简单形式是在结构体或者类的类型名称后跟随一对空括号,如 `Resolution()` 或 `VideoMode()`。通过这种方式所创建的类或者结构体实例,其属性均会被初始化为默认值。[构造过程](./14_Initialization.md) 章节会对类和结构体的初始化进行更详细的讨论。 ### 属性访问 @@ -120,7 +120,7 @@ print("The width of someVideoMode is now \(someVideoMode.resolution.width)") let vga = Resolution(width: 640, height: 480) ``` -与结构体不同,类实例没有默认的成员逐一构造器。[构造过程](./{1}md{2}) 章节会对构造器进行更详细的讨论。 +与结构体不同,类实例没有默认的成员逐一构造器。[构造过程](./14_Initialization.md) 章节会对构造器进行更详细的讨论。 ## 结构体和枚举是值类型 @@ -251,7 +251,7 @@ if tenEighty === alsoTenEighty { 请注意,“相同”(用三个等号表示,`===`)与“等于”(用两个等号表示,`==`)的不同。“相同”表示两个类类型(class type)的常量或者变量引用同一个类实例。“等于”表示两个实例的值“相等”或“等价”,判定时要遵照设计者定义的评判标准。 -当在定义你的自定义结构体和类的时候,你有义务来决定判定两个实例“相等”的标准。在章节 [等价操作符](./{1}md{2}) 中将会详细介绍实现自定义 == 和 !== 运算符的流程。 +当在定义你的自定义结构体和类的时候,你有义务来决定判定两个实例“相等”的标准。在章节 [等价操作符](./26_Advanced_Operators.md#equivalence_operators) 中将会详细介绍实现自定义 == 和 !== 运算符的流程。 ### 指针 From 1d01a9900b7f620a95007e64ed5fefbfed496f1e Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Tue, 26 Mar 2019 22:44:42 -0500 Subject: [PATCH 052/107] fix quota format --- .../01_About_the_Language_Reference.md | 3 + source/chapter3/02_Lexical_Structure.md | 154 ++++++ source/chapter3/03_Types.md | 51 ++ source/chapter3/04_Expressions.md | 180 ++++++- source/chapter3/05_Statements.md | 146 ++++++ source/chapter3/06_Declarations.md | 263 +++++++++++ source/chapter3/07_Attributes.md | 19 + source/chapter3/08_Patterns.md | 23 + .../09_Generic_Parameters_and_Arguments.md | 24 + source/chapter3/10_Summary_of_the_Grammar.md | 445 ++++++++++++++++++ 10 files changed, 1306 insertions(+), 2 deletions(-) diff --git a/source/chapter3/01_About_the_Language_Reference.md b/source/chapter3/01_About_the_Language_Reference.md index c16ea6dd..a1085ef5 100755 --- a/source/chapter3/01_About_the_Language_Reference.md +++ b/source/chapter3/01_About_the_Language_Reference.md @@ -21,10 +21,13 @@ Swift 语言相对较小,这是由于 Swift 代码中常用的类型、函数 > getter-setter 方法块语法 > > *getter-setter 方法块* → { [*getter 子句*](05_Declarations.html#getter-clause) [*setter 子句*](05_Declarations.html#setter-clause)可选 } | { [*setter 子句*](05_Declarations.html#setter-clause) [*getter 子句*](05_Declarations.html#getter-clause) } +> 这个定义表明,一个 getter-setter 方法块可以由一个 getter 分句后跟一个可选的 setter 分句构成,然后用大括号括起来,或者由一个 setter 分句后跟一个 getter 分句构成,然后用大括号括起来。上述的语法产式等价于下面的两个语法产式, : > getter-setter 方法块语法 > > getter-setter 方法块 → { [*getter 子句*](05_Declarations.html#getter-clause) [*setter 子句*](05_Declarations.html#setter-clause)可选 } +> > getter-setter 方法块 → { [*setter 子句*](05_Declarations.html#setter-clause) [*getter 子句*](05_Declarations.html#getter-clause) } +> diff --git a/source/chapter3/02_Lexical_Structure.md b/source/chapter3/02_Lexical_Structure.md index cf9d1133..a38ae42a 100755 --- a/source/chapter3/02_Lexical_Structure.md +++ b/source/chapter3/02_Lexical_Structure.md @@ -12,28 +12,45 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 注释被编译器当作空白处理。单行注释由 `//` 开始直至遇到换行符(U+000A)或者回车符(U+000D)。多行注释由 `/*` 开始,以 `*/` 结束。注释允许嵌套,但注释标记必须匹配。 > 空白语法 +> > *空白* → [*空白项*](#whitespace-item) [*空白*](#whitespace)可选 +> > *空白项* → [*断行符*](#line-break) +> > *空白项* → [*注释*](#comment) +> > *空白项* → [*多行注释*](#multiline-comment) +> > *空白项* → U+0000,U+0009,U+000B,U+000C 或者 U+0020 +> > *断行符* → U+000A +> > *断行符* → U+000D +> > *断行符* → U+000D 接着是 U+000A +> > *注释* → // [*注释内容 断行*](#comment-text line-break) +> > *多行注释* → `/*` [*多行注释内容*](#multiline-commnet-text) `*/` +> > *注释内容* → [*注释内容项*](#comment-text-item) [*注释内容*](#comment-text)可选 +> > *注释内容项* → 任何 Unicode 标量值, 除了 U+000A 或者 U+000D +> > *多行注释内容* → [*多行注释内容项*](#multiline-comment-text-item) [*多行注释内容*](#multiline-comment-text)可选 +> > *多行注释内容项* → [*多行注释*](#multiline-comment). +> > *多行注释内容项* → [*注释内容项*](#comment-text-item) +> > *多行注释内容项* → 任何 Unicode 标量值, 除了 `/*` 或者 `*/` +> 注释可以包含额外的格式和标记,正如 [*Markup Formatting Reference*](https://developer.apple.com/library/prerelease/ios/documentation/Xcode/Reference/xcode_markup_formatting_ref/index.html#//apple_ref/doc/uid/TP40016497) 所述。 @@ -47,42 +64,69 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 闭包中如果没有明确指定参数名称,参数将被隐式命名为 `$0`、`$1`、`$2` 等等。这些命名在闭包作用域范围内是合法的标识符。 > 标识符语法 +> > *标识符* → [*头部标识符*](#identifier-head) [*标识符字符组*](#identifier-characters)可选 +> > *标识符* → \`[*头部标识符*](#identifier-head) [*标识符字符组*](#identifier-characters)可选\` +> > *标识符* → [*隐式参数名*](#implicit-parameter-name) +> > *标识符列表* → [*标识符*](#identifier) | [*标识符*](#identifier) **,** [*标识符列表*](#identifier-list) +> > *头部标识符* → 大写或小写字母 A - Z +> > *头部标识符* → _ +> > *头部标识符* → U+00A8,U+00AA,U+00AD,U+00AF,U+00B2–U+00B5,或者 U+00B7–U+00BA +> > *头部标识符* → U+00BC–U+00BE,U+00C0–U+00D6,U+00D8–U+00F6,或者 U+00F8–U+00FF +> > *头部标识符* → U+0100–U+02FF,U+0370–U+167F,U+1681–U+180D,或者 U+180F–U+1DBF +> > *头部标识符* → U+1E00–U+1FFF +> > *头部标识符* → U+200B–U+200D,U+202A–U+202E,U+203F–U+2040,U+2054,或者 U+2060–U+206F +> > *头部标识符* → U+2070–U+20CF,U+2100–U+218F,U+2460–U+24FF,或者 U+2776–U+2793 +> > *头部标识符* → U+2C00–U+2DFF 或者 U+2E80–U+2FFF +> > *头部标识符* → U+3004–U+3007,U+3021–U+302F,U+3031–U+303F,或者 U+3040–U+D7FF +> > *头部标识符* → U+F900–U+FD3D,U+FD40–U+FDCF,U+FDF0–U+FE1F,或者 U+FE30–U+FE44 +> > *头部标识符* → U+FE47–U+FFFD +> > *头部标识符* → U+10000–U+1FFFD,U+20000–U+2FFFD,U+30000–U+3FFFD,或者 U+40000–U+4FFFD +> > *头部标识符* → U+50000–U+5FFFD,U+60000–U+6FFFD,U+70000–U+7FFFD,或者 U+80000–U+8FFFD +> > *头部标识符* → U+90000–U+9FFFD,U+A0000–U+AFFFD,U+B0000–U+BFFFD,或者 U+C0000–U+CFFFD +> > *头部标识符* → U+D0000–U+DFFFD 或者 U+E0000–U+EFFFD +> > *标识符字符* → 数值 0 - 9 +> > *标识符字符* → U+0300–U+036F,U+1DC0–U+1DFF,U+20D0–U+20FF,或者 U+FE20–U+FE2F +> > *标识符字符* → [*头部标识符*](#identifier-head) +> > +> > *标识符字符组* → [*标识符字符*](#identifier-character) [*标识符字符组*](#identifier-characters)可选 +> > *隐式参数名* → **$** [*十进制数字列表*](#decimal-digits) +> ## 关键字和标点符号 @@ -119,13 +163,19 @@ true // 布尔值字面量 > 字面量语法 > > *字面量* → [*数值字面量*](#numeric-literal) | [*字符串字面量*](#string-literal) | [*布尔值字面量*](#boolean-literal) | [*nil 字面量*](#nil-literal) +> > *数值字面量* → **-**可选 [*整数字面量*](#integer-literal) | **-**可选 [*浮点数字面量*](#floating-point-literal) +> > +> > *布尔值字面量* → **true** | **false** +> > +> > *nil 字面量* → **nil** +> ### 整数字面量 @@ -144,47 +194,81 @@ true // 布尔值字面量 > > *整数字面量* → [*二进制字面量*](#binary-literal) +> > *整数字面量* → [*八进制字面量*](#octal-literal) +> > *整数字面量* → [*十进制字面量*](#decimal-literal) +> > *整数字面量* → [*十六进制字面量*](#hexadecimal-literal) +> > *二进制字面量* → **0b** [*二进制数字*](#binary-digit) [*二进制字面量字符组*](#binary-literal-characters)可选 +> > +> > *二进制数字* → 数值 0 到 1 +> > +> > *二进制字面量字符* → [*二进制数字*](#binary-digit) | _ +> > +> > *二进制字面量字符组* → [*二进制字面量字符*](#binary-literal-character) [*二进制字面量字符组*](#binary-literal-characters)可选 +> > *八进制字面量* → **0o** [*八进字数字*](#octal-digit) [*八进制字符组*](#octal-literal-characters)可选 +> > +> > *八进字数字* → 数值 0 到 7 +> > +> > *八进制字符* → [*八进字数字*](#octal-digit) | _ +> > +> > *八进制字符组* → [*八进制字符*](#octal-literal-character) [*八进制字符组*](#octal-literal-characters)可选 +> > *十进制字面量* → [*十进制数字*](#decimal-digit) [*十进制字符组*](#decimal-literal-characters)可选 +> > +> > *十进制数字* → 数值 0 到 9 +> > +> > *十进制数字组* → [*十进制数字*](#decimal-digit) [*十进制数字组*](#decimal-digits)可选 +> > +> > *十进制字符* → [*十进制数字*](#decimal-digit) | _ +> > +> > *十进制字符组* → [*十进制字符*](#decimal-literal-character) [*十进制字符组*](#decimal-literal-characters)可选 +> > *十六进制字面量* → **0x** [*十六进制数字*](#hexadecimal-digit) [*十六进制字面量字符组*](#hexadecimal-literal-characters)可选 +> > +> > *十六进制数字* → 数值 0 到 9, 字母 a 到 f, 或 A 到 F +> > +> > *十六进制字符* → [*十六进制数字*](#hexadecimal-digit) | _ +> > +> > *十六进制字面量字符组* → [*十六进制字符*](#hexadecimal-literal-character) [*十六进制字面量字符组*](#hexadecimal-literal-characters)可选 +> ### 浮点数字面量 @@ -207,24 +291,37 @@ true // 布尔值字面量 > > *浮点数字面量* → [*十进制字面量*](#decimal-literal) [*十进制分数*](#decimal-fraction)可选 [*十进制指数*](#decimal-exponent)可选 +> > *浮点数字面量* → [*十六进制字面量*](#hexadecimal-literal) [*十六进制分数*](#hexadecimal-fraction)可选 [*十六进制指数*](#hexadecimal-exponent) +> > *十进制分数* → **.** [*十进制字面量*](#decimal-literal) +> > +> > *十进制指数* → [*十进制指数 e*](#floating-point-e) [*正负号*](#sign)可选 [*十进制字面量*](#decimal-literal) +> > *十六进制分数* → **.** [*十六进制数字*](#hexadecimal-digit) [*十六进制字面量字符组*](#hexadecimal-literal-characters)可选 +> > +> > *十六进制指数* → [*十六进制指数 p*](#floating-point-p) [*正负号*](#sign)可选 [*十进制字面量*](#decimal-literal) +> > *十进制指数 e* → **e** | **E** +> > +> > *十六进制指数 p* → **p** | **P** +> > +> > *正负号* → **+** | **-** +> ### 字符串字面量 @@ -232,13 +329,17 @@ true // 布尔值字面量 字符串字面量是被引号包括的一串字符组成。 单行字符串字面量被包在双引号中的一串字符组成,形式如下: > "`字符`" +> 字符串字面量中不能包含未转义的双引号(`"`)、未转义的反斜线(`\`)、回车符、换行符。 多行字符串字面量被包在三个双引号中的一串字符组成,形式如下: > """ +> > `字符` +> > """ +> 与单行字符串字面量不同的是,多行字符串字面量可以包含不转义的双引号("),回车以及换行。它不能包含三个非转义的连续双引号。 @@ -286,27 +387,43 @@ let textB = "Hello world" > > *字符串字面量* → [*静态字符串字面量*](#static-string-literal) | [*插值字符串字面量*](#interpolated-string-literal) +> > *静态字符串字面量* → **"**[*引用文本*](#quoted-text)可选**"** +> > +> > *引用文本* → [*引用文本项*](#quoted-text-item) [*引用文本*](#quoted-text)可选 +> > +> > *引用文本项* → [*转义字符*](#escaped-character) +> > *引用文本项* → 除了 **"**、**\\**、U+000A、U+000D 以外的所有 Unicode 字符 +> > *插值字符串字面量* → **"**[*插值文本*](#interpolated-text)可选**"** +> > +> > *插值文本* → [*插值文本项*](#interpolated-text-item) [*插值文本*](#interpolated-text)可选 +> > +> > *插值文本项* → **\\****(**[*表达式*](./04_Expressions.md)**)** | [*引用文本项*](#quoted-text-item) +> > *转义字符* → **\\****0** | **\\****\\** | **\t** | **\n** | **\r** | **\\"** | **\\'** +> > *转义字符* → **\u {** [*unicode 标量数字*](#unicode-scalar-digits) **}** +> > +> > *unicode 标量数字* → 一到八位的十六进制数字 +> ## 运算符 @@ -322,6 +439,7 @@ Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基 > 注意 > > 以下这些标记 `=`、`->`、`//`、`/*`、`*/`、`.`、`<`(前缀运算符)、`&`、`?`、`?`(中缀运算符)、`>`(后缀运算符)、`!` 、`?` 是被系统保留的。这些符号不能被重载,也不能用于自定义运算符。 +> 运算符两侧的空白被用来区分该运算符是否为前缀运算符、后缀运算符或二元运算符。规则总结如下: @@ -342,46 +460,82 @@ Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基 > > *运算符* → [*头部运算符*](#operator-head) [*运算符字符组*](#operator-characters)可选 +> > *运算符* → [*头部点运算符*](#dot-operator-head) [*点运算符字符组*](#dot-operator-characters)可选 +> > *头部运算符* → **/** | **=** | **-** | **+** | **!** | __*__ | **%** | **<** | **>** | **&** | **|** | **^** | **~** | **?** +> > *头部运算符* → U+00A1–U+00A7 +> > *头部运算符* → U+00A9 或 U+00AB +> > *头部运算符* → U+00AC 或 U+00AE +> > *头部运算符* → U+00B0–U+00B1,U+00B6,U+00BB,U+00BF,U+00D7,或 U+00F7 +> > *头部运算符* → U+2016–U+2017 或 U+2020–U+2027 +> > *头部运算符* → U+2030–U+203E +> > *头部运算符* → U+2041–U+2053 +> > *头部运算符* → U+2055–U+205E +> > *头部运算符* → U+2190–U+23FF +> > *头部运算符* → U+2500–U+2775 +> > *头部运算符* → U+2794–U+2BFF +> > *头部运算符* → U+2E00–U+2E7F +> > *头部运算符* → U+3001–U+3003 +> > *头部运算符* → U+3008–U+3030 +> > *运算符字符* → [*头部运算符*](#operator-head) +> > *运算符字符* → U+0300–U+036F +> > *运算符字符* → U+1DC0–U+1DFF +> > *运算符字符* → U+20D0–U+20FF +> > *运算符字符* → U+FE00–U+FE0F +> > *运算符字符* → U+FE20–U+FE2F +> > *运算符字符* → U+E0100–U+E01EF +> > +> > *运算符字符组* → [*运算符字符*](#operator-character) [*运算符字符组*](#operator-characters)可选 +> > *头部点运算符* → **..** +> > +> > *点运算符字符* → **.** | [*运算符字符*](#operator-character) +> > +> > *点运算符字符组* → [*点运算符字符*](#dot-operator-character) [*点运算符字符组*](#dot-operator-characters)可选 +> > *二元运算符* → [*运算符*](#operator) +> > +> > *前缀运算符* → [*运算符*](#operator) +> > +> > *后缀运算符* → [*运算符*](#operator) +> diff --git a/source/chapter3/03_Types.md b/source/chapter3/03_Types.md index 8245cf89..923ee9e8 100644 --- a/source/chapter3/03_Types.md +++ b/source/chapter3/03_Types.md @@ -29,17 +29,29 @@ Swift 语言存在两种类型:命名型类型和复合型类型。命名型 > > *类型* → [*数组类型*](#array-type) +> > *类型* → [*字典类型*](#dictionary-type) +> > *类型* → [*函数类型*](#function-type) +> > *类型* → [*类型标识*](#type-identifier) +> > *类型* → [*元组类型*](#tuple-type) +> > *类型* → [*可选类型*](#optional-type) +> > *类型* → [*隐式解析可选类型*](#implicitly-unwrapped-optional-type) +> > *类型* → [*协议合成类型*](#protocol-composition-type) +> > *类型* → [*元型类型*](#metatype-type) +> > *类型* → **任意类型** +> > *类型* → **自身类型** +> > *类型* → [*(类型)*](#type) +> ## 类型注解 @@ -59,6 +71,7 @@ func someFunction(a: Int) { /* ... */ } > > *类型注解* → **:** [*特性列表*](06_Attributes.html#attributes)可选 **输入输出参数**可选 [*类型*](#type) +> ## 类型标识符 @@ -84,8 +97,10 @@ var someValue: ExampleModule.MyType > > *类型标识符* → [*类型名称*](#type-name) [*泛型参数子句*](08_Generic_Parameters_and_Arguments.html#generic_argument_clause)可选 | [*类型名称*](#type-name) [*泛型参数子句*](08_Generic_Parameters_and_Arguments.html#generic_argument_clause)可选 **.** [*类型标识符*](#type-identifier) +> > *类型名称* → [*标识符*](02_Lexical_Structure.html#identifier) +> ## 元组类型 @@ -109,12 +124,16 @@ someTuple = (left: 5, right: 5) // 错误:命名类型不匹配 > > *元组类型* → **(** [*元组类型元素列表*](#tuple-type-element-list) 可选 **)** +> > *元组类型元素列表* → [*元组类型元素*](#tuple-type-element) | [*元组类型元素*](#tuple-type-element) **,** [*元组类型元素列表*](#tuple-type-element-list) +> > *元组类型元素* → [*元素名*](#element-name) [*类型注解*](#type-annotation) | [*类型*](#type) +> > *元素名* → [*标识符*](02_Lexical_Structure.html#identifier) +> ## 函数类型 @@ -122,16 +141,19 @@ someTuple = (left: 5, right: 5) // 错误:命名类型不匹配 函数类型表示一个函数、方法或闭包的类型,它由参数类型和返回值类型组成,中间用箭头(`->`)隔开: > `参数类型` -> `返回值类型` +> 参数类型是由逗号间隔的类型列表。由于参数类型和返回值类型可以是元组类型,所以函数类型支持多参数与多返回值的函数与方法。 你可以对函数参数 `() -> T`(其中 T 是任何类型)使用 `autoclosure` 特性。这会自动将参数表达式转化为闭包,表达式的结果即闭包返回值。这从语法结构上提供了一种便捷:延迟对表达式的求值,直到其值在函数体中被调用。以自动闭包做为参数的函数类型的例子详见 [自动闭包](../chapter2/07_Closures.html#autoclosures) 。 +> 函数类型可以拥有一个可变长参数作为参数类型中的最后一个参数。从语法角度上讲,可变长参数由一个基础类型名字紧随三个点(`...`)组成,如 `Int...`。可变长参数被认为是一个包含了基础类型元素的数组。即 `Int...` 就是 `[Int]`。关于使用可变长参数的例子,请参阅 [可变参数](../chapter2/06_Functions.html#variadic_parameters)。 为了指定一个 `in-out` 参数,可以在参数类型前加 `inout` 前缀。但是你不可以对可变长参数或返回值类型使用 `inout`。关于这种参数的详细讲解请参阅 [输入输出参数](../chapter2/06_Functions.html#in_out_parameters)。 如果一个函数类型只有一个形式参数而且形式参数的类型是元组类型,那么元组类型在写函数类型的时候必须用圆括号括起来。比如说,`((Int, Int)) -> Void` 是接收一个元组 `(Int, Int)` 作为形式参数的函数的类型。与此相反,不加括号的 `(Int, Int) -> Void` 是一个接收两个 `Int` 形式参数并且不返回任何值的函数的类型。相似地,因为 `Void` 是空元组类型 `()` 的别名, 函数类型 `(Void)-> Void` 与一个空元组的变量的函数类型 `(()) -> ()` 是一样的。但这些类型和无变量的函数类型 `() -> ()` 是不一样的。 +> 函数和方法中的变量名并不是函数类型的一部分。例如: @@ -141,6 +163,7 @@ func anotherFunction(left: Int, right: Int) {} func functionWithDifferentLabels(top: Int, bottom: Int) {} var f = someFunction // 函数 f 的类型为 (Int, Int) -> Void, 而不是 (left: Int, right: Int) -> Void. +> f = anotherFunction // 正确 f = functionWithDifferentLabels // 正确 @@ -155,11 +178,15 @@ f = functionWithDifferentNumberOfArguments // 错误 ```swift var operation: (lhs: Int, rhs: Int) -> Int // 错误 +> var operation: (_ lhs: Int, _ rhs: Int) -> Int // 正确 +> var operation: (Int, Int) -> Int // 正确 +> ``` 如果一个函数类型包涵多个箭头(->),那么函数类型将从右向左进行组合。例如,函数类型 `Int -> Int -> Int` 可以理解为 `Int -> (Int -> Int)`,也就是说,该函数类型的参数为 `Int` 类型,其返回类型是一个参数类型为 `Int`,返回类型为 `Int` 的函数类型。 +> 函数类型若要抛出错误就必须使用 `throws` 关键字来标记,若要重抛错误则必须使用 `rethrows` 关键字来标记。`throws` 关键字是函数类型的一部分,非抛出函数是抛出函数函数的一个子类型。因此,在使用抛出函数的地方也可以使用不抛出函数。抛出和重抛函数的相关描述见章节 [抛出函数与方法](05_Declarations.html#throwing_functions_and_methods) 和 [重抛函数与方法](05_Declarations.html#rethrowing_functions_and_methods)。 @@ -169,7 +196,9 @@ var operation: (Int, Int) -> Int // 正确 ```swift let external: (Any) -> Void = { _ in () } +> func takesTwoFunctions(first: (Any) -> Void, second: (Any) -> Void) { +> first(first) // 错误 second(second) // 错误 @@ -192,16 +221,23 @@ func takesTwoFunctions(first: (Any) -> Void, second: (Any) -> Void) { > > *函数类型* → [*特性列表*](06_Attributes.html#attributes)可选 [*函数类型子句*](#function-type-argument-clause) **throws**可选 **->** [*类型*](#type) +> > *函数类型* → [*特性列表*](06_Attributes.html#attributes)可选 [*函数类型子句*](#function-type-argument-clause) **rethrows­** **->** [*类型*](#type) +> > *函数类型子句* → (­)­ +> > *函数类型子句* → ([*函数类型参数列表*](#function-type-argument-list)*...*­可选)­ +> > *函数类型参数列表* → [*函数类型参数*](function-type-argument) | [*函数类型参数*](function-type-argument), [*函数类型参数列表*](#function-type-argument-list) +> > *函数类型参数* → [*特性列表*](06_Attributes.html#attributes)可选 **输入输出参数**可选 [*类型*](#type) | [*参数标签*](#argument-label) [*类型注解*](#type-annotation) +> > *参数标签* → [*标识符*](02_Lexical_Structure.html#identifier) +> ## 数组类型 @@ -209,11 +245,13 @@ func takesTwoFunctions(first: (Any) -> Void, second: (Any) -> Void) { Swift 语言为标准库中定义的 `Array` 类型提供了如下语法糖: > [`类型`] +> 换句话说,下面两个声明是等价的: ```swift let someArray: Array = ["Alex", "Brian", "Dave"] +> let someArray: [String] = ["Alex", "Brian", "Dave"] ``` @@ -233,6 +271,7 @@ var array3D: [[[Int]]] = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]] > > *数组类型* → **[** [*类型*](#type) **]** +> ## 字典类型 @@ -240,12 +279,14 @@ var array3D: [[[Int]]] = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]] Swift 语言为标准库中定义的 `Dictionary` 类型提供了如下语法糖: > [`键类型` : `值类型`] +> 换句话说,下面两个声明是等价的: ```swift let someDictionary: [String: Int] = ["Alex": 31, "Paul": 39] let someDictionary: Dictionary = ["Alex": 31, "Paul": 39] +> ``` 上面两种情况,常量 `someDictionary` 被声明为一个字典,其中键为 `String` 类型,值为 `Int` 类型。 @@ -260,6 +301,7 @@ let someDictionary: Dictionary = ["Alex": 31, "Paul": 39] > > *字典类型* → **[** [*类型*](#type) **:** [*类型*](#type) **]** +> ## 可选类型 @@ -292,6 +334,7 @@ optionalInteger! // 42 > > *可选类型* → [*类型*](#type) **?** +> ## 隐式解析可选类型 @@ -327,6 +370,7 @@ let implicitlyUnwrappedArray: [Int]! // 正确 > > *隐式解析可选类型* → [*类型*](#type) **!** +> ## 协议合成类型 @@ -336,6 +380,7 @@ let implicitlyUnwrappedArray: [Int]! // 正确 协议合成类型的形式如下: > `Protocol 1` & `Procotol 2` +> 协议合成类型允许你指定一个值,其类型符合多个协议的要求且不需要定义一个新的命名型协议来继承它想要符合的各个协议。比如,协议合成类型 `Protocol A & Protocol B & Protocol C` 等效于一个从 `Protocol A`,`Protocol B`,`Protocol C` 继承而来的新协议 `Protocol D`,很显然这样做有效率的多,甚至不需引入一个新名字。 @@ -345,10 +390,13 @@ let implicitlyUnwrappedArray: [Int]! // 正确 > > *协议合成类型* → [*协议标识符*](#protocol-identifier) & [*协议合成延续*](#protocol-composition-continuation) +> > *协议合成延续* → [*协议标识符*](#protocol-identifier) | [*协议合成类型*](#protocol-composition-type) +> > *协议标识符* → [*类型标识符*](#type-identifier) +> ## 元类型 @@ -399,6 +447,7 @@ let anotherInstance = metatype.init(string: "some string") > > *元类型* → [*类型*](#type) **.** **Type** | [*类型*](#type) **.** **Protocol** +> ## 类型继承子句 @@ -415,8 +464,10 @@ let anotherInstance = metatype.init(string: "some string") > > *类型继承子句* → **:** [*类型继承列表*](#type-inheritance-list) +> > *类型继承列表* → [*类型标识符*](#type-identifier) | [*类型标识符*](#type-identifier) **,** [*类型继承列表*](#type-inheritance-list) +> diff --git a/source/chapter3/04_Expressions.md b/source/chapter3/04_Expressions.md index e8e79ff6..6706aa5d 100644 --- a/source/chapter3/04_Expressions.md +++ b/source/chapter3/04_Expressions.md @@ -8,8 +8,10 @@ Swift 中存在四种表达式:前缀表达式,二元表达式,基本表 > > *表达式* → [*try 运算符*](#try-operator)可选 [*前缀表达式*](#prefix-expression) [*二元表达式列表*](#binary-expressions)可选 +> > *表达式列表* → [*表达式*](#expression) | [*表达式*](#expression) **,** [*表达式列表*](#expression-list) +> ## 前缀表达式 @@ -26,9 +28,12 @@ Swift 中存在四种表达式:前缀表达式,二元表达式,基本表 > > *前缀表达式* → [*前缀运算符*](02_Lexical_Structure.md#prefix-operator)可选 [*后缀表达式*](#postfix-expression) +> > *前缀表达式* → [*输入输出表达式*](#in-out-expression) +> > *输入输出表达式* → **&** [*标识符*](02_Lexical_Structure.md#identifier) +> ### Try 运算符 @@ -36,16 +41,19 @@ Swift 中存在四种表达式:前缀表达式,二元表达式,基本表 try 表达式由 `try` 运算符加上紧随其后的可抛出错误的表达式组成,形式如下: > try `可抛出错误的表达式` +> 可选的 try 表达式由 `try?` 运算符加上紧随其后的可抛出错误的表达式组成,形式如下: > try? `可抛出错误的表达式` +> 如果可抛出错误的表达式没有抛出错误,整个表达式返回的可选值将包含可抛出错误的表达式的返回值,否则,该可选值为 `nil`。 强制的 try 表达式由 `try!` 运算符加上紧随其后的可抛出错误的表达式组成,形式如下: > try! `可抛出错误的表达式` +> 如果可抛出错误的表达式抛出了错误,将会引发运行时错误。 @@ -64,6 +72,7 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try > > *try 运算符* → **try** | **try?** | **try!** +> ## 二元表达式 @@ -71,6 +80,7 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try *二元表达式*由中缀运算符和左右参数表达式组成。形式如下: > `左侧参数` `二元运算符` `右侧参数` +> 关于这些运算符的更多信息,请参阅 [基本运算符](../chapter2/02_Basic_Operators.html) 和 [高级运算符](../chapter2/26_Advanced_Operators.html)。 @@ -79,16 +89,22 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try > 注意 > > 在解析时,一个二元表达式将作为一个扁平列表表示,然后根据运算符的优先级,再进一步进行组合。例如,`2 + 3 * 5` 首先被看作具有五个元素的列表,即 `2`、`+`、`3`、`*`、`5`,随后根据运算符优先级组合为 `(2 + (3 * 5))`。 +> > 二元表达式语法 > > *二元表达式* → [*二元运算符*](02_Lexical_Structure.md#binary-operator) [*前缀表达式*](#prefix-expression) +> > *二元表达式* → [*赋值运算符*](#assignment-operator) [*try 运算符*](#try-operator)可选 [*前缀表达式*](#prefix-expression) +> > *二元表达式* → [*条件运算符*](#conditional-operator) [*try 运算符*](#try-operator)可选 [*前缀表达式*](#prefix-expression) +> > *二元表达式* → [*类型转换运算符*](#type-casting-operator) +> > *二元表达式列表* → [*二元表达式*](#binary-expression) [*二元表达式列表*](#binary-expressions)可选 +> ### 赋值表达式 @@ -96,6 +112,7 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try 赋值表达式会为某个给定的表达式赋值,形式如下; > `表达式` = `值` +> 右边的值会被赋值给左边的表达式。如果左边表达式是一个元组,那么右边必须是一个具有同样元素个数的元组。(嵌套元组也是允许的。)右边的值中的每一部分都会被赋值给左边的表达式中的相应部分。例如: @@ -110,6 +127,7 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try > > *赋值运算符* → **=** +> ### 三元条件运算符 @@ -117,6 +135,7 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try *三元条件运算符*会根据条件来对两个给定表达式中的一个进行求值,形式如下: > `条件` ? `表达式(条件为真则使用)` : `表达式(条件为假则使用)` +> 如果条件为真,那么对第一个表达式进行求值并返回结果。否则,对第二个表达式进行求值并返回结果。未使用的表达式不会进行求值。 @@ -126,6 +145,7 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try > > *三元条件运算符* → **?** [*表达式*](#expression) **:** +> ### 类型转换运算符 @@ -139,6 +159,7 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try > `表达式` as? `类型` > > `表达式` as! `类型` +> `is` 运算符在运行时检查表达式能否向下转化为指定的类型,如果可以则返回 `ture`,否则返回 `false`。 @@ -171,9 +192,13 @@ f(x as Any) > 类型转换运算符语法 > > *类型转换运算符* → **is** [*类型*](03_Types.md#type) +> > *类型转换运算符* → **as** [*类型*](03_Types.md#type) +> > *类型转换运算符* → **as** **?** [*类型*](03_Types.md#type) +> > *类型转换运算符* → **as** **!** [*类型*](03_Types.md#type) +> ## 基本表达式 @@ -184,15 +209,25 @@ f(x as Any) > > *基本表达式* → [*标识符*](02_Lexical_Structure.md#identifier) [*泛型实参子句*](08_Generic_Parameters_and_Arguments.md#generic-argument-clause)可选 +> > *基本表达式* → [*字面量表达式*](#literal-expression) +> > *基本表达式* → [*self 表达式*](#self-expression) +> > *基本表达式* → [*父类表达式*](#superclass-expression) +> > *基本表达式* → [*闭包表达式*](#closure-expression) +> > *基本表达式* → [*圆括号表达式*](#parenthesized-expression) +> > *基本表达式* → [*隐式成员表达式*](#implicit-member-expression) +> > *基本表达式* → [*通配符表达式*](#wildcard-expression) +> > *基本表达式* → [*选择器表达式*](#selector-expression) +> > *基本表达式* → [*key-path字符串表达式*](#key-patch-string-expression) +> ### 字面量表达式 @@ -224,6 +259,7 @@ myFunction() // 打印“myFunction()” 数组字面量是值的有序集合,形式如下: > [`值 1`, `值 2`, `...`] +> 数组中的最后一个表达式可以紧跟一个逗号。数组字面量的类型是 `[T]`,这个 `T` 就是数组中元素的类型。如果数组中包含多种类型,`T` 则是跟这些类型最近的的公共父类型。空数组字面量由一组方括号定义,可用来创建特定类型的空数组。 @@ -234,6 +270,7 @@ var emptyArray: [Double] = [] 字典字面量是一个包含无序键值对的集合,形式如下: > [`键 1` : `值 1`, `键 2` : `值 2`, `...`] +> 字典中的最后一个表达式可以紧跟一个逗号。字典字面量的类型是 `[Key : Value]`,`Key` 表示键的类型,`Value` 表示值的类型。如果字典中包含多种类型,那么 `Key` 表示的类型则为所有键最接近的公共父类型,`Value` 与之相似。一个空的字典字面量由方括号中加一个冒号组成(`[:]`),从而与空数组字面量区分开,可以使用空字典字面量来创建特定类型的字典。 @@ -246,40 +283,66 @@ Xcode 使用 playground 字面量对程序编辑器中的颜色、文件或者 更多关于在 Xcode 中使用 playground 字面量的信息,请参阅 [添加颜色、文件或图片字面量](https://help.apple.com/xcode/mac/current/#/dev4c60242fc) > 字面量表达式语法 +> > > +> > *字面量表达式* → [*字面量*](02_Lexical_Structure.md#literal) +> > *字面量表达式* → [*数组字面量*](#array-literal) | [*字典字面量*](#dictionary-literal) | [*练习场字面量*](#playground-literal) +> > *字面量表达式* → **#file** | **#line** | **#column** | **#function** +> > +> > *数组字面量* → [[*数组字面量项列表*](#array-literal-items)可选 **]** +> > +> > *数组字面量项列表* → [*数组字面量项*](#array-literal-item) **,**可选 | [*数组字面量项*](#array-literal-item) **,** [*数组字面量项列表*](#array-literal-items) +> > +> > *数组字面量项* → [*表达式*](#expression) +> > > +> > *字典字面量* → [[*字典字面量项列表*](#dictionary-literal-items) **]** | **[** **:** **]** +> > +> > *字典字面量项列表* → [*字典字面量项*](#dictionary-literal-item) **,**可选 | [*字典字面量项*](#dictionary-literal-item) **,** [*字典字面量项列表*](#dictionary-literal-items) +> > +> > *字典字面量项* → [*表达式*](#expression) **:** [*表达式*](#expression)。 +> > +> > *playground 字面量* → **#colorLiteral ( red : [*表达式*](#expression) , green :[*表达式*](#expression) [*表达式*](#e[*表达式*](#expression) xpression) , blue :[*表达式*](#expression) , alpha : [*表达式*](#expression) )** +> > *playground 字面量* → **#fileLiteral ( resourceName : [*表达式*](#expression) )** +> > playground 字面量* → **#imageLiteral ( resourceName : [*表达式*](#expression) )** +> ### Self 表达式 `self` 表达式是对当前类型或者当前实例的显式引用,它有如下形式: > self +> > self.`成员名称` +> > self[`下标索引`] +> > self(`构造器参数`) +> > self.init(`构造器参数`) +> 如果在构造器、下标、实例方法中,`self` 引用的是当前类型的实例。在一个类型方法中,`self` 引用的是当前的类型。 @@ -309,13 +372,17 @@ struct Point { > > *self 表达式* → **self** | [*self 方法表达式*](#self-method-expression) | [*self 下标表达式*](#self-subscript-expression) | [*self 构造器表达式*](#self-initializer-expression) +> > > *self 方法表达式* → **self** **.** [*标识符*](02_Lexical_Structure.md#identifier) +> > *self 下标表达式* → **self** **[** [*函数调用参数表*](#function-call-argument-list­) **]** +> > *self 构造器表达式* → **self** **.** **init** +> ### 父类表达式 @@ -323,8 +390,11 @@ struct Point { *父类*表达式可以使我们在某个类中访问它的父类,它有如下形式: > super.`成员名称` +> > super[`下标索引`] +> > super.init(`构造器参数`) +> 第一种形式用来访问父类的某个成员,第二种形式用来访问父类的下标,第三种形式用来访问父类的构造器。 @@ -337,10 +407,13 @@ struct Point { > > *父类方法表达式* → **super** **.** [*标识符*](02_Lexical_Structure.md#identifier) +> > *父类下标表达式* → **super** [[*函数调用参数表*](#function-call-argument-list­) **]** +> > *父类构造器表达式* → **super** **.** **init** +> ### 闭包表达式 @@ -349,6 +422,7 @@ struct Point { ```swift { (parameters) -> return type in +> statements } ``` @@ -366,6 +440,7 @@ struct Point { ```swift myFunction { (x: Int, y: Int) -> Int in +> return x + y } @@ -447,27 +522,44 @@ myFunction { [weak parent = self.parent] in print(parent!.title) } 关于闭包表达式的更多信息和例子,请参阅 [闭包表达式](../chapter2/07_Closures.html#closure_expressions)。关于捕获列表的更多信息和例子,请参阅 [解决闭包引起的循环强引用](../chapter2/23_Automatic_Reference_Counting.html#resolving_strong_reference_cycles_for_closures)。 > 闭包表达式语法 +> > > +> > *闭包表达式* → **{** [*闭包签名*](#closure-signature)可选 [*语句*](#statements) **}** +> > > +> > > 闭包签名* → [*参数子句*](#parameter-clause) [*函数结果*](05_Declarations.html#function-result)可选 **in** +> > *闭包签名* → [*标识符列表*](#identifier-list) [*函数结果*](05_Declarations.md#function-result)可选 **in** +> > *闭包签名* → [*捕获列表*](#capture-list) [*参数子句*](05_Declarations.md#parameter-clause) [*函数结果*](05_Declarations.md#function-result)可选 **in** +> > *闭包签名* → [*捕获列表*](#capture-list) [*标识符列表*](02_Lexical_Structure.md#identifier-list) [*函数结果*](05_Declarations.md#function-result)可选 **in** +> > *闭包签名* → [*捕获列表*](#capture-list) **in** +> > > +> > > 捕获列表* → [ [*捕获列表项列表*](#capture-list-items) **]** +> > +> > *捕获列表项列表* → [*捕获列表项*](#capture-list-item) | [*捕获列表项*](#capture-list-item) **,** [*捕获列表项列表*](#capture-list-items) +> > +> > *捕获列表项* → [*捕获说明符*](#capture-specifier)可选 [*表达式*](#expression) +> > +> > *捕获说明符* → **weak** | **unowned** | **unowned(safe)** | **unowned(unsafe)** +> ### 隐式成员表达式 @@ -475,6 +567,7 @@ myFunction { [weak parent = self.parent] in print(parent!.title) } 若类型可被推断出来,可以使用*隐式成员表达式*来访问某个类型的成员(例如某个枚举成员或某个类型方法),形式如下: > .`成员名称` +> 例如: @@ -487,6 +580,7 @@ x = .AnotherValue > > *隐式成员表达式* → **.** [*标识符*](02_Lexical_Structure.md#identifier) +> ### 圆括号表达式 @@ -497,6 +591,7 @@ x = .AnotherValue > > *圆括号表达式* → **( [*表达式*](#expression) )** +> ### 元组表达式 @@ -504,22 +599,28 @@ x = .AnotherValue *元组表达式*由圆括号和其中多个逗号分隔的子表达式组成。每个子表达式前面可以有一个标识符,用冒号隔开。元组表达式形式如下: > (`标识符 1` : `表达式 1`, `标识符 2` : `表达式 2`, `...`) +> 元组表达式可以一个表达式都没有,也可以包含两个或是更多的表达式。单个表达式用括号括起来就是括号表达式了。 > 注意 +> > > 在 Swift 中,空的元组表达式和空的元组类型都写作 `()`。由于 `Void` 是 `()` 的类型别名,因此可以使用它来表示空的元组类型。虽然如此,`Void` 就像所有的类型别名一样,永远是一个类型——不能表示空的元组表达式。 +> > 元组表达式语法 > > *元组表达式* → **( )** | **(**[*元组元素*](#tuple-element), [*元组元素列表*](#tuple-element-list) **)** +> > *元组元素列表* → [*元组元素*](#tuple-element) | [*元组元素*](#tuple-element) **,** [*元组元素列表*](#tuple-element-list) +> > *元组元素* → [*表达式*](#expression) | [*标识符*](identifier) **:** [*表达式*](#expression) +> @@ -536,6 +637,7 @@ x = .AnotherValue > > *通配符表达式* → **_** +> @@ -544,6 +646,7 @@ x = .AnotherValue Key-path 表达式引用一个类型的属性或下标。在动态语言中使场景可以使用 Key-path 表达式,例如观察键值对。格式为: > **\类型名.路径** +> *类型名*是一个具体类型的名称,包含任何泛型参数,例如 `String`、`[Int]` 或 `Set`。 @@ -620,6 +723,7 @@ let myGreeting = greetings[keyPath: \[String].[1]] var index = 2 let path = \[String].[index] let fn: ([String]) -> String = { strings in strings[index] } +> print(greetings[keyPath: path]) // 打印 "bonjour" @@ -668,17 +772,26 @@ print(interestingNumbers[keyPath: \[String: [Int]].["hexagonal"]!.count.bitWidth 关于更多如何使用 key path 与 Objective-C APIs 交互的信息,请参阅 [在 Swift 中使用 Objective-C 运行时特性](https://developer.apple.com/documentation/swift/using_objective_c_runtime_features_in_swift)。关于更多 key-value 编程和 key-value 观察的信息,请参阅 [Key-Value 编程](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueCoding/index.html#//apple_ref/doc/uid/10000107i) 和 [Key-Value 观察编程](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html#//apple_ref/doc/uid/10000177i) > key-path 表达式语法 +> > > +> > *key-path 表达式* → **\\** [类型](03_Types.md#type)可选 **.** [多个 key-path 组件](#key-path-components) +> > +> > *多个 key-path 组件* → [key-path 组件](#key-path-component) | [key-path 组件](#key-path-component) **.** [多个 key-path 组件](#key-path-components) +> > +> > *key-path 组件* → [标识符](02_Lexical_Structure.html#identifier) [多个 key-path 后缀](#key-path-postfixes)可选 | [多个 key-path 后缀](#key-path-postfixes) +> > -> *多个 key-path 后缀* → [key-path 后缀](#key-path-postfix) [多个 key-path 后缀](#key-path-postfixes)可选 -> +> +> *多个 key-path 后缀* → [key-path 后缀](#key-path-postfix) [多个 key-path 后缀](#key-path-postfixes)可选 +> > *key-path 后缀* → **?** | **!** | **self** | **\[** [函数调用参数表](#function-call-argument-list) **\]** +> @@ -689,6 +802,7 @@ print(interestingNumbers[keyPath: \[String: [Int]].["hexagonal"]!.count.bitWidth *选择器表达式*可以让你通过选择器来引用在 Objective-C 中方法(method)和属性(property)的 setter 和 getter 方法。 > \#selector(方法名) +> \#selector(getter: 属性名) \#selector(setter: 属性名) @@ -718,6 +832,7 @@ extension SomeClass { func doSomething(_ x: String) { } } let anotherSelector = #selector(SomeClass.doSomething(_:) as (SomeClass) -> (String) -> Void) +> ``` 由于选择器是在编译时创建的,因此编译器可以检查方法或者属性是否存在,以及是否在运行时暴露给了 Objective-C 。 @@ -725,14 +840,19 @@ let anotherSelector = #selector(SomeClass.doSomething(_:) as (SomeClass) -> (Str > 注意 > > 虽然方法名或者属性名是个表达式,但是它不会被求值。 +> 更多关于如何在 Swift 代码中使用选择器来与 Objective-C API 进行交互的信息,请参阅 [在 Swift 中使用 Objective-C 运行时特性](https://developer.apple.com/documentation/swift/using_objective_c_runtime_features_in_swift)。 > 选择器表达式语法 +> > *选择器表达式* → __#selector__ **(** [*表达式*](#expression) **)** +> > *选择器表达式* → __#selector__ **(** [*getter:表达式*](#expression) **)** +> > *选择器表达式* → __#selector__ **(** [*setter:表达式*](#expression) **)** +> @@ -741,6 +861,7 @@ let anotherSelector = #selector(SomeClass.doSomething(_:) as (SomeClass) -> (Str key-path 字符串表达式可以访问一个引用 Objective-C 属性的字符串,通常在 key-value 编程和 key-value 观察 APIs 中使用。其格式如下: > `#keyPath` ( `属性名` ) +> 属性名必须是一个可以在 Objective-C 运行时使用的属性的引用。在编译期,key-path 字符串表达式会被一个字符串字面量替换。例如: @@ -766,6 +887,7 @@ if let value = c.value(forKey: keyPath) { ```swift extension SomeClass { func getSomeKeyPath() -> String { +> return #keyPath(someProperty) } } @@ -778,12 +900,17 @@ print(keyPath == c.getSomeKeyPath()) 关于更多如何使用 key path 与 Objective-C APIs 交互的信息,请参阅 [在 Swift 中使用 Objective-C 运行时特性](https://developer.apple.com/documentation/swift/using_objective_c_runtime_features_in_swift)。关于更多 key-value 编程和 key-value 观察的信息,请参阅 [Key-Value 编程](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueCoding/index.html#//apple_ref/doc/uid/10000107i) 和 [Key-Value 观察编程](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html#//apple_ref/doc/uid/10000177i) > 注意 +> > > 尽管*属性名*是一个表达式,但它永远不会被求值 +> > key-path 字符串表达式语法 +> > +> > *key-path 字符串表达式* → **#keyPath (** [表达式](#expression) **)** +> @@ -796,17 +923,28 @@ print(keyPath == c.getSomeKeyPath()) 关于 Swift 标准库提供的运算符的更多信息,请参阅 [运算符定义](https://developer.apple.com/documentation/swift/operator_declarations)。 > 后缀表达式语法 +> > *后缀表达式* → [*基本表达式*](#primary-expression) +> > *后缀表达式* → [*后缀表达式*](#postfix-expression) [*后缀运算符*](02_Lexical_Structure.md#postfix-operator) +> > *后缀表达式* → [*函数调用表达式*](#function-call-expression) +> > *后缀表达式* → [*构造器表达式*](#initializer-expression) +> > *后缀表达式* → [*显式成员表达式*](#explicit-member-expression) +> > *后缀表达式* → [*后缀 self 表达式*](#postfix-self-expression) +> > *后缀表达式* → [*dynamicType 表达式*](#dynamic-type-expression) +> > *后缀表达式* → [*下标表达式*](#subscript-expression) +> > *后缀表达式* → [*强制取值表达式*](#forced-value-expression) +> > *后缀表达式* → [*可选链表达式*](#optional-chaining-expression) +> ### 函数调用表达式 @@ -814,12 +952,14 @@ print(keyPath == c.getSomeKeyPath()) *函数调用表达式*由函数名和参数列表组成,形式如下: > `函数名`(`参数 1`, `参数 2`) +> 函数名可以是值为函数类型的任意表达式。 如果函数声明中指定了参数的名字,那么在调用的时候也必须得写出来。这种函数调用表达式具有以下形式: > `函数名`(`参数名 1`: `参数 1`, `参数名 2`: `参数 2`) +> 如果函数的最后一个参数是函数类型,可以在函数调用表达式的尾部(右圆括号之后)加上一个闭包,该闭包会作为函数的最后一个参数。如下两种写法是等价的: @@ -838,20 +978,33 @@ myData.someMethod {$0 == 13} ``` > 函数调用表达式语法 +> > +> > *函数调用表达式* → [*后缀表达式*](#postfix-expression) [*函数调用参数子句*](#function-call-argument-clause) +> > *函数调用表达式* → [*后缀表达式*](#postfix-expression) [*函数调用参数子句*](#function-call-argument-clause)可选 [*尾随闭包*](#trailing-closure) +> > > +> > *函数调用参数子句* → **(** **)** | **(** [*函数调用参数表*](#function-call-argument-list) **)** +> > +> > *函数调用参数表* → [函数调用参数](#function-call-argument) | [函数调用参数](#function-call-argument) **,** [*函数调用参数表*](#function-call-argument-list) +> > +> > *函数调用参数* → [表达式](#expression) | [标识符](02_Lexical_Structure.html#identifier) **:** [*表达式*](#expression) +> > *函数调用参数* → [运算符](02_Lexical_Structure.html#operator) | [标识符](02_Lexical_Structure.html#identifier) **:** [*运算符*](02_Lexical_Structure.html#operator) +> > > +> > *尾随闭包* → [*闭包表达式*](#closure-expression) +> ### 构造器表达式 @@ -859,6 +1012,7 @@ myData.someMethod {$0 == 13} *构造器表达式*用于访问某个类型的构造器,形式如下: > `表达式`.init(`构造器参数`) +> 你可以在函数调用表达式中使用构造器表达式来初始化某个类型的新实例。也可以使用构造器表达式来代理给父类构造器。 @@ -876,6 +1030,7 @@ class SomeSubClass: SomeSuperClass { ```swift // 类型注解是必须的,因为 String 类型有多种构造器 let initializer: Int -> String = String.init +> let oneTwoThree = [1, 2, 3].map(initializer).reduce("", combine: +) print(oneTwoThree) // 打印“123” @@ -892,9 +1047,12 @@ let s3 = someValue.dynamicType.init(data: 7) // 有效 ``` > 构造器表达式语法 +> > *构造器表达式* → [*后缀表达式*](#postfix-expression) **.** **init** +> > *构造器表达式* → [*后缀表达式*](#postfix-expression) **.** **init** **(** [*参数名称*](#argument-names) **)** +> ### 显式成员表达式 @@ -902,6 +1060,7 @@ let s3 = someValue.dynamicType.init(data: 7) // 有效 *显式成员表达式*允许我们访问命名类型、元组或者模块的成员,其形式如下: > `表达式`.`成员名` +> 命名类型的某个成员在原始实现或者扩展中定义,例如: @@ -942,6 +1101,7 @@ let b = instance.someMethod(_:y:) // 无歧义 let d = instance.overloadedMethod // 有歧义 let d = instance.overloadedMethod(_:y:) // 有歧义 let d: (Int, Bool) -> Void = instance.overloadedMethod(_:y:) // 无歧义 +> ``` 如果点号(`.`)出现在行首,它会被视为显式成员表达式的一部分,而不是隐式成员表达式的一部分。例如如下代码所展示的被分为多行的链式方法调用: @@ -950,19 +1110,25 @@ let d: (Int, Bool) -> Void = instance.overloadedMethod(_:y:) // 无歧义 let x = [10, 3, 20, 15, 4] .sort() .filter { $0 > 5 } +> .map { $0 * 100 } ``` > 显式成员表达式语法 +> > *显式成员表达式* → [*后缀表达式*](#postfix-expression) **.** [*十进制数字*] (02_Lexical_Structure.html#decimal-digit) +> > *显式成员表达式* → [*后缀表达式*](#postfix-expression) **.** [*标识符*](02_Lexical_Structure.html#identifier) [*泛型实参子句*](08_Generic_Parameters_and_Arguments.html#generic-argument-clause)可选
+> > *显式成员表达式* → [*后缀表达式*](#postfix-expression) **.** [*标识符*] (02_Lexical_Structure.html#identifier) **(** [*参数名称*](#argument-names) **)** > > *参数名称* → [*参数名*](#argument-name) [*参数名称*](#argument-names)可选
+> > *参数名* → [*标识符*](02_Lexical_Structure.html#identifier) **:** +> ### 后缀 self 表达式 @@ -970,7 +1136,9 @@ let x = [10, 3, 20, 15, 4] 后缀 `self` 表达式由某个表达式或类型名紧跟 `.self` 组成,其形式如下: > `表达式`.self +> > `类型`.self +> 第一种形式返回表达式的值。例如:`x.self` 返回 `x`。 @@ -980,6 +1148,7 @@ let x = [10, 3, 20, 15, 4] > > *后缀 self 表达式* → [*后缀表达式*](#postfix-expression) **.** **self** +> @@ -988,6 +1157,7 @@ let x = [10, 3, 20, 15, 4] 可通过*下标表达式*访问相应的下标,形式如下: > `表达式`[`索引表达式`] +> 要获取下标表达式的值,可将索引表达式作为下标表达式的参数来调用下标 getter。下标 setter 的调用方式与之一样。 @@ -997,6 +1167,7 @@ let x = [10, 3, 20, 15, 4] > > *下标表达式* → [*后缀表达式*](#postfix-expression) **[** [*表达式列表*](#expression-list) **]** +> ### 强制取值表达式 @@ -1004,6 +1175,7 @@ let x = [10, 3, 20, 15, 4] 当你确定可选值不是 `nil` 时,可以使用*强制取值表达式*来强制解包,形式如下: > `表达式`! +> 如果该表达式的值不是 `nil`,则返回解包后的值。否则,抛出运行时错误。 @@ -1023,6 +1195,7 @@ someDictionary["a"]![0] = 100 > > *强制取值表达式* → [*后缀表达式*](#postfix-expression) **!** +> ### 可选链表达式 @@ -1030,6 +1203,7 @@ someDictionary["a"]![0] = 100 *可选链表达式*提供了一种使用可选值的便捷方法,形式如下: > `表达式`? +> 后缀 `?` 运算符会根据表达式生成可选链表达式而不会改变表达式的值。 @@ -1055,6 +1229,7 @@ if let unwrappedC = c { ```swift func someFunctionWithSideEffects() -> Int { +> // 译者注:为了能看出此函数是否被执行,加上了一句打印 print("someFunctionWithSideEffects") return 42 @@ -1074,3 +1249,4 @@ someDictionary["a"]?[0] = someFunctionWithSideEffects() > > *可选链表达式* → [*后缀表达式*](#postfix-expression) **?** +> diff --git a/source/chapter3/05_Statements.md b/source/chapter3/05_Statements.md index 44fb3c6a..4e42c66d 100755 --- a/source/chapter3/05_Statements.md +++ b/source/chapter3/05_Statements.md @@ -8,18 +8,29 @@ 是否将分号(`;`)添加到语句的末尾是可选的。但若要在同一行内写多条独立语句,则必须使用分号。 > 语句语法 +> > *语句* → [*表达式*](04_Expressions.md#expression) **;**可选 +> > *语句* → [*声明*](05_Declarations.md#declaration) **;**可选 +> > *语句* → [*循环语句*](#loop-statement) **;**可选 +> > *语句* → [*分支语句*](#branch-statement) **;**可选 +> > *语句* → [*带标签的语句*](#labeled-statement) **;**可选 +> > *语句* → [*控制转移语句*](#control-transfer-statement) **;**可选 +> > *语句* → [*defer 语句*](#defer-statement) **;**可选 +> > *语句* → [*do 语句*](#do-statement) **:**可选 +> > *语句* → [*编译器控制语句*](#compiler-control-statement) +> > *多条语句* → [*语句*](#statement) [*多条语句*](#statements)可选 +> ## 循环语句 @@ -29,11 +40,15 @@ 通过 `break` 语句和 `continue` 语句可以改变循环语句的控制流。有关这两条语句,详情参见 [Break 语句](#break_statement) 和 [Continue 语句](#continue_statement)。 > 循环语句语法 +> > > *循环语句* → [*for-in 语句*](#for-in-statement) +> > *循环语句* → [*while 语句*](#while-statement) +> > *循环语句* → [*repeat-while 语句*](#repeat-while-statement) +> ### For-In 语句 @@ -51,9 +66,11 @@ for item in collection { `for-in` 语句在循环开始前会调用集合表达式(`collection expression`)的 `makeIterator()` 方法来获取一个实现了 `IteratorProtocol` 协议的迭代器类型。接下来循环开始,反复调用该迭代器的 `next()` 方法。如果其返回值不是 `nil`,它将会被赋给 `item`,然后执行循环体语句,执行完毕后回到循环开始处,继续重复这一过程;否则,既不会赋值也不会执行循环体语句,`for-in` 语句至此执行完毕。 > for-in 语句语法 +> > > *for-in 语句* → **for** **case**可选 [*模式*](07_Patterns.md#pattern) **in** [*表达式*](04_Expressions.md#expression) [*where 子句*](#where-clause)可选 [*代码块*](05_Declarations.md#code-block) +> ### While 语句 @@ -78,19 +95,25 @@ while condition { 条件的结果必须是 Bool 类型或者 Bool 的桥接类型。另外,条件语句也可以使用可选绑定,请参阅 [可选绑定](../chapter2/01_The_Basics.md#optional_binding)。 > while 语句语法 +> > > *while 语句* → **while** [*条件子句*](#condition-clause) [*代码块*](05_Declarations.md#code-block) +> > *条件子句* → [*表达式*](04_Expressions.md#expression) | [*表达式*](04_Expressions.md#expression) **,** [*条件列表*](#condition-list) +> > *条件* → [*表达式*](04_Expressions.md#expression) |[*可用性条件*](#availability-condition) | [*case 条件*](#case-condition) | [*可选绑定条件*](#optional-binding-condition) +> > > *case 条件* → **case** [*模式*](07_Patterns.md#pattern) [*构造器*](05_Declarations.md#initializer) +> > *可选绑定条件* → **let** [*模式*](07_Patterns.md#pattern) [*构造器*](05_Declarations.md#initializer) | **var** [*模式*](07_Patterns.md#pattern) [*构造器*](05_Declarations.md#initializer) +> ### Repeat-While 语句 @@ -115,9 +138,11 @@ repeat { 条件的结果必须是 Bool 类型或者 Bool 的桥接类型。另外,条件语句也可以使用可选绑定,请参阅 [可选绑定](../chapter2/01_The_Basics.md#optional_binding)。 > repeat-while 语句语法 +> > > *repeat-while 语句* → **repeat** [*代码块*](05_Declarations.md#code-block) **while** [*表达式*](04_Expressions.md#expression) +> ## 分支语句 @@ -127,11 +152,15 @@ repeat { `if` 语句和 `switch` 语句中的控制流可以用 `break` 语句改变,请参阅 [Break 语句](#break_statement)。 > 分支语句语法 +> > > *分支语句* → [*if 语句*](#if-statement) +> > *分支语句* → [*guard 语句*](#guard-statement) +> > *分支语句* → [*switch 语句*](#switch-statement) +> ### If 语句 @@ -173,11 +202,14 @@ if condition 1 { `if` 语句中条件的结果必须是 Bool 类型或者 Bool 的桥接类型。另外,条件语句也可以使用可选绑定,请参阅 [可选绑定](../chapter2/01_The_Basics.md#optional_binding)。 > if 语句语法 +> > > *if 语句* → **if** [*条件子句*](#condition-clause) [*代码块*](05_Declarations.md#code-block) [*else 子句*](#else-clause)可选 +> > *else 子句* → **else** [*代码块*](05_Declarations.md#code-block) | **else** [*if 语句*](#if-statement) +> ### Guard 语句 @@ -206,9 +238,11 @@ guard condition else { 关于控制转移语句,请参阅 [控制转移语句](#control_transfer_statements)。关于 `Never` 返回类型的函数,请参阅 [永不返回的函数](05_Declarations.md#rethrowing_functions_and_methods)。 > guard 语句语法 +> > > *guard 语句* → **guard** [*条件子句*](#condition-clause) **else** [*代码块*] (05_Declarations.html#code-block) +> ### Switch 语句 @@ -279,36 +313,50 @@ case .suppressed: 当匹配到的 `case` 中的代码执行完毕后,`switch` 语句会直接退出,而不会继续执行下一个 `case` 。这就意味着,如果你想执行下一个 `case`,需要显式地在当前 `case` 中使用 `fallthrough` 语句。关于 `fallthrough` 语句的更多信息,请参阅 [Fallthrough 语句](#fallthrough_statements)。 > switch 语句语法 +> > > *switch 语句* → **switch** [*表达式*](04_Expressions.html#expression) **{** [*switch-case 列表*](#switch-cases)可选 **}** +> > *switch case 列表* → [*switch-case*](#switch-case) [*switch-case 列表*](#switch-cases)可选 +> > *switch case* → [*case 标签*](#case-label) [*多条语句*](#statements) | [*default 标签*](#default-label) [*多条语句*](#statements) | [*conditional-switch-case*](#conditional-switch-case-label) +> > *case 标签* → [*属性*](#switch-case-attributes-label)可选 **case** [*case 项列表*](#case-item-list) **:** +> > *case 项列表* → [*模式*](07_Patterns.md#pattern) [*where 子句*](#where-clause)可选 | [*模式*](07_Patterns.md#pattern) [*where 子句*](#where-clause)可选 **,** [*case 项列表*](#case-item-list) +> > *default 标签* → [*属性*](#switch-case-attributes-label)可选 **default** **:** +> > > *where-clause* → **where** [*where 表达式*](#where-expression) +> > *where-expression* → [*表达式*](04_Expressions.md#expression) +> > > *conditional-switch-case* → [*switch-if-directive-clause*](#switch-case-attributes-label) [*switch-elseif-directive-clauses*](#switch-case-attributes-label) 可选 [*switch-else-directive-clause*](#switch-case-attributes-label) 可选 [*endif-directive*](#switch-case-attributes-label) +> > *switch-if-directive 语句* → [*if-directive*](#switch-case-attributes-label) [*compilation-condition*](#switch-case-attributes-label) [*switch-cases*](#switch-case-attributes-label) 可选 +> > *switch-elseif-directive 语句(复数)* → [*elseif-directive-clause*](#switch-case-attributes-label) [*switch-elseif-directive-clauses*](#switch-case-attributes-label)可选 +> > *switch-elseif-directive 语句* → [*elseif-directive*](#switch-case-attributes-label) [*compilation-condition*](#switch-case-attributes-label) [*switch-cases*](#switch-case-attributes-label)可选 +> > *switch-else-directive 语句* → [*else-directive*](#switch-case-attributes-label) [*switch-cases*](#switch-case-attributes-label) 可选 +> ## 带标签的语句 @@ -320,16 +368,23 @@ case .suppressed: 关于使用带标签的语句的例子,请参阅 [控制流](../chapter2/05_Control_Flow.html) 一章中的 [带标签的语句](../chapter2/05_Control_Flow.html#labeled_statements)。 > 带标签的语句语法 +> > > *带标签的语句* → [*语句标签*](#statement-label) [*循环语句*](#grammar_loop-statement) +> > *带标签的语句* → [*语句标签*](#statement-label) [*if 语句*](#if-statement) +> > *带标签的语句* → [*语句标签*](#statement-label) [*switch 语句*](#switch-statement) +> > > *带标签的语句* → [*语句标签*](#statement-label) [*do 语句*](#sdo-statement) +> > *语句标签* → [*标签名称*](#label-name) **:** +> > *标签名称* → [*标识符*](02_Lexical_Structure.md#identifier) +> ## 控制转移语句 @@ -337,13 +392,19 @@ case .suppressed: 控制转移语句能够无条件地把控制权从一片代码转移到另一片代码,从而改变代码执行的顺序。Swift 提供五种类型的控制转移语句:`break` 语句、`continue` 语句、`fallthrough` 语句、`return` 语句和 `throw` 语句。 > 控制转移语句语法 +> > > *控制转移语句* → [*break 语句*](#break-statement) +> > *控制转移语句* → [*continue 语句*](#continue-statement) +> > *控制转移语句* → [*fallthrough 语句*](#fallthrough-statement) +> > *控制转移语句* → [*return 语句*](#return-statement) +> > *控制转移语句* → [*throw 语句*](#throw-statement) +> ### Break 语句 @@ -351,7 +412,9 @@ case .suppressed: `break` 语句用于终止循环语句、`if` 语句或 `switch` 语句的执行。使用 `break` 语句时,可以只写 `break` 这个关键词,也可以在 `break` 后面跟上标签名,像下面这样: > break +> > break `label name` +> 当 `break` 语句后面带标签名时,可用于终止由这个标签标记的循环语句、`if` 语句或 `switch` 语句的执行。 @@ -362,9 +425,11 @@ case .suppressed: 关于使用 `break` 语句的例子,请参阅 [控制流](../chapter2/05_Control_Flow.html) 一章的 [Break](../chapter2/05_Control_Flow.html#break) 和 [带标签的语句](../chapter2/05_Control_Flow.html#labeled_statements)。 > break 语句语法 +> > > *break 语句* → **break** [*标签名称*](#label-name)可选 +> ### Continue 语句 @@ -372,7 +437,9 @@ case .suppressed: `continue` 语句用于终止循环中当前迭代的执行,但不会终止该循环的执行。使用 `continue` 语句时,可以只写 `continue` 这个关键词,也可以在 `continue` 后面跟上标签名,像下面这样: > continue +> > continue `label name` +> 当 `continue` 语句后面带标签名时,可用于终止由这个标签标记的循环中当前迭代的执行。 @@ -385,9 +452,11 @@ case .suppressed: 关于使用 `continue` 语句的例子,请参阅 [控制流](../chapter2/05_Control_Flow.html) 一章的 [Continue](../chapter2/05_Control_Flow.html#continue) 和 [带标签的语句](../chapter2/05_Control_Flow.html#labeled_statements)。 > continue 语句语法 +> > > *continue 语句* → **continue** [*标签名称*](#label-name)可选 +> ### Fallthrough 语句 @@ -399,9 +468,11 @@ case .suppressed: 关于在 `switch` 语句中使用 `fallthrough` 语句的例子,请参阅 [控制流](../chapter2/05_Control_Flow.html) 一章的 [控制转移语句](../chapter2/05_Control_Flow.html#control_transfer_statements)。 > fallthrough 语句语法 +> > > *fallthrough 语句* → **fallthrough** +> ### Return 语句 @@ -411,20 +482,26 @@ case .suppressed: 使用 `return` 语句时,可以只写 `return` 这个关键词,也可以在 `return` 后面跟上表达式,像下面这样: > return +> > return `expression` +> 当 `return` 语句后面带表达式时,表达式的值将会返回给调用函数或方法。如果表达式的值的类型与函数或者方法声明的返回类型不匹配,Swift 则会在返回表达式的值之前将表达式的值的类型转换为返回类型。 > 注意 +> > > 正如 [可失败构造器](05_Declarations.html#failable_initializers) 中所描述的,`return nil` 在可失败构造器中用于表明构造失败。 +> 而只写 `return` 时,仅仅是从该函数或方法中返回,而不返回任何值(也就是说,函数或方法的返回类型为 `Void` 或者说 `()`)。 > return 语句语法 +> > > *return 语句* → **return** [*表达式*](04_Expressions.html#expression)可选 +> ### Throw 语句 @@ -436,15 +513,18 @@ case .suppressed: `throw` 语句由 `throw` 关键字紧跟一个表达式组成,如下所示: > throw `expression` +> 表达式的结果必须符合 `ErrorType` 协议。 关于如何使用 `throw` 语句的例子,请参阅 [错误处理](../chapter2/18_Error_Handling.html) 一章的 [用 throwing 函数传递错误](../chapter2/18_Error_Handling.html#propagating_errors_using_throwing_functions)。 > throw 语句语法 +> > > *throw 语句* → **throw** [*表达式*](04_Expressions.html#expression) +> ## Defer 语句 @@ -478,9 +558,11 @@ f() `defer` 语句中的语句无法将控制权转移到 `defer` 语句外部。 > defer 语句语法 +> > > *延迟语句* → **defer** [*代码块*](05_Declarations.html#code-block) +> ## Do 语句 @@ -509,13 +591,17 @@ do { 关于如何在 `do` 语句中使用一系列 `catch` 子句的例子,请参阅 [错误处理](../chapter2/17_Error_Handling.html#handling_errors)。 > do 语句语法 +> > > *do 语句* → **do** [*代码块*](05_Declarations.html#code-block) [*多条 catch 子句*](#catch-clauses)可选 +> > *多条 catch 子句* → [*catch 子句*](#catch-clause) [*多条 catch 子句*](#catch-clauses)可选 +> > *catch 子句* → **catch** [*模式*](07_Patterns.html#pattern)可选 [*where 子句*](#where-clause)可选 [*代码块*](05_Declarations.html#code-block) +> ## 编译器控制语句 @@ -523,11 +609,15 @@ do { 编译器控制语句允许程序改变编译器的行为。Swift 有三种编译器控制语句:条件编译语句、线路控制语句和编译时诊断语句。 > 编译器控制语句语法 +> > > *编译器控制语句* → [*条件编译语句*](#grammar_conditional-compilation-block) +> > *编译器控制语句* → [*线路控制语句*](#line-control-statement) +> > *编译器控制语句* → [*诊断语句*](#grammar_diagnostic-statement) +> ### 条件编译代码块 @@ -577,8 +667,10 @@ print("Compiled with the Swift 5 compiler or later in a Swift mode earlier than `targetEnvironment()` 当为模拟器编译时返回 `true`,否则返回 `false` 。 > 注意 +> > > `arch(arm)` 平台检测函数在 ARM 64 位设备上不会返回 `true`。如果代码在 32 位的 iOS 模拟器上编译,`arch(i386)` 平台检测函数会返回 `true`。 +> 你可以使用逻辑操作符 `&&`、`||` 和 `!` 来组合多个编译配置,还可以使用圆括号来进行分组。 @@ -595,63 +687,94 @@ statements to compile if both compilation conditions are false ``` > 注意 +> > > 即使没有被编译,编译配置中的语句仍然会被解析。然而,唯一的例外是编译配置语句中包含语言版本检测函数:仅当 `Swift` 编译器版本和语言版本检测函数中指定的版本号匹配时,语句才会被解析。这种设定能确保旧的编译器不会尝试去解析新 Swift 版本的语法。 +> > 条件编译代码块语法 +> > > *条件编译代码块* → [*if-directive 语句*](#grammar_if-directive-clause) [*elseif-directive 语句(复数)*](#grammar_elseif-directive-clauses)可选 [*else-directive 语句*](#grammar_else-directive-clause)可选 [*endif-directive*](#grammar_endif-directive) +> > *if-directive 语句* → [*if-directive*](#grammar_if-directive) [*编译条件*](#compilation-condition) [*语句(复数)*](#statements)可选 +> > *elseif-directive 语句(复数)* → [*elseif-directive 语句*](#grammar_elseif-directive-clause) [*elseif-directive 语句(复数)*](#grammar_elseif-directive-clauses) +> > *elseif-directive 语句* → [*elseif-directive*](#grammar_elseif-directive) [*编译条件*](#compilation-condition) [*语句(复数)*](#statements)可选 +> > *else-directive 语句* → [*else-directive*](#grammar_else-directive) [*语句(复数)*](#statements)可选 +> > *if-directive* → **#if** +> > *elseif-directive* → **#elseif** +> > *else-directive* → **#else** +> > *endif-directive* → **#endif** +> > *编译条件* → [*平台条件*](#grammar_platform-condition) +> > *编译条件* → [*标识符*](02_Lexical_Structure.md#identifier) +> > *编译条件* → [*布尔值字面量*](02_Lexical_Structure.md#boolean-literal) +> > *编译条件* → **(** [*编译条件*](#compilation-condition) **)** +> > *编译条件* → **!** [*编译条件*](#compilation-condition) +> > *编译条件* → [*编译条件*](#compilation-condition) **&&** [*编译条件*](#compilation-condition) +> > *编译条件* → [*编译条件*](#compilation-condition) **||** [*编译条件*](#compilation-condition) +> > *平台条件* → **os ( [*操作系统*](#operating-system) )** +> > *平台条件* → **arch ( [*架构*](#architecture) )** +> > *平台条件* → **swift ( >= [*swift 版本*](#swift-version) )** | **swift ( < [*swift 版本*](#swift-version) )** +> > *平台条件* → **compiler ( >= [*swift 版本*](#swift-version) )** | **compiler ( < [*swift 版本*](#swift-version) )** +> > *平台条件* → **canImport ( [*模块名*](#grammar_module-name) )** +> > *平台条件* → **targetEnvironment ( [*环境*](#grammar_environment) )** +> > *操作系统* → **macOS** | **iOS** | **watchOS** | **tvOS** +> > *架构* → **i386** | **x86_64** | **arm** | **arm64** +> > *swift 版本* → [*十进制数字*](02_Lexical_Structure.md#decimal-digit) ­**.** ­[*swift 版本延续*](#grammar_swift-version-continuation) 可选 +> > *swift 版本延续* → **.** [*十进制数字*](02_Lexical_Structure.md#decimal-digit) [*swift 版本延续*](#grammar_swift-version-continuation) 可选 +> > *模块名* → [*identifier*](02_Lexical_Structure.md#identifier) +> > *环境* → **模拟器** +> ### 行控制语句 @@ -661,8 +784,10 @@ statements to compile if both compilation conditions are false 行控制语句形式如下: > \#sourceLocation(file: `filename` , line:`line number`) +> > \#sourceLocation() +> 第一种的行控制语句会改变该语句之后的代码中的字面量表达式 `#line` 和 `#file` 所表示的值。`行号` 是一个大于 0 的整形字面量,会改变 `#line` 表达式的值。`文件名` 是一个字符串字面量,会改变 `#file` 表达式的值。 @@ -670,13 +795,18 @@ statements to compile if both compilation conditions are false > 行控制语句语法 +> > > *行控制语句* → **#sourceLocation(file:[*文件名*](#file-name),line:[*行号*](#line-number))** +> > *行控制语句* → **#sourceLocation()** +> > *行号* → 大于 0 的十进制整数 +> > *文件名* → [*静态字符串字面量*](02_Lexical_Structure.md#static-string-literal) +> ### 编译时诊断语句 @@ -690,12 +820,16 @@ statements to compile if both compilation conditions are false 第一句会抛出错误信息并终止编译,第二句会发出警告信息但是编译会继续进行。你可以通过静态字符串字面量来书写诊断信息,静态字符串字面量不能使用字符串 `interpolation` 或者 `concatenation`,但可以使用多行的形式。 > 编译时诊断语句语法 +> > > *诊断语句* → **#error** **(** [*diagnostic-message*](#grammar_diagnostic-message) **)** +> > *诊断语句* → **#warning** **(** [*diagnostic-message*](#grammar_diagnostic-message) **)** +> > *诊断语句* → [*静态字符串字面量*](02_Lexical_Structure.md#static-string-literal) +> ## 可用性条件 @@ -719,21 +853,33 @@ if #available(platform name version, ..., *) { 与布尔类型的条件不同,不能用逻辑运算符 `&&` 和 `||` 组合可用性条件。 > 可用性条件语法 +> > > *可用性条件* → **#available** **(** [*可用性参数列表*](#availability-arguments) **)** +> > *可用性参数列表* → [*可用性参数*](#availability-argument) | [*可用性参数*](#availability-argument) **,** [*可用性参数列表*](#availability-arguments) +> > *可用性参数* → [平台名称](#platform-name) [平台版本](#platform-version) +> > *可用性条件* → __*__ +> > > *平台名称* → **iOS** | **iOSApplicationExtension** +> > *平台名称* → **OSX** | **macOSApplicationExtension** +> > *平台名称* → **watchOS** +> > *平台名称* → **tvOS** +> > *平台版本* → [十进制数字](02_Lexical_Structure.md#decimal-digits) +> > *平台版本* → [十进制数字](02_Lexical_Structure.md#decimal-digits) **.** [十进制数字](02_Lexical_Structure.md#decimal-digits) +> > *平台版本* → [十进制数字](02_Lexical_Structure.md#decimal-digits) **.** [十进制数字](02_Lexical_Structure.md#decimal-digits) **.** [十进制数字](02_Lexical_Structure.md#decimal-digits) +> diff --git a/source/chapter3/06_Declarations.md b/source/chapter3/06_Declarations.md index f7061888..0e454b8e 100755 --- a/source/chapter3/06_Declarations.md +++ b/source/chapter3/06_Declarations.md @@ -7,23 +7,41 @@ 在 Swift 中,大多数声明在某种意义上讲也是定义,因为它们在声明时往往伴随着实现或初始化。由于协议并不提供实现,大多数协议成员仅仅只是声明而已。为了方便起见,也是因为这些区别在 Swift 中并不是很重要,“声明”这个术语同时包含了声明和定义两种含义。 > 声明语法 +> > +> > *声明* → [*导入声明*](#import-declaration) +> > *声明* → [*常量声明*](#constant-declaration) +> > *声明* → [*变量声明*](#variable-declaration) +> > *声明* → [*类型别名声明*](#typealias-declaration) +> > *声明* → [*函数声明*](#function-declaration) +> > *声明* → [*枚举声明*](#enum-declaration) +> > *声明* → [*结构体声明*](#struct-declaration) +> > *声明* → [*类声明*](#class-declaration) +> > *声明* → [*协议声明*](#protocol-declaration) +> > *声明* → [*构造器声明*](#initializer-declaration) +> > *声明* → [*析构器声明*](#deinitializer-declaration) +> > *声明* → [*扩展声明*](#extension-declaration) +> > *声明* → [*下标声明*](#subscript-declaration) +> > *声明* → [*运算符声明*](#operator-declaration) +> > +> > *多条声明* → [*声明*](#declaration) [*多条声明*](#declarations)可选 +> ## 顶级代码 @@ -33,6 +51,7 @@ Swift 的源文件中的顶级代码(top-level code)由零个或多个语句 > 顶级声明语法 > > *顶级声明* → [*多条语句*](10_Statements.html#statements)可选 +> ## 代码块 @@ -50,7 +69,9 @@ Swift 的源文件中的顶级代码(top-level code)由零个或多个语句 > 代码块语法 > > +> > *代码块* → **{** [*多条语句*](10_Statements.html#statements)可选 **}** +> ## 导入声明 @@ -72,14 +93,21 @@ import 模块.子模块 > 导入声明语法 > > +> > *导入声明* → [*特性列表*](06_Attributes.html#attributes)可选 **import** [*导入类型*](#import-kind)可选 [*导入路径*](#import-path) > > +> > *导入类型* → **typealias** | **struct** | **class** | **enum** | **protocol** | **let** | **var** | **func** +> > +> > *导入路径* → [*导入路径标识符*](#import-path-identifier) | [*导入路径标识符*](#import-path-identifier) **.** [*导入路径*](#import-path) +> > +> > *导入路径标识符* → [*标识符*](02_Lexical_Structure.html#identifier) | [*运算符*](02_Lexical_Structure.html#operator) +> ## 常量声明 @@ -119,13 +147,21 @@ print("The second number is \(secondNumber).") > 常量声明语法 > > +> > *常量声明* → [*特性列表*](06_Attributes.html#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **let** [*模式构造器列表*](pattern-initializer-list) +> > +> > *模式构造器列表* → [*模式构造器*](#pattern-initializer) | [*模式构造器*](#pattern-initializer) **,** [*模式构造器列表*](#pattern-initializer-list) +> > +> > *模式构造器* → [*模式*](07_Patterns.html#pattern) [*构造器*](#initializer)可选 +> > +> > *构造器* → **=** [*表达式*](04_Expressions.html#expression) +> @@ -138,6 +174,7 @@ print("The second number is \(secondNumber).") > 注意 > > 也可以在协议声明中声明属性,详情请参阅 [协议属性声明](#protocol_property_declaration)。 +> 可以在子类中重写继承来的变量属性,使用 `override` 声明修饰符标记属性的声明即可,详情请参阅 [重写](../chapter2/13_Inheritance.html#overriding)。 @@ -225,49 +262,80 @@ var 变量名称: 类型 = 表达式 { > 注意 > > 在一个类声明中,使用关键字 `static` 与同时使用 `class` 和 `final` 去标记一个声明的效果相同。 +> > 变量声明语法 > > *变量声明* → [*变量声明头*](#variable-declaration-head) [*模式构造器列表*](#pattern-initializer-list) +> > *变量声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.html#type-annotation) [*代码块*](#code-block) +> > *变量声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.html#type-annotation) [*getter-setter 代码块*](#getter-setter-block) +> > *变量声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.html#type-annotation) [*getter-setter 关键字代码块*](#getter-setter-keyword-block) +> > *变量声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*构造器*](#initializer) [*willSet-didSet 代码块*](#willSet-didSet-block) +> > *变量声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.html#type-annotation) [*构造器*](#initializer)可选 [*willSet-didSet 代码块*](#willSet-didSet-block) +> > *变量声明头* → [*特性列表*](06_Attributes.html#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **var** +> > +> > *变量名称* → [*标识符*](02_Lexical_Structure.html#identifier) +> > *getter-setter 代码块* → [*代码块*](#code-block) +> > *getter-setter 代码块* → **{** [*getter 子句*](#getter-clause) [*setter 子句*](#setter-clause)可选 **}** +> > *getter-setter 代码块* → **{** [*setter 子句*](#setter-clause) [*getter 子句*](#getter-clause) **}** +> > +> > *getter 子句* → [*特性列表*](06_Attributes.html#attributes)可选 **get** [*代码块*](#code-block) +> > +> > *setter 子句* → [*特性列表*](06_Attributes.html#attributes)可选 **set** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) +> > +> > *setter 名称* → **(** [*标识符*](02_Lexical_Structure.html#identifier) **)** +> > *getter-setter 关键字代码块* → **{** [*getter 关键字子句*](#getter-keyword-clause) [*setter 关键字子句*](#setter-keyword-clause)可选 **}** +> > *getter-setter 关键字代码块* → **{** [*setter 关键字子句*](#setter-keyword-clause) [*getter 关键字子句*](#getter-keyword-clause) **}** +> > +> > *getter 关键字子句* → [*特性列表*](06_Attributes.html#attributes)可选 **get** +> > +> > *setter 关键字子句* → [*特性列表*](06_Attributes.html#attributes)可选 **set** +> > *willSet-didSet 代码块* → **{** [*willSet 子句*](#willSet-clause) [*didSet 子句*](#didSet-clause)可选 **}** +> > *willSet-didSet 代码块* → **{** [*didSet 子句*](#didSet-clause) [*willSet 子句*](#willSet-clause)可选 **}** +> > +> > *willSet 子句* → [*特性列表*](06_Attributes.html#attributes)可选 **willSet** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) +> > +> > *didSet 子句* → [*特性列表*](06_Attributes.html#attributes)可选 **didSet** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) +> ## 类型别名声明 @@ -284,16 +352,20 @@ typealias 类型别名 = 现存类型 ```swift typealias StringDictionary = Dictionary +> // 下列两个字典拥有同样的类型 var dictionary1: StringDictionary = [:] +> var dictionary2: Dictionary = [:] +> ``` 当一个类型别名带着泛型参数一起被声明时,这些参数的约束必须与现有参数的约束完全匹配。例如: ```swift typealias DictionaryOfInts = Dictionary +> ``` 因为类型别名可以和现有类型相互交换使用,类型别名不可以引入额外的类型约束。 @@ -313,6 +385,7 @@ protocol Sequence { } func sum(_ sequence: T) -> Int where T.Element == Int { +> // ... } ``` @@ -323,13 +396,20 @@ func sum(_ sequence: T) -> Int where T.Element == Int { > 类型别名声明语法 +> > > +> > *类型别名声明* → [*特性列表*](06_Attributes.html#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **typealias** [*类型别名名称*](#typealias-name) [*类型别子句*](#typealias-clause) [*类型别名赋值*](#typealias-assignment) +> > +> > *类型别名名称* → [*标识符*](02_Lexical_Structure.html#identifier) +> > +> > *类型别名赋值* → **=** [*类型*](03_Types.html#type) +> ## 函数声明 @@ -338,6 +418,7 @@ func sum(_ sequence: T) -> Int where T.Element == Int { ```swift func 函数名称(参数列表) -> 返回类型 { +> 语句 } ``` @@ -371,6 +452,7 @@ func 函数名称(参数列表) { ```swift func f(x: Int, y: Int) -> Int { return x + y } +> f(x: 1, y: 2) // 参数 x 和 y 都有标签 ``` @@ -411,6 +493,7 @@ repeatGreeting("Hello, world!", count: 2) // count 有标签, greeting 没有 ```swift func someFunction(a: inout Int) -> () -> Int { +> return { [a] in return a + 1 } } ``` @@ -453,6 +536,7 @@ _ : 参数类型 ```swift func f(x: Int = 42) -> Int { return x } +> f() // 有效,使用默认值 f(7) // 有效,提供了值 f(x: 7) // 无效,该参数没有外部名称 @@ -474,6 +558,7 @@ f(x: 7) // 无效,该参数没有外部名称 ```swift func 函数名称(参数列表) throws -> 返回类型 { +> 语句 } ``` @@ -493,6 +578,7 @@ func 函数名称(参数列表) throws -> 返回类型 { ```swift func someFunction(callback: () throws -> Void) rethrows { +> try callback() } ``` @@ -504,6 +590,7 @@ func alwaysThrows() throws { throw SomeError.error } func someFunction(callback: () throws -> Void) rethrows { +> do { try callback() try alwaysThrows() // 非法, alwaysThrows() 不是一个抛出函数类型的参数 @@ -529,35 +616,60 @@ Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它 > > *函数声明* → [*函数头*](#function-head) [*函数名*](#function-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*函数签名*](#function-signature) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause) [*函数体*](#function-body)可选 +> > *函数头* → [*特性列表*](06_Attributes.html#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **func** +> > +> > *函数名* → [*标识符*](02_Lexical_Structure.html#identifier) | [*运算符*](02_Lexical_Structure.html#operator) +> > > +> > > *函数签名* → [*参数子句列表*](#parameter-clauses) **throws**可选 [*函数结果*](#function-result)可选 +> > *函数签名* → [*参数子句列表*](#parameter-clauses) **rethrows** [*函数结果*](#function-result)可选 +> > +> > *函数结果* → **->** [*特性列表*](06_Attributes.html#attributes)可选 [*类型*](03_Types.html#type) +> > +> > *函数体* → [*代码块*](#code-block) +> > +> > *参数子句* → **(** **)** | **(** [*参数列表*](#parameter-list) **)** +> > +> > *参数列表* → [*参数*](#parameter) | [*参数*](#parameter) **,** [*参数列表*](#parameter-list) +> > +> > *参数* → [*外部参数名*](#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.html#type-annotation) [*默认参数子句*](#default-argument-clause)可选 +> > *参数* → [*外部参数名*](#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.html#type-annotation) +> > *参数* → [*外部参数名*](#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.html#type-annotation) **...** +> > +> > *外部参数名* → [*标识符*](02_Lexical_Structure.html#identifier) | **_** +> > +> > *内部参数名* → [*标识符*](02_Lexical_Structure.html#identifier) | **_** +> > +> > *默认参数子句* → **=** [*表达式*](04_Expressions.html#expression) +> @@ -600,6 +712,7 @@ enum Number { } // f 的类型为 (Int) -> Number +> let f = Number.integer // 利用 f 把一个整数数组转成 Number 数组 @@ -617,6 +730,7 @@ let evenInts: [Number] = [0, 2, 4, 6].map(f) ```swift enum Tree { +> case empty indirect case node(value: T, left: Tree, right:Tree) } @@ -671,44 +785,79 @@ enum GamePlayMode: String { > 枚举声明语法 +> > > +> > *枚举声明* → [*特性列表*](06_Attributes.html#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 [*联合风格枚举*](#union-style-enum) +> > *枚举声明* → [*特性列表*](06_Attributes.html#attributes)可选 [*访问级别修饰符*](#access-level-modifier) 可选 [*原始值风格枚举*](#raw-value-style-enum) +> > > *联合风格枚举* → **indirect**可选 **enum** [*枚举名称*](#enum-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [类型继承子句](03_Types.html#type-inheritance-clause)可选 **{** [*多个联合风格枚举成员*](#union-style-enum-members)可选 **}** +> > +> > *多个联合风格枚举成员* → [*联合风格枚举成员*](#union-style-enum-member) [*多个联合风格枚举成员*](#union-style-enum-members)可选 +> > +> > *联合风格枚举成员* → [*声明*](#declaration) | [*联合风格枚举用例子句*](#union-style-enum-case-clause) | [*编译控制流语句*](05_Statements.html#compiler-control-statement) +> > +> > *联合风格枚举用例子句* → [*特性列表*](06_Attributes.html#attributes)可选 **indirect**可选 **case** [*联合风格枚举用例列表*](#union-style-enum-case-list) +> > +> > *联合风格枚举用例列表* → [*联合风格枚举用例*](#union-style-enum-case) | [*联合风格枚举用例*](#union-style-enum-case) **,** [*联合风格枚举用例列表*](#union-style-enum-case-list) +> > +> > *联合风格枚举用例* → [*枚举用例名称*](#enum-case-name) [*元组类型*](03_Types.html#tuple-type)可选 +> > +> > *枚举名称* → [*标识符*](02_Lexical_Structure.html#identifier) +> > +> > *枚举用例名称* → [*标识符*](02_Lexical_Structure.html#identifier) +> > > +> > > *原始值风格枚举* → **enum** [*枚举名称*](#enum-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*类型继承子句*](03_Types.html#type-inheritance-clause) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause) **{** [*多个原始值风格枚举成员*](#raw-value-style-enum-members) **}** +> > +> > *多个原始值风格枚举成员* → [*原始值风格枚举成员*](#raw-value-style-enum-member) [*多个原始值风格枚举成员*](#raw-value-style-enum-members)可选 +> > +> > *原始值风格枚举成员* → [*声明*](#declaration) | [*原始值风格枚举用例子句*](#raw-value-style-enum-case-clause) | [*编译控制流语句*](05_Statements.html#compiler-control-statement) +> > +> > *原始值风格枚举用例子句* → [*特性列表*](06_Attributes.html#attributes)可选 **case** [*原始值风格枚举用例列表*](#raw-value-style-enum-case-list) +> > +> > *原始值风格枚举用例列表* → [*原始值风格枚举用例*](#raw-value-style-enum-case) | [*原始值风格枚举用例*](#raw-value-style-enum-case) **,** [*原始值风格枚举用例列表*](#raw-value-style-enum-case-list) +> > +> > *原始值风格枚举用例* → [*枚举用例名称*](#enum-case-name) [*原始值赋值*](#raw-value-assignment)可选 +> > +> > *原始值赋值* → **=** [*原始值字面量*](#raw-value-literal) +> > +> > *原始值字面量* → [数字型字面量](02_Lexical_Structure.html#numeric-literal) | [字符串型字面量](02_Lexical_Structure.html#static-string-literal) | [布尔型字面量](02_Lexical_Structure.html#boolean-literal) +> ## 结构体声明 @@ -744,18 +893,29 @@ struct 结构体名称: 采纳的协议 { > 结构体声明语法 +> > > +> > *结构体声明* → [*特性列表*](06_Attributes.html#attributes)可选 [*访问级别修饰符*](#access-level-modifier) 可选 **struct** [*结构体名称*](#struct-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*类型继承子句*](03_Types.html#type-inheritance-clause)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*结构体主体*](#struct-body) +> > +> > *结构体名称* → [*标识符*](02_Lexical_Structure.html#identifier) +> > +> > *结构体主体* → **{** [*多条声明*](#declarations)可选 **}** +> > +> > > *结构体多个成员* → [*结构体成员*](#struct-member) [*结构体多个成员*](#struct-members)可选 +> > +> > *结构体成员* → [*声明*](#declaration) | [*编译控制流语句*](05_Statements.html#compiler-control-statement) +> @@ -795,18 +955,29 @@ class 类名: 超类, 采纳的协议 { > 类声明语法 +> > > +> > *类声明* → [*特性列表*](06_Attributes.html#attributes)可选 [访问级别修饰符](#access-level-modifier)可选 **final**可选 **class** [*类名*](#class-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*类型继承子句*](03_Types.html#type-inheritance-clause)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*类主体*](#class-body) +> > *类声明* → [*特性列表*](06_Attributes.html#attributes)可选 **final** [访问级别修饰符](#access-level-modifier)可选 **class** [*类名*](#class-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*类型继承子句*](03_Types.html#type-inheritance-clause)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*类主体*](#class-body) +> > +> > *类名* → [*标识符*](02_Lexical_Structure.html#identifier) +> > +> > *类主体* → **{** [*多条声明*](#declarations)可选 **}** +> > > *类多个成员* → [*类成员*](#class-member) [*类多个成员*](#class-members)可选 +> > +> > *类成员* → [*声明*](#declaration) | [*编译控制流语句*](05_Statements.html#compiler-control-statement) +> ## 协议声明 @@ -826,6 +997,7 @@ protocol 协议名称: 继承的协议 { > 注意 > > 也可以使用协议合成类型来聚合多个协议的一致性要求,请参阅 [协议合成类型](03_Types.html#protocol_composition_type) 和 [协议合成](../chapter2/21_Protocols.html#protocol_composition)。 +> 可以通过类型的扩展声明来采纳协议,从而为之前声明的类型添加协议一致性。在扩展中,必须实现所有采纳协议的要求。如果该类型已经实现了所有的要求,可以让这个扩展声明的主体留空。 @@ -844,6 +1016,7 @@ protocol SomeProtocol: AnyObject { > 注意 > > 如果协议已经用 `objc` 特性标记了,`AnyObject` 要求就隐式地应用于该协议,无需显式使用 `AnyObject` 关键字。 +> 协议类型是命名的类型,因此它们可以像其他命名类型一样使用,正如 [协议作为类型](../chapter2/21_Protocols.html#protocols_as_types) 所讨论的。然而,不能构造一个协议的实例,因为协议实际上不提供它们指定的要求的实现。 @@ -851,26 +1024,44 @@ protocol SomeProtocol: AnyObject { > 协议声明语法 +> > > +> > *协议声明* → [*特性列表*](06_Attributes.html#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **protocol** [*协议名称*](#protocol-name) [*类型继承子句*](03_Types.html#type-inheritance-clause)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*协议主体*](#protocol-body) +> > +> > *协议名称* → [*标识符*](02_Lexical_Structure.html#identifier) +> > +> > *协议主体* → **{** [*协议成员声明列表*](#protocol-member-declarations)可选 **}** +> > > *协议多个成员* → [*协议成员*](#protocol-member) [*协议多个成员*](#protocol-members)可选 +> > +> > *协议成员* → [*协议成员声明*](#protocol-member-declaration) | [*编译控制流语句*](05_Statements.html#compiler-control-statement) +> > > +> > *协议成员声明* → [*协议属性声明*](#protocol-property-declaration) +> > *协议成员声明* → [*协议方法声明*](#protocol-method-declaration) +> > *协议成员声明* → [*协议构造器声明*](#protocol-initializer-declaration) +> > *协议成员声明* → [*协议下标声明*](#protocol-subscript-declaration) +> > *协议成员声明* → [*协议关联类型声明*](#protocol-associated-type-declaration) +> > +> > *协议成员声明列表* → [*协议成员声明*](#protocol-member-declaration) [*协议成员声明列表*](#protocol-member-declarations)可选 +> ### 协议属性声明 @@ -891,7 +1082,9 @@ var 属性名: 类型 { get set } > 协议属性声明语法 > > +> > *协议属性声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.html#type-annotation) [*getter-setter 关键字代码块*](#getter-setter-keyword-block) +> ### 协议方法声明 @@ -906,7 +1099,9 @@ var 属性名: 类型 { get set } > 协议方法声明语法 > > +> > *协议方法声明* → [*函数头*](#function-head) [*函数名*](#function-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*函数签名*](#function-signature) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 +> @@ -925,8 +1120,11 @@ var 属性名: 类型 { get set } > 协议构造器声明语法 > > +> > *协议构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **throws**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 +> > *协议构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **rethrows** [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 +> ### 协议下标声明 @@ -935,6 +1133,7 @@ var 属性名: 类型 { get set } ```swift subscript (参数列表) -> 返回类型 { get set } +> ``` 下标声明只为符合类型声明了 getter 和 setter 要求。如果下标声明包含 `get` 和 `set` 关键字,符合类型也必须实现 getter 和 setter 子句。如果下标声明只包含 `get` 关键字,符合类型必须实现 getter 子句,可以选择是否实现 setter 子句。 @@ -943,8 +1142,11 @@ subscript (参数列表) -> 返回类型 { get set } > 协议下标声明语法 +> > +> > *协议下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*getter-setter 关键字代码块*](#getter-setter-keyword-block) +> @@ -976,7 +1178,9 @@ protocol SubProtocolB: SomeProtocol where SomeType: Equatable { } > 协议关联类型声明语法 > > +> > *协议关联类型声明* → [*特性列表*](06_Attributes.html#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **associatedtype** [*类型别名头*](#typealias-head) [*类型继承子句*](03_Types.html#type-inheritance-clause)可选 [*类型别名赋值*](#typealias-assignment)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 +> ## 构造器声明 @@ -1018,6 +1222,7 @@ convenience init(参数列表) { > 注意 > > 如果使用 `required` 声明修饰符标记一个构造器,在子类中重写这种构造器时,无需使用 `override` 修饰符。 +> 就像函数和方法,构造器也可以抛出或者重抛错误,你可以在构造器参数列表的圆括号之后使用 `throws` 或 `rethrows` 关键字来表明相应的抛出行为。 @@ -1068,14 +1273,23 @@ if let actualInstance = SomeStruct(input: "Hello") { > 构造器声明语法 > > +> > *构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **throws**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*构造器主体*](#initializer-body) +> > *构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **rethrows**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*构造器主体*](#initializer-body) +> > +> > *构造器头* → [*特性列表*](06_Attributes.html#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **init** +> > *构造器头* → [*特性列表*](06_Attributes.html#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **init** **?** +> > *构造器头* → [*特性列表*](06_Attributes.html#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **init** **!** +> > +> > *构造器主体* → [*代码块*](#code-block) +> ## 析构器声明 @@ -1100,7 +1314,9 @@ deinit { > 析构器声明语法 > > +> > *析构器声明* → [*特性列表*](06_Attributes.html#attributes)可选 **deinit** [*代码块*](#code-block) +> ## 扩展声明 @@ -1221,15 +1437,18 @@ doSomething(with: oneAndTwo) ```swift protocol Serializable { func serialize() -> Any +> } extension Array: Serializable where Element == Int { func serialize() -> Any { +> // implementation } } extension Array: Serializable where Element == String { func serialize() -> Any { +> // implementation } } @@ -1245,6 +1464,7 @@ extension String: SerializableInArray { } extension Array: Serializable where Element: SerializableInArray { func serialize() -> Any { +> // 具体实现 } } @@ -1292,13 +1512,20 @@ extension Array: Loggable where Element: MarkedLoggable { } > 扩展声明语法 +> > > +> > *扩展声明* → [特性](06_Attributes.html#type_attributes)可选 [访问级别修饰符](#access-level-modifier)可选 **extension** [*类型标识符*](03_Types.html#type-identifier) [*类型-继承-子句*](03_Types.html#type-inheritance-clause)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*扩展主体*](#extension-body) +> > +> > *扩展主体* → **{** [*多条声明*](#declarations)可选 **}** +> > *多条声明* → [单条声明](#subscript_declaration) [多条声明](#declarations) 可选 +> > *单条声明* → [声明语句](#declarations) | [*编译控制流语句*](05_Statements.html#compiler-control-statement) +> @@ -1308,6 +1535,7 @@ extension Array: Loggable where Element: MarkedLoggable { } ```swift subscript (参数列表) -> 返回类型 { +> get { 语句 } @@ -1335,15 +1563,24 @@ subscript (参数列表) -> 返回类型 { > 下标声明语法 +> > > +> > *下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*代码块*](#code-block) +> > *下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*getter-setter 代码块*](#getter-setter-block) +> > *下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*getter-setter 关键字代码块*](#getter-setter-keyword-block) +> > +> > *下标头* → [*特性列表*](06_Attributes.html#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **subscript** [*泛型参数子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) +> > +> > *下标结果* → **->** [*特性列表*](06_Attributes.html#attributes)可选 [*类型*](03_Types.html#type) +> ## 运算符声明 @@ -1394,13 +1631,18 @@ postfix operator 运算符名称 {} > > *前缀运算符声明* → **prefix** **运算符** [*运算符*](02_Lexical_Structure.html#operator) **{** **}** +> > +> > *后缀运算符声明* → **postfix** **运算符** [*运算符*] (02_Lexical_Structure.html#operator) **{** **}** +> > +> > *中缀运算符声明* → **infix** **运算符** [*运算符*](02_Lexical_Structure.html#operator) **{** [*中缀运算符属性*](#infix-operator-attributes)可选 **}** > > *中缀运算符组* → [*优先级组名称*](#precedence-group-name) +> ## 优先级组声明 @@ -1422,6 +1664,7 @@ precedencegroup 优先级组名称{ > 注意 > > 使用较低和较高优先级组相互联系的优先级组必须保持单一层次关系,但它们不必是线性关系。这意味着优先级组也许会有未定义的相关优先级。这些优先级组的运算符在没有用圆括号分组的情况下是不能紧邻着使用的。 +> Swift 定义了大量的优先级组来与标准库的运算符配合使用,例如相加(`+`)和相减(`-`)属于 `AdditionPrecedence` 组,相乘(`*`)和相除(`/`)属于 `MultiplicationPrecedence` 组,详细关于 Swift 标准库中一系列运算符和优先级组内容,参阅[Swift 标准库操作符参考](https://developer.apple.com/reference/swift/1851035-swift_standard_library_operators)。 @@ -1434,26 +1677,40 @@ Swift 定义了大量的优先级组来与标准库的运算符配合使用, > > *优先级组声明* → **precedence**[*优先级组名称*](#precedence-group-name){[*多优先级组属性*](#precedence-group-attributes)可选 } +> > *优先级组属性* → [*优先级组属性*](#precedence-group-attribute)[*多优先级组属性*](#precedence-group-attributes)可选 **{** **}** +> > *优先级组属性* → [*优先级组关系*](#precedence-group-relation) +> > *优先级组属性* → [*优先级组赋值性*](#precedence-group-assignment) +> > *优先级组属性* → [*优先级组相关性*](#precedence-group-associativity) +> > +> > *优先级组关系* → **higherThan:**[*多优先级组名称*](#precedence-group-names) +> > *优先级组关系* → **lowerThan:**[*多优先级组名称*](#precedence-group-names) +> > +> > *优先级组赋值* → **assignment:**[*布尔字面值*](02_Lexical_Structure.html#boolean-literal) +> > *优先级组结合性* → **associativity:left** +> > *优先级组结合性* → **associativity:right** +> > *优先级组结合性* → **associativity:none** > > *多优先级组名称* → [*优先级组名称*](#precedence-group-name) | [*优先级组名称*](#precedence-group-name) | [*优先级组名称*](#precedence-group-name) +> > *优先级组名称* →[*标识符*](02_Lexical_Structure.html#identifier) +> ## 声明修饰符 @@ -1524,11 +1781,17 @@ Swift 提供了三个级别的访问控制:`public`、`internal` 和 `private` > > *声明修饰符* → **class** | **convenience**| **dynamic** | **final** | **infix** | **lazy** | **mutating** | **nonmutating** | **optional** | **override** | **postfix** | **prefix** | **required** | **static** | **unowned** | **unowned ( safe )** | **unowned ( unsafe )** | **weak** +> > 声明修饰符 → [*访问级别修饰符*](#access-level-modifier) +> > +> > *声明修饰符列表* → [*声明修饰符*](#declaration-modifier) [*声明修饰符列表*](#declaration-modifiers)可选 > > 访问级别修饰符 → **internal** | **internal ( set )** +> > 访问级别修饰符 → **private** | **private ( set )** +> > 访问级别修饰符 → **public** | **public ( set )** +> diff --git a/source/chapter3/07_Attributes.md b/source/chapter3/07_Attributes.md index 83881547..8e3408eb 100755 --- a/source/chapter3/07_Attributes.md +++ b/source/chapter3/07_Attributes.md @@ -155,6 +155,7 @@ dial.dynamicallyCall(withArguments: [4, 1, 1]) @dynamicCallable struct Repeater { func dynamicallyCall(withKeywordArguments pairs: KeyValuePairs) -> String { +> return pairs .map { label, count in repeatElement(label, count: count).joined(separator: " ") @@ -195,6 +196,7 @@ struct DynamicStruct { let dictionary = ["someDynamicMember": 325, "someOtherMember": 787] subscript(dynamicMember member: String) -> Int { +> return dictionary[member] ?? 1054 } } @@ -379,21 +381,38 @@ convention 特性总是与下面的参数之一一起出现。 次特性用于 switch case,表示在编译时该地方不会匹配枚举的任何情况。有关如何使用 `unknown` 特性的示例,可参阅 [Switching over Future Enumeration Cases](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID602)。 > 特性语法 +> > > +> > *特性*→ [特性名](#attribute_name) [特性参数子句](#atribute_argument_clause)可选 +> > +> > *特性名* → [标识符](02_Lexical_Structure.html#identifier) +> > +> > *特性参数子句* → **(** [均衡令牌列表](#balanced_tokens)可选 **)** +> > +> > *特性列表* → [特性](#attribute) [特性列表](#attributes)可选 +> > > +> > *均衡令牌列表* → [均衡令牌](#balanced_token) [均衡令牌列表](#balanced_tokens)可选 +> > +> > *均衡令牌* → **(** [均衡令牌列表](#balanced_tokens)可选 **)** +> > *均衡令牌* → **\[** [均衡令牌列表](#balanced_tokens)可选 **\]** +> > *均衡令牌* → **{** [均衡令牌列表](#balanced_tokens)可选 **}** +> > *均衡令牌* → 任意标识符,关键字,字面量或运算符 +> > *均衡令牌* → 任意标点除了 **(**,**)**,**[**,**]**,**{**,或 **}** +> diff --git a/source/chapter3/08_Patterns.md b/source/chapter3/08_Patterns.md index d50da3a9..76d82957 100755 --- a/source/chapter3/08_Patterns.md +++ b/source/chapter3/08_Patterns.md @@ -12,13 +12,21 @@ Swift 中的模式分为两类:一种能成功匹配任何类型的值,另 > > *模式* → [*通配符模式*](#wildcard_pattern) [*类型标注*](03_Types.html#type-annotation)可选 +> > *模式* → [*标识符模式*](#identifier_pattern) [*类型标注*](03_Types.html#type-annotation)可选 +> > *模式* → [*值绑定模式*](#value-binding-pattern) +> > *模式* → [*元组模式*](#tuple-pattern) [*类型标注*](03_Types.html#type-annotation)可选 +> > *模式* → [*枚举用例模式*](#enum-case-pattern) +> > *模式* → [*可选模式*](#optional-pattern) +> > *模式* → [*类型转换模式*](#type-casting-pattern) +> > *模式* → [*表达式模式*](#expression-pattern) +> ## 通配符模式(Wildcard Pattern) @@ -35,6 +43,7 @@ for _ in 1...3 { > > *通配符模式* → **_** +> ## 标识符模式(Identifier Pattern) @@ -53,6 +62,7 @@ let someValue = 42 > > *标识符模式* → [*标识符*](02_Lexical_Structure.html#identifier) +> ## 值绑定模式(Value-Binding Pattern) @@ -77,6 +87,7 @@ case let (x, y): > > *值绑定模式* → **var** [*模式*](#pattern) | **let** [*模式*](#pattern) +> ## 元组模式 @@ -107,10 +118,13 @@ let (a): Int = 2 // a: Int = 2 > > *元组模式* → **(** [*元组模式元素列表*](#tuple-pattern-element-list)可选 **)** +> > *元组模式元素列表* → [*元组模式元素*](#tuple-pattern-element) | [*元组模式元素*](#tuple-pattern-element) **,** [*元组模式元素列表*](#tuple-pattern-element-list) +> > *元组模式元素* → [*模式*](#pattern) +> ## 枚举用例模式(Enumeration Case Pattern) @@ -123,6 +137,7 @@ let (a): Int = 2 // a: Int = 2 > > *枚举用例模式* → [*类型标识*](03_Types.html#type-identifier)可选 **.** [*枚举用例名*](05_Declarations.html#enum-case-name) [*元组模式*](#tuple-pattern)可选 +> ## 可选模式(Optional Pattern) @@ -161,6 +176,7 @@ for case let number? in arrayOfOptinalInts { > > *可选模式* → [*标识符模式*](03_Types.html#type-identifier) **?** +> ## 类型转换模式(Type-Casting Patterns) @@ -168,7 +184,9 @@ for case let number? in arrayOfOptinalInts { 有两种类型转换模式,`is` 模式和 `as` 模式。`is` 模式只出现在 `switch` 语句中的 `case` 标签中。`is` 模式和 `as` 模式形式如下: > is `类型` +> > `模式` as `类型` +> `is` 模式仅当一个值的类型在运行时和 `is` 模式右边的指定类型一致,或者是其子类的情况下,才会匹配这个值。`is` 模式和 `is` 运算符有相似表现,它们都进行类型转换,但是 `is` 模式没有返回类型。 @@ -180,10 +198,13 @@ for case let number? in arrayOfOptinalInts { > > *类型转换模式* → [*is 模式*](#is-pattern) | [*as 模式*](#as-pattern) +> > *is 模式* → **is** [*类型*](03_Types.html#type) +> > *as 模式* → [*模式*](#pattern) **as** [*类型*](03_Types.html#type) +> ## 表达式模式(Expression Pattern) @@ -210,6 +231,7 @@ default: ```swift // 重载 ~= 运算符对字符串和整数进行比较 func ~=(pattern: String, value: Int) -> Bool { +> return pattern == "\(value)" } @@ -226,3 +248,4 @@ default: > > *表达式模式* → [*表达式*](04_Expressions.html#expression) +> diff --git a/source/chapter3/09_Generic_Parameters_and_Arguments.md b/source/chapter3/09_Generic_Parameters_and_Arguments.md index 5b430516..d1ac5713 100755 --- a/source/chapter3/09_Generic_Parameters_and_Arguments.md +++ b/source/chapter3/09_Generic_Parameters_and_Arguments.md @@ -10,10 +10,12 @@ *泛型形参子句*指定泛型类型或函数的类型形参,以及这些参数相关的约束和要求。泛型形参子句用尖括号(`<>`)包住,形式如下: > <`泛型形参列表`> +> 泛型形参列表中泛型形参用逗号分开,其中每一个采用以下形式: > `类型形参` : `约束` +> 泛型形参由两部分组成:类型形参及其后的可选约束。类型形参只是占位符类型(如 `T`,`U`,`V`,`Key`,`Value` 等)的名字而已。你可以在泛型类型、函数的其余部分或者构造器声明,包括函数或构造器的签名中使用它(以及它的关联类型)。 @@ -21,6 +23,7 @@ ```swift func simpleMax(_ x: T, _ y: T) -> T { +> if x < y { return y } @@ -41,10 +44,13 @@ simpleMax(3.14159, 2.71828) // T 被推断为 Double 类型 要想对类型形参及其关联类型指定额外要求,可以在函数体或者类型的大括号之前添加 `where` 子句。`where` 子句由关键字 `where` 及其后的用逗号分隔的一个或多个要求组成。 > `where` : `类型要求` +> `where` 子句中的要求用于指明该类型形参继承自某个类或符合某个协议或协议组合。尽管 `where` 子句提供了语法糖使其有助于表达类型形参上的简单约束(如 `` 等同于 ` where T: Comparable`,等等),但是依然可以用来对类型形参及其关联类型提供更复杂的约束,例如你可以强制形参的关联类型遵守协议,如,` where S.Iterator.Element: Equatable` 表示泛型类型 `S` 遵守 `Sequence` 协议并且关联类型 `S.Iterator.Element` 遵守 `Equatable` 协议,这个约束确保队列的每一个元素都是符合 `Equatable` 协议的。 +> 也可以用操作符 `==` 来指定两个类型必须相同。例如,泛型形参子句 ` where S1.Iterator.Element == S2.Iterator.Element` 表示 `S1` 和 `S2` 必须都符合 `SequenceType` 协议,而且两个序列中的元素类型必须相同。 +> 当然,替代类型形参的类型实参必须满足所有的约束和要求。 @@ -56,23 +62,36 @@ simpleMax(3.14159, 2.71828) // T 被推断为 Double 类型 > > *泛型形参子句* → **<** [*泛型形参列表*](#generic-parameter-list) [*约束子句*](#requirement-clause)可选 **>** +> > *泛型形参列表* → [*泛形形参*](#generic-parameter) | [*泛形形参*](#generic-parameter) **,** [*泛型形参列表*](#generic-parameter-list) +> > *泛形形参* → [*类型名称*](03_Types.html#type-name) +> > *泛形形参* → [*类型名称*](03_Types.html#type-name) **:** [*类型标识符*](03_Types.html#type-identifier) +> > *泛形形参* → [*类型名称*](03_Types.html#type-name) **:** [*协议合成类型*](03_Types.html#protocol-composition-type) +> > +> > *约束子句* → **where** [*约束列表*](#requirement-list) +> > *约束列表* → [*约束*](#requirement) | [*约束*](#requirement) **,** [*约束列表*](#requirement-list) +> > *约束* → [*一致性约束*](#conformance-requirement) | [*同类型约束*](#same-type-requirement) +> > +> > *一致性约束* → [*类型标识符*](03_Types.html#type-identifier) **:** [*类型标识符*](03_Types.html#type-identifier) +> > *一致性约束* → [*类型标识符*](03_Types.html#type-identifier) **:** [*协议合成类型*](03_Types.html#protocol-composition-type) +> > *同类型约束* → [*类型标识符*](03_Types.html#type-identifier) **==** [*类型*](03_Types.html#type) +> ## 泛型实参子句 @@ -80,6 +99,7 @@ simpleMax(3.14159, 2.71828) // T 被推断为 Double 类型 *泛型实参子句*指定泛型类型的类型实参。泛型实参子句用尖括号(`<>`)包住,形式如下: > <`泛型实参列表`> +> 泛型实参列表中类型实参用逗号分开。类型实参是实际具体类型的名字,用来替代泛型类型的泛型形参子句中的相应的类型形参。从而得到泛型类型的一个特化版本。例如,Swift 标准库中的泛型字典类型的的简化定义如下: @@ -95,6 +115,7 @@ struct Dictionary: CollectionType, DictionaryLiteralConver ```swift let arrayOfArrays: Array> = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] +> ``` 如 [泛型形参子句](#generic_parameter) 所述,不能用泛型实参子句来指定泛型函数或构造器的类型实参。 @@ -103,7 +124,10 @@ let arrayOfArrays: Array> = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] > > *泛型实参子句* → **<** [*泛型实参列表*](#generic-argument-list) **>** +> > *泛型实参列表* → [*泛型实参*](#generic-argument) | [*泛型实参*](#generic-argument) **,** [*泛型实参列表*](#generic-argument-list) +> > *泛型实参* → [*类型*](03_Types.html#type) +> diff --git a/source/chapter3/10_Summary_of_the_Grammar.md b/source/chapter3/10_Summary_of_the_Grammar.md index aa7e6439..0bfd6f58 100755 --- a/source/chapter3/10_Summary_of_the_Grammar.md +++ b/source/chapter3/10_Summary_of_the_Grammar.md @@ -6,56 +6,85 @@ > 语句语法 > > *语句* → [*表达式*](../chapter3/04_Expressions.html#expression) **;** _可选_ +> > *语句* → [*声明*](../chapter3/05_Declarations.html#declaration) **;** _可选_ +> > *语句* → [*循环语句*](../chapter3/10_Statements.html#loop_statement) **;** _可选_ +> > *语句* → [*分支语句*](../chapter3/10_Statements.html#branch_statement) **;** _可选_ +> > *语句* → [*标记语句(Labeled Statement)*](../chapter3/10_Statements.html#labeled_statement) +> > *语句* → [*控制转移语句*](../chapter3/10_Statements.html#control_transfer_statement) **;** _可选_ +> > *语句* → [*延迟语句*](TODO) **;** _可选_ +> > *语句* → [*执行语句*](TODO) **;** _可选_ +> > *多条语句(Statements)* → [*语句*](../chapter3/10_Statements.html#statement) [*多条语句(Statements)*](../chapter3/10_Statements.html#statements) _可选_ +> > 循环语句语法 > > *循环语句* → [*for 语句*](../chapter3/10_Statements.html#for_statement) +> > *循环语句* → [*for-in 语句*](../chapter3/10_Statements.html#for_in_statement) +> > *循环语句* → [*while 语句*](../chapter3/10_Statements.html#wheetatype 类型 ile_statement) +> > *循环语句* → [*repeat-while 语句*](../chapter3/10_Statements.html#do_while_statement) +> > For 循环语法 > > *for 语句* → **for** [*for 初始条件*](../chapter3/10_Statements.html#for_init) _可选_ **;** [*表达式*](../chapter3/04_Expressions.html#expression) _可选_ **;** [*表达式*](../chapter3/04_Expressions.html#expression) _可选_ [*代码块*](../chapter3/05_Declarations.html#code_block) +> > *for 语句* → **for** **(** [*for 初始条件*](../chapter3/10_Statements.html#for_init) _可选_ **;** [*表达式*](../chapter3/04_Expressions.html#expression) _可选_ **;** [*表达式*](../chapter3/04_Expressions.html#expression) _可选_ **)** [*代码块*](../chapter3/05_Declarations.html#code_block) +> > *for 初始条件* → [*变量声明*](../chapter3/05_Declarations.html#variable_declaration) | [*表达式集*](../chapter3/04_Expressions.html#expression_list) +> > For-In 循环语法 > > *for-in 语句* → **for case** _可选_ [*模式*](../chapter3/07_Patterns.html#pattern) **in** [*表达式*](../chapter3/04_Expressions.html#expression) [*代码块*](../chapter3/05_Declarations.html#code_block) [*where 从句*](TODO) _可选_ +> > While 循环语法 > > *while 语句* → **while** [*条件从句*](../chapter3/10_Statements.html#while_condition) [*代码块*](../chapter3/05_Declarations.html#code_block) +> > *条件从句* → [*表达式*](TODO) +> > *条件从句* → [*表达式*](TODO) *,* [*表达式集*]() +> > *条件从句* → [*表达式集*](TODO) +> > *条件从句* → [*可用条件(availability-condition*)](TODO) *|* [*表达式集*]() +> > *条件集* → [*条件*](TODO) *|* [*条件*](TODO) *,* [*条件集*]() +> > *条件* → [*可用条件(availability-condition)*](TODO) *|* [*个例条件(case-condition)*](TODO) *|* [*可选绑定条件(optional-binding-condition)*](TODO) +> > *个例条件(case-condition)* → **case** [*模式*](TODO) [*构造器*](TODO) [*where 从句*](TODO)_可选_ +> > *可选绑定条件(optional-binding-condition)* → [*可选绑定头(optional-binding-head)*](TODO) [*可选绑定连续集(optional-binding-continuation-list)*](TODO) _可选_ [*where 从句*](TODO) _可选_ +> > *可选绑定头(optional-binding-head)* → **let** [*模式 构造器*](TODO) *|* **var** [*模式 构造器*](TODO) +> > *可选绑定连续集(optional-binding-contiuation-list)* → [*可选绑定连续(optional-binding-contiuation)*](TODO) *|* [*可选绑定连续(optional-binding-contiuation)*](TODO) *,* [*可选绑定连续集(optional-binding-contiuation-list)*](TODO) +> > *可选绑定连续(optional-binding-continuation)* → [*模式 构造器*](TODO) *|* [*可选绑定头(optional-binding-head)*](TODO) +> > Repeat-While 语句语法 @@ -67,20 +96,26 @@ > 分支语句语法 > > *分支语句* → [*if 语句*](../chapter3/10_Statements.html#if_statement) +> > *分支语句* → [*guard 语句*](TODO) +> > *分支语句* → [*switch 语句*](../chapter3/10_Statements.html#switch_statement) +> > If 语句语法 > > *if 语句* → **if** [*条件从句*](TODO) [*代码块*](TODO) [*else 从句(Clause)*](TODO) _可选_ +> > *else 从句(Clause)* → **else** [*代码块*](../chapter3/05_Declarations.html#code_block) | **else** [*if 语句*](../chapter3/10_Statements.html#if_statement) +> > Guard 语句语法 > > *guard 语句* → **guard** [*条件从句*](TODO) **else** [*代码块*](TODO) +> @@ -88,114 +123,165 @@ > Switch 语句语法 > > *switch 语句* → **switch** [*表达式*](../chapter3/04_Expressions.html#expression) **{** [*SwitchCase*](../chapter3/10_Statements.html#switch_cases) _可选_ **}** +> > *SwitchCase 集* → [*SwitchCase*](../chapter3/10_Statements.html#switch_case) [*SwitchCase 集*](../chapter3/10_Statements.html#switch_cases) _可选_ +> > *SwitchCase* → [*case 标签*](../chapter3/10_Statements.html#case_label) [*多条语句(Statements)*](../chapter3/10_Statements.html#statements) | [*default 标签*](../chapter3/10_Statements.html#default_label) [*多条语句(Statements)*](../chapter3/10_Statements.html#statements) +> > *SwitchCase* → [*case 标签*](../chapter3/10_Statements.html#case_label) **;** | [*default 标签*](../chapter3/10_Statements.html#default_label) **;** +> > *case 标签* → **case** [*case 项集*](../chapter3/10_Statements.html#case_item_list) **:** +> > *case 项集* → [*模式*](../chapter3/07_Patterns.html#pattern) [*where-clause*](../chapter3/10_Statements.html#guard_clause) _可选_ | [*模式*](../chapter3/07_Patterns.html#pattern) [*where-clause*](../chapter3/10_Statements.html#guard_clause) _可选_ **,** [*case 项集*](../chapter3/10_Statements.html#case_item_list) +> > *default 标签* → **default** **:** +> > *where 从句* → **where** [*where 表达式*](TODO) +> > *where 表达式* → [*表达式*](TODO) +> > 标记语句语法 > > *标记语句(Labeled Statement)* → [*语句标签*](../chapter3/10_Statements.html#statement_label) [*循环语句*](../chapter3/10_Statements.html#loop_statement) | [*语句标签*](../chapter3/10_Statements.html#statement_label) [*if 语句*](../chapter3/10_Statements.html#switch_statement) | [*语句标签*](TODY) [*switch 语句*](TODY) +> > *语句标签* → [*标签名称*](../chapter3/10_Statements.html#label_name) **:** +> > *标签名称* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> > 控制传递语句(Control Transfer Statement)语法 > > *控制传递语句* → [*break 语句*](../chapter3/10_Statements.html#break_statement) +> > *控制传递语句* → [*continue 语句*](../chapter3/10_Statements.html#continue_statement) +> > *控制传递语句* → [*fallthrough 语句*](../chapter3/10_Statements.html#fallthrough_statement) +> > *控制传递语句* → [*return 语句*](../chapter3/10_Statements.html#return_statement) +> > *控制传递语句* → [*throw 语句*](TODO) +> > Break 语句语法 > > *break 语句* → **break** [*标签名称*](../chapter3/10_Statements.html#label_name) _可选_ +> > Continue 语句语法 > > *continue 语句* → **continue** [*标签名称*](../chapter3/10_Statements.html#label_name) _可选_ +> > Fallthrough 语句语法 > > *fallthrough 语句* → **fallthrough** +> > Return 语句语法 > > *return 语句* → **return** [*表达式*](../chapter3/04_Expressions.html#expression) _可选_ +> > 可用条件(Availability Condition)语法 > > *可用条件(availability-condition)* → **#available** **(** [*多可用参数*(availability-arguments)](TODO) **)** +> > *多可用参数(availability- arguments)* → [*可用参数(availability-argument)*](TODO)|[*可用参数(availability-argument)*](TODO) , [多可用参数(availability-arguments)](TODO) +> > *可用参数(availability- argument)* → [*平台名(platform-name)*](TODO) [*平台版本(platform-version)*](TODO) +> > *可用参数(availability- argument)* → * > > *平台名* → **iOS** | **iOSApplicationExtension** +> > *平台名* → **OSX** | **macOSApplicationExtension** +> > *平台名* → **watchOS** +> > *平台名* → **tvOS** +> > *平台版本* → [*十进制数(decimal-digits)*](TODO) +> > *平台版本* → [*十进制数(decimal-digits)*](TODO) . [*十进制数(decimal-digits)*](TODO) +> > *平台版本* → [*十进制数(decimal-digits)*](TODO) **.** [*十进制数(decimal-digits)*](TODO) **.** [*十进制数(decimal-digits)*](TODO)) +> > 抛出语句(Throw Statement)语法 > > *抛出语句(throw-statement)* → **throw** [*表达式(expression)*](TODO) +> > 延迟语句(defer-statement)语法 > > *延迟语句(defer-statement)* → **defer** [*代码块*](TODO) +> > 执行语句(do-statement)语法 > > *执行语句(do-statement)* → **do** [*代码块*](TODO) [*catch-clauses*](TODO) _可选_ +> > *catch-clauses* → [*catch-clause*](TODO) [*catch-clauses*](TODO) _可选_ +> > *catch-clauses* → **catch** [*模式(pattern)*](TODO) _可选_ [*where-clause*](TODO) _可选_ [*代码块(code-block)*](TODO) _可选_ +> ## 泛型参数 > 泛型形参从句(Generic Parameter Clause)语法 +> > > *泛型参数从句* → **<** [*泛型参数集*](GenericParametersAndArguments.html#generic_parameter_list) [*约束从句*](GenericParametersAndArguments.html#requirement_clause) _可选_ **>** +> > *泛型参数集* → [*泛形参数*](GenericParametersAndArguments.html#generic_parameter) | [*泛形参数*](GenericParametersAndArguments.html#generic_parameter) **,** [*泛型参数集*](GenericParametersAndArguments.html#generic_parameter_list) +> > *泛形参数* → [*类型名称*](../chapter3/03_Types.html#type_name) +> > *泛形参数* → [*类型名称*](../chapter3/03_Types.html#type_name) **:** [*类型标识*](../chapter3/03_Types.html#type_identifier) +> > *泛形参数* → [*类型名称*](../chapter3/03_Types.html#type_name) **:** [*协议合成类型*](../chapter3/03_Types.html#protocol_composition_type) +> > *约束从句* → **where** [*约束集*](GenericParametersAndArguments.html#requirement_list) +> > *约束集* → [*约束*](GenericParametersAndArguments.html#requirement) | [*约束*](GenericParametersAndArguments.html#requirement) **,** [*约束集*](GenericParametersAndArguments.html#requirement_list) +> > *约束* → [*一致性约束*](GenericParametersAndArguments.html#conformance_requirement) | [*同类型约束*](GenericParametersAndArguments.html#same_type_requirement) +> > *一致性约束* → [*类型标识*](../chapter3/03_Types.html#type_identifier) **:** [*类型标识*](../chapter3/03_Types.html#type_identifier) +> > *一致性约束* → [*类型标识*](../chapter3/03_Types.html#type_identifier) **:** [*协议合成类型*](../chapter3/03_Types.html#protocol_composition_type) +> > *同类型约束* → [*类型标识*](../chapter3/03_Types.html#type_identifier) **==** [*类型*](../chapter3/03_Types.html#type_identifier) +> > 泛型实参从句语法 > > *(泛型参数从句 Generic Argument Clause)* → **<** [*泛型参数集*](GenericParametersAndArguments.html#generic_argument_list) **>** +> > *泛型参数集* → [*泛型参数*](GenericParametersAndArguments.html#generic_argument) | [*泛型参数*](GenericParametersAndArguments.html#generic_argument) **,** [*泛型参数集*](GenericParametersAndArguments.html#generic_argument_list) +> > *泛型参数* → [*类型*](../chapter3/03_Types.html#type) +> ## 声明(Declarations) @@ -203,20 +289,35 @@ > 声明语法 > > *声明* → [*导入声明*](../chapter3/05_Declarations.html#import_declaration) +> > *声明* → [*常量声明*](../chapter3/05_Declarations.html#constant_declaration) +> > *声明* → [*变量声明*](../chapter3/05_Declarations.html#variable_declaration) +> > *声明* → [*类型别名声明*](../chapter3/05_Declarations.html#typealias_declaration) +> > *声明* → [*函数声明*](../chapter3/05_Declarations.html#function_declaration) +> > *声明* → [*枚举声明*](../chapter3/05_Declarations.html#enum_declaration) +> > *声明* → [*结构体声明*](../chapter3/05_Declarations.html#struct_declaration) +> > *声明* → [*类声明*](../chapter3/05_Declarations.html#class_declaration) +> > *声明* → [*协议声明*](../chapter3/05_Declarations.html#protocol_declaration) +> > *声明* → [*构造器声明*](../chapter3/05_Declarations.html#initializer_declaration) +> > *声明* → [*析构器声明*](../chapter3/05_Declarations.html#deinitializer_declaration) +> > *声明* → [*扩展声明*](../chapter3/05_Declarations.html#extension_declaration) +> > *声明* → [*下标声明*](../chapter3/05_Declarations.html#subscript_declaration) +> > *声明* → [*运算符声明*](../chapter3/05_Declarations.html#operator_declaration) +> > *声明(Declarations)集* → [*声明*](../chapter3/05_Declarations.html#declaration) [*声明(Declarations)集*](../chapter3/05_Declarations.html#declarations) _可选_ +> @@ -224,55 +325,85 @@ > 顶级(Top Level)声明语法 > > *顶级声明* → [*多条语句(Statements)*](../chapter3/10_Statements.html#statements) _可选_ +> > 代码块语法 > > *代码块* → **{** [*多条语句(Statements)*](../chapter3/10_Statements.html#statements) _可选_ **}** +> > 导入(Import)声明语法 > > *导入声明* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ **import** [*导入类型*](../chapter3/05_Declarations.html#import_kind) _可选_ [*导入路径*](../chapter3/05_Declarations.html#import_path) +> > *导入类型* → **typealias** | **struct** | **class** | **enum** | **protocol** | **var** | **func** +> > *导入路径* → [*导入路径标识符*](../chapter3/05_Declarations.html#import_path_identifier) | [*导入路径标识符*](../chapter3/05_Declarations.html#import_path_identifier) **.** [*导入路径*](../chapter3/05_Declarations.html#import_path) +> > *导入路径标识符* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) | [*运算符*](../chapter3/02_Lexical_Structure.html#operator) +> > 常数声明语法 > > *常量声明* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*声明修改符(Modifiers)集*](../chapter3/05_Declarations.html#declaration_specifiers) _可选_ **let** [*模式构造器集*](../chapter3/05_Declarations.html#pattern_initializer_list) +> > *模式构造器集* → [*模式构造器*](../chapter3/05_Declarations.html#pattern_initializer) | [*模式构造器*](../chapter3/05_Declarations.html#pattern_initializer) **,** [*模式构造器集*](../chapter3/05_Declarations.html#pattern_initializer_list) +> > *模式构造器* → [*模式*](../ chapter3/07_Patterns.html#pattern) [*构造器*](../chapter3/05_Declarations.html#initializer) _可选_ +> > *构造器* → **=** [*表达式*](../chapter3/04_Expressions.html#expression) +> > 变量声明语法 > > *变量声明* → [*变量声明头(Head)*](../chapter3/05_Declarations.html#variable_declaration_head) [*模式构造器集*](../chapter3/05_Declarations.html#pattern_initializer_list) +> > *变量声明* → [*变量声明头(Head)*](../chapter3/05_Declarations.html#variable_declaration_head) [*变量名*](../chapter3/05_Declarations.html#variable_name) [*类型注解*](../chapter3/03_Types.html#type_annotation) [*代码块*](../chapter3/05_Declarations.html#code_block) +> > *变量声明* → [*变量声明头(Head)*](../chapter3/05_Declarations.html#variable_declaration_head) [*变量名*](../chapter3/05_Declarations.html#variable_name) [*类型注解*](../chapter3/03_Types.html#type_annotation) [*getter-setter 块*](../chapter3/05_Declarations.html#getter_setter_block) +> > *变量声明* → [*变量声明头(Head)*](../chapter3/05_Declarations.html#variable_declaration_head) [*变量名*](../chapter3/05_Declarations.html#variable_name) [*类型注解*](../chapter3/03_Types.html#type_annotation) [*getter-setter 关键字(Keyword)块*](../chapter3/05_Declarations.html#getter_setter_keyword_block) +> > *变量声明* → [*变量声明头(Head)*](../chapter3/05_Declarations.html#variable_declaration_head) [*变量名*](../chapter3/05_Declarations.html#variable_name) [*类型注解*](../chapter3/03_Types.html#type_annotation) [*构造器*](../chapter3/05_Declarations.html#initializer) _可选_ [*willSet-didSet 代码块*](../chapter3/05_Declarations.html#willSet_didSet_block) +> > *变量声明头(Head)* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*声明修改符(Modifers)集*](../chapter3/05_Declarations.html#declaration_specifiers) _可选_ **var** +> > *变量名称* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> > *getter-setter 块* → **{** [*getter 从句*](../chapter3/05_Declarations.html#getter_clause) [*setter 从句*](../chapter3/05_Declarations.html#setter_clause) _可选_ **}** +> > *getter-setter 块* → **{** [*setter 从句*](../chapter3/05_Declarations.html#setter_clause) [*getter 从句*](../chapter3/05_Declarations.html#getter_clause) **}** +> > *getter 从句* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ **get** [*代码块*](../chapter3/05_Declarations.html#code_block) +> > *setter 从句* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ **set** [*setter 名称*](../chapter3/05_Declarations.html#setter_name) _可选_ [*代码块*](../chapter3/05_Declarations.html#code_block) +> > *setter 名称* → **(** [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) **)** +> > *getter-setter 关键字(Keyword)块* → **{** [*getter 关键字(Keyword)从句*](../chapter3/05_Declarations.html#getter_keyword_clause) [*setter 关键字(Keyword)从句*](../chapter3/05_Declarations.html#setter_keyword_clause) _可选_ **}** +> > *getter-setter 关键字(Keyword)块* → **{** [*setter 关键字(Keyword)从句*](../chapter3/05_Declarations.html#setter_keyword_clause) [*getter 关键字(Keyword)从句*](../chapter3/05_Declarations.html#getter_keyword_clause) **}** +> > *getter 关键字(Keyword)从句* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ **get** +> > *setter 关键字(Keyword)从句* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ **set** +> > *willSet-didSet 代码块* → **{** [*willSet 从句*](../chapter3/05_Declarations.html#willSet_clause) [*didSet 从句*](../chapter3/05_Declarations.html#didSet_clause) _可选_ **}** +> > *willSet-didSet 代码块* → **{** [*didSet 从句*](../chapter3/05_Declarations.html#didSet_clause) [*willSet 从句*](../chapter3/05_Declarations.html#willSet_clause) **}** +> > *willSet 从句* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ **willSet** [*setter 名称*](../chapter3/05_Declarations.html#setter_name) _可选_ [*代码块*](../chapter3/05_Declarations.html#code_block) +> > *didSet 从句* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ +> **didSet** [*setter 名称*](../chapter3/05_Declarations.html#setter_name) _可选_ [*代码块*](../chapter3/05_Declarations.html#code_block) @@ -280,173 +411,260 @@ > 类型别名声明语法 > > *类型别名声明* → [*类型别名头(Head)*](../chapter3/05_Declarations.html#typealias_head) [*类型别名赋值*](../chapter3/05_Declarations.html#typealias_assignment) +> > *类型别名头(Head)* → [*属性*](TODO) _可选_ [*访问级别修改符(access-level-modifier)*](TODO) **typealias** [*类型别名名称*](../chapter3/05_Declarations.html#typealias_name) +> > *类型别名名称* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> > *类型别名赋值* → **=** [*类型*](../chapter3/03_Types.html#type) +> > 函数声明语法 > > *函数声明* → [*函数头*](../chapter3/05_Declarations.html#function_head) [*函数名*](../chapter3/05_Declarations.html#function_name) [*泛型参数从句*](GenericParametersAndArguments.html#generic_parameter_clause) _可选_ [*函数签名(Signature)*](../chapter3/05_Declarations.html#function_signature) [*函数体*](../chapter3/05_Declarations.html#function_body) +> > *函数头* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*声明描述符(Specifiers)集*](../chapter3/05_Declarations.html#declaration_specifiers) _可选_ **func** +> > *函数名* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) | [*运算符*](../chapter3/02_Lexical_Structure.html#operator) +> > *函数签名(Signature)* → [*parameter-clauses*](../chapter3/05_Declarations.html#parameter_clauses) **throws** _可选_ [*函数结果*](../chapter3/05_Declarations.html#function_result) _可选_ +> > *函数签名(Signature)* → [*parameter-clauses*](../chapter3/05_Declarations.html#parameter_clauses) **rethrows** [*函数结果*](../chapter3/05_Declarations.html#function_result) _可选_ +> > *函数结果* → **->** [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*类型*](../chapter3/03_Types.html#type) +> > *函数体* → [*代码块*](../chapter3/05_Declarations.html#code_block) +> > *参数从句* → [*参数从句*](../chapter3/05_Declarations.html#parameter_clause) [*parameter-clauses*](../chapter3/05_Declarations.html#parameter_clauses) _可选_ +> > *参数从句* → **(** **)** | **(** [*参数集*](../chapter3/05_Declarations.html#parameter_list) **...** _可选_ **)** +> > *参数集* → [*参数*](../chapter3/05_Declarations.html#parameter) | [*参数*](../chapter3/05_Declarations.html#parameter) **,** [*参数集*](../chapter3/05_Declarations.html#parameter_list) +> > *参数* → **inout** _可选_ **let** _可选_ [*外部参数名*](../chapter3/05_Declarations.html#parameter_name) _可选_ [*本地参数名*](../chapter3/05_Declarations.html#local_parameter_name) _可选_ [*类型注解*](../chapter3/03_Types.html#type_annotation) [*默认参数从句*](../chapter3/05_Declarations.html#default_argument_clause) _可选_ +> > *参数* → **inout** _可选_ **var** [*外部参数名*](../chapter3/05_Declarations.html#parameter_name) [*本地参数名*](../chapter3/05_Declarations.html#local_parameter_name) _可选_ [*类型注解*](../chapter3/03_Types.html#type_annotation) [*默认参数从句*](../chapter3/05_Declarations.html#default_argument_clause) _可选_ +> > *参数* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*类型*](../chapter3/03_Types.html#type) +> > *外部参数名* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) | **_** +> > *本地参数名* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) | **_** +> > *默认参数从句* → **=** [*表达式*](../chapter3/04_Expressions.html#expression) +> > 枚举声明语法 > > *枚举声明* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](TODO) _可选_ [*联合式枚举*](../chapter3/05_Declarations.html#union_style_enum) +> > *枚举声明* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](TODO) _可选_ [*原始值式枚举(raw-value-style-enum)*](TODO) +> > *联合式枚举* → **enum** [*枚举名*](../chapter3/05_Declarations.html#enum_name) [*泛型参数从句*](GenericParametersAndArguments.html#generic_parameter_clause) _可选_ [*类型继承从句(type-inheritance-clause)*](TODO) _可选_ **{** [*联合样式枚举成员*](../chapter3/05_Declarations.html#union_style_enum_members) _可选_ **}** +> > *联合样式枚举成员* → [*union-style-enum-member*](../chapter3/05_Declarations.html#union_style_enum_member) [*联合样式枚举成员*](../chapter3/05_Declarations.html#union_style_enum_members) _可选_ +> > *联合样式枚举成员* → [*声明*](../chapter3/05_Declarations.html#declaration) | [*联合式(Union Style)的枚举 case 从句*](../chapter3/05_Declarations.html#union_style_enum_case_clause) +> > *联合式(Union Style)的枚举 case 从句* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ **case** [*联合式(Union Style)的枚举 case 集*](../chapter3/05_Declarations.html#union_style_enum_case_list) +> > *联合式(Union Style)的枚举 case 集* → [*联合式(Union Style)的 case*](../chapter3/05_Declarations.html#union_style_enum_case) | [*联合式(Union Style)的 case*](../chapter3/05_Declarations.html#union_style_enum_case) **,** [*联合式(Union Style)的枚举 case 集*](../chapter3/05_Declarations.html#union_style_enum_case_list) +> > *联合式(Union Style)的枚举 case* → [*枚举的 case 名*](../chapter3/05_Declarations.html#enum_case_name) [*元组类型*](../chapter3/03_Types.html#tuple_type) _可选_ +> > *枚举名* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> > *枚举的 case 名* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> > *原始值式枚举* → **enum** [*枚举名*](../chapter3/05_Declarations.html#enum_name) [*泛型参数从句*](GenericParametersAndArguments.html#generic_parameter_clause) _可选_ **:** [*类型标识*](../chapter3/03_Types.html#type_identifier) **{** [*原始值式枚举成员集*](../chapter3/05_Declarations.html#raw_value_style_enum_members) _可选_ **}** +> > *原始值式枚举成员集* → [*原始值式枚举成员*](../chapter3/05_Declarations.html#raw_value_style_enum_member) [*原始值式枚举成员集*](../chapter3/05_Declarations.html#raw_value_style_enum_members) _可选_ +> > *原始值式枚举成员* → [*声明*](../chapter3/05_Declarations.html#declaration) | [*原始值式枚举 case 从句*](../chapter3/05_Declarations.html#raw_value_style_enum_case_clause) +> > *原始值式枚举 case 从句* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ **case** [*原始值式枚举 case 集*](../chapter3/05_Declarations.html#raw_value_style_enum_case_list) +> > *原始值式枚举 case 集* → [*原始值式枚举 case*](../chapter3/05_Declarations.html#raw_value_style_enum_case) | [*原始值式枚举 case*](../chapter3/05_Declarations.html#raw_value_style_enum_case) **,** [*原始值式枚举 case 集*](../chapter3/05_Declarations.html#raw_value_style_enum_case_list) +> > *原始值式枚举 case* → [*枚举的 case 名*](../chapter3/05_Declarations.html#enum_case_name) [*原始值赋值*](../chapter3/05_Declarations.html#raw_value_assignment) _可选_ +> > *原始值赋值* → **=** [*字面量*](../chapter3/02_Lexical_Structure.html#literal) +> > *原始值字面量(raw-value-literal)* → [*数值字面量*](TODO) | [*字符串字面量*](TODO) | [*布尔字面量*](TODO) +> > 结构体声明语法 > > *结构体声明* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](TODO) _可选_ **struct** [*结构体名称*](../chapter3/05_Declarations.html#struct_name) [*泛型参数从句*](GenericParametersAndArguments.html#generic_parameter_clause) _可选_ [*类型继承从句*](../chapter3/03_Types.html#type_inheritance_clause) _可选_ [*结构体主体*](../chapter3/05_Declarations.html#struct_body) +> > *结构体名称* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> > *结构体主体* → **{** [*声明(Declarations)集*](../chapter3/05_Declarations.html#declarations) _可选_ **}** +> > 类声明语法 > > *类声明* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](TODO) **class** [*类名*](../chapter3/05_Declarations.html#class_name) [*泛型参数从句*](GenericParametersAndArguments.html#generic_parameter_clause) _可选_ [*类型继承从句*](../chapter3/03_Types.html#type_inheritance_clause) _可选_ [*类主体*](../chapter3/05_Declarations.html#class_body) +> > *类名* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> > *类主体* → **{** [*声明(Declarations)集*](../chapter3/05_Declarations.html#declarations) _可选_ **}** +> > 协议(Protocol)声明语法 > > *协议声明* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_[*访问级别修改器(access-level-modifier)*](TODO) **protocol** [*协议名*](../chapter3/05_Declarations.html#protocol_name) [*类型继承从句*](../chapter3/03_Types.html#type_inheritance_clause) _可选_ [*协议主体*](../chapter3/05_Declarations.html#protocol_body) +> > *协议名* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> > *协议主体* → **{** [*协议成员声明(Declarations)集*](../chapter3/05_Declarations.html#protocol_member_declarations) _可选_ **}** +> > *协议成员声明* → [*协议属性声明*](../chapter3/05_Declarations.html#protocol_property_declaration) +> > *协议成员声明* → [*协议方法声明*](../chapter3/05_Declarations.html#protocol_method_declaration) +> > *协议成员声明* → [*协议构造器声明*](../chapter3/05_Declarations.html#protocol_initializer_declaration) +> > *协议成员声明* → [*协议下标声明*](../chapter3/05_Declarations.html#protocol_subscript_declaration) +> > *协议成员声明* → [*协议关联类型声明*](../chapter3/05_Declarations.html#protocol_associated_type_declaration) +> > *协议成员声明(Declarations)集* → [*协议成员声明*](../chapter3/05_Declarations.html#protocol_member_declaration) [*协议成员声明(Declarations)集*](../chapter3/05_Declarations.html#protocol_member_declarations) _可选_ +> > 协议属性声明语法 > > *协议属性声明* → [*变量声明头(Head)*](../chapter3/05_Declarations.html#variable_declaration_head) [*变量名*](../chapter3/05_Declarations.html#variable_name) [*类型注解*](../chapter3/03_Types.html#type_annotation) [*getter-setter 关键字(Keyword)块*](../chapter3/05_Declarations.html#getter_setter_keyword_block) +> > 协议方法声明语法 > > *协议方法声明* → [*函数头*](../chapter3/05_Declarations.html#function_head) [*函数名*](../chapter3/05_Declarations.html#function_name) [*泛型参数从句*](GenericParametersAndArguments.html#generic_parameter_clause) _可选_ [*函数签名(Signature)*](../chapter3/05_Declarations.html#function_signature) +> > 协议构造器声明语法 > > *协议构造器声明* → [*构造器头(Head)*](../chapter3/05_Declarations.html#initializer_head) [*泛型参数从句*](GenericParametersAndArguments.html#generic_parameter_clause) _可选_ [*参数从句*](../chapter3/05_Declarations.html#parameter_clause) +> > 协议下标声明语法 > > *协议下标声明* → [*下标头(Head)*](../chapter3/05_Declarations.html#subscript_head) [*下标结果(Result)*](../chapter3/05_Declarations.html#subscript_result) [*getter-setter 关键字(Keyword)块*](../chapter3/05_Declarations.html#getter_setter_keyword_block) +> > 协议关联类型声明语法 > > *协议关联类型声明* → [*类型别名头(Head)*](../chapter3/05_Declarations.html#typealias_head) [*类型继承从句*](../chapter3/03_Types.html#type_inheritance_clause) _可选_ [*类型别名赋值*](../chapter3/05_Declarations.html#typealias_assignment) _可选_ +> > 构造器声明语法 > > *构造器声明* → [*构造器头(Head)*](../chapter3/05_Declarations.html#initializer_head) [*泛型参数从句*](GenericParametersAndArguments.html#generic_parameter_clause) _可选_ [*参数从句*](../chapter3/05_Declarations.html#parameter_clause) [*构造器主体*](../chapter3/05_Declarations.html#initializer_body) +> > *构造器头(Head)* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*声明修改器集(declaration-modifiers)*](TODO) _可选_ **init** +> > *构造器头(Head)* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*声明修改器集(declaration-modifiers)*](TODO) _可选_ **init ?** +> > *构造器头(Head)* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*声明修改器集(declaration-modifiers)*](TODO) _可选_ **init !** +> > *构造器主体* → [*代码块*](../chapter3/05_Declarations.html#code_block) +> > 析构器声明语法 > > *析构器声明* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ **deinit** [*代码块*](../chapter3/05_Declarations.html#code_block) +> > 扩展(Extension)声明语法 > > *扩展声明* → [*访问级别修改器*](TODO) _可选_ **extension** [*类型标识*](../chapter3/03_Types.html#type_identifier) [*类型继承从句*](../chapter3/03_Types.html#type_inheritance_clause) _可选_ [*extension-body*](../chapter3/05_Declarations.html#extension_body) +> > *extension-body* → **{** [*声明(Declarations)集*](../chapter3/05_Declarations.html#declarations) _可选_ **}** +> > 下标声明语法 > > *下标声明* → [*下标头(Head)*](../chapter3/05_Declarations.html#subscript_head) [*下标结果(Result)*](../chapter3/05_Declarations.html#subscript_result) [*代码块*](../chapter3/05_Declarations.html#code_block) +> > *下标声明* → [*下标头(Head)*](../chapter3/05_Declarations.html#subscript_head) [*下标结果(Result)*](../chapter3/05_Declarations.html#subscript_result) [*getter-setter 块*](../chapter3/05_Declarations.html#getter_setter_block) +> > *下标声明* → [*下标头(Head)*](../chapter3/05_Declarations.html#subscript_head) [*下标结果(Result)*](../chapter3/05_Declarations.html#subscript_result) [*getter-setter 关键字(Keyword)块*](../chapter3/05_Declarations.html#getter_setter_keyword_block) +> > *下标头(Head)* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*声明修改器(declaration-modifiers)*](TODO) _可选_ **subscript** [*参数从句*](../chapter3/05_Declarations.html#parameter_clause) +> > *下标结果(Result)* → **->** [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*类型*](../chapter3/03_Types.html#type) +> > 运算符声明语法 > > *运算符声明* → [*前置运算符声明*](../chapter3/05_Declarations.html#prefix_operator_declaration) | [*后置运算符声明*](../chapter3/05_Declarations.html#postfix_operator_declaration) | [*中置运算符声明*](../chapter3/05_Declarations.html#infix_operator_declaration) +> > *前置运算符声明* → **prefix** **运算符** [*运算符*](../chapter3/02_Lexical_Structure.html#operator) **{** **}** +> > *后置运算符声明* → **postfix** **运算符** [*运算符*](../chapter3/02_Lexical_Structure.html#operator) **{** **}** +> > *中置运算符声明* → **infix** **运算符** [*运算符*](../chapter3/02_Lexical_Structure.html#operator) **{** [*中置运算符属性集*](../chapter3/05_Declarations.html#infix_operator_attributes) _可选_ **}** +> > *中置运算符属性集* → [*优先级从句*](../chapter3/05_Declarations.html#precedence_clause) _可选_ [*结和性从句*](../chapter3/05_Declarations.html#associativity_clause) _可选_ +> > *优先级从句* → **precedence** [*优先级水平*](../chapter3/05_Declarations.html#precedence_level) +> > *优先级水平* → 数值 0 到 255,首末项包括在内 +> > *结和性从句* → **associativity** [*结和性*](../chapter3/05_Declarations.html#associativity) +> > *结和性* → **left** | **right** | **none** +> > 声明修改器语法 > > *声明修改器* → **类** | **便捷(convenience)** | **动态(dynamic)** | **final** | **中置(infix)** | **lazy** | **可变(mutating)** | **不可变(nonmutating)** | **可选(optional)** | **改写(override)** | **后置** | **前置** | **required** | **static** | **unowned** | **unowned(safe)** | **unowned(unsafe)** | **弱(weak)** +> > *声明修改器* → [*访问级别声明器(access-level-modifier)*](TODO) +> > *声明修改集* → [*声明修改器*](TODO) [*声明修改器集*](TODO) _可选_ +> > *访问级别修改器* → **内部的** | **内部的(set)** +> > *访问级别修改器* → **私有的** | **私有的(set)** +> > *访问级别修改器* → **公共的** +> | **公共的(set)** > *访问级别修改器集* →[*访问级别修改器*](TODO) [*访问级别修改器集*](TODO) _可选_ +> ## 模式 @@ -454,65 +672,84 @@ > 模式(Patterns)语法 > > *模式* → [*通配符模式*](../chapter3/07_Patterns.html#wildcard_pattern) [*类型注解*](../chapter3/03_Types.html#type_annotation) _可选_ +> > *模式* → [*标识符模式*](../chapter3/07_Patterns.html#identifier_pattern) [*类型注解*](../chapter3/03_Types.html#type_annotati Value Bindingon ) _可选_ +> > *模式* → [*值绑定模式*](../chapter3/07_Patterns.html#value_binding_pattern) +> > *模式* → [*元组模式*](../chapter3/07_Patterns.html#tuple_pattern) [*类型注解*](../chapter3/03_Types.html#type_annotation) _可选_ > > *模式* → [*枚举个例模式*](../chapter3/07_Patterns.html#enum_case_pattern) +> > *模式* → [*可选模式*](TODO) +> > *模式* → [*类型转换模式*](../chapter3/07_Patterns.html#type_casting_pattern) +> > *模式* → [*表达式模式*](../chapter3/07_Patterns.html#expression_pattern) +> > 通配符模式语法 > > *通配符模式* → **_** +> > 标识符模式语法 > > *标识符模式* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> > 值绑定(Value Binding)模式语法 > > *值绑定模式* → **var** [*模式*](../chapter3/07_Patterns.html#pattern) | **let** [*模式*](../chapter3/07_Patterns.html#pattern) +> > 元组模式语法 > > *元组模式* → **(** [*元组模式元素集*](../chapter3/07_Patterns.html#tuple_pattern_element_list) _可选_ **)** +> > *元组模式元素集* → [*元组模式元素*](../chapter3/07_Patterns.html#tuple_pattern_element) | [*元组模式元素*](../chapter3/07_Patterns.html#tuple_pattern_element) **,** [*元组模式元素集*](../chapter3/07_Patterns.html#tuple_pattern_element_list) +> > *元组模式元素* → [*模式*](../chapter3/07_Patterns.html#pattern) +> > 枚举用例模式语法 > > *enum-case-pattern* → [*类型标识*](../chapter3/03_Types.html#type_identifier) _可选_ **.** [*枚举的 case 名*](../chapter3/05_Declarations.html#enum_case_name) [*元组模式*](../chapter3/07_Patterns.html#tuple_pattern) _可选_ +> > 可选模式语法 > > *可选模式* → [*识别符模式*](TODO) **?** +> > 类型转换模式语法 > > *类型转换模式(type-casting-pattern)* → [*is 模式*](../chapter3/07_Patterns.html#is_pattern) | [*as 模式*](../chapter3/07_Patterns.html#as_pattern) +> > *is 模式* → **is** [*类型*](../chapter3/03_Types.html#type) +> > *as 模式* → [*模式*](../chapter3/07_Patterns.html#pattern) **as** [*类型*](../chapter3/03_Types.html#type) +> > 表达式模式语法 > > *表达式模式* → [*表达式*](../chapter3/04_Expressions.html#expression) +> ## 属性 @@ -520,15 +757,25 @@ > 属性语法 > > *属性* → **@** [*属性名*](../chapter3/06_Attributes.html#attribute_name) [*属性参数从句*](../chapter3/06_Attributes.html#attribute_argument_clause) _可选_ +> > *属性名* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> > *属性参数从句* → **(** [*平衡令牌集*](../chapter3/06_Attributes.html#balanced_tokens) _可选_ **)** +> > *属性(Attributes)集* → [*属性*](../chapter3/06_Attributes.html#attribute) [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ +> > *平衡令牌集* → [*平衡令牌*](../chapter3/06_Attributes.html#balanced_token) [*平衡令牌集*](../chapter3/06_Attributes.html#balanced_tokens) _可选_ +> > *平衡令牌* → **(** [*平衡令牌集*](../chapter3/06_Attributes.html#balanced_tokens) _可选_ **)** +> > *平衡令牌* → **[** [*平衡令牌集*](../chapter3/06_Attributes.html#balanced_tokens) _可选_ **]** +> > *平衡令牌* → **{** [*平衡令牌集*](../chapter3/06_Attributes.html#balanced_tokens) _可选_ **}** +> > *平衡令牌* → **任意标识符、关键字、字面量或运算符** +> > *平衡令牌* → **任意标点除了(、)、[、]、{ 或 }** +> ## 表达式 @@ -536,195 +783,271 @@ > 表达式语法 > > *表达式* → [*try-operator*](TODO) _可选_ [*前置表达式*](../chapter3/04_Expressions.html#prefix_expression) [*二元表达式集*](../chapter3/04_Expressions.html#binary_expressions) _可选_ +> > *表达式集* → [*表达式*](../chapter3/04_Expressions.html#expression) | [*表达式*](../chapter3/04_Expressions.html#expression) **,** [*表达式集*](../chapter3/04_Expressions.html#expression_list) +> > 前置表达式语法 > > *前置表达式* → [*前置运算符*](../chapter3/02_Lexical_Structure.html#prefix_operator) _可选_ [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) +> > *前置表达式* → [*写入写出(in-out)表达式*](../chapter3/04_Expressions.html#in_out_expression) +> > *写入写出(in-out)表达式* → **&** [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> > try 表达式语法 > > *try-operator* → **try** | **try !** +> > 二元表达式语法 > > *二元表达式* → [*二元运算符*](../chapter3/02_Lexical_Structure.html#binary_operator) [*前置表达式*](../chapter3/04_Expressions.html#prefix_expression) +> > *二元表达式* → [*赋值运算符*](../chapter3/04_Expressions.html#assignment_operator) [*try 运算符*](TODO) _可选_ [*前置表达式*](../chapter3/04_Expressions.html#prefix_expression) +> > *二元表达式* → [*条件运算符*](../chapter3/04_Expressions.html#conditional_operator) [*try 运算符*](TODO) _可选_ [*前置表达式*](../chapter3/04_Expressions.html#prefix_expression) +> > *二元表达式* → [*类型转换运算符*](../chapter3/04_Expressions.html#type_casting_operator) +> > *二元表达式集* → [*二元表达式*](../chapter3/04_Expressions.html#binary_expression) [*二元表达式集*](../chapter3/04_Expressions.html#binary_expressions) _可选_ +> > 赋值运算符语法 > > *赋值运算符* → **=** +> > 三元条件运算符语法 > > *三元条件运算符* → **?** [*表达式*](../chapter3/04_Expressions.html#expression) **:** +> > 类型转换运算符语法 > > *类型转换运算符* → **is** [*类型*](../chapter3/03_Types.html#type) +> > *类型转换运算符* → **as** [*类型*](../chapter3/03_Types.html#type) +> > *类型转换运算符* → **as ?** [*类型*](../chapter3/03_Types.html#type) +> > *类型转换运算符* → **as !** [*类型*](../chapter3/03_Types.html#type) +> > 主表达式语法 > > *主表达式* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) [*泛型参数从句*](GenericParametersAndArguments.html#generic_argument_clause) _可选_ +> > *主表达式* → [*字面量表达式*](../chapter3/04_Expressions.html#literal_expression) +> > *主表达式* → [*self 表达式*](../chapter3/04_Expressions.html#self_expression) +> > *主表达式* → [*超类表达式*](../chapter3/04_Expressions.html#superclass_expression) +> > *主表达式* → [*闭包表达式*](../chapter3/04_Expressions.html#closure_expression) +> > *主表达式* → [*圆括号表达式*](../chapter3/04_Expressions.html#parenthesized_expression) +> > *主表达式* → [*隐式成员表达式*](../chapter3/04_Expressions.html#implicit_member_expression) +> > *主表达式* → [*通配符表达式*](../chapter3/04_Expressions.html#wildcard_expression) +> > 字面量表达式语法 > > *字面量表达式* → [*字面量*](../chapter3/02_Lexical_Structure.html#literal) +> > *字面量表达式* → [*数组字面量*](../chapter3/04_Expressions.html#array_literal) | [*字典字面量*](../chapter3/04_Expressions.html#dictionary_literal) +> > *字面量表达式* → **__FILE__** | **__LINE__** | **__COLUMN__** | **__FUNCTION__** +> > *数组字面量* → **[** [*数组字面量项集*](../chapter3/04_Expressions.html#array_literal_items) _可选_ **]** +> > *数组字面量项集* → [*数组字面量项*](../chapter3/04_Expressions.html#array_literal_item) **,** _可选_ | [*数组字面量项*](../chapter3/04_Expressions.html#array_literal_item) **,** [*数组字面量项集*](../chapter3/04_Expressions.html#array_literal_items) +> > *数组字面量项* → [*表达式*](../chapter3/04_Expressions.html#expression) +> > *字典字面量* → **[** [*字典字面量项集*](../chapter3/04_Expressions.html#dictionary_literal_items) **]** | **[** **:** **]** +> > *字典字面量项集* → [*字典字面量项*](../chapter3/04_Expressions.html#dictionary_literal_item) **,** _可选_ | [*字典字面量项*](../chapter3/04_Expressions.html#dictionary_literal_item) **,** [*字典字面量项集*](../chapter3/04_Expressions.html#dictionary_literal_items) +> > *字典字面量项* → [*表达式*](../chapter3/04_Expressions.html#expression) **:** [*表达式*](../chapter3/04_Expressions.html#expression) +> > Self 表达式语法 > > *self 表达式* → **self** +> > *self 表达式* → **self** **.** [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> > *self 表达式* → **self** **[** [*表达式*](../chapter3/04_Expressions.html#expression) **]** +> > *self 表达式* → **self** **.** **init** +> > 超类表达式语法 > > *超类表达式* → [*超类方法表达式*](../chapter3/04_Expressions.html#superclass_method_expression) | [*超类下标表达式*](../chapter3/04_Expressions.html#超类下标表达式) | [*超类构造器表达式*](../chapter3/04_Expressions.html#superclass_initializer_expression) +> > *超类方法表达式* → **super** **.** [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> > *超类下标表达式* → **super** **[** [*表达式*](../chapter3/04_Expressions.html#expression) **]** +> > *超类构造器表达式* → **super** **.** **init** +> > 闭包表达式语法 > > *闭包表达式* → **{** [*闭包签名(Signational)*](../chapter3/04_Expressions.html#closure_signature) _可选_ [*多条语句(Statements)*](../chapter3/10_Statements.html#statements) **}** +> > *闭包签名(Signational)* → [*参数从句*](../chapter3/05_Declarations.html#parameter_clause) [*函数结果*](../chapter3/05_Declarations.html#function_result) _可选_ **in** +> > *闭包签名(Signational)* → [*标识符集*](../chapter3/02_Lexical_Structure.html#identifier_list) [*函数结果*](../chapter3/05_Declarations.html#function_result) _可选_ **in** +> > *闭包签名(Signational)* → [*捕获(Capature)集*](../chapter3/04_Expressions.html#capture_list) [*参数从句*](../chapter3/05_Declarations.html#parameter_clause) [*函数结果*](../chapter3/05_Declarations.html#function_result) _可选_ **in** +> > *闭包签名(Signational)* → [*捕获(Capature)集*](../chapter3/04_Expressions.html#capture_list) [*标识符集*](../chapter3/02_Lexical_Structure.html#identifier_list) [*函数结果*](../chapter3/05_Declarations.html#function_result) _可选_ **in** +> > *闭包签名(Signational)* → [*捕获(Capature)集*](../chapter3/04_Expressions.html#capture_list) **in** +> > *捕获(Capature)集* → **[** [*捕获(Capature)说明符*](../chapter3/04_Expressions.html#capture_specifier) [*表达式*](../chapter3/04_Expressions.html#expression) **]** +> > *捕获(Capature)说明符* → **weak** | **unowned** | **unowned(safe)** | **unowned(unsafe)** +> > 隐式成员表达式语法 > > *隐式成员表达式* → **.** [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> > 圆括号表达式(Parenthesized Expression)语法 > > *圆括号表达式* → **(** [*表达式元素集*](../chapter3/04_Expressions.html#expression_element_list) _可选_ **)** +> > *表达式元素集* → [*表达式元素*](../chapter3/04_Expressions.html#expression_element) | [*表达式元素*](../chapter3/04_Expressions.html#expression_element) **,** [*表达式元素集*](../chapter3/04_Expressions.html#expression_element_list) +> > *表达式元素* → [*表达式*](../chapter3/04_Expressions.html#expression) | [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) **:** [*表达式*](../chapter3/04_Expressions.html#expression) +> > 通配符表达式语法 > > *通配符表达式* → **_** +> > 后置表达式语法 > > *后置表达式* → [*主表达式*](../chapter3/04_Expressions.html#primary_expression) +> > *后置表达式* → [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) [*后置运算符*](../chapter3/02_Lexical_Structure.html#postfix_operator) +> > *后置表达式* → [*函数调用表达式*](../chapter3/04_Expressions.html#function_call_expression) +> > *后置表达式* → [*构造器表达式*](../chapter3/04_Expressions.html#initializer_expression) +> > *后置表达式* → [*显示成员表达式*](../chapter3/04_Expressions.html#explicit_member_expression) +> > *后置表达式* → [*后置 self 表达式*](../chapter3/04_Expressions.html#postfix_self_expression) +> > *后置表达式* → [*动态类型表达式*](../chapter3/04_Expressions.html#dynamic_type_expression) +> > *后置表达式* → [*下标表达式*](../chapter3/04_Expressions.html#subscript_expression) +> > *后置表达式* → [*强制取值(Forced Value)表达式*](../chapter3/04_Expressions.html#forced_value_expression) +> > *后置表达式* → [*可选链(Optional Chaining)表达式*](../chapter3/04_Expressions.html#optional_chaining_expression) +> > 函数调用表达式语法 > > *函数调用表达式* → [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) [*圆括号表达式*](../chapter3/04_Expressions.html#parenthesized_expression) +> > *函数调用表达式* → [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) [*圆括号表达式*](../chapter3/04_Expressions.html#parenthesized_expression) _可选_ [*后置闭包(Trailing Closure)*](../chapter3/04_Expressions.html#trailing_closure) +> > *后置闭包(Trailing Closure)* → [*闭包表达式*](../chapter3/04_Expressions.html#closure_expression) +> > 构造器表达式语法 > > *构造器表达式* → [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) **.** **init** +> > 显式成员表达式语法 > > *显示成员表达式* → [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) **.** [*十进制数字*](../chapter3/02_Lexical_Structure.html#decimal_digit) +> > *显示成员表达式* → [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) **.** [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) [*泛型参数从句*](GenericParametersAndArguments.html#generic_argument_clause) _可选_ +> > 后置 Self 表达式语法 > > *后置 self 表达式* → [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) **.** **self** +> > 动态类型表达式语法 > > *动态类型表达式* → [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) **.** **dynamicType** +> > 附属脚本表达式语法 > > *附属脚本表达式* → [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) **[** [*表达式集*](../chapter3/04_Expressions.html#expression_list) **]** +> > 强制取值(Forced Value)语法 > > *强制取值(Forced Value)表达式* → [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) **!** +> > 可选链表达式语法 > > *可选链表达式* → [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) **?** +> ## 词法结构 @@ -732,129 +1055,227 @@ > 标识符语法 > > *标识符* → [*标识符头(Head)*](../chapter3/02_Lexical_Structure.html#identifier_head) [*标识符字符集*](../chapter3/02_Lexical_Structure.html#identifier_characters) _可选_ +> > *标识符* → [*标识符头(Head)*](../chapter3/02_Lexical_Structure.html#identifier_head) [*标识符字符集*](../chapter3/02_Lexical_Structure.html#identifier_characters) _可选_ +> > *标识符* → [*隐式参数名*](../chapter3/02_Lexical_Structure.html#implicit_parameter_name) +> > *标识符集* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) | [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) **,** [*标识符集*](../chapter3/02_Lexical_Structure.html#identifier_list) +> > *标识符头(Head)* → Upper- or lowercase letter A through Z +> > *标识符头(Head)* → _ +> > *标识符头(Head)* → U+00A8, U+00AA, U+00AD, U+00AF, U+00B2–U+00B5, or U+00B7–U+00BA +> > *标识符头(Head)* → U+00BC–U+00BE, U+00C0–U+00D6, U+00D8–U+00F6, or U+00F8–U+00FF +> > *标识符头(Head)* → U+0100–U+02FF, U+0370–U+167F, U+1681–U+180D, or U+180F–U+1DBF +> > *标识符头(Head)* → U+1E00–U+1FFF +> > *标识符头(Head)* → U+200B–U+200D, U+202A–U+202E, U+203F–U+2040, U+2054, or U+2060–U+206F +> > *标识符头(Head)* → U+2070–U+20CF, U+2100–U+218F, U+2460–U+24FF, or U+2776–U+2793 +> > *标识符头(Head)* → U+2C00–U+2DFF or U+2E80–U+2FFF +> > *标识符头(Head)* → U+3004–U+3007, U+3021–U+302F, U+3031–U+303F, or U+3040–U+D7FF +> > *标识符头(Head)* → U+F900–U+FD3D, U+FD40–U+FDCF, U+FDF0–U+FE1F, or U+FE30–U+FE44 +> > *标识符头(Head)* → U+FE47–U+FFFD +> > *标识符头(Head)* → U+10000–U+1FFFD, U+20000–U+2FFFD, U+30000–U+3FFFD, or U+40000–U+4FFFD +> > *标识符头(Head)* → U+50000–U+5FFFD, U+60000–U+6FFFD, U+70000–U+7FFFD, or U+80000–U+8FFFD +> > *标识符头(Head)* → U+90000–U+9FFFD, U+A0000–U+AFFFD, U+B0000–U+BFFFD, or U+C0000–U+CFFFD +> > *标识符头(Head)* → U+D0000–U+DFFFD or U+E0000–U+EFFFD +> > *标识符字符* → 数值 0 到 9 +> > *标识符字符* → U+0300–U+036F, U+1DC0–U+1DFF, U+20D0–U+20FF, or U+FE20–U+FE2F +> > *标识符字符* → [*标识符头(Head)*](../chapter3/02_Lexical_Structure.html#identifier_head) +> > *标识符字符集* → [*标识符字符*](../chapter3/02_Lexical_Structure.html#identifier_character) [*标识符字符集*](../chapter3/02_Lexical_Structure.html#identifier_characters) _可选_ +> > *隐式参数名* → **$** [*十进制数字集*](../chapter3/02_Lexical_Structure.html#decimal_digits) +> > 字面量语法 > > *字面量* → [*数值型字面量*](../chapter3/02_Lexical_Structure.html#integer_literal) | [*字符串字面量*](../chapter3/02_Lexical_Structure.html#floating_point_literal) | [*布尔字面量*](../chapter3/02_Lexical_Structure.html#string_literal) | [*空字面量*](TODO) +> > *数值型字面量* → **-** _可选_ [*整形字面量*](TODO) | **-** _可选_ [*浮点型字面量*](TODO) +> > *布尔字面量* → **true** | **false** +> > *空字面量* → **nil** +> > 整型字面量语法 > > *整型字面量* → [*二进制字面量*](../chapter3/02_Lexical_Structure.html#binary_literal) +> > *整型字面量* → [*八进制字面量*](../chapter3/02_Lexical_Structure.html#octal_literal) +> > *整型字面量* → [*十进制字面量*](../chapter3/02_Lexical_Structure.html#decimal_literal) +> > *整型字面量* → [*十六进制字面量*](../chapter3/02_Lexical_Structure.html#hexadecimal_literal) +> > *二进制字面量* → **0b** [*二进制数字*](../chapter3/02_Lexical_Structure.html#binary_digit) [*二进制字面量字符集*](../chapter3/02_Lexical_Structure.html#binary_literal_characters) _可选_ +> > *二进制数字* → 数值 0 到 1 +> > *二进制字面量字符* → [*二进制数字*](../chapter3/02_Lexical_Structure.html#binary_digit) | **_** +> > *二进制字面量字符集* → [*二进制字面量字符*](../chapter3/02_Lexical_Structure.html#binary_literal_character) [*二进制字面量字符集*](../chapter3/02_Lexical_Structure.html#binary_literal_characters) _可选_ +> > *八进制字面量* → **0o** [*八进制数字*](../chapter3/02_Lexical_Structure.html#octal_digit) [*八进制字符集*](../chapter3/02_Lexical_Structure.html#octal_literal_characters) _可选_ +> > *八进字数字* → 数值 0 到 7 +> > *八进制字符* → [*八进制数字*](../chapter3/02_Lexical_Structure.html#octal_digit) | **_** +> > *八进制字符集* → [*八进制字符*](../chapter3/02_Lexical_Structure.html#octal_literal_character) [*八进制字符集*](../chapter3/02_Lexical_Structure.html#octal_literal_characters) _可选_ +> > *十进制字面量* → [*十进制数字*](../chapter3/02_Lexical_Structure.html#decimal_digit) [*十进制字符集*](../chapter3/02_Lexical_Structure.html#decimal_literal_characters) _可选_ +> > *十进制数字* → 数值 0 到 9 +> > *十进制数字集* → [*十进制数字*](../chapter3/02_Lexical_Structure.html#decimal_digit) [*十进制数字集*](../chapter3/02_Lexical_Structure.html#decimal_digits) _可选_ +> > *十进制字面量字符* → [*十进制数字*](../chapter3/02_Lexical_Structure.html#decimal_digit) | **_** +> > *十进制字面量字符集* → [*十进制字面量字符*](../chapter3/02_Lexical_Structure.html#decimal_literal_character) [*十进制字面量字符集*](../chapter3/02_Lexical_Structure.html#decimal_literal_characters) _可选_ +> > *十六进制字面量* → **0x** [*十六进制数字*](../chapter3/02_Lexical_Structure.html#hexadecimal_digit) [*十六进制字面量字符集*](../chapter3/02_Lexical_Structure.html#hexadecimal_literal_characters) _可选_ +> > *十六进制数字* → 数值 0 到 9, a through f, or A through F +> > *十六进制字符* → [*十六进制数字*](../chapter3/02_Lexical_Structure.html#hexadecimal_digit) | **_** +> > *十六进制字面量字符集* → [*十六进制字符*](../chapter3/02_Lexical_Structure.html#hexadecimal_literal_character) [*十六进制字面量字符集*](../chapter3/02_Lexical_Structure.html#hexadecimal_literal_characters) _可选_ +> > 浮点型字面量语法 > > *浮点数字面量* → [*十进制字面量*](../chapter3/02_Lexical_Structure.html#decimal_literal) [*十进制分数*](../chapter3/02_Lexical_Structure.html#decimal_fraction) _可选_ [*十进制指数*](../chapter3/02_Lexical_Structure.html#decimal_exponent) _可选_ +> > *浮点数字面量* → [*十六进制字面量*](../chapter3/02_Lexical_Structure.html#hexadecimal_literal) [*十六进制分数*](../chapter3/02_Lexical_Structure.html#hexadecimal_fraction) _可选_ [*十六进制指数*](../chapter3/02_Lexical_Structure.html#hexadecimal_exponent) +> > *十进制分数* → **.** [*十进制字面量*](../chapter3/02_Lexical_Structure.html#decimal_literal) +> > *十进制指数* → [*浮点数 e*](../chapter3/02_Lexical_Structure.html#floating_point_e) [*正负号*](../chapter3/02_Lexical_Structure.html#sign) _可选_ [*十进制字面量*](../chapter3/02_Lexical_Structure.html#decimal_literal) +> > *十六进制分数* → **.** [*十六进制数*](../chapter3/02_Lexical_Structure.html#hexadecimal_literal) +> [*十六进制字面量字符集*](TODO)_可选_ > *十六进制指数* → [*浮点数 p*](../chapter3/02_Lexical_Structure.html#floating_point_p) [*正负号*](../chapter3/02_Lexical_Structure.html#sign) _可选_ [*十六进制字面量*](../chapter3/02_Lexical_Structure.html#hexadecimal_literal) +> > *浮点数 e* → **e** | **E** +> > *浮点数 p* → **p** | **P** +> > *正负号* → **+** | **-** +> > 字符串型字面量语法 > > *字符串字面量* → **"** [*引用文本*](../chapter3/02_Lexical_Structure.html#quoted_text) **"** +> > *引用文本* → [*引用文本条目*](../chapter3/02_Lexical_Structure.html#quoted_text_item) [*引用文本*](../chapter3/02_Lexical_Structure.html#quoted_text) _可选_ +> > *引用文本条目* → [*转义字符*](../chapter3/02_Lexical_Structure.html#escaped_character) +> > *引用文本条目* → **(** [*表达式*](../chapter3/04_Expressions.html#expression) **)** +> > *引用文本条目* → 除了"­, \­, U+000A, or U+000D 的所有 Unicode 的字符 +> > *转义字符* → **/0** | **\\** | **\t** | **\n** | **\r** | **\"** | **\'** +> > *转义字符* → **\u** **{** [*十六进制标量数字集*](TODO) **}** +> > *unicode 标量数字集* → Between one and eight hexadecimal digits +> > 运算符语法语法 > > *运算符* → [*运算符头*](../chapter3/02_Lexical_Structure.html#operator_character) [*运算符字符集*](../chapter3/02_Lexical_Structure.html#operator) _可选_ +> > *运算符* → [*点运算符头*](TODO) [*点运算符字符集*](TODO) _可选_ +> > *运算符字符* → **/** | **=** | **-** | **+** | **!** | ***** | **%** | **<** | **>** | **&** | **|** | **^** | **~** | **?** +> > *运算符头* → U+00A1–U+00A7 +> > *运算符头* → U+00A9 or U+00AB +> > *运算符头* → U+00AC or U+00AE +> > *运算符头* → U+00B0–U+00B1, U+00B6, U+00BB, U+00BF, U+00D7, or U+00F7 +> > *运算符头* → U+2016–U+2017 or U+2020–U+2027 +> > *运算符头* → U+2030–U+203E +> > *运算符头* → U+2041–U+2053 +> > *运算符头* → U+2055–U+205E +> > *运算符头* → U+2190–U+23FF +> > *运算符头* → U+2500–U+2775 +> > *运算符头* → U+2794–U+2BFF +> > *运算符头* → U+2E00–U+2E7F +> > *运算符头* → U+3001–U+3003 +> > *运算符头* → U+3008–U+3030 +> > *运算符字符* → [*运算符头*](TODO) +> > *运算符字符* → U+0300–U+036F +> > *运算符字符* → U+1DC0–U+1DFF +> > *运算符字符* → U+20D0–U+20FF +> > *运算符字符* → U+FE00–U+FE0F +> > *运算符字符* → U+FE20–U+FE2F +> > *运算符字符* → U+E0100–U+E01EF +> > *运算符字符集* → [*运算符字符*](TODO) [*运算符字符集*](TODO)_可选_ +> > *点运算符头* → **..** +> > *点运算符字符* → **.** | [*运算符字符*](TODO) +> > *点运算符字符集* → [*点运算符字符*](TODO) [*点运算符字符集*](TODO) _可选_ +> > *二元运算符* → [*运算符*](../chapter3/02_Lexical_Structure.html#operator) +> > *前置运算符* → [*运算符*](../chapter3/02_Lexical_Structure.html#operator) +> > *后置运算符* → [*运算符*](../chapter3/02_Lexical_Structure.html#operator) +> ## 类型 @@ -862,80 +1283,104 @@ > 类型语法 > > *类型* → [*数组类型*](../chapter3/03_Types.html#array_type) | [*字典类型*](TODO) | [*函数类型*](../chapter3/03_Types.html#function_type) | [*类型标识符*](../chapter3/03_Types.html#type_identifier) | [*元组类型*](../chapter3/03_Types.html#tuple_type) | [*可选类型*](../chapter3/03_Types.html#optional_type) | [*隐式解析可选类型*](../chapter3/03_Types.html#implicitly_unwrapped_optional_type) | [*协议合成类型*](../chapter3/03_Types.html#protocol_composition_type) | [*元型类型*](../chapter3/03_Types.html#metatype_type) +> > 类型注解语法 > > *类型注解* → **:** [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*类型*](../chapter3/03_Types.html#type) +> > 类型标识语法 > > *类型标识* → [*类型名称*](../chapter3/03_Types.html#type_name) [*泛型参数从句*](GenericParametersAndArguments.html#generic_argument_clause) _可选_ | [*类型名称*](../chapter3/03_Types.html#type_name) [*泛型参数从句*](GenericParametersAndArguments.html#generic_argument_clause) _可选_ **.** [*类型标识符*](../chapter3/03_Types.html#type_identifier) +> > *类型名* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> > 元组类型语法 > > *元组类型* → **(** [*元组类型主体*](../chapter3/03_Types.html#tuple_type_body) _可选_ **)** +> > *元组类型主体* → [*元组类型的元素集*](../chapter3/03_Types.html#tuple_type_element_list) **...** _可选_ +> > *元组类型的元素集* → [*元组类型的元素*](../chapter3/03_Types.html#tuple_type_element) | [*元组类型的元素*](../chapter3/03_Types.html#tuple_type_element) **,** [*元组类型的元素集*](../chapter3/03_Types.html#tuple_type_element_list) +> > *元组类型的元素* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ **inout** _可选_ [*类型*](../chapter3/03_Types.html#type) | **inout** _可选_ [*元素名*](../chapter3/03_Types.html#element_name) [*类型注解*](../chapter3/03_Types.html#type_annotation) +> > *元素名* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> > 函数类型语法 > > *函数类型* → [*类型*](../chapter3/03_Types.html#type) **throws** _可选_ **->** [*类型*](../chapter3/03_Types.html#type) +> > *函数类型* → [*类型*](TODO) **rethrows** **->** [*类型*](TODO) +> > 数组类型语法 > > *数组类型* → **[** [*类型*](../chapter3/03_Types.html#array_type) **]** +> > 字典类型语法 > > *字典类型* → **[** [*类型 **:** 类型*](TODO) **]** +> > 可选类型语法 > > *可选类型* → [*类型*](../chapter3/03_Types.html#type) **?** +> > 隐式解析可选类型(Implicitly Unwrapped Optional Type)语法 > > *隐式解析可选类型* → [*类型*](../chapter3/03_Types.html#type) **!** +> > 协议合成类型语法 > > *协议合成类型* → **protocol** **<** [*协议标识符集*](../chapter3/03_Types.html#protocol_identifier_list) _可选_ **>** +> > *协议标识符集* → [*协议标识符*](../chapter3/03_Types.html#protocol_identifier) | [*协议标识符*](../chapter3/03_Types.html#protocol_identifier) **,** [*协议标识符集*](../chapter3/03_Types.html#protocol_identifier_list) +> > *协议标识符* → [*类型标识符*](../chapter3/03_Types.html#type_identifier) +> > 元(Metatype)类型语法 > > *元类型* → [*类型*](../chapter3/03_Types.html#type) **.** **Type** | [*类型*](../chapter3/03_Types.html#type) **.** **Protocol** +> > 类型继承从句语法 > > *类型继承从句* → **:** [*类条件(class-requirement))*](TODO) **,** [*类型继承集*](../chapter3/03_Types.html#type_inheritance_list) +> > *类型继承从句* → **:** [*类条件(class-requirement))*](TODO) +> > *类型继承从句* → **:** [*类型继承集*](TODO) +> > *类型继承集* → [*类型标识符*](../chapter3/03_Types.html#type_identifier) | [*类型标识符*](../chapter3/03_Types.html#type_identifier) **,** [*类型继承集*](../chapter3/03_Types.html#type_inheritance_list) +> > *类条件* → **class** +> From f65cd953069878817ae7839adbe92c36f481152e Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Tue, 26 Mar 2019 22:57:04 -0500 Subject: [PATCH 053/107] partly fix chapter 3 relative links --- .../01_About_the_Language_Reference.md | 6 +- source/chapter3/02_Lexical_Structure.md | 10 +- source/chapter3/03_Types.md | 44 +- source/chapter3/04_Expressions.md | 76 +-- source/chapter3/05_Statements.md | 84 +-- source/chapter3/06_Declarations.md | 264 +++---- source/chapter3/07_Attributes.md | 10 +- source/chapter3/08_Patterns.md | 22 +- .../09_Generic_Parameters_and_Arguments.md | 18 +- source/chapter3/10_Summary_of_the_Grammar.md | 644 +++++++++--------- 10 files changed, 589 insertions(+), 589 deletions(-) diff --git a/source/chapter3/01_About_the_Language_Reference.md b/source/chapter3/01_About_the_Language_Reference.md index a1085ef5..48518c7c 100755 --- a/source/chapter3/01_About_the_Language_Reference.md +++ b/source/chapter3/01_About_the_Language_Reference.md @@ -20,14 +20,14 @@ Swift 语言相对较小,这是由于 Swift 代码中常用的类型、函数 > getter-setter 方法块语法 > -> *getter-setter 方法块* → { [*getter 子句*](05_Declarations.html#getter-clause) [*setter 子句*](05_Declarations.html#setter-clause)可选 } | { [*setter 子句*](05_Declarations.html#setter-clause) [*getter 子句*](05_Declarations.html#getter-clause) } +> *getter-setter 方法块* → { [*getter 子句*](./05_Declarations.md#getter-clause) [*setter 子句*](./05_Declarations.md#setter-clause)可选 } | { [*setter 子句*](./05_Declarations.md#setter-clause) [*getter 子句*](./05_Declarations.md#getter-clause) } > 这个定义表明,一个 getter-setter 方法块可以由一个 getter 分句后跟一个可选的 setter 分句构成,然后用大括号括起来,或者由一个 setter 分句后跟一个 getter 分句构成,然后用大括号括起来。上述的语法产式等价于下面的两个语法产式, : > getter-setter 方法块语法 > -> getter-setter 方法块 → { [*getter 子句*](05_Declarations.html#getter-clause) [*setter 子句*](05_Declarations.html#setter-clause)可选 } +> getter-setter 方法块 → { [*getter 子句*](./05_Declarations.md#getter-clause) [*setter 子句*](./05_Declarations.md#setter-clause)可选 } > -> getter-setter 方法块 → { [*setter 子句*](05_Declarations.html#setter-clause) [*getter 子句*](05_Declarations.html#getter-clause) } +> getter-setter 方法块 → { [*setter 子句*](./05_Declarations.md#setter-clause) [*getter 子句*](./05_Declarations.md#getter-clause) } > diff --git a/source/chapter3/02_Lexical_Structure.md b/source/chapter3/02_Lexical_Structure.md index a38ae42a..d7d48b07 100755 --- a/source/chapter3/02_Lexical_Structure.md +++ b/source/chapter3/02_Lexical_Structure.md @@ -52,7 +52,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > *多行注释内容项* → 任何 Unicode 标量值, 除了 `/*` 或者 `*/` > -注释可以包含额外的格式和标记,正如 [*Markup Formatting Reference*](https://developer.apple.com/library/prerelease/ios/documentation/Xcode/Reference/xcode_markup_formatting_ref/index.html#//apple_ref/doc/uid/TP40016497) 所述。 +注释可以包含额外的格式和标记,正如 [*Markup Formatting Reference*](./https://developer.apple.com/library/prerelease/ios/documentation/Xcode/Reference/xcode_markup_formatting_ref/index.md#//apple_ref/doc/uid/TP40016497) 所述。 ## 标识符 @@ -188,7 +188,7 @@ true // 布尔值字面量 整型字面面可以使用下划线(`_`)来增加数字的可读性,下划线会被系统忽略,因此不会影响字面量的值。同样地,也可以在数字前加 `0`,这同样也会被系统所忽略,并不会影响字面量的值。 -除非特别指定,整数字面量的默认推导类型为 Swift 标准库类型中的 `Int`。Swift 标准库还定义了其他不同长度以及是否带符号的整数类型,请参考 [整数](../chapter2/01_The_Basics.html#integers)。 +除非特别指定,整数字面量的默认推导类型为 Swift 标准库类型中的 `Int`。Swift 标准库还定义了其他不同长度以及是否带符号的整数类型,请参考 [整数](../chapter2/01_The_Basics.md#integers)。 > 整数字面量语法 > @@ -374,7 +374,7 @@ true // 布尔值字面量 let x = 3; "1 2 \(x)" ``` -字符串字面量的默认推导类型为 `String`。更多有关 `String` 类型的信息请参考 [字符串和字符](../chapter2/03_Strings_and_Characters.html) 以及 [*字符串结构参考*](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Reference/Swift_String_Structure/index.html#//apple_ref/doc/uid/TP40015181)。 +字符串字面量的默认推导类型为 `String`。更多有关 `String` 类型的信息请参考 [字符串和字符](../chapter2/03_Strings_and_Characters.md) 以及 [*字符串结构参考*](./https://developer.apple.com/library/prerelease/ios/documentation/Swift/Reference/Swift_String_Structure/index.md#//apple_ref/doc/uid/TP40015181)。 用 `+` 操作符连接的字符型字面量是在编译时进行连接的。比如下面的 `textA` 和 `textB` 是完全一样的,`textA` 没有任何运行时的连接操作。 @@ -428,7 +428,7 @@ let textB = "Hello world" ## 运算符 -Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基础运算符](../chapter2/02_Basic_Operators.html) 和 [高级运算符](../chapter2/25_Advanced_Operators.html) 中进行了阐述。这一小节将描述哪些字符能用于自定义运算符。 +Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基础运算符](../chapter2/02_Basic_Operators.md) 和 [高级运算符](../chapter2/25_Advanced_Operators.md) 中进行了阐述。这一小节将描述哪些字符能用于自定义运算符。 自定义运算符可以由以下其中之一的 ASCII 字符 `/`、`=`、`-`、`+`、`!`、`*`、`%`、`<`、`>`、`&`、`|`、`^`、`?` 以及 `~`,或者后面语法中规定的任一个 Unicode 字符(其中包含了*数学运算符*、*零散符号(Miscellaneous Symbols)* 以及印刷符号(Dingbats)之类的 Unicode 块)开始。在第一个字符之后,允许使用组合型 Unicode 字符。 @@ -454,7 +454,7 @@ Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基 在某些特定的设计中 ,以 `<` 或 `>` 开头的运算符会被分离成两个或多个符号,剩余部分可能会以同样的方式被再次分离。因此,在 `Dictionary>` 中没有必要添加空白来消除闭合字符 `>` 的歧义。在这个例子中, 闭合字符 `>` 不会被视为单独的符号,因而不会被错误解析为 `>>` 运算符。 -要学习如何自定义运算符,请参考 [自定义运算符](../chapter2/25_Advanced_Operators.html#custom_operators) 和 [运算符声明](05_Declarations.html#operator_declaration)。要学习如何重载运算符,请参考 [运算符函数](../chapter2/25_Advanced_Operators.html#operator_functions)。 +要学习如何自定义运算符,请参考 [自定义运算符](../chapter2/25_Advanced_Operators.md#custom_operators) 和 [运算符声明](./05_Declarations.md#operator_declaration)。要学习如何重载运算符,请参考 [运算符函数](../chapter2/25_Advanced_Operators.md#operator_functions)。 > 运算符语法 > diff --git a/source/chapter3/03_Types.md b/source/chapter3/03_Types.md index 923ee9e8..29a5d3df 100644 --- a/source/chapter3/03_Types.md +++ b/source/chapter3/03_Types.md @@ -17,7 +17,7 @@ Swift 语言存在两种类型:命名型类型和复合型类型。命名型类型是指定义时可以给定名字的类型。命名型类型包括类、结构体、枚举和协议。比如,一个用户定义的类 `MyClass` 的实例拥有类型 `MyClass`。除了用户定义的命名型类型,Swift 标准库也定义了很多常用的命名型类型,包括那些表示数组、字典和可选值的类型。 -那些通常被其它语言认为是基本或原始的数据型类型,比如表示数字、字符和字符串的类型,实际上就是命名型类型,这些类型在 Swift 标准库中是使用结构体来定义和实现的。因为它们是命名型类型,因此你可以按照 [扩展](../chapter2/21_Extensions.html) 和 [扩展声明](05_Declarations.html#extension_declaration) 中讨论的那样,声明一个扩展来增加它们的行为以满足你程序的需求。 +那些通常被其它语言认为是基本或原始的数据型类型,比如表示数字、字符和字符串的类型,实际上就是命名型类型,这些类型在 Swift 标准库中是使用结构体来定义和实现的。因为它们是命名型类型,因此你可以按照 [扩展](../chapter2/21_Extensions.md) 和 [扩展声明](./05_Declarations.md#extension_declaration) 中讨论的那样,声明一个扩展来增加它们的行为以满足你程序的需求。 复合型类型是没有名字的类型,它由 Swift 本身定义。Swift 存在两种复合型类型:函数类型和元组类型。一个复合型类型可以包含命名型类型和其它复合型类型。例如,元组类型 `(Int, (Int, Int))` 包含两个元素:第一个是命名型类型 `Int`,第二个是另一个复合型类型 `(Int, Int)`。 @@ -70,7 +70,7 @@ func someFunction(a: Int) { /* ... */ } > 类型注解语法 > -> *类型注解* → **:** [*特性列表*](06_Attributes.html#attributes)可选 **输入输出参数**可选 [*类型*](#type) +> *类型注解* → **:** [*特性列表*](./06_Attributes.md#attributes)可选 **输入输出参数**可选 [*类型*](#type) > @@ -96,10 +96,10 @@ var someValue: ExampleModule.MyType > 类型标识符语法 > -> *类型标识符* → [*类型名称*](#type-name) [*泛型参数子句*](08_Generic_Parameters_and_Arguments.html#generic_argument_clause)可选 | [*类型名称*](#type-name) [*泛型参数子句*](08_Generic_Parameters_and_Arguments.html#generic_argument_clause)可选 **.** [*类型标识符*](#type-identifier) +> *类型标识符* → [*类型名称*](./#type-name) [*泛型参数子句*](08_Generic_Parameters_and_Arguments.md#generic_argument_clause)可选 | [*类型名称*](./#type-name) [*泛型参数子句*](08_Generic_Parameters_and_Arguments.md#generic_argument_clause)可选 **.** [*类型标识符*](#type-identifier) > -> *类型名称* → [*标识符*](02_Lexical_Structure.html#identifier) +> *类型名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -107,7 +107,7 @@ var someValue: ExampleModule.MyType 元组类型是使用括号括起来的零个或多个类型,类型间用逗号隔开。 -你可以使用元组类型作为一个函数的返回类型,这样就可以使函数返回多个值。你也可以命名元组类型中的元素,然后用这些名字来引用每个元素的值。元素的名字由一个标识符紧跟一个冒号 `(:)` 组成。[函数和多返回值](../chapter2/06_Functions.html#functions_with_multiple_return_values) 章节里有一个展示上述特性的例子。 +你可以使用元组类型作为一个函数的返回类型,这样就可以使函数返回多个值。你也可以命名元组类型中的元素,然后用这些名字来引用每个元素的值。元素的名字由一个标识符紧跟一个冒号 `(:)` 组成。[函数和多返回值](../chapter2/06_Functions.md#functions_with_multiple_return_values) 章节里有一个展示上述特性的例子。 当一个元组类型的元素有名字的时候,这个名字就是类型的一部分。 @@ -132,7 +132,7 @@ someTuple = (left: 5, right: 5) // 错误:命名类型不匹配 > *元组类型元素* → [*元素名*](#element-name) [*类型注解*](#type-annotation) | [*类型*](#type) > -> *元素名* → [*标识符*](02_Lexical_Structure.html#identifier) +> *元素名* → [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -145,12 +145,12 @@ someTuple = (left: 5, right: 5) // 错误:命名类型不匹配 参数类型是由逗号间隔的类型列表。由于参数类型和返回值类型可以是元组类型,所以函数类型支持多参数与多返回值的函数与方法。 -你可以对函数参数 `() -> T`(其中 T 是任何类型)使用 `autoclosure` 特性。这会自动将参数表达式转化为闭包,表达式的结果即闭包返回值。这从语法结构上提供了一种便捷:延迟对表达式的求值,直到其值在函数体中被调用。以自动闭包做为参数的函数类型的例子详见 [自动闭包](../chapter2/07_Closures.html#autoclosures) 。 +你可以对函数参数 `() -> T`(其中 T 是任何类型)使用 `autoclosure` 特性。这会自动将参数表达式转化为闭包,表达式的结果即闭包返回值。这从语法结构上提供了一种便捷:延迟对表达式的求值,直到其值在函数体中被调用。以自动闭包做为参数的函数类型的例子详见 [自动闭包](../chapter2/07_Closures.md#autoclosures) 。 > -函数类型可以拥有一个可变长参数作为参数类型中的最后一个参数。从语法角度上讲,可变长参数由一个基础类型名字紧随三个点(`...`)组成,如 `Int...`。可变长参数被认为是一个包含了基础类型元素的数组。即 `Int...` 就是 `[Int]`。关于使用可变长参数的例子,请参阅 [可变参数](../chapter2/06_Functions.html#variadic_parameters)。 +函数类型可以拥有一个可变长参数作为参数类型中的最后一个参数。从语法角度上讲,可变长参数由一个基础类型名字紧随三个点(`...`)组成,如 `Int...`。可变长参数被认为是一个包含了基础类型元素的数组。即 `Int...` 就是 `[Int]`。关于使用可变长参数的例子,请参阅 [可变参数](../chapter2/06_Functions.md#variadic_parameters)。 -为了指定一个 `in-out` 参数,可以在参数类型前加 `inout` 前缀。但是你不可以对可变长参数或返回值类型使用 `inout`。关于这种参数的详细讲解请参阅 [输入输出参数](../chapter2/06_Functions.html#in_out_parameters)。 +为了指定一个 `in-out` 参数,可以在参数类型前加 `inout` 前缀。但是你不可以对可变长参数或返回值类型使用 `inout`。关于这种参数的详细讲解请参阅 [输入输出参数](../chapter2/06_Functions.md#in_out_parameters)。 如果一个函数类型只有一个形式参数而且形式参数的类型是元组类型,那么元组类型在写函数类型的时候必须用圆括号括起来。比如说,`((Int, Int)) -> Void` 是接收一个元组 `(Int, Int)` 作为形式参数的函数的类型。与此相反,不加括号的 `(Int, Int) -> Void` 是一个接收两个 `Int` 形式参数并且不返回任何值的函数的类型。相似地,因为 `Void` 是空元组类型 `()` 的别名, 函数类型 `(Void)-> Void` 与一个空元组的变量的函数类型 `(()) -> ()` 是一样的。但这些类型和无变量的函数类型 `() -> ()` 是不一样的。 > @@ -188,7 +188,7 @@ var operation: (Int, Int) -> Int // 正确 如果一个函数类型包涵多个箭头(->),那么函数类型将从右向左进行组合。例如,函数类型 `Int -> Int -> Int` 可以理解为 `Int -> (Int -> Int)`,也就是说,该函数类型的参数为 `Int` 类型,其返回类型是一个参数类型为 `Int`,返回类型为 `Int` 的函数类型。 > -函数类型若要抛出错误就必须使用 `throws` 关键字来标记,若要重抛错误则必须使用 `rethrows` 关键字来标记。`throws` 关键字是函数类型的一部分,非抛出函数是抛出函数函数的一个子类型。因此,在使用抛出函数的地方也可以使用不抛出函数。抛出和重抛函数的相关描述见章节 [抛出函数与方法](05_Declarations.html#throwing_functions_and_methods) 和 [重抛函数与方法](05_Declarations.html#rethrowing_functions_and_methods)。 +函数类型若要抛出错误就必须使用 `throws` 关键字来标记,若要重抛错误则必须使用 `rethrows` 关键字来标记。`throws` 关键字是函数类型的一部分,非抛出函数是抛出函数函数的一个子类型。因此,在使用抛出函数的地方也可以使用不抛出函数。抛出和重抛函数的相关描述见章节 [抛出函数与方法](./05_Declarations.md#throwing_functions_and_methods) 和 [重抛函数与方法](./05_Declarations.md#rethrowing_functions_and_methods)。 ### 对非逃逸闭包的限制 @@ -214,15 +214,15 @@ func takesTwoFunctions(first: (Any) -> Void, second: (Any) -> Void) { 上述例子里的被标记为“错误”的四个函数调用会产生编译错误。因为第一个和第二个参数是非逃逸函数,它们不能够被当作变量被传递到另一个非闭包函数参数。与此相反, 标记“正确”的两个函数不回产生编译错误。这些函数调用不会违反限制, 因为 `外部(external)` 不是 `takesTwoFunctions(first:second:)` 里的一个参数。 -如果你需要避免这个限制, 标记其中之一的参数为逃逸, 或者使用 `withoutActuallyEscaping(_:do:)` 函数临时地转换非逃逸函数的其中一个参数为逃逸函数。关于避免内存访问冲突,可以参阅[内存安全](../chapter2/24_Memory_Safety.html)。 +如果你需要避免这个限制, 标记其中之一的参数为逃逸, 或者使用 `withoutActuallyEscaping(_:do:)` 函数临时地转换非逃逸函数的其中一个参数为逃逸函数。关于避免内存访问冲突,可以参阅[内存安全](../chapter2/24_Memory_Safety.md)。 > 函数类型语法 > -> *函数类型* → [*特性列表*](06_Attributes.html#attributes)可选 [*函数类型子句*](#function-type-argument-clause) **throws**可选 **->** [*类型*](#type) +> *函数类型* → [*特性列表*](./06_Attributes.md#attributes)可选 [*函数类型子句*](#function-type-argument-clause) **throws**可选 **->** [*类型*](#type) > -> *函数类型* → [*特性列表*](06_Attributes.html#attributes)可选 [*函数类型子句*](#function-type-argument-clause) **rethrows­** **->** [*类型*](#type) +> *函数类型* → [*特性列表*](./06_Attributes.md#attributes)可选 [*函数类型子句*](#function-type-argument-clause) **rethrows­** **->** [*类型*](#type) > > *函数类型子句* → (­)­ @@ -233,10 +233,10 @@ func takesTwoFunctions(first: (Any) -> Void, second: (Any) -> Void) { > *函数类型参数列表* → [*函数类型参数*](function-type-argument) | [*函数类型参数*](function-type-argument), [*函数类型参数列表*](#function-type-argument-list) > -> *函数类型参数* → [*特性列表*](06_Attributes.html#attributes)可选 **输入输出参数**可选 [*类型*](#type) | [*参数标签*](#argument-label) [*类型注解*](#type-annotation) +> *函数类型参数* → [*特性列表*](./06_Attributes.md#attributes)可选 **输入输出参数**可选 [*类型*](#type) | [*参数标签*](#argument-label) [*类型注解*](#type-annotation) > -> *参数标签* → [*标识符*](02_Lexical_Structure.html#identifier) +> *参数标签* → [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -265,7 +265,7 @@ var array3D: [[[Int]]] = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]] 访问一个多维数组的元素时,最左边的下标指向最外层数组的相应位置元素。接下来往右的下标指向第一层嵌入的相应位置元素,依次类推。这就意味着,在上面的例子中,`array3D[0]` 是 `[[1, 2], [3, 4]]`,`array3D[0][1]` 是 `[3, 4]`,`array3D[0][1][1]` 则是 `4`。 -关于 Swift 标准库中 `Array` 类型的详细讨论,请参阅 [数组](../chapter2/04_Collection_Types.html#arrays)。 +关于 Swift 标准库中 `Array` 类型的详细讨论,请参阅 [数组](../chapter2/04_Collection_Types.md#arrays)。 > 数组类型语法 > @@ -295,7 +295,7 @@ let someDictionary: Dictionary = ["Alex": 31, "Paul": 39] 字典中键的类型必须符合 Swift 标准库中的 `Hashable` 协议。 -关于 Swift 标准库中 `Dictionary` 类型的详细讨论,请参阅 [字典](../chapter2/04_Collection_Types.html#dictionaries)。 +关于 Swift 标准库中 `Dictionary` 类型的详细讨论,请参阅 [字典](../chapter2/04_Collection_Types.md#dictionaries)。 > 字典类型语法 > @@ -328,7 +328,7 @@ optionalInteger! // 42 你也可以使用可选链式调用和可选绑定来选择性地在可选表达式上执行操作。如果值为 `nil`,不会执行任何操作,因此也就没有运行错误产生。 -更多细节以及更多如何使用可选类型的例子,请参阅 [可选类型](../chapter2/01_The_Basics.html#optionals)。 +更多细节以及更多如何使用可选类型的例子,请参阅 [可选类型](../chapter2/01_The_Basics.md#optionals)。 > 可选类型语法 > @@ -364,7 +364,7 @@ let implicitlyUnwrappedArray: [Int]! // 正确 可以使用可选链式调用来在隐式解析可选表达式上选择性地执行操作。如果值为 `nil`,就不会执行任何操作,因此也不会产生运行错误。 -关于隐式解析可选类型的更多细节,请参阅 [隐式解析可选类型](../chapter2/01_The_Basics.html#implicityly_unwrapped_optionals)。 +关于隐式解析可选类型的更多细节,请参阅 [隐式解析可选类型](../chapter2/01_The_Basics.md#implicityly_unwrapped_optionals)。 > 隐式解析可选类型语法 > @@ -454,11 +454,11 @@ let anotherInstance = metatype.init(string: "some string") 类型继承子句被用来指定一个命名型类型继承自哪个类、采纳哪些协议。类型继承子句也用来指定一个类类型专属协议。类型继承子句开始于冒号 `:`,其后是所需要的类、类型标识符列表或两者都有。 -类可以继承单个超类,采纳任意数量的协议。当定义一个类时,超类的名字必须出现在类型标识符列表首位,然后跟上该类需要采纳的任意数量的协议。如果一个类不是从其它类继承而来,那么列表可以以协议开头。关于类继承更多的讨论和例子,请参阅 [继承](../chapter2/13_Inheritance.html)。 +类可以继承单个超类,采纳任意数量的协议。当定义一个类时,超类的名字必须出现在类型标识符列表首位,然后跟上该类需要采纳的任意数量的协议。如果一个类不是从其它类继承而来,那么列表可以以协议开头。关于类继承更多的讨论和例子,请参阅 [继承](../chapter2/13_Inheritance.md)。 -其它命名型类型可能只继承或采纳一系列协议。协议类型可以继承自任意数量的其他协议。当一个协议类型继承自其它协议时,其它协议中定义的要求会被整合在一起,然后从当前协议继承的任意类型必须符合所有这些条件。正如在 [协议声明](05_Declarations.html#protocol_declaration) 中所讨论的那样,可以把 `class` 关键字放到协议类型的类型继承子句的首位,这样就可以声明一个类类型专属协议。 +其它命名型类型可能只继承或采纳一系列协议。协议类型可以继承自任意数量的其他协议。当一个协议类型继承自其它协议时,其它协议中定义的要求会被整合在一起,然后从当前协议继承的任意类型必须符合所有这些条件。正如在 [协议声明](./05_Declarations.md#protocol_declaration) 中所讨论的那样,可以把 `class` 关键字放到协议类型的类型继承子句的首位,这样就可以声明一个类类型专属协议。 -枚举定义中的类型继承子句可以是一系列协议,或是枚举的原始值类型的命名型类型。在枚举定义中使用类型继承子句来指定原始值类型的例子,请参阅 [原始值](../chapter2/08_Enumerations.html#raw_values)。 +枚举定义中的类型继承子句可以是一系列协议,或是枚举的原始值类型的命名型类型。在枚举定义中使用类型继承子句来指定原始值类型的例子,请参阅 [原始值](../chapter2/08_Enumerations.md#raw_values)。 > 类型继承子句语法 > diff --git a/source/chapter3/04_Expressions.md b/source/chapter3/04_Expressions.md index 6706aa5d..2fba2882 100644 --- a/source/chapter3/04_Expressions.md +++ b/source/chapter3/04_Expressions.md @@ -20,19 +20,19 @@ Swift 中存在四种表达式:前缀表达式,二元表达式,基本表 关于这些运算符的更多信息,请参阅 [基本运算符](../chapter2/02_Basic_Operators.md) 和 [高级运算符](../chapter2/25_Advanced_Operators.md)。 -关于 Swift 标准库提供的运算符的更多信息,请参阅 [*Swift Standard Library Operators Reference*](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Reference/Swift_StandardLibrary_Operators/index.html#//apple_ref/doc/uid/TP40016054)。 +关于 Swift 标准库提供的运算符的更多信息,请参阅 [*Swift Standard Library Operators Reference*](./https://developer.apple.com/library/prerelease/ios/documentation/Swift/Reference/Swift_StandardLibrary_Operators/index.md#//apple_ref/doc/uid/TP40016054)。 -除了标准库运算符,你也可以对某个变量使用 `&` 运算符,从而将其传递给函数的输入输出参数。更多信息,请参阅 [输入输出参数](../chapter2/06_Functions.html#in_out_parameters)。 +除了标准库运算符,你也可以对某个变量使用 `&` 运算符,从而将其传递给函数的输入输出参数。更多信息,请参阅 [输入输出参数](../chapter2/06_Functions.md#in_out_parameters)。 > 前缀表达式语法 > -> *前缀表达式* → [*前缀运算符*](02_Lexical_Structure.md#prefix-operator)可选 [*后缀表达式*](#postfix-expression) +> *前缀表达式* → [*前缀运算符*](./02_Lexical_Structure.md#prefix-operator)可选 [*后缀表达式*](#postfix-expression) > > *前缀表达式* → [*输入输出表达式*](#in-out-expression) > -> *输入输出表达式* → **&** [*标识符*](02_Lexical_Structure.md#identifier) +> *输入输出表达式* → **&** [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -67,7 +67,7 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try `try` 表达式不能出现在二进制运算符的的右侧,除非二进制运算符是赋值运算符或者 `try` 表达式是被圆括号括起来的。 -关于 `try`、`try?` 和 `try!` 的更多信息,以及该如何使用的例子,请参阅 [错误处理](../chapter2/18_Error_Handling.html)。 +关于 `try`、`try?` 和 `try!` 的更多信息,以及该如何使用的例子,请参阅 [错误处理](../chapter2/18_Error_Handling.md)。 > Try 表达式语法 > @@ -82,9 +82,9 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try > `左侧参数` `二元运算符` `右侧参数` > -关于这些运算符的更多信息,请参阅 [基本运算符](../chapter2/02_Basic_Operators.html) 和 [高级运算符](../chapter2/26_Advanced_Operators.html)。 +关于这些运算符的更多信息,请参阅 [基本运算符](../chapter2/02_Basic_Operators.md) 和 [高级运算符](../chapter2/26_Advanced_Operators.md)。 -关于 Swift 标准库提供的运算符的更多信息,请参阅 [*Swift Standard Library Operators Reference*](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Reference/Swift_StandardLibrary_Operators/index.html#//apple_ref/doc/uid/TP40016054)。 +关于 Swift 标准库提供的运算符的更多信息,请参阅 [*Swift Standard Library Operators Reference*](./https://developer.apple.com/library/prerelease/ios/documentation/Swift/Reference/Swift_StandardLibrary_Operators/index.md#//apple_ref/doc/uid/TP40016054)。 > 注意 > @@ -94,7 +94,7 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try > 二元表达式语法 > -> *二元表达式* → [*二元运算符*](02_Lexical_Structure.md#binary-operator) [*前缀表达式*](#prefix-expression) +> *二元表达式* → [*二元运算符*](./02_Lexical_Structure.md#binary-operator) [*前缀表达式*](#prefix-expression) > > *二元表达式* → [*赋值运算符*](#assignment-operator) [*try 运算符*](#try-operator)可选 [*前缀表达式*](#prefix-expression) > @@ -180,7 +180,7 @@ f(x as Any) // 打印“Function for Any” ``` -桥接可将 Swift 标准库中的类型(例如 `String`)作为一个与之相关的 Foundation 类型(例如 `NSString`)来使用,而不需要新建一个实例。关于桥接的更多信息,请参阅 [*Using Swift with Cocoa and Objective-C (Swift4.1)*](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/index.html#//apple_ref/doc/uid/TP40014216) 中的 [Working with Cocoa Data Types](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/WorkingWithCocoaDataTypes.html#//apple_ref/doc/uid/TP40014216-CH6)。 +桥接可将 Swift 标准库中的类型(例如 `String`)作为一个与之相关的 Foundation 类型(例如 `NSString`)来使用,而不需要新建一个实例。关于桥接的更多信息,请参阅 [*Using Swift with Cocoa and Objective-C (Swift4.1)*](./https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/index.md#//apple_ref/doc/uid/TP40014216) 中的 [Working with Cocoa Data Types](./https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/WorkingWithCocoaDataTypes.md#//apple_ref/doc/uid/TP40014216-CH6)。 `as?` 运算符有条件地执行类型转换,返回目标类型的可选值。在运行时,如果转换成功,返回的可选值将包含转换后的值,否则返回 `nil`。如果在编译时就能确定转换一定会成功或是失败,则会导致编译报错。 @@ -191,13 +191,13 @@ f(x as Any) > 类型转换运算符语法 > -> *类型转换运算符* → **is** [*类型*](03_Types.md#type) +> *类型转换运算符* → **is** [*类型*](./03_Types.md#type) > -> *类型转换运算符* → **as** [*类型*](03_Types.md#type) +> *类型转换运算符* → **as** [*类型*](./03_Types.md#type) > -> *类型转换运算符* → **as** **?** [*类型*](03_Types.md#type) +> *类型转换运算符* → **as** **?** [*类型*](./03_Types.md#type) > -> *类型转换运算符* → **as** **!** [*类型*](03_Types.md#type) +> *类型转换运算符* → **as** **!** [*类型*](./03_Types.md#type) > @@ -208,7 +208,7 @@ f(x as Any) > 基本表达式语法 > -> *基本表达式* → [*标识符*](02_Lexical_Structure.md#identifier) [*泛型实参子句*](08_Generic_Parameters_and_Arguments.md#generic-argument-clause)可选 +> *基本表达式* → [*标识符*](./02_Lexical_Structure.md#identifier) [*泛型实参子句*](./08_Generic_Parameters_and_Arguments.md#generic-argument-clause)可选 > > *基本表达式* → [*字面量表达式*](#literal-expression) > @@ -287,7 +287,7 @@ Xcode 使用 playground 字面量对程序编辑器中的颜色、文件或者 > > > -> *字面量表达式* → [*字面量*](02_Lexical_Structure.md#literal) +> *字面量表达式* → [*字面量*](./02_Lexical_Structure.md#literal) > > *字面量表达式* → [*数组字面量*](#array-literal) | [*字典字面量*](#dictionary-literal) | [*练习场字面量*](#playground-literal) > @@ -375,7 +375,7 @@ struct Point { > > -> *self 方法表达式* → **self** **.** [*标识符*](02_Lexical_Structure.md#identifier) +> *self 方法表达式* → **self** **.** [*标识符*](./02_Lexical_Structure.md#identifier) > > *self 下标表达式* → **self** **[** [*函数调用参数表*](#function-call-argument-list­) **]** @@ -406,7 +406,7 @@ struct Point { > *父类表达式* → [*父类方法表达式*](#superclass-method-expression) | [*父类下标表达式*](#superclass-subscript-expression) | [*父类构造器表达式*](#superclass-initializer-expression) > -> *父类方法表达式* → **super** **.** [*标识符*](02_Lexical_Structure.md#identifier) +> *父类方法表达式* → **super** **.** [*标识符*](./02_Lexical_Structure.md#identifier) > > *父类下标表达式* → **super** [[*函数调用参数表*](#function-call-argument-list­) **]** @@ -427,7 +427,7 @@ struct Point { } ``` -闭包的参数声明形式跟函数一样,请参阅 [函数声明](05_Declarations.html#function_declaration)。 +闭包的参数声明形式跟函数一样,请参阅 [函数声明](./05_Declarations.md#function_declaration)。 闭包还有几种特殊的形式,能让闭包使用起来更加简洁: @@ -519,7 +519,7 @@ myFunction { [unowned self] in print(self.title) } // 无主引用捕获 myFunction { [weak parent = self.parent] in print(parent!.title) } ``` -关于闭包表达式的更多信息和例子,请参阅 [闭包表达式](../chapter2/07_Closures.html#closure_expressions)。关于捕获列表的更多信息和例子,请参阅 [解决闭包引起的循环强引用](../chapter2/23_Automatic_Reference_Counting.html#resolving_strong_reference_cycles_for_closures)。 +关于闭包表达式的更多信息和例子,请参阅 [闭包表达式](../chapter2/07_Closures.md#closure_expressions)。关于捕获列表的更多信息和例子,请参阅 [解决闭包引起的循环强引用](../chapter2/23_Automatic_Reference_Counting.md#resolving_strong_reference_cycles_for_closures)。 > 闭包表达式语法 > @@ -532,13 +532,13 @@ myFunction { [weak parent = self.parent] in print(parent!.title) } > > > -> 闭包签名* → [*参数子句*](#parameter-clause) [*函数结果*](05_Declarations.html#function-result)可选 **in** +> 闭包签名* → [*参数子句*](./#parameter-clause) [*函数结果*](05_Declarations.md#function-result)可选 **in** > -> *闭包签名* → [*标识符列表*](#identifier-list) [*函数结果*](05_Declarations.md#function-result)可选 **in** +> *闭包签名* → [*标识符列表*](./#identifier-list) [*函数结果*](05_Declarations.md#function-result)可选 **in** > -> *闭包签名* → [*捕获列表*](#capture-list) [*参数子句*](05_Declarations.md#parameter-clause) [*函数结果*](05_Declarations.md#function-result)可选 **in** +> *闭包签名* → [*捕获列表*](./#capture-list) [*参数子句*](05_Declarations.md#parameter-clause) [*函数结果*](./05_Declarations.md#function-result)可选 **in** > -> *闭包签名* → [*捕获列表*](#capture-list) [*标识符列表*](02_Lexical_Structure.md#identifier-list) [*函数结果*](05_Declarations.md#function-result)可选 **in** +> *闭包签名* → [*捕获列表*](./#capture-list) [*标识符列表*](02_Lexical_Structure.md#identifier-list) [*函数结果*](./05_Declarations.md#function-result)可选 **in** > > *闭包签名* → [*捕获列表*](#capture-list) **in** > @@ -579,7 +579,7 @@ x = .AnotherValue > 隐式成员表达式语法 > -> *隐式成员表达式* → **.** [*标识符*](02_Lexical_Structure.md#identifier) +> *隐式成员表达式* → **.** [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -769,14 +769,14 @@ print(interestingNumbers[keyPath: \[String: [Int]].["hexagonal"]!.count.bitWidth // 打印 "64" ``` -关于更多如何使用 key path 与 Objective-C APIs 交互的信息,请参阅 [在 Swift 中使用 Objective-C 运行时特性](https://developer.apple.com/documentation/swift/using_objective_c_runtime_features_in_swift)。关于更多 key-value 编程和 key-value 观察的信息,请参阅 [Key-Value 编程](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueCoding/index.html#//apple_ref/doc/uid/10000107i) 和 [Key-Value 观察编程](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html#//apple_ref/doc/uid/10000177i) +关于更多如何使用 key path 与 Objective-C APIs 交互的信息,请参阅 [在 Swift 中使用 Objective-C 运行时特性](./https://developer.apple.com/documentation/swift/using_objective_c_runtime_features_in_swift)。关于更多 key-value 编程和 key-value 观察的信息,请参阅 [Key-Value 编程](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueCoding/index.md#//apple_ref/doc/uid/10000107i) 和 [Key-Value 观察编程](./https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.md#//apple_ref/doc/uid/10000177i) > key-path 表达式语法 > > > > -> *key-path 表达式* → **\\** [类型](03_Types.md#type)可选 **.** [多个 key-path 组件](#key-path-components) +> *key-path 表达式* → **\\** [类型](./03_Types.md#type)可选 **.** [多个 key-path 组件](#key-path-components) > > > @@ -784,7 +784,7 @@ print(interestingNumbers[keyPath: \[String: [Int]].["hexagonal"]!.count.bitWidth > > > -> *key-path 组件* → [标识符](02_Lexical_Structure.html#identifier) [多个 key-path 后缀](#key-path-postfixes)可选 | [多个 key-path 后缀](#key-path-postfixes) +> *key-path 组件* → [标识符](./02_Lexical_Structure.md#identifier) [多个 key-path 后缀](#key-path-postfixes)可选 | [多个 key-path 后缀](#key-path-postfixes) > > > @@ -897,7 +897,7 @@ print(keyPath == c.getSomeKeyPath()) 由于 key-path 字符串表达式在编译期才创建,编译期可以检查属性是否存在,以及属性是否暴露给 Objective-C 运行时。 -关于更多如何使用 key path 与 Objective-C APIs 交互的信息,请参阅 [在 Swift 中使用 Objective-C 运行时特性](https://developer.apple.com/documentation/swift/using_objective_c_runtime_features_in_swift)。关于更多 key-value 编程和 key-value 观察的信息,请参阅 [Key-Value 编程](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueCoding/index.html#//apple_ref/doc/uid/10000107i) 和 [Key-Value 观察编程](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html#//apple_ref/doc/uid/10000177i) +关于更多如何使用 key path 与 Objective-C APIs 交互的信息,请参阅 [在 Swift 中使用 Objective-C 运行时特性](./https://developer.apple.com/documentation/swift/using_objective_c_runtime_features_in_swift)。关于更多 key-value 编程和 key-value 观察的信息,请参阅 [Key-Value 编程](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueCoding/index.md#//apple_ref/doc/uid/10000107i) 和 [Key-Value 观察编程](./https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.md#//apple_ref/doc/uid/10000177i) > 注意 > @@ -918,7 +918,7 @@ print(keyPath == c.getSomeKeyPath()) *后缀表达式*就是在某个表达式的后面运用后缀运算符或其他后缀语法。从语法构成上来看,基本表达式也是后缀表达式。 -关于这些运算符的更多信息,请参阅 [基本运算符](../chapter2/02_Basic_Operators.html) 和 [高级运算符](../chapter2/26_Advanced_Operators.html)。 +关于这些运算符的更多信息,请参阅 [基本运算符](../chapter2/02_Basic_Operators.md) 和 [高级运算符](../chapter2/26_Advanced_Operators.md)。 关于 Swift 标准库提供的运算符的更多信息,请参阅 [运算符定义](https://developer.apple.com/documentation/swift/operator_declarations)。 @@ -927,7 +927,7 @@ print(keyPath == c.getSomeKeyPath()) > *后缀表达式* → [*基本表达式*](#primary-expression) > -> *后缀表达式* → [*后缀表达式*](#postfix-expression) [*后缀运算符*](02_Lexical_Structure.md#postfix-operator) +> *后缀表达式* → [*后缀表达式*](./#postfix-expression) [*后缀运算符*](02_Lexical_Structure.md#postfix-operator) > > *后缀表达式* → [*函数调用表达式*](#function-call-expression) > @@ -996,9 +996,9 @@ myData.someMethod {$0 == 13} > > > -> *函数调用参数* → [表达式](#expression) | [标识符](02_Lexical_Structure.html#identifier) **:** [*表达式*](#expression) +> *函数调用参数* → [表达式](./#expression) | [标识符](02_Lexical_Structure.md#identifier) **:** [*表达式*](#expression) > -> *函数调用参数* → [运算符](02_Lexical_Structure.html#operator) | [标识符](02_Lexical_Structure.html#identifier) **:** [*运算符*](02_Lexical_Structure.html#operator) +> *函数调用参数* → [运算符](./02_Lexical_Structure.md#operator) | [标识符](./02_Lexical_Structure.md#identifier) **:** [*运算符*](./02_Lexical_Structure.md#operator) > > > @@ -1082,7 +1082,7 @@ t.0 = t.1 对于模块的成员来说,只能直接访问顶级声明中的成员。 -使用 `dynamicMemberLookup` 属性声明的类型包含可以在运行时查找的成员,具体请参阅 [属性](07_Attributes.html) +使用 `dynamicMemberLookup` 属性声明的类型包含可以在运行时查找的成员,具体请参阅 [属性](./07_Attributes.md) 为了区分只有参数名有所不同的方法或构造器,在圆括号中写出参数名,参数名后紧跟一个冒号,对于没有参数名的参数,使用下划线代替参数名。而对于重载方法,则需使用类型标注进行区分。例如: @@ -1117,17 +1117,17 @@ let x = [10, 3, 20, 15, 4] > 显式成员表达式语法 > -> *显式成员表达式* → [*后缀表达式*](#postfix-expression) **.** [*十进制数字*] (02_Lexical_Structure.html#decimal-digit) +> *显式成员表达式* → [*后缀表达式*](./#postfix-expression) **.** [*十进制数字*] (02_Lexical_Structure.md#decimal-digit) > -> *显式成员表达式* → [*后缀表达式*](#postfix-expression) **.** [*标识符*](02_Lexical_Structure.html#identifier) [*泛型实参子句*](08_Generic_Parameters_and_Arguments.html#generic-argument-clause)可选
+> *显式成员表达式* → [*后缀表达式*](./#postfix-expression) **.** [*标识符*](02_Lexical_Structure.md#identifier) [*泛型实参子句*](./08_Generic_Parameters_and_Arguments.md#generic-argument-clause)可选
> -> *显式成员表达式* → [*后缀表达式*](#postfix-expression) **.** [*标识符*] (02_Lexical_Structure.html#identifier) **(** [*参数名称*](#argument-names) **)** +> *显式成员表达式* → [*后缀表达式*](./#postfix-expression) **.** [*标识符*] (02_Lexical_Structure.md#identifier) **(** [*参数名称*](#argument-names) **)** > > *参数名称* → [*参数名*](#argument-name) [*参数名称*](#argument-names)可选
> -> *参数名* → [*标识符*](02_Lexical_Structure.html#identifier) **:** +> *参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) **:** > @@ -1161,7 +1161,7 @@ let x = [10, 3, 20, 15, 4] 要获取下标表达式的值,可将索引表达式作为下标表达式的参数来调用下标 getter。下标 setter 的调用方式与之一样。 -关于下标的声明,请参阅 [协议下标声明](05_Declarations.html#protocol_subscript_declaration)。 +关于下标的声明,请参阅 [协议下标声明](./05_Declarations.md#protocol_subscript_declaration)。 > 下标表达式语法 > diff --git a/source/chapter3/05_Statements.md b/source/chapter3/05_Statements.md index 4e42c66d..b4b8e6a7 100755 --- a/source/chapter3/05_Statements.md +++ b/source/chapter3/05_Statements.md @@ -10,9 +10,9 @@ > 语句语法 > -> *语句* → [*表达式*](04_Expressions.md#expression) **;**可选 +> *语句* → [*表达式*](./04_Expressions.md#expression) **;**可选 > -> *语句* → [*声明*](05_Declarations.md#declaration) **;**可选 +> *语句* → [*声明*](./05_Declarations.md#declaration) **;**可选 > > *语句* → [*循环语句*](#loop-statement) **;**可选 > @@ -69,7 +69,7 @@ for item in collection { > > -> *for-in 语句* → **for** **case**可选 [*模式*](07_Patterns.md#pattern) **in** [*表达式*](04_Expressions.md#expression) [*where 子句*](#where-clause)可选 [*代码块*](05_Declarations.md#code-block) +> *for-in 语句* → **for** **case**可选 [*模式*](./07_Patterns.md#pattern) **in** [*表达式*](./04_Expressions.md#expression) [*where 子句*](./#where-clause)可选 [*代码块*](05_Declarations.md#code-block) > @@ -98,21 +98,21 @@ while condition { > > -> *while 语句* → **while** [*条件子句*](#condition-clause) [*代码块*](05_Declarations.md#code-block) +> *while 语句* → **while** [*条件子句*](./#condition-clause) [*代码块*](05_Declarations.md#code-block) > -> *条件子句* → [*表达式*](04_Expressions.md#expression) | [*表达式*](04_Expressions.md#expression) **,** [*条件列表*](#condition-list) +> *条件子句* → [*表达式*](./04_Expressions.md#expression) | [*表达式*](./04_Expressions.md#expression) **,** [*条件列表*](#condition-list) > -> *条件* → [*表达式*](04_Expressions.md#expression) |[*可用性条件*](#availability-condition) | [*case 条件*](#case-condition) | [*可选绑定条件*](#optional-binding-condition) +> *条件* → [*表达式*](./04_Expressions.md#expression) |[*可用性条件*](#availability-condition) | [*case 条件*](#case-condition) | [*可选绑定条件*](#optional-binding-condition) > > -> *case 条件* → **case** [*模式*](07_Patterns.md#pattern) [*构造器*](05_Declarations.md#initializer) +> *case 条件* → **case** [*模式*](./07_Patterns.md#pattern) [*构造器*](./05_Declarations.md#initializer) > -> *可选绑定条件* → **let** [*模式*](07_Patterns.md#pattern) [*构造器*](05_Declarations.md#initializer) | **var** [*模式*](07_Patterns.md#pattern) [*构造器*](05_Declarations.md#initializer) +> *可选绑定条件* → **let** [*模式*](./07_Patterns.md#pattern) [*构造器*](./05_Declarations.md#initializer) | **var** [*模式*](./07_Patterns.md#pattern) [*构造器*](./05_Declarations.md#initializer) > @@ -141,7 +141,7 @@ repeat { > > -> *repeat-while 语句* → **repeat** [*代码块*](05_Declarations.md#code-block) **while** [*表达式*](04_Expressions.md#expression) +> *repeat-while 语句* → **repeat** [*代码块*](./05_Declarations.md#code-block) **while** [*表达式*](./04_Expressions.md#expression) > @@ -205,10 +205,10 @@ if condition 1 { > > -> *if 语句* → **if** [*条件子句*](#condition-clause) [*代码块*](05_Declarations.md#code-block) [*else 子句*](#else-clause)可选 +> *if 语句* → **if** [*条件子句*](./#condition-clause) [*代码块*](05_Declarations.md#code-block) [*else 子句*](#else-clause)可选 > -> *else 子句* → **else** [*代码块*](05_Declarations.md#code-block) | **else** [*if 语句*](#if-statement) +> *else 子句* → **else** [*代码块*](./05_Declarations.md#code-block) | **else** [*if 语句*](#if-statement) > @@ -224,7 +224,7 @@ guard condition else { } ``` -`guard` 语句中条件的结果必须是 Bool 类型或者 Bool 的桥接类型。另外,条件也可以是一条可选绑定,请参阅 [可选绑定](../chapter2/01_The_Basics.html#optional_binding)。 +`guard` 语句中条件的结果必须是 Bool 类型或者 Bool 的桥接类型。另外,条件也可以是一条可选绑定,请参阅 [可选绑定](../chapter2/01_The_Basics.md#optional_binding)。 在 `guard` 语句中进行可选绑定的任何常量或者变量,其可用范围从声明开始直到作用域结束。 @@ -235,13 +235,13 @@ guard condition else { * `continue` * `throw` -关于控制转移语句,请参阅 [控制转移语句](#control_transfer_statements)。关于 `Never` 返回类型的函数,请参阅 [永不返回的函数](05_Declarations.md#rethrowing_functions_and_methods)。 +关于控制转移语句,请参阅 [控制转移语句](./#control_transfer_statements)。关于 `Never` 返回类型的函数,请参阅 [永不返回的函数](05_Declarations.md#rethrowing_functions_and_methods)。 > guard 语句语法 > > -> *guard 语句* → **guard** [*条件子句*](#condition-clause) **else** [*代码块*] (05_Declarations.html#code-block) +> *guard 语句* → **guard** [*条件子句*](./#condition-clause) **else** [*代码块*] (05_Declarations.md#code-block) > @@ -267,7 +267,7 @@ default: `switch` 语句会先计算*控制表达式*的值,然后与每一个 `case` 的模式进行匹配。如果匹配成功,程序将会执行对应的 `case` 中的语句。另外,每一个 `case` 的作用域都不能为空,也就是说在每一个 `case` 的冒号(`:`)后面必须至少有一条语句。如果你不想在匹配到的 `case` 中执行代码,只需在该 `case` 中写一条 `break` 语句即可。 -可以用作控制表达式的值是十分灵活的。除了标量类型外,如 `Int`、`Character`,你可以使用任何类型的值,包括浮点数、字符串、元组、自定义类型的实例和可选类型。控制表达式的值还可以用来匹配枚举类型中的成员值或是检查该值是否包含在指定的 `Range` 中。关于如何在 `switch` 语句中使用这些类型,请参阅 [控制流](../chapter2/05_Control_Flow.html) 一章中的 [Switch](../chapter2/05_Control_Flow.html#switch)。 +可以用作控制表达式的值是十分灵活的。除了标量类型外,如 `Int`、`Character`,你可以使用任何类型的值,包括浮点数、字符串、元组、自定义类型的实例和可选类型。控制表达式的值还可以用来匹配枚举类型中的成员值或是检查该值是否包含在指定的 `Range` 中。关于如何在 `switch` 语句中使用这些类型,请参阅 [控制流](../chapter2/05_Control_Flow.md) 一章中的 [Switch](../chapter2/05_Control_Flow.md#switch)。 每个 `case` 的模式后面可以有一个 `where` 子句。`where` 子句由 `where` 关键字紧跟一个提供额外条件的表达式组成。因此,当且仅当控制表达式匹配一个 `case` 的模式且 `where` 子句的表达式为真时,`case` 中的语句才会被执行。在下面的例子中,控制表达式只会匹配包含两个相等元素的元组,例如 `(1, 1)`: @@ -316,7 +316,7 @@ case .suppressed: > > -> *switch 语句* → **switch** [*表达式*](04_Expressions.html#expression) **{** [*switch-case 列表*](#switch-cases)可选 **}** +> *switch 语句* → **switch** [*表达式*](./04_Expressions.md#expression) **{** [*switch-case 列表*](#switch-cases)可选 **}** > > *switch case 列表* → [*switch-case*](#switch-case) [*switch-case 列表*](#switch-cases)可选 @@ -329,7 +329,7 @@ case .suppressed: > *case 标签* → [*属性*](#switch-case-attributes-label)可选 **case** [*case 项列表*](#case-item-list) **:** > -> *case 项列表* → [*模式*](07_Patterns.md#pattern) [*where 子句*](#where-clause)可选 | [*模式*](07_Patterns.md#pattern) [*where 子句*](#where-clause)可选 **,** [*case 项列表*](#case-item-list) +> *case 项列表* → [*模式*](./07_Patterns.md#pattern) [*where 子句*](./#where-clause)可选 | [*模式*](07_Patterns.md#pattern) [*where 子句*](#where-clause)可选 **,** [*case 项列表*](#case-item-list) > > *default 标签* → [*属性*](#switch-case-attributes-label)可选 **default** **:** @@ -339,7 +339,7 @@ case .suppressed: > *where-clause* → **where** [*where 表达式*](#where-expression) > -> *where-expression* → [*表达式*](04_Expressions.md#expression) +> *where-expression* → [*表达式*](./04_Expressions.md#expression) > > @@ -365,7 +365,7 @@ case .suppressed: 标签的作用域在该标签所标记的语句内。可以嵌套使用带标签的语句,但标签名必须唯一。 -关于使用带标签的语句的例子,请参阅 [控制流](../chapter2/05_Control_Flow.html) 一章中的 [带标签的语句](../chapter2/05_Control_Flow.html#labeled_statements)。 +关于使用带标签的语句的例子,请参阅 [控制流](../chapter2/05_Control_Flow.md) 一章中的 [带标签的语句](../chapter2/05_Control_Flow.md#labeled_statements)。 > 带标签的语句语法 > @@ -383,7 +383,7 @@ case .suppressed: > *语句标签* → [*标签名称*](#label-name) **:** > -> *标签名称* → [*标识符*](02_Lexical_Structure.md#identifier) +> *标签名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -422,7 +422,7 @@ case .suppressed: 无论哪种情况,控制权都会被转移给被终止的控制流语句后面的第一行语句。 -关于使用 `break` 语句的例子,请参阅 [控制流](../chapter2/05_Control_Flow.html) 一章的 [Break](../chapter2/05_Control_Flow.html#break) 和 [带标签的语句](../chapter2/05_Control_Flow.html#labeled_statements)。 +关于使用 `break` 语句的例子,请参阅 [控制流](../chapter2/05_Control_Flow.md) 一章的 [Break](../chapter2/05_Control_Flow.md#break) 和 [带标签的语句](../chapter2/05_Control_Flow.md#labeled_statements)。 > break 语句语法 > @@ -449,7 +449,7 @@ case .suppressed: 在 `for` 语句中,`continue` 语句执行后,增量表达式还是会被计算,这是因为每次循环体执行完毕后,增量表达式都会被计算。 -关于使用 `continue` 语句的例子,请参阅 [控制流](../chapter2/05_Control_Flow.html) 一章的 [Continue](../chapter2/05_Control_Flow.html#continue) 和 [带标签的语句](../chapter2/05_Control_Flow.html#labeled_statements)。 +关于使用 `continue` 语句的例子,请参阅 [控制流](../chapter2/05_Control_Flow.md) 一章的 [Continue](../chapter2/05_Control_Flow.md#continue) 和 [带标签的语句](../chapter2/05_Control_Flow.md#labeled_statements)。 > continue 语句语法 > @@ -465,7 +465,7 @@ case .suppressed: `fallthrough` 语句可出现在 `switch` 语句中的任意 `case` 中,但不能出现在最后一个 `case` 中。同时,`fallthrough` 语句也不能把控制权转移到使用了值绑定的 `case`。 -关于在 `switch` 语句中使用 `fallthrough` 语句的例子,请参阅 [控制流](../chapter2/05_Control_Flow.html) 一章的 [控制转移语句](../chapter2/05_Control_Flow.html#control_transfer_statements)。 +关于在 `switch` 语句中使用 `fallthrough` 语句的例子,请参阅 [控制流](../chapter2/05_Control_Flow.md) 一章的 [控制转移语句](../chapter2/05_Control_Flow.md#control_transfer_statements)。 > fallthrough 语句语法 > @@ -491,7 +491,7 @@ case .suppressed: > 注意 > > -> 正如 [可失败构造器](05_Declarations.html#failable_initializers) 中所描述的,`return nil` 在可失败构造器中用于表明构造失败。 +> 正如 [可失败构造器](./05_Declarations.md#failable_initializers) 中所描述的,`return nil` 在可失败构造器中用于表明构造失败。 > 而只写 `return` 时,仅仅是从该函数或方法中返回,而不返回任何值(也就是说,函数或方法的返回类型为 `Void` 或者说 `()`)。 @@ -500,7 +500,7 @@ case .suppressed: > > -> *return 语句* → **return** [*表达式*](04_Expressions.html#expression)可选 +> *return 语句* → **return** [*表达式*](./04_Expressions.md#expression)可选 > @@ -517,13 +517,13 @@ case .suppressed: 表达式的结果必须符合 `ErrorType` 协议。 -关于如何使用 `throw` 语句的例子,请参阅 [错误处理](../chapter2/18_Error_Handling.html) 一章的 [用 throwing 函数传递错误](../chapter2/18_Error_Handling.html#propagating_errors_using_throwing_functions)。 +关于如何使用 `throw` 语句的例子,请参阅 [错误处理](../chapter2/18_Error_Handling.md) 一章的 [用 throwing 函数传递错误](../chapter2/18_Error_Handling.md#propagating_errors_using_throwing_functions)。 > throw 语句语法 > > -> *throw 语句* → **throw** [*表达式*](04_Expressions.html#expression) +> *throw 语句* → **throw** [*表达式*](./04_Expressions.md#expression) > @@ -561,7 +561,7 @@ f() > > -> *延迟语句* → **defer** [*代码块*](05_Declarations.html#code-block) +> *延迟语句* → **defer** [*代码块*](./05_Declarations.md#code-block) > @@ -586,21 +586,21 @@ do { 如同 `switch` 语句,编译器会判断 `catch` 子句是否有遗漏。如果 `catch` 子句没有遗漏,则认为错误已被处理。否则,错误会自动传递到外围作用域,被某个 `catch` 子句处理掉或者被用 `throws` 关键字声明的抛出函数继续向外抛出。 -为了确保错误已经被处理,可以让 `catch` 子句使用匹配所有错误的模式,如通配符模式(`_`)。如果一个 `catch` 子句不指定一种具体模式,`catch` 子句会匹配任何错误,并绑定到名为 `error` 的局部常量。有关在 `catch` 子句中使用模式的更多信息,请参阅 [模式](07_Patterns.html)。 +为了确保错误已经被处理,可以让 `catch` 子句使用匹配所有错误的模式,如通配符模式(`_`)。如果一个 `catch` 子句不指定一种具体模式,`catch` 子句会匹配任何错误,并绑定到名为 `error` 的局部常量。有关在 `catch` 子句中使用模式的更多信息,请参阅 [模式](./07_Patterns.md)。 -关于如何在 `do` 语句中使用一系列 `catch` 子句的例子,请参阅 [错误处理](../chapter2/17_Error_Handling.html#handling_errors)。 +关于如何在 `do` 语句中使用一系列 `catch` 子句的例子,请参阅 [错误处理](../chapter2/17_Error_Handling.md#handling_errors)。 > do 语句语法 > > -> *do 语句* → **do** [*代码块*](05_Declarations.html#code-block) [*多条 catch 子句*](#catch-clauses)可选 +> *do 语句* → **do** [*代码块*](./05_Declarations.md#code-block) [*多条 catch 子句*](#catch-clauses)可选 > > *多条 catch 子句* → [*catch 子句*](#catch-clause) [*多条 catch 子句*](#catch-clauses)可选 > -> *catch 子句* → **catch** [*模式*](07_Patterns.html#pattern)可选 [*where 子句*](#where-clause)可选 [*代码块*](05_Declarations.html#code-block) +> *catch 子句* → **catch** [*模式*](./07_Patterns.md#pattern)可选 [*where 子句*](./#where-clause)可选 [*代码块*](05_Declarations.md#code-block) > @@ -725,9 +725,9 @@ statements to compile if both compilation conditions are false > *编译条件* → [*平台条件*](#grammar_platform-condition) > -> *编译条件* → [*标识符*](02_Lexical_Structure.md#identifier) +> *编译条件* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> *编译条件* → [*布尔值字面量*](02_Lexical_Structure.md#boolean-literal) +> *编译条件* → [*布尔值字面量*](./02_Lexical_Structure.md#boolean-literal) > > *编译条件* → **(** [*编译条件*](#compilation-condition) **)** > @@ -764,13 +764,13 @@ statements to compile if both compilation conditions are false > *架构* → **i386** | **x86_64** | **arm** | **arm64** > -> *swift 版本* → [*十进制数字*](02_Lexical_Structure.md#decimal-digit) ­**.** ­[*swift 版本延续*](#grammar_swift-version-continuation) 可选 +> *swift 版本* → [*十进制数字*](./02_Lexical_Structure.md#decimal-digit) ­**.** ­[*swift 版本延续*](#grammar_swift-version-continuation) 可选 > -> *swift 版本延续* → **.** [*十进制数字*](02_Lexical_Structure.md#decimal-digit) [*swift 版本延续*](#grammar_swift-version-continuation) 可选 +> *swift 版本延续* → **.** [*十进制数字*](./02_Lexical_Structure.md#decimal-digit) [*swift 版本延续*](#grammar_swift-version-continuation) 可选 > -> *模块名* → [*identifier*](02_Lexical_Structure.md#identifier) +> *模块名* → [*identifier*](./02_Lexical_Structure.md#identifier) > > *环境* → **模拟器** @@ -805,7 +805,7 @@ statements to compile if both compilation conditions are false > *行号* → 大于 0 的十进制整数 > -> *文件名* → [*静态字符串字面量*](02_Lexical_Structure.md#static-string-literal) +> *文件名* → [*静态字符串字面量*](./02_Lexical_Structure.md#static-string-literal) > ### 编译时诊断语句 @@ -828,7 +828,7 @@ statements to compile if both compilation conditions are false > *诊断语句* → **#warning** **(** [*diagnostic-message*](#grammar_diagnostic-message) **)** > -> *诊断语句* → [*静态字符串字面量*](02_Lexical_Structure.md#static-string-literal) +> *诊断语句* → [*静态字符串字面量*](./02_Lexical_Structure.md#static-string-literal) > @@ -877,9 +877,9 @@ if #available(platform name version, ..., *) { > *平台名称* → **tvOS** > -> *平台版本* → [十进制数字](02_Lexical_Structure.md#decimal-digits) +> *平台版本* → [十进制数字](./02_Lexical_Structure.md#decimal-digits) > -> *平台版本* → [十进制数字](02_Lexical_Structure.md#decimal-digits) **.** [十进制数字](02_Lexical_Structure.md#decimal-digits) +> *平台版本* → [十进制数字](./02_Lexical_Structure.md#decimal-digits) **.** [十进制数字](./02_Lexical_Structure.md#decimal-digits) > -> *平台版本* → [十进制数字](02_Lexical_Structure.md#decimal-digits) **.** [十进制数字](02_Lexical_Structure.md#decimal-digits) **.** [十进制数字](02_Lexical_Structure.md#decimal-digits) +> *平台版本* → [十进制数字](./02_Lexical_Structure.md#decimal-digits) **.** [十进制数字](./02_Lexical_Structure.md#decimal-digits) **.** [十进制数字](./02_Lexical_Structure.md#decimal-digits) > diff --git a/source/chapter3/06_Declarations.md b/source/chapter3/06_Declarations.md index 0e454b8e..b5451591 100755 --- a/source/chapter3/06_Declarations.md +++ b/source/chapter3/06_Declarations.md @@ -50,7 +50,7 @@ Swift 的源文件中的顶级代码(top-level code)由零个或多个语句 > 顶级声明语法 > -> *顶级声明* → [*多条语句*](10_Statements.html#statements)可选 +> *顶级声明* → [*多条语句*](./10_Statements.md#statements)可选 > @@ -70,7 +70,7 @@ Swift 的源文件中的顶级代码(top-level code)由零个或多个语句 > > > -> *代码块* → **{** [*多条语句*](10_Statements.html#statements)可选 **}** +> *代码块* → **{** [*多条语句*](./10_Statements.md#statements)可选 **}** > @@ -94,7 +94,7 @@ import 模块.子模块 > > > -> *导入声明* → [*特性列表*](06_Attributes.html#attributes)可选 **import** [*导入类型*](#import-kind)可选 [*导入路径*](#import-path) +> *导入声明* → [*特性列表*](./06_Attributes.md#attributes)可选 **import** [*导入类型*](#import-kind)可选 [*导入路径*](#import-path) > > > @@ -106,7 +106,7 @@ import 模块.子模块 > > > -> *导入路径标识符* → [*标识符*](02_Lexical_Structure.html#identifier) | [*运算符*](02_Lexical_Structure.html#operator) +> *导入路径标识符* → [*标识符*](./02_Lexical_Structure.md#identifier) | [*运算符*](./02_Lexical_Structure.md#operator) > @@ -137,18 +137,18 @@ print("The second number is \(secondNumber).") // 打印“The second number is 42.” ``` -当常量名称的类型(`:` 类型)可以被推断出时,类型标注在常量声明中是可选的,正如 [类型推断](03_Types.html#type_inference) 中所描述的。 +当常量名称的类型(`:` 类型)可以被推断出时,类型标注在常量声明中是可选的,正如 [类型推断](./03_Types.md#type_inference) 中所描述的。 -声明一个常量类型属性要使用 `static` 声明修饰符。类型属性在 [类型属性](../chapter2/10_Properties.html#type_properties)中有介绍。 +声明一个常量类型属性要使用 `static` 声明修饰符。类型属性在 [类型属性](../chapter2/10_Properties.md#type_properties)中有介绍。 -如果还想获得更多关于常量的信息或者想在使用中获得帮助,请参阅 [常量和变量](../chapter2/01_The_Basics.html#constants_and_variables) 和 [存储属性](../chapter2/10_Properties.html#stored_properties)。 +如果还想获得更多关于常量的信息或者想在使用中获得帮助,请参阅 [常量和变量](../chapter2/01_The_Basics.md#constants_and_variables) 和 [存储属性](../chapter2/10_Properties.md#stored_properties)。 > 常量声明语法 > > > -> *常量声明* → [*特性列表*](06_Attributes.html#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **let** [*模式构造器列表*](pattern-initializer-list) +> *常量声明* → [*特性列表*](./06_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **let** [*模式构造器列表*](pattern-initializer-list) > > > @@ -156,11 +156,11 @@ print("The second number is \(secondNumber).") > > > -> *模式构造器* → [*模式*](07_Patterns.html#pattern) [*构造器*](#initializer)可选 +> *模式构造器* → [*模式*](./07_Patterns.md#pattern) [*构造器*](#initializer)可选 > > > -> *构造器* → **=** [*表达式*](04_Expressions.html#expression) +> *构造器* → **=** [*表达式*](./04_Expressions.md#expression) > @@ -176,7 +176,7 @@ print("The second number is \(secondNumber).") > 也可以在协议声明中声明属性,详情请参阅 [协议属性声明](#protocol_property_declaration)。 > -可以在子类中重写继承来的变量属性,使用 `override` 声明修饰符标记属性的声明即可,详情请参阅 [重写](../chapter2/13_Inheritance.html#overriding)。 +可以在子类中重写继承来的变量属性,使用 `override` 声明修饰符标记属性的声明即可,详情请参阅 [重写](../chapter2/13_Inheritance.md#overriding)。 ### 存储型变量和存储型变量属性 @@ -213,13 +213,13 @@ var 变量名称: 类型 { 可以在全局范围、函数内部,以及类、结构体、枚举、扩展的声明中使用这种形式的声明。当变量以这种形式在全局范围或者函数内部被声明时,它表示一个计算型变量。当它在类、结构体、枚举、扩展声明的上下文中被声明时,它表示一个*计算型属性(computed property)*。 -getter 用来读取变量值,setter 用来写入变量值。setter 子句是可选的,getter 子句是必须的。不过也可以将这些子句都省略,直接返回请求的值,正如在 [只读计算型属性](../chapter2/10_Properties.html#computed_properties) 中描述的那样。但是如果提供了一个 setter 子句,就必须也提供一个 getter 子句。 +getter 用来读取变量值,setter 用来写入变量值。setter 子句是可选的,getter 子句是必须的。不过也可以将这些子句都省略,直接返回请求的值,正如在 [只读计算型属性](../chapter2/10_Properties.md#computed_properties) 中描述的那样。但是如果提供了一个 setter 子句,就必须也提供一个 getter 子句。 -setter 的圆括号以及 setter 名称是可选的。如果提供了 setter 名称,它就会作为 setter 的参数名称使用。如果不提供 setter 名称,setter 的参数的默认名称为 `newValue`,正如在 [便捷 setter 声明](../chapter2/10_Properties.html#shorthand_setter_declaration) 中描述的那样。 +setter 的圆括号以及 setter 名称是可选的。如果提供了 setter 名称,它就会作为 setter 的参数名称使用。如果不提供 setter 名称,setter 的参数的默认名称为 `newValue`,正如在 [便捷 setter 声明](../chapter2/10_Properties.md#shorthand_setter_declaration) 中描述的那样。 与存储型变量和存储型属性不同,计算型变量和计算型属性的值不存储在内存中。 -要获得更多关于计算型属性的信息和例子,请参阅 [计算型属性](../chapter2/10_Properties.html#computed_properties)。 +要获得更多关于计算型属性的信息和例子,请参阅 [计算型属性](../chapter2/10_Properties.md#computed_properties)。 ### 存储型变量和属性的观察器 @@ -240,7 +240,7 @@ var 变量名称: 类型 = 表达式 { 可以在全局范围、函数内部,或者类、结构体的声明中使用这种形式的声明。当变量以这种形式在全局范围或者函数内部被声明时,观察器表示一个存储型变量观察器。当它在类和结构体的声明中被声明时,观察器表示一个属性观察器。 可以为任何存储型属性添加观察器。也可以通过重写父类属性的方式为任何继承的属性(无论是存储型还是计算型的)添加观察器 -,正如 [重写属性观察器](../chapter2/13_Inheritance.html#overriding_property_observers) 中所描述的。 +,正如 [重写属性观察器](../chapter2/13_Inheritance.md#overriding_property_observers) 中所描述的。 用于初始化的表达式在类或者结构的声明中是可选的,但是在其他声明中则是必须的。如果可以从初始化表达式中推断出类型信息,那么可以不提供类型标注。 @@ -252,12 +252,12 @@ var 变量名称: 类型 = 表达式 { 提供了 `willSet` 时,`didSet` 是可选的。同样的,提供了 `didSet` 时,`willSet` 则是可选的。 -要获得更多信息以及查看如何使用属性观察器的例子,请参阅 [属性观察器](../chapter2/10_Properties.html#property_observers)。 +要获得更多信息以及查看如何使用属性观察器的例子,请参阅 [属性观察器](../chapter2/10_Properties.md#property_observers)。 ### 类型变量属性 -要声明一个类型变量属性,用 `static` 声明修饰符标记该声明。类可以改用 `class` 声明修饰符标记类的类型计算型属性从而允许子类重写超类的实现。类型属性在 [类型属性](../chapter2/10_Properties.html#type_properties) 章节有详细讨论。 +要声明一个类型变量属性,用 `static` 声明修饰符标记该声明。类可以改用 `class` 声明修饰符标记类的类型计算型属性从而允许子类重写超类的实现。类型属性在 [类型属性](../chapter2/10_Properties.md#type_properties) 章节有详细讨论。 > 注意 > @@ -270,23 +270,23 @@ var 变量名称: 类型 = 表达式 { > *变量声明* → [*变量声明头*](#variable-declaration-head) [*模式构造器列表*](#pattern-initializer-list) > -> *变量声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.html#type-annotation) [*代码块*](#code-block) +> *变量声明* → [*变量声明头*](./#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*代码块*](#code-block) > -> *变量声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.html#type-annotation) [*getter-setter 代码块*](#getter-setter-block) +> *变量声明* → [*变量声明头*](./#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*getter-setter 代码块*](#getter-setter-block) > -> *变量声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.html#type-annotation) [*getter-setter 关键字代码块*](#getter-setter-keyword-block) +> *变量声明* → [*变量声明头*](./#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*getter-setter 关键字代码块*](#getter-setter-keyword-block) > > *变量声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*构造器*](#initializer) [*willSet-didSet 代码块*](#willSet-didSet-block) > -> *变量声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.html#type-annotation) [*构造器*](#initializer)可选 [*willSet-didSet 代码块*](#willSet-didSet-block) +> *变量声明* → [*变量声明头*](./#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*构造器*](#initializer)可选 [*willSet-didSet 代码块*](#willSet-didSet-block) > -> *变量声明头* → [*特性列表*](06_Attributes.html#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **var** +> *变量声明头* → [*特性列表*](./06_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **var** > > > -> *变量名称* → [*标识符*](02_Lexical_Structure.html#identifier) +> *变量名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -298,15 +298,15 @@ var 变量名称: 类型 = 表达式 { > > > -> *getter 子句* → [*特性列表*](06_Attributes.html#attributes)可选 **get** [*代码块*](#code-block) +> *getter 子句* → [*特性列表*](./06_Attributes.md#attributes)可选 **get** [*代码块*](#code-block) > > > -> *setter 子句* → [*特性列表*](06_Attributes.html#attributes)可选 **set** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) +> *setter 子句* → [*特性列表*](./06_Attributes.md#attributes)可选 **set** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) > > > -> *setter 名称* → **(** [*标识符*](02_Lexical_Structure.html#identifier) **)** +> *setter 名称* → **(** [*标识符*](./02_Lexical_Structure.md#identifier) **)** > @@ -316,11 +316,11 @@ var 变量名称: 类型 = 表达式 { > > > -> *getter 关键字子句* → [*特性列表*](06_Attributes.html#attributes)可选 **get** +> *getter 关键字子句* → [*特性列表*](./06_Attributes.md#attributes)可选 **get** > > > -> *setter 关键字子句* → [*特性列表*](06_Attributes.html#attributes)可选 **set** +> *setter 关键字子句* → [*特性列表*](./06_Attributes.md#attributes)可选 **set** > @@ -330,11 +330,11 @@ var 变量名称: 类型 = 表达式 { > > > -> *willSet 子句* → [*特性列表*](06_Attributes.html#attributes)可选 **willSet** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) +> *willSet 子句* → [*特性列表*](./06_Attributes.md#attributes)可选 **willSet** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) > > > -> *didSet 子句* → [*特性列表*](06_Attributes.html#attributes)可选 **didSet** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) +> *didSet 子句* → [*特性列表*](./06_Attributes.md#attributes)可选 **didSet** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) > @@ -400,15 +400,15 @@ func sum(_ sequence: T) -> Int where T.Element == Int { > > > -> *类型别名声明* → [*特性列表*](06_Attributes.html#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **typealias** [*类型别名名称*](#typealias-name) [*类型别子句*](#typealias-clause) [*类型别名赋值*](#typealias-assignment) +> *类型别名声明* → [*特性列表*](./06_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **typealias** [*类型别名名称*](#typealias-name) [*类型别子句*](#typealias-clause) [*类型别名赋值*](#typealias-assignment) > > > -> *类型别名名称* → [*标识符*](02_Lexical_Structure.html#identifier) +> *类型别名名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > > > -> *类型别名赋值* → **=** [*类型*](03_Types.html#type) +> *类型别名赋值* → **=** [*类型*](./03_Types.md#type) > @@ -439,7 +439,7 @@ func 函数名称(参数列表) { 大多数时候,嵌套函数都是可逃逸的函数。仅当一个嵌套函数捕获了某个确保了永不逃逸的值——例如一个输入输出参数——或者传入一个非逃逸函数参数的时候,这个嵌套函数才是非逃逸的。 -更多关于嵌套函数的讨论,请参阅 [嵌套函数](../chapter2/06_Functions.html#Nested_Functions)。 +更多关于嵌套函数的讨论,请参阅 [嵌套函数](../chapter2/06_Functions.md#Nested_Functions)。 ### 参数名 @@ -487,7 +487,7 @@ repeatGreeting("Hello, world!", count: 2) // count 有标签, greeting 没有 不能将同一个值传递给多个输入输出参数,因为这种情况下的拷贝与覆盖行为的顺序是不确定的,因此原始值的最终值也将无法确定。 -更多关于内存安全和内存独占权的讨论,请参阅 [内存安全](../chapter2/24_MemorySafety.html)。 +更多关于内存安全和内存独占权的讨论,请参阅 [内存安全](../chapter2/24_MemorySafety.md)。 如果一个闭包或者嵌套函数捕获了一个输入输出参数,那么这个闭包或者嵌套函数必须是非逃逸的。如果你需要捕获一个输入输出参数,但并不对其进行修改或者在其他代码中观察其值变化,那么你可以使用捕获列表来显式地表明这是个不可变捕获。 @@ -514,7 +514,7 @@ func multithreadedFunction(queue: DispatchQueue, x: inout Int) { } ``` -关于输入输出参数的详细讨论,请参阅 [输入输出参数](../chapter2/06_Functions.html#in_out_parameters)。 +关于输入输出参数的详细讨论,请参阅 [输入输出参数](../chapter2/06_Functions.md#in_out_parameters)。 @@ -530,7 +530,7 @@ _ : 参数类型 以下划线(`_`)命名的参数会被显式忽略,无法在函数内使用。 -一个参数的基本类型名称如果紧跟着三个点(`...`),会被视为可变参数。一个函数至多可以拥有一个可变参数,且必须是最后一个参数。可变参数会作为包含该参数类型元素的数组处理。举例来讲,可变参数 `Int...` 会作为 `[Int]` 来处理。关于使用可变参数的例子,请参阅 [可变参数](../chapter2/06_Functions.html#variadic_parameters)。 +一个参数的基本类型名称如果紧跟着三个点(`...`),会被视为可变参数。一个函数至多可以拥有一个可变参数,且必须是最后一个参数。可变参数会作为包含该参数类型元素的数组处理。举例来讲,可变参数 `Int...` 会作为 `[Int]` 来处理。关于使用可变参数的例子,请参阅 [可变参数](../chapter2/06_Functions.md#variadic_parameters)。 如果在参数类型后面有一个以等号(`=`)连接的表达式,该参数会拥有默认值,即给定表达式的值。当函数被调用时,给定的表达式会被求值。如果参数在函数调用时被省略了,就会使用其默认值。 @@ -607,7 +607,7 @@ func someFunction(callback: () throws -> Void) rethrows { Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它的调用者。`Never` 返回类型的函数或方法可以称为不归,不归函数、方法要么引发不可恢复的错误,要么永远不停地运作,这会使调用后本应执行得代码就不再执行了。但即使是不归函数、方法,抛错函数和重抛出函数也可以将程序控制转移到合适的 `catch` 代码块。 -不归函数、方法可以在 guard 语句的 else 字句中调用,具体讨论在[*Guard 语句*](10_Statements.html#guard_statements)。 +不归函数、方法可以在 guard 语句的 else 字句中调用,具体讨论在[*Guard 语句*](./10_Statements.md#guard_statements)。 你可以重写一个不归方法,但是新的方法必须保持原有的返回类型和没有返回的行为。 @@ -615,15 +615,15 @@ Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它 > 函数声明语法 > -> *函数声明* → [*函数头*](#function-head) [*函数名*](#function-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*函数签名*](#function-signature) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause) [*函数体*](#function-body)可选 +> *函数声明* → [*函数头*](./#function-head) [*函数名*](#function-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*函数签名*](./#function-signature) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause) [*函数体*](#function-body)可选 > -> *函数头* → [*特性列表*](06_Attributes.html#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **func** +> *函数头* → [*特性列表*](./06_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **func** > > > -> *函数名* → [*标识符*](02_Lexical_Structure.html#identifier) | [*运算符*](02_Lexical_Structure.html#operator) +> *函数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | [*运算符*](./02_Lexical_Structure.md#operator) > > > @@ -635,7 +635,7 @@ Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它 > > > -> *函数结果* → **->** [*特性列表*](06_Attributes.html#attributes)可选 [*类型*](03_Types.html#type) +> *函数结果* → **->** [*特性列表*](./06_Attributes.md#attributes)可选 [*类型*](./03_Types.md#type) > > > @@ -652,23 +652,23 @@ Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它 > > > -> *参数* → [*外部参数名*](#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.html#type-annotation) [*默认参数子句*](#default-argument-clause)可选 +> *参数* → [*外部参数名*](./#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.md#type-annotation) [*默认参数子句*](#default-argument-clause)可选 > -> *参数* → [*外部参数名*](#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.html#type-annotation) +> *参数* → [*外部参数名*](./#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.md#type-annotation) > -> *参数* → [*外部参数名*](#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.html#type-annotation) **...** +> *参数* → [*外部参数名*](./#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.md#type-annotation) **...** > > > -> *外部参数名* → [*标识符*](02_Lexical_Structure.html#identifier) | **_** +> *外部参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | **_** > > > -> *内部参数名* → [*标识符*](02_Lexical_Structure.html#identifier) | **_** +> *内部参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | **_** > > > -> *默认参数子句* → **=** [*表达式*](04_Expressions.html#expression) +> *默认参数子句* → **=** [*表达式*](./04_Expressions.md#expression) > @@ -683,7 +683,7 @@ Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它 不同于类或者结构体,枚举类型并不隐式提供默认构造器,所有构造器必须显式声明。一个构造器可以委托给枚举中的其他构造器,但是构造过程仅当构造器将一个枚举用例赋值给 `self` 后才算完成。 -和结构体类似但是和类不同,枚举是值类型。枚举实例在被赋值到变量或常量时,或者传递给函数作为参数时会被复制。更多关于值类型的信息,请参阅 [结构体和枚举是值类型](../chapter2/09_Classes_and_Structures.html#structures_and_enumerations_are_value_types)。 +和结构体类似但是和类不同,枚举是值类型。枚举实例在被赋值到变量或常量时,或者传递给函数作为参数时会被复制。更多关于值类型的信息,请参阅 [结构体和枚举是值类型](../chapter2/09_Classes_and_Structures.md#structures_and_enumerations_are_value_types)。 可以扩展枚举类型,正如在 [扩展声明](#extension_declaration) 中讨论的一样。 @@ -719,7 +719,7 @@ let f = Number.integer let evenInts: [Number] = [0, 2, 4, 6].map(f) ``` -要获得更多关于具有关联值的枚举用例的信息和例子,请参阅 [关联值](../chapter2/08_Enumerations.html#associated_values)。 +要获得更多关于具有关联值的枚举用例的信息和例子,请参阅 [关联值](../chapter2/08_Enumerations.md#associated_values)。 #### 递归枚举 @@ -774,14 +774,14 @@ enum GamePlayMode: String { 在上面这个例子中,`GamePlayMode.cooperative` 的原始值是 `"cooperative"`,`GamePlayMode.individual` 的原始值是 `"individual"`,`GamePlayMode.competitive` 的原始值是 `"competitive"`。 -枚举用例具有原始值的枚举类型隐式地符合定义在 Swift 标准库中的 `RawRepresentable` 协议。所以,它们拥有一个 `rawValue` 属性和一个可失败构造器 `init?(rawValue: RawValue)`。可以使用 `rawValue` 属性去获取枚举用例的原始值,例如 `ExampleEnum.b.rawValue`。还可以根据原始值来创建一个相对应的枚举用例,只需调用枚举的可失败构造器,例如 `ExampleEnum(rawValue: 5)`,这个可失败构造器返回一个可选类型的用例。要获得更多关于具有原始值的枚举用例的信息和例子,请参阅 [原始值](../chapter2/08_Enumerations.html#raw_values)。 +枚举用例具有原始值的枚举类型隐式地符合定义在 Swift 标准库中的 `RawRepresentable` 协议。所以,它们拥有一个 `rawValue` 属性和一个可失败构造器 `init?(rawValue: RawValue)`。可以使用 `rawValue` 属性去获取枚举用例的原始值,例如 `ExampleEnum.b.rawValue`。还可以根据原始值来创建一个相对应的枚举用例,只需调用枚举的可失败构造器,例如 `ExampleEnum(rawValue: 5)`,这个可失败构造器返回一个可选类型的用例。要获得更多关于具有原始值的枚举用例的信息和例子,请参阅 [原始值](../chapter2/08_Enumerations.md#raw_values)。 ### 访问枚举用例 -使用点语法(`.`)来引用枚举类型的枚举用例,例如 `EnumerationType.enumerationCase`。当枚举类型可以由上下文推断而出时,可以省略它(但是 `.` 仍然需要),正如 [枚举语法](../chapter2/08_Enumerations.html#enumeration_syntax) 和 [显式成员表达式](04_Expressions.html#explicit_member_expression) 所述。 +使用点语法(`.`)来引用枚举类型的枚举用例,例如 `EnumerationType.enumerationCase`。当枚举类型可以由上下文推断而出时,可以省略它(但是 `.` 仍然需要),正如 [枚举语法](../chapter2/08_Enumerations.md#enumeration_syntax) 和 [显式成员表达式](./04_Expressions.md#explicit_member_expression) 所述。 -可以使用 `switch` 语句来检验枚举用例的值,正如 [使用 switch 语句匹配枚举值](../chapter2/08_Enumerations.html#matching_enumeration_values_with_a_switch_statement) 所述。枚举类型是模式匹配的,依靠 `switch` 语句 `case` 块中的枚举用例模式,正如 [枚举用例模式](07_Patterns.html#enumeration_case_pattern) 所述。 +可以使用 `switch` 语句来检验枚举用例的值,正如 [使用 switch 语句匹配枚举值](../chapter2/08_Enumerations.md#matching_enumeration_values_with_a_switch_statement) 所述。枚举类型是模式匹配的,依靠 `switch` 语句 `case` 块中的枚举用例模式,正如 [枚举用例模式](./07_Patterns.md#enumeration_case_pattern) 所述。 > 枚举声明语法 @@ -789,12 +789,12 @@ enum GamePlayMode: String { > > > -> *枚举声明* → [*特性列表*](06_Attributes.html#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 [*联合风格枚举*](#union-style-enum) +> *枚举声明* → [*特性列表*](./06_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 [*联合风格枚举*](#union-style-enum) > -> *枚举声明* → [*特性列表*](06_Attributes.html#attributes)可选 [*访问级别修饰符*](#access-level-modifier) 可选 [*原始值风格枚举*](#raw-value-style-enum) +> *枚举声明* → [*特性列表*](./06_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier) 可选 [*原始值风格枚举*](#raw-value-style-enum) > > -> *联合风格枚举* → **indirect**可选 **enum** [*枚举名称*](#enum-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [类型继承子句](03_Types.html#type-inheritance-clause)可选 **{** [*多个联合风格枚举成员*](#union-style-enum-members)可选 **}** +> *联合风格枚举* → **indirect**可选 **enum** [*枚举名称*](./#enum-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [类型继承子句](./03_Types.md#type-inheritance-clause)可选 **{** [*多个联合风格枚举成员*](#union-style-enum-members)可选 **}** > > > @@ -802,11 +802,11 @@ enum GamePlayMode: String { > > > -> *联合风格枚举成员* → [*声明*](#declaration) | [*联合风格枚举用例子句*](#union-style-enum-case-clause) | [*编译控制流语句*](05_Statements.html#compiler-control-statement) +> *联合风格枚举成员* → [*声明*](./#declaration) | [*联合风格枚举用例子句*](#union-style-enum-case-clause) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > > > -> *联合风格枚举用例子句* → [*特性列表*](06_Attributes.html#attributes)可选 **indirect**可选 **case** [*联合风格枚举用例列表*](#union-style-enum-case-list) +> *联合风格枚举用例子句* → [*特性列表*](./06_Attributes.md#attributes)可选 **indirect**可选 **case** [*联合风格枚举用例列表*](#union-style-enum-case-list) > > > @@ -814,21 +814,21 @@ enum GamePlayMode: String { > > > -> *联合风格枚举用例* → [*枚举用例名称*](#enum-case-name) [*元组类型*](03_Types.html#tuple-type)可选 +> *联合风格枚举用例* → [*枚举用例名称*](./#enum-case-name) [*元组类型*](03_Types.md#tuple-type)可选 > > > -> *枚举名称* → [*标识符*](02_Lexical_Structure.html#identifier) +> *枚举名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > > > -> *枚举用例名称* → [*标识符*](02_Lexical_Structure.html#identifier) +> *枚举用例名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > > > > > -> *原始值风格枚举* → **enum** [*枚举名称*](#enum-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*类型继承子句*](03_Types.html#type-inheritance-clause) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause) **{** [*多个原始值风格枚举成员*](#raw-value-style-enum-members) **}** +> *原始值风格枚举* → **enum** [*枚举名称*](./#enum-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause) [*泛型 where 子句*](./08_Generic_Parameters_and_Arguments.md#generic-where-clause) **{** [*多个原始值风格枚举成员*](#raw-value-style-enum-members) **}** > > > @@ -836,11 +836,11 @@ enum GamePlayMode: String { > > > -> *原始值风格枚举成员* → [*声明*](#declaration) | [*原始值风格枚举用例子句*](#raw-value-style-enum-case-clause) | [*编译控制流语句*](05_Statements.html#compiler-control-statement) +> *原始值风格枚举成员* → [*声明*](./#declaration) | [*原始值风格枚举用例子句*](#raw-value-style-enum-case-clause) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > > > -> *原始值风格枚举用例子句* → [*特性列表*](06_Attributes.html#attributes)可选 **case** [*原始值风格枚举用例列表*](#raw-value-style-enum-case-list) +> *原始值风格枚举用例子句* → [*特性列表*](./06_Attributes.md#attributes)可选 **case** [*原始值风格枚举用例列表*](#raw-value-style-enum-case-list) > > > @@ -856,7 +856,7 @@ enum GamePlayMode: String { > > > -> *原始值字面量* → [数字型字面量](02_Lexical_Structure.html#numeric-literal) | [字符串型字面量](02_Lexical_Structure.html#static-string-literal) | [布尔型字面量](02_Lexical_Structure.html#boolean-literal) +> *原始值字面量* → [数字型字面量](./02_Lexical_Structure.md#numeric-literal) | [字符串型字面量](./02_Lexical_Structure.md#static-string-literal) | [布尔型字面量](./02_Lexical_Structure.md#boolean-literal) > @@ -870,24 +870,24 @@ struct 结构体名称: 采纳的协议 { } ``` -结构体内可包含零个或多个声明。这些声明可以包括存储型和计算型属性、类型属性、实例方法、类型方法、构造器、下标、类型别名,甚至其他结构体、类、和枚举声明。结构体声明不能包含析构器或者协议声明。关于结构体的详细讨论和示例,请参阅 [类和结构体](../chapter2/09_Classes_and_Structures.html)。 +结构体内可包含零个或多个声明。这些声明可以包括存储型和计算型属性、类型属性、实例方法、类型方法、构造器、下标、类型别名,甚至其他结构体、类、和枚举声明。结构体声明不能包含析构器或者协议声明。关于结构体的详细讨论和示例,请参阅 [类和结构体](../chapter2/09_Classes_and_Structures.md)。 结构体可以采纳任意数量的协议,但是不能继承自类、枚举或者其他结构体。 有三种方法可以创建一个已声明的结构体实例: -* 调用结构体内声明的构造器,正如 [构造器](../chapter2/14_Initialization.html#initializers) 所述。 +* 调用结构体内声明的构造器,正如 [构造器](../chapter2/14_Initialization.md#initializers) 所述。 -* 如果没有声明构造器,调用结构体的成员逐一构造器,正如 [结构体类型的成员逐一构造器](../chapter2/14_Initialization.html#memberwise_initializers_for_structure_types) 所述。 +* 如果没有声明构造器,调用结构体的成员逐一构造器,正如 [结构体类型的成员逐一构造器](../chapter2/14_Initialization.md#memberwise_initializers_for_structure_types) 所述。 -* 如果没有声明构造器,而且结构体的所有属性都有初始值,调用结构体的默认构造器,正如 [默认构造器](../chapter2/14_Initialization.html#default_initializers) 所述。 +* 如果没有声明构造器,而且结构体的所有属性都有初始值,调用结构体的默认构造器,正如 [默认构造器](../chapter2/14_Initialization.md#default_initializers) 所述。 -结构体的构造过程请参阅 [构造过程](../chapter2/14_Initialization.html)。 +结构体的构造过程请参阅 [构造过程](../chapter2/14_Initialization.md)。 -结构体实例的属性可以用点语法(`.`)来访问,正如 [访问属性](../chapter2/09_Classes_and_Structures.html#accessing_properties) 所述。 +结构体实例的属性可以用点语法(`.`)来访问,正如 [访问属性](../chapter2/09_Classes_and_Structures.md#accessing_properties) 所述。 结构体是值类型。结构体的实例在被赋予变量或常量,或传递给函数作为参数时会被复制。关于值类型的更多信息,请参阅 -[结构体和枚举是值类型](../chapter2/09_Classes_and_Structures.html#structures_and_enumerations_are_value_types)。 +[结构体和枚举是值类型](../chapter2/09_Classes_and_Structures.md#structures_and_enumerations_are_value_types)。 可以使用扩展声明来扩展结构体类型的行为,请参阅 [扩展声明](#extension_declaration)。 @@ -897,11 +897,11 @@ struct 结构体名称: 采纳的协议 { > > > -> *结构体声明* → [*特性列表*](06_Attributes.html#attributes)可选 [*访问级别修饰符*](#access-level-modifier) 可选 **struct** [*结构体名称*](#struct-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*类型继承子句*](03_Types.html#type-inheritance-clause)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*结构体主体*](#struct-body) +> *结构体声明* → [*特性列表*](./06_Attributes.md#attributes)可选 [*访问级别修饰符*](./#access-level-modifier) 可选 **struct** [*结构体名称*](#struct-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*结构体主体*](#struct-body) > > > -> *结构体名称* → [*标识符*](02_Lexical_Structure.html#identifier) +> *结构体名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > > > @@ -914,7 +914,7 @@ struct 结构体名称: 采纳的协议 { > > > -> *结构体成员* → [*声明*](#declaration) | [*编译控制流语句*](05_Statements.html#compiler-control-statement) +> *结构体成员* → [*声明*](./#declaration) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > @@ -929,7 +929,7 @@ class 类名: 超类, 采纳的协议 { } ``` -类内可以包含零个或多个声明。这些声明可以包括存储型和计算型属性、实例方法、类型方法、构造器、唯一的析构器、下标、类型别名,甚至其他结构体、类和枚举声明。类声明不能包含协议声明。关于类的详细讨论和示例,请参阅 [类和结构体](../chapter2/09_Classes_and_Structures.html)。 +类内可以包含零个或多个声明。这些声明可以包括存储型和计算型属性、实例方法、类型方法、构造器、唯一的析构器、下标、类型别名,甚至其他结构体、类和枚举声明。类声明不能包含协议声明。关于类的详细讨论和示例,请参阅 [类和结构体](../chapter2/09_Classes_and_Structures.md)。 一个类只能继承自一个超类,但是可以采纳任意数量的协议。超类紧跟在类名和冒号后面,其后跟着采纳的协议。泛型类可以继承自其它泛型类和非泛型类,但是非泛型类只能继承自其它非泛型类。当在冒号后面写泛型超类的名称时,必须写上泛型类的全名,包括它的泛型形参子句。 @@ -943,13 +943,13 @@ class 类名: 超类, 采纳的协议 { 有两种方法来创建已声明的类的实例: -* 调用类中声明的构造器,请参阅 [构造器](../chapter2/14_Initialization.html#initializers)。 +* 调用类中声明的构造器,请参阅 [构造器](../chapter2/14_Initialization.md#initializers)。 -* 如果没有声明构造器,而且类的所有属性都被赋予了初始值,调用类的默认构造器,请参阅 [默认构造器](../chapter2/14_Initialization.html#default_initializers)。 +* 如果没有声明构造器,而且类的所有属性都被赋予了初始值,调用类的默认构造器,请参阅 [默认构造器](../chapter2/14_Initialization.md#default_initializers)。 -类实例属性可以用点语法(`.`)来访问,请参阅 [访问属性](../chapter2/09_Classes_and_Structures.html#accessing_properties)。 +类实例属性可以用点语法(`.`)来访问,请参阅 [访问属性](../chapter2/09_Classes_and_Structures.md#accessing_properties)。 -类是引用类型。当被赋予常量或变量,或者传递给函数作为参数时,类的实例会被引用,而不是被复制。关于引用类型的更多信息,请参阅 [结构体和枚举是值类型](../chapter2/09_Classes_and_Structures.html#structures_and_enumerations_are_value_types)。 +类是引用类型。当被赋予常量或变量,或者传递给函数作为参数时,类的实例会被引用,而不是被复制。关于引用类型的更多信息,请参阅 [结构体和枚举是值类型](../chapter2/09_Classes_and_Structures.md#structures_and_enumerations_are_value_types)。 可以使用扩展声明来扩展类的行为,请参阅 [扩展声明](#extension_declaration)。 @@ -959,13 +959,13 @@ class 类名: 超类, 采纳的协议 { > > > -> *类声明* → [*特性列表*](06_Attributes.html#attributes)可选 [访问级别修饰符](#access-level-modifier)可选 **final**可选 **class** [*类名*](#class-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*类型继承子句*](03_Types.html#type-inheritance-clause)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*类主体*](#class-body) +> *类声明* → [*特性列表*](./06_Attributes.md#attributes)可选 [访问级别修饰符](./#access-level-modifier)可选 **final**可选 **class** [*类名*](#class-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*类主体*](#class-body) > -> *类声明* → [*特性列表*](06_Attributes.html#attributes)可选 **final** [访问级别修饰符](#access-level-modifier)可选 **class** [*类名*](#class-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*类型继承子句*](03_Types.html#type-inheritance-clause)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*类主体*](#class-body) +> *类声明* → [*特性列表*](./06_Attributes.md#attributes)可选 **final** [访问级别修饰符](./#access-level-modifier)可选 **class** [*类名*](#class-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*类主体*](#class-body) > > > -> *类名* → [*标识符*](02_Lexical_Structure.html#identifier) +> *类名* → [*标识符*](./02_Lexical_Structure.md#identifier) > > > @@ -976,7 +976,7 @@ class 类名: 超类, 采纳的协议 { > > > -> *类成员* → [*声明*](#declaration) | [*编译控制流语句*](05_Statements.html#compiler-control-statement) +> *类成员* → [*声明*](./#declaration) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > @@ -992,16 +992,16 @@ protocol 协议名称: 继承的协议 { 协议的主体包含零个或多个协议成员声明,这些成员描述了任何采纳该协议的类型必须满足的一致性要求。一个协议可以声明采纳者必须实现的某些属性、方法、构造器以及下标。协议也可以声明各种各样的类型别名,叫做关联类型,它可以指定协议的不同声明之间的关系。协议声明不能包括类、结构体、枚举或者其它协议的声明。协议成员声明会在后面进行讨论。 -协议类型可以继承自任意数量的其它协议。当一个协议类型继承自其它协议的时候,来自其它协议的所有要求会聚合在一起,而且采纳当前协议的类型必须符合所有的这些要求。关于如何使用协议继承的例子,请参阅 [协议继承](../chapter2/21_Protocols.html#protocol_inheritance)。 +协议类型可以继承自任意数量的其它协议。当一个协议类型继承自其它协议的时候,来自其它协议的所有要求会聚合在一起,而且采纳当前协议的类型必须符合所有的这些要求。关于如何使用协议继承的例子,请参阅 [协议继承](../chapter2/21_Protocols.md#protocol_inheritance)。 > 注意 > -> 也可以使用协议合成类型来聚合多个协议的一致性要求,请参阅 [协议合成类型](03_Types.html#protocol_composition_type) 和 [协议合成](../chapter2/21_Protocols.html#protocol_composition)。 +> 也可以使用协议合成类型来聚合多个协议的一致性要求,请参阅 [协议合成类型](./03_Types.md#protocol_composition_type) 和 [协议合成](../chapter2/21_Protocols.md#protocol_composition)。 > 可以通过类型的扩展声明来采纳协议,从而为之前声明的类型添加协议一致性。在扩展中,必须实现所有采纳协议的要求。如果该类型已经实现了所有的要求,可以让这个扩展声明的主体留空。 -默认地,符合某个协议的类型必须实现所有在协议中声明的属性、方法和下标。即便如此,可以用 `optional` 声明修饰符标注协议成员声明,以指定它们的实现是可选的。`optional` 修饰符仅仅可以用于使用 `objc` 特性标记过的协议。因此,仅仅类类型可以采用并符合包含可选成员要求的协议。更多关于如何使用 `optional` 声明修饰符的信息,以及如何访问可选协议成员的指导——例如不能确定采纳协议的类型是否实现了它们时——请参阅 [可选协议要求](../chapter2/21_Protocols.html#optional_protocol_requirements) +默认地,符合某个协议的类型必须实现所有在协议中声明的属性、方法和下标。即便如此,可以用 `optional` 声明修饰符标注协议成员声明,以指定它们的实现是可选的。`optional` 修饰符仅仅可以用于使用 `objc` 特性标记过的协议。因此,仅仅类类型可以采用并符合包含可选成员要求的协议。更多关于如何使用 `optional` 声明修饰符的信息,以及如何访问可选协议成员的指导——例如不能确定采纳协议的类型是否实现了它们时——请参阅 [可选协议要求](../chapter2/21_Protocols.md#optional_protocol_requirements) 为了限制协议只能被类类型采纳,需要使用 `AnyObject` 关键字来标记协议,将 `AnyObject` 关键在写在冒号后面的继承的协议列表的首位。例如,下面的协议只能被类类型采纳: @@ -1018,9 +1018,9 @@ protocol SomeProtocol: AnyObject { > 如果协议已经用 `objc` 特性标记了,`AnyObject` 要求就隐式地应用于该协议,无需显式使用 `AnyObject` 关键字。 > -协议类型是命名的类型,因此它们可以像其他命名类型一样使用,正如 [协议作为类型](../chapter2/21_Protocols.html#protocols_as_types) 所讨论的。然而,不能构造一个协议的实例,因为协议实际上不提供它们指定的要求的实现。 +协议类型是命名的类型,因此它们可以像其他命名类型一样使用,正如 [协议作为类型](../chapter2/21_Protocols.md#protocols_as_types) 所讨论的。然而,不能构造一个协议的实例,因为协议实际上不提供它们指定的要求的实现。 -可以使用协议来声明作为代理的类或者结构体应该实现的方法,正如 [委托(代理)模式](../chapter2/21_Protocols.html#delegation) 中所述。 +可以使用协议来声明作为代理的类或者结构体应该实现的方法,正如 [委托(代理)模式](../chapter2/21_Protocols.md#delegation) 中所述。 > 协议声明语法 @@ -1028,11 +1028,11 @@ protocol SomeProtocol: AnyObject { > > > -> *协议声明* → [*特性列表*](06_Attributes.html#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **protocol** [*协议名称*](#protocol-name) [*类型继承子句*](03_Types.html#type-inheritance-clause)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*协议主体*](#protocol-body) +> *协议声明* → [*特性列表*](./06_Attributes.md#attributes)可选 [*访问级别修饰符*](./#access-level-modifier)可选 **protocol** [*协议名称*](#protocol-name) [*类型继承子句*](03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*协议主体*](#protocol-body) > > > -> *协议名称* → [*标识符*](02_Lexical_Structure.html#identifier) +> *协议名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > > > @@ -1043,7 +1043,7 @@ protocol SomeProtocol: AnyObject { > > > -> *协议成员* → [*协议成员声明*](#protocol-member-declaration) | [*编译控制流语句*](05_Statements.html#compiler-control-statement) +> *协议成员* → [*协议成员声明*](./#protocol-member-declaration) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > > > @@ -1074,7 +1074,7 @@ var 属性名: 类型 { get set } 同其它协议成员声明一样,这些属性声明仅仅针对符合该协议的类型声明了 getter 和 setter 要求,你不能在协议中直接实现 getter 和 setter。 -符合类型可以通过多种方式满足 getter 和 setter 要求。如果属性声明包含 `get` 和 `set` 关键字,符合类型就可以用存储型变量属性或可读可写的计算型属性来满足此要求,但是属性不能以常量属性或只读计算型属性实现。如果属性声明仅仅包含 `get` 关键字的话,它可以作为任意类型的属性被实现。关于如何实现协议中的属性要求的例子,请参阅 [属性要求](../chapter2/21_Protocols.html#property_requirements) +符合类型可以通过多种方式满足 getter 和 setter 要求。如果属性声明包含 `get` 和 `set` 关键字,符合类型就可以用存储型变量属性或可读可写的计算型属性来满足此要求,但是属性不能以常量属性或只读计算型属性实现。如果属性声明仅仅包含 `get` 关键字的话,它可以作为任意类型的属性被实现。关于如何实现协议中的属性要求的例子,请参阅 [属性要求](../chapter2/21_Protocols.md#property_requirements) 另请参阅 [变量声明](#variable_declaration)。 @@ -1083,13 +1083,13 @@ var 属性名: 类型 { get set } > > > -> *协议属性声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.html#type-annotation) [*getter-setter 关键字代码块*](#getter-setter-keyword-block) +> *协议属性声明* → [*变量声明头*](./#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*getter-setter 关键字代码块*](#getter-setter-keyword-block) > ### 协议方法声明 -协议可以通过在协议声明主体中引入一个协议方法声明,来声明符合的类型必须实现的方法。协议方法声明和函数方法声明有着相同的形式,但有两项例外:它们不包括函数体,也不能包含默认参数。关于如何实现协议中的方法要求的例子,请参阅 [方法要求](../chapter2/21_Protocols.html#method_requirements)。 +协议可以通过在协议声明主体中引入一个协议方法声明,来声明符合的类型必须实现的方法。协议方法声明和函数方法声明有着相同的形式,但有两项例外:它们不包括函数体,也不能包含默认参数。关于如何实现协议中的方法要求的例子,请参阅 [方法要求](../chapter2/21_Protocols.md#method_requirements)。 使用 `static` 声明修饰符可以在协议声明中声明一个类型方法。类在实现这些方法时使用 `class` 声明修饰符。结构体实现这些方法时必须使用 `static` 声明修饰符。通过扩展实现时亦是如此(类的扩展中使用 `class` 声明修饰符,结构体的扩展中使用 `static` 声明修饰符)。 @@ -1100,7 +1100,7 @@ var 属性名: 类型 { get set } > > > -> *协议方法声明* → [*函数头*](#function-head) [*函数名*](#function-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*函数签名*](#function-signature) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 +> *协议方法声明* → [*函数头*](./#function-head) [*函数名*](#function-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*函数签名*](./#function-signature) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 > @@ -1121,9 +1121,9 @@ var 属性名: 类型 { get set } > > > -> *协议构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **throws**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 +> *协议构造器声明* → [*构造器头*](./#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](./#parameter-clause) **throws**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 > -> *协议构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **rethrows** [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 +> *协议构造器声明* → [*构造器头*](./#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](./#parameter-clause) **rethrows** [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 > @@ -1145,14 +1145,14 @@ subscript (参数列表) -> 返回类型 { get set } > > > -> *协议下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*getter-setter 关键字代码块*](#getter-setter-keyword-block) +> *协议下标声明* → [*下标头*](./#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*getter-setter 关键字代码块*](#getter-setter-keyword-block) > ### 协议关联类型声明 -使用关键字 `associatedtype` 来声明协议关联类型。关联类型为作为协议声明的一部分,为某种类型提供了一个别名。关联类型和泛型参数子句中的类型参数很相似,但是它们和 `Self` 一样,用于协议中。`Self` 指代采纳协议的类型。要获得更多信息和例子,请参阅 [关联类型](../chapter2/22_Generics.html#associated_types)。 +使用关键字 `associatedtype` 来声明协议关联类型。关联类型为作为协议声明的一部分,为某种类型提供了一个别名。关联类型和泛型参数子句中的类型参数很相似,但是它们和 `Self` 一样,用于协议中。`Self` 指代采纳协议的类型。要获得更多信息和例子,请参阅 [关联类型](../chapter2/22_Generics.md#associated_types)。 在协议声明中使用泛型 `where` 子句来为继承的协议关联类型添加约束,且不需要重新声明关联类型。例如下面代码中的 `SubProtocol` 声明。 @@ -1179,7 +1179,7 @@ protocol SubProtocolB: SomeProtocol where SomeType: Equatable { } > > > -> *协议关联类型声明* → [*特性列表*](06_Attributes.html#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **associatedtype** [*类型别名头*](#typealias-head) [*类型继承子句*](03_Types.html#type-inheritance-clause)可选 [*类型别名赋值*](#typealias-assignment)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 +> *协议关联类型声明* → [*特性列表*](./06_Attributes.md#attributes)可选 [*访问级别修饰符*](./#access-level-modifier)可选 **associatedtype** [*类型别名头*](#typealias-head) [*类型继承子句*](03_Types.md#type-inheritance-clause)可选 [*类型别名赋值*](./#typealias-assignment)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 > @@ -1187,7 +1187,7 @@ protocol SubProtocolB: SomeProtocol where SomeType: Equatable { } 构造器声明会为程序中的类、结构体或枚举引入构造器。构造器使用关键字 `init` 来声明,有两种基本形式。 -结构体、枚举、类可以有任意数量的构造器,但是类的构造器具有不同的规则和行为。不同于结构体和枚举,类有两种构造器,即指定构造器和便利构造器,请参阅 [构造过程](../chapter2/14_Initialization.html)。 +结构体、枚举、类可以有任意数量的构造器,但是类的构造器具有不同的规则和行为。不同于结构体和枚举,类有两种构造器,即指定构造器和便利构造器,请参阅 [构造过程](../chapter2/14_Initialization.md)。 采用如下形式声明结构体和枚举的构造器,以及类的指定构造器: @@ -1226,7 +1226,7 @@ convenience init(参数列表) { 就像函数和方法,构造器也可以抛出或者重抛错误,你可以在构造器参数列表的圆括号之后使用 `throws` 或 `rethrows` 关键字来表明相应的抛出行为。 -关于在不同类型中声明构造器的例子,请参阅 [构造过程](../chapter2/14_Initialization.html)。 +关于在不同类型中声明构造器的例子,请参阅 [构造过程](../chapter2/14_Initialization.md)。 ### 可失败构造器 @@ -1267,24 +1267,24 @@ if let actualInstance = SomeStruct(input: "Hello") { 子类可以用任意种类的指定构造器重写超类的可失败指定构造器,但是只能用非可失败指定构造器重写超类的非可失败指定构造器。 -更多关于可失败构造器的信息和例子,请参阅 [可失败构造器](../chapter2/14_Initialization.html#failable_initializers)。 +更多关于可失败构造器的信息和例子,请参阅 [可失败构造器](../chapter2/14_Initialization.md#failable_initializers)。 > 构造器声明语法 > > > -> *构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **throws**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*构造器主体*](#initializer-body) +> *构造器声明* → [*构造器头*](./#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](./#parameter-clause) **throws**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*构造器主体*](#initializer-body) > -> *构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **rethrows**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*构造器主体*](#initializer-body) +> *构造器声明* → [*构造器头*](./#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](./#parameter-clause) **rethrows**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*构造器主体*](#initializer-body) > > > -> *构造器头* → [*特性列表*](06_Attributes.html#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **init** +> *构造器头* → [*特性列表*](./06_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **init** > -> *构造器头* → [*特性列表*](06_Attributes.html#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **init** **?** +> *构造器头* → [*特性列表*](./06_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **init** **?** > -> *构造器头* → [*特性列表*](06_Attributes.html#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **init** **!** +> *构造器头* → [*特性列表*](./06_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **init** **!** > > > @@ -1308,14 +1308,14 @@ deinit { 析构器不能直接调用。 -关于如何在类声明中使用析构器的例子,请参阅 [析构过程](../chapter2/15_Deinitialization.html)。 +关于如何在类声明中使用析构器的例子,请参阅 [析构过程](../chapter2/15_Deinitialization.md)。 > 析构器声明语法 > > > -> *析构器声明* → [*特性列表*](06_Attributes.html#attributes)可选 **deinit** [*代码块*](#code-block) +> *析构器声明* → [*特性列表*](./06_Attributes.md#attributes)可选 **deinit** [*代码块*](#code-block) > @@ -1329,7 +1329,7 @@ extension 类型名称 where 要求 { } ``` -扩展声明体可包含零个或多个声明语句。这些声明语句可以包括计算型属性、计算型类型属性、实例方法、类型方法、构造器、下标声明,甚至是类、结构体和枚举声明。扩展声明不能包含析构器、协议声明、存储型属性、属性观察器或其他扩展声明。关于扩展声明的详细讨论,以及各种扩展声明的例子,请参阅 [扩展](../chapter2/20_Extensions.html)。 +扩展声明体可包含零个或多个声明语句。这些声明语句可以包括计算型属性、计算型类型属性、实例方法、类型方法、构造器、下标声明,甚至是类、结构体和枚举声明。扩展声明不能包含析构器、协议声明、存储型属性、属性观察器或其他扩展声明。关于扩展声明的详细讨论,以及各种扩展声明的例子,请参阅 [扩展](../chapter2/20_Extensions.md)。 如果类型为类,结构体,或枚举类型,则扩展声明会扩展相应的类型。如果类型为协议类型,则扩展声明会扩展所有遵守这个协议的类型。在扩展的协议体中声明语句不能使用 `final` 标识符。 @@ -1516,7 +1516,7 @@ extension Array: Loggable where Element: MarkedLoggable { } > > > -> *扩展声明* → [特性](06_Attributes.html#type_attributes)可选 [访问级别修饰符](#access-level-modifier)可选 **extension** [*类型标识符*](03_Types.html#type-identifier) [*类型-继承-子句*](03_Types.html#type-inheritance-clause)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*扩展主体*](#extension-body) +> *扩展声明* → [特性](./06_Attributes.md#type_attributes)可选 [访问级别修饰符](./#access-level-modifier)可选 **extension** [*类型标识符*](03_Types.md#type-identifier) [*类型-继承-子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*扩展主体*](#extension-body) > > > @@ -1524,7 +1524,7 @@ extension Array: Loggable where Element: MarkedLoggable { } > > *多条声明* → [单条声明](#subscript_declaration) [多条声明](#declarations) 可选 > -> *单条声明* → [声明语句](#declarations) | [*编译控制流语句*](05_Statements.html#compiler-control-statement) +> *单条声明* → [声明语句](./#declarations) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > @@ -1559,7 +1559,7 @@ subscript (参数列表) -> 返回类型 { 同样可以在协议声明中声明下标,正如 [协议下标声明](#protocol_subscript_declaration) 中所述。 -更多关于下标的信息和例子,请参阅 [下标](../chapter2/12_Subscripts.html)。 +更多关于下标的信息和例子,请参阅 [下标](../chapter2/12_Subscripts.md)。 > 下标声明语法 @@ -1567,19 +1567,19 @@ subscript (参数列表) -> 返回类型 { > > > -> *下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*代码块*](#code-block) +> *下标声明* → [*下标头*](./#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*代码块*](#code-block) > -> *下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*getter-setter 代码块*](#getter-setter-block) +> *下标声明* → [*下标头*](./#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*getter-setter 代码块*](#getter-setter-block) > -> *下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.html#generic-where-clause)可选 [*getter-setter 关键字代码块*](#getter-setter-keyword-block) +> *下标声明* → [*下标头*](./#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*getter-setter 关键字代码块*](#getter-setter-keyword-block) > > > -> *下标头* → [*特性列表*](06_Attributes.html#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **subscript** [*泛型参数子句*](08_Generic_Parameters_and_Arguments.html#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) +> *下标头* → [*特性列表*](./06_Attributes.md#attributes)可选 [*声明修饰符列表*](./#declaration-modifiers)可选 **subscript** [*泛型参数子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) > > > -> *下标结果* → **->** [*特性列表*](06_Attributes.html#attributes)可选 [*类型*](03_Types.html#type) +> *下标结果* → **->** [*特性列表*](./06_Attributes.md#attributes)可选 [*类型*](./03_Types.md#type) > @@ -1589,7 +1589,7 @@ subscript (参数列表) -> 返回类型 { 可以声明三种不同的缀性:中缀、前缀和后缀。运算符的缀性指定了运算符与其运算对象的相对位置。 -运算符声明有三种基本形式,每种缀性各一种。运算符的缀性通过在 `operator` 关键字之前添加声明修饰符 `infix`,`prefix` 或 `postfix` 来指定。每种形式中,运算符的名字只能包含 [运算符](02_Lexical_Structure.html#operators) 中定义的运算符字符。 +运算符声明有三种基本形式,每种缀性各一种。运算符的缀性通过在 `operator` 关键字之前添加声明修饰符 `infix`,`prefix` 或 `postfix` 来指定。每种形式中,运算符的名字只能包含 [运算符](./02_Lexical_Structure.md#operators) 中定义的运算符字符。 下面的形式声明了一个新的中缀运算符: @@ -1621,7 +1621,7 @@ postfix operator 运算符名称 {} 和前缀运算符一样,后缀运算符的声明中不指定优先级,而且后缀运算符是非结合的。 -声明了一个新的运算符以后,需要实现一个跟这个运算符同名的函数来实现这个运算符。如果是实现一个前缀或者后缀运算符,也必须使用相符的 `prefix` 或者 `postfix` 声明修饰符标记函数声明。如果是实现中缀运算符,则不需要使用 `infix` 声明修饰符标记函数声明。关于如何实现一个新的运算符的例子,请参阅 [自定义运算符](../chapter2/25_Advanced_Operators.html#custom_operators)。 +声明了一个新的运算符以后,需要实现一个跟这个运算符同名的函数来实现这个运算符。如果是实现一个前缀或者后缀运算符,也必须使用相符的 `prefix` 或者 `postfix` 声明修饰符标记函数声明。如果是实现中缀运算符,则不需要使用 `infix` 声明修饰符标记函数声明。关于如何实现一个新的运算符的例子,请参阅 [自定义运算符](../chapter2/25_Advanced_Operators.md#custom_operators)。 > 运算符声明语法 @@ -1630,7 +1630,7 @@ postfix operator 运算符名称 {} > *运算符声明* → [*前缀运算符声明*](#prefix-operator-declaration) | [*后缀运算符声明*](#postfix-operator-declaration) | [*中缀运算符声明*](#infix-operator-declaration) > -> *前缀运算符声明* → **prefix** **运算符** [*运算符*](02_Lexical_Structure.html#operator) **{** **}** +> *前缀运算符声明* → **prefix** **运算符** [*运算符*](./02_Lexical_Structure.md#operator) **{** **}** > > > @@ -1638,7 +1638,7 @@ postfix operator 运算符名称 {} > > > -> *中缀运算符声明* → **infix** **运算符** [*运算符*](02_Lexical_Structure.html#operator) **{** [*中缀运算符属性*](#infix-operator-attributes)可选 **}** +> *中缀运算符声明* → **infix** **运算符** [*运算符*](./02_Lexical_Structure.md#operator) **{** [*中缀运算符属性*](#infix-operator-attributes)可选 **}** > > *中缀运算符组* → [*优先级组名称*](#precedence-group-name) @@ -1696,7 +1696,7 @@ Swift 定义了大量的优先级组来与标准库的运算符配合使用, > > > -> *优先级组赋值* → **assignment:**[*布尔字面值*](02_Lexical_Structure.html#boolean-literal) +> *优先级组赋值* → **assignment:**[*布尔字面值*](./02_Lexical_Structure.md#boolean-literal) > > *优先级组结合性* → **associativity:left** @@ -1709,7 +1709,7 @@ Swift 定义了大量的优先级组来与标准库的运算符配合使用, > *多优先级组名称* → [*优先级组名称*](#precedence-group-name) | [*优先级组名称*](#precedence-group-name) | [*优先级组名称*](#precedence-group-name) > -> *优先级组名称* →[*标识符*](02_Lexical_Structure.html#identifier) +> *优先级组名称* →[*标识符*](./02_Lexical_Structure.md#identifier) > @@ -1729,13 +1729,13 @@ Swift 定义了大量的优先级组来与标准库的运算符配合使用, `lazy` -该修饰符用于修饰类或结构体中的存储型变量属性,表示该属性的初始值最多只被计算和存储一次,且发生在它被第一次访问时。关于如何使用 `lazy` 修饰符的例子,请参阅 [惰性存储型属性](../chapter2/10_Properties.html#lazy_stored_properties)。 +该修饰符用于修饰类或结构体中的存储型变量属性,表示该属性的初始值最多只被计算和存储一次,且发生在它被第一次访问时。关于如何使用 `lazy` 修饰符的例子,请参阅 [惰性存储型属性](../chapter2/10_Properties.md#lazy_stored_properties)。 `optional` 该修饰符用于修饰协议中的属性、方法以及下标成员,表示符合类型可以不实现这些成员要求。 -只能将 `optional` 修饰符用于被 `objc` 特性标记的协议。这样一来,就只有类类型可以采纳并符合拥有可选成员要求的协议。关于如何使用 `optional` 修饰符,以及如何访问可选协议成员(比如,不确定符合类型是否已经实现了这些可选成员)的信息,请参阅 [可选协议要求](../chapter2/22_Protocols.html#optional_protocol_requirements)。 +只能将 `optional` 修饰符用于被 `objc` 特性标记的协议。这样一来,就只有类类型可以采纳并符合拥有可选成员要求的协议。关于如何使用 `optional` 修饰符,以及如何访问可选协议成员(比如,不确定符合类型是否已经实现了这些可选成员)的信息,请参阅 [可选协议要求](../chapter2/22_Protocols.md#optional_protocol_requirements)。 `required` @@ -1743,7 +1743,7 @@ Swift 定义了大量的优先级组来与标准库的运算符配合使用, `unowned` -该修饰符用于修饰存储型变量、常量或者存储型变量属性,表示该变量或属性持有其存储对象的无主引用。如果在此存储对象释放后尝试访问该对象,会引发运行时错误。如同弱引用一样,该引用类型的变量或属性必须是类类型。与弱引用不同的是,这种类型的变量或属性是非可选的。关于 `unowned` 更多的信息和例子,请参阅 [无主引用](../chapter2/16_Automatic_Reference_Counting.html#unowned_references) +该修饰符用于修饰存储型变量、常量或者存储型变量属性,表示该变量或属性持有其存储对象的无主引用。如果在此存储对象释放后尝试访问该对象,会引发运行时错误。如同弱引用一样,该引用类型的变量或属性必须是类类型。与弱引用不同的是,这种类型的变量或属性是非可选的。关于 `unowned` 更多的信息和例子,请参阅 [无主引用](../chapter2/16_Automatic_Reference_Counting.md#unowned_references) `unowned(safe)` @@ -1755,12 +1755,12 @@ Swift 定义了大量的优先级组来与标准库的运算符配合使用, `weak` -该修饰符用于修饰变量或存储型变量属性,表示该变量或属性持有其存储的对象的弱引用。这种变量或属性的类型必须是可选的类类型。使用 `weak` 修饰符可避免强引用循环。关于 `weak` 修饰符的更多信息和例子,请参阅 [弱引用](../chapter2/16_Automatic_Reference_Counting.html#resolving_strong_reference_cycles_between_class_instances)。 +该修饰符用于修饰变量或存储型变量属性,表示该变量或属性持有其存储的对象的弱引用。这种变量或属性的类型必须是可选的类类型。使用 `weak` 修饰符可避免强引用循环。关于 `weak` 修饰符的更多信息和例子,请参阅 [弱引用](../chapter2/16_Automatic_Reference_Counting.md#resolving_strong_reference_cycles_between_class_instances)。 ### 访问控制级别 -Swift 提供了三个级别的访问控制:`public`、`internal` 和 `private`。可以使用以下任意一种访问级别修饰符来指定声明的访问级别。访问控制在 [访问控制](../chapter2/24_Access_Control.html) 中有详细讨论。 +Swift 提供了三个级别的访问控制:`public`、`internal` 和 `private`。可以使用以下任意一种访问级别修饰符来指定声明的访问级别。访问控制在 [访问控制](../chapter2/24_Access_Control.md) 中有详细讨论。 `public` @@ -1774,7 +1774,7 @@ Swift 提供了三个级别的访问控制:`public`、`internal` 和 `private` 该修饰符表示声明只能被所在源文件的代码访问。 -以上访问级别修饰符都可以选择带上一个参数,该参数由一对圆括号和其中的 `set` 关键字组成(例如,`private(set)`)。使用这种形式的访问级别修饰符来限制某个属性或下标的 setter 的访问级别低于其本身的访问级别,正如 [Getter 和 Setter](../chapter2/24_Access_Control.html#getters_and_setters) 中所讨论的。 +以上访问级别修饰符都可以选择带上一个参数,该参数由一对圆括号和其中的 `set` 关键字组成(例如,`private(set)`)。使用这种形式的访问级别修饰符来限制某个属性或下标的 setter 的访问级别低于其本身的访问级别,正如 [Getter 和 Setter](../chapter2/24_Access_Control.md#getters_and_setters) 中所讨论的。 > 声明修饰符的语法 diff --git a/source/chapter3/07_Attributes.md b/source/chapter3/07_Attributes.md index 8e3408eb..3d67d09b 100755 --- a/source/chapter3/07_Attributes.md +++ b/source/chapter3/07_Attributes.md @@ -279,7 +279,7 @@ NSApplicationMain(CommandLine.argc, CommandLine.unsafeArgv) 如果你将 `objc` 特性应用于枚举,每一个枚举用例都会以枚举名称和用例名称组合的方式暴露在 Objective-C 代码中。例如,在 `Planet` 枚举中有一个名为 `Venus` 的用例,该用例暴露在 Objective-C 代码中时叫做 `PlanetVenus`。 -`objc` 特性有一个可选的参数,由标识符构成。当你想把 `objc` 所修饰的实体以一个不同的名字暴露给 Objective-C 时,你就可以使用这个特性参数。你可以使用这个参数来命名类、枚举类型、枚举用例、协议、方法、存取方法以及构造器。如果你要指定类、协议或枚举在 Objective-C 下的名称,在名称上包含三个字母的前缀,如 [Objective-C 编程](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html#//apple_ref/doc/uid/TP40011210) 中的 [约定](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Conventions/Conventions.html#//apple_ref/doc/uid/TP40011210-CH10-SW1)。下面的例子把 `ExampleClass` 中的 `enabled` 属性的取值方法暴露给 Objective-C,名字是 `isEnabled`,而不是它原来的属性名。 +`objc` 特性有一个可选的参数,由标识符构成。当你想把 `objc` 所修饰的实体以一个不同的名字暴露给 Objective-C 时,你就可以使用这个特性参数。你可以使用这个参数来命名类、枚举类型、枚举用例、协议、方法、存取方法以及构造器。如果你要指定类、协议或枚举在 Objective-C 下的名称,在名称上包含三个字母的前缀,如 [Objective-C 编程](./https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.md#//apple_ref/doc/uid/TP40011210) 中的 [约定](./https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Conventions/Conventions.md#//apple_ref/doc/uid/TP40011210-CH10-SW1)。下面的例子把 `ExampleClass` 中的 `enabled` 属性的取值方法暴露给 Objective-C,名字是 `isEnabled`,而不是它原来的属性名。 ```swift class ExampleClass: NSObject { @@ -349,7 +349,7 @@ class ExampleClass: NSObject { ### `autoclosure` -这个特性通过把表达式自动封装成无参数的闭包来延迟表达式的计算。它可以修饰类型为返回表达式结果类型的无参数函数类型的函数参数。关于如何使用 autoclosure 特性的例子,请参阅 [自动闭包](https://docs.swift.org/swift-book/LanguageGuide/Closures.html#ID543) 和 [函数类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID449)。 +这个特性通过把表达式自动封装成无参数的闭包来延迟表达式的计算。它可以修饰类型为返回表达式结果类型的无参数函数类型的函数参数。关于如何使用 autoclosure 特性的例子,请参阅 [自动闭包](./https://docs.swift.org/swift-book/LanguageGuide/Closures.md#ID543) 和 [函数类型](./https://docs.swift.org/swift-book/ReferenceManual/Types.md#ID449)。 ### `convention` @@ -369,7 +369,7 @@ convention 特性总是与下面的参数之一一起出现。 ### `escaping` -在函数或者方法声明上使用该特性,它表示参数将不会被存储以供延迟执行,这将确保参数不会超出函数调用的生命周期。在使用 `escaping` 声明特性的函数类型中访问属性和方法时不需要显式地使用 `self.`。关于如何使用 `escaping` 特性的例子,请参阅 [逃逸闭包](https://docs.swift.org/swift-book/LanguageGuide/Closures.html#ID546)。 +在函数或者方法声明上使用该特性,它表示参数将不会被存储以供延迟执行,这将确保参数不会超出函数调用的生命周期。在使用 `escaping` 声明特性的函数类型中访问属性和方法时不需要显式地使用 `self.`。关于如何使用 `escaping` 特性的例子,请参阅 [逃逸闭包](./https://docs.swift.org/swift-book/LanguageGuide/Closures.md#ID546)。 ## Switch Case 特性 @@ -378,7 +378,7 @@ convention 特性总是与下面的参数之一一起出现。 ### `unknown` -次特性用于 switch case,表示在编译时该地方不会匹配枚举的任何情况。有关如何使用 `unknown` 特性的示例,可参阅 [Switching over Future Enumeration Cases](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID602)。 +次特性用于 switch case,表示在编译时该地方不会匹配枚举的任何情况。有关如何使用 `unknown` 特性的示例,可参阅 [Switching over Future Enumeration Cases](./https://docs.swift.org/swift-book/ReferenceManual/Statements.md#ID602)。 > 特性语法 > @@ -389,7 +389,7 @@ convention 特性总是与下面的参数之一一起出现。 > > > -> *特性名* → [标识符](02_Lexical_Structure.html#identifier) +> *特性名* → [标识符](./02_Lexical_Structure.md#identifier) > > > diff --git a/source/chapter3/08_Patterns.md b/source/chapter3/08_Patterns.md index 76d82957..5d36f98c 100755 --- a/source/chapter3/08_Patterns.md +++ b/source/chapter3/08_Patterns.md @@ -11,13 +11,13 @@ Swift 中的模式分为两类:一种能成功匹配任何类型的值,另 > 模式语法 > -> *模式* → [*通配符模式*](#wildcard_pattern) [*类型标注*](03_Types.html#type-annotation)可选 +> *模式* → [*通配符模式*](./#wildcard_pattern) [*类型标注*](03_Types.md#type-annotation)可选 > -> *模式* → [*标识符模式*](#identifier_pattern) [*类型标注*](03_Types.html#type-annotation)可选 +> *模式* → [*标识符模式*](./#identifier_pattern) [*类型标注*](03_Types.md#type-annotation)可选 > > *模式* → [*值绑定模式*](#value-binding-pattern) > -> *模式* → [*元组模式*](#tuple-pattern) [*类型标注*](03_Types.html#type-annotation)可选 +> *模式* → [*元组模式*](./#tuple-pattern) [*类型标注*](03_Types.md#type-annotation)可选 > > *模式* → [*枚举用例模式*](#enum-case-pattern) > @@ -61,7 +61,7 @@ let someValue = 42 > 标识符模式语法 > -> *标识符模式* → [*标识符*](02_Lexical_Structure.html#identifier) +> *标识符模式* → [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -131,12 +131,12 @@ let (a): Int = 2 // a: Int = 2 *枚举用例模式*匹配现有的某个枚举类型的某个用例。枚举用例模式出现在 `switch` 语句中的 `case` 标签中,以及 `if`、`while`、`guard` 和 `for-in` 语句的 `case` 条件中。 -如果你准备匹配的枚举用例有任何关联的值,则相应的枚举用例模式必须指定一个包含每个关联值元素的元组模式。关于使用 `switch` 语句来匹配包含关联值的枚举用例的例子,请参阅 [关联值](../chapter2/08_Enumerations.html#associated_values)。 +如果你准备匹配的枚举用例有任何关联的值,则相应的枚举用例模式必须指定一个包含每个关联值元素的元组模式。关于使用 `switch` 语句来匹配包含关联值的枚举用例的例子,请参阅 [关联值](../chapter2/08_Enumerations.md#associated_values)。 > 枚举用例模式语法 > -> *枚举用例模式* → [*类型标识*](03_Types.html#type-identifier)可选 **.** [*枚举用例名*](05_Declarations.html#enum-case-name) [*元组模式*](#tuple-pattern)可选 +> *枚举用例模式* → [*类型标识*](./03_Types.md#type-identifier)可选 **.** [*枚举用例名*](./05_Declarations.md#enum-case-name) [*元组模式*](#tuple-pattern)可选 > @@ -175,7 +175,7 @@ for case let number? in arrayOfOptinalInts { > 可选模式语法 > -> *可选模式* → [*标识符模式*](03_Types.html#type-identifier) **?** +> *可选模式* → [*标识符模式*](./03_Types.md#type-identifier) **?** > @@ -192,7 +192,7 @@ for case let number? in arrayOfOptinalInts { `as` 模式仅当一个值的类型在运行时和 `as` 模式右边的指定类型一致,或者是其子类的情况下,才会匹配这个值。如果匹配成功,被匹配的值的类型被转换成 `as` 模式右边指定的类型。 -关于使用 `switch` 语句配合 `is` 模式和 `as` 模式来匹配值的例子,请参阅 [Any 和 AnyObject 的类型转换](../chapter2/18_Type_Casting.html#type_casting_for_any_and_anyobject)。 +关于使用 `switch` 语句配合 `is` 模式和 `as` 模式来匹配值的例子,请参阅 [Any 和 AnyObject 的类型转换](../chapter2/18_Type_Casting.md#type_casting_for_any_and_anyobject)。 > 类型转换模式语法 > @@ -200,10 +200,10 @@ for case let number? in arrayOfOptinalInts { > *类型转换模式* → [*is 模式*](#is-pattern) | [*as 模式*](#as-pattern) > -> *is 模式* → **is** [*类型*](03_Types.html#type) +> *is 模式* → **is** [*类型*](./03_Types.md#type) > -> *as 模式* → [*模式*](#pattern) **as** [*类型*](03_Types.html#type) +> *as 模式* → [*模式*](./#pattern) **as** [*类型*](03_Types.md#type) > @@ -247,5 +247,5 @@ default: > 表达式模式语法 > -> *表达式模式* → [*表达式*](04_Expressions.html#expression) +> *表达式模式* → [*表达式*](./04_Expressions.md#expression) > diff --git a/source/chapter3/09_Generic_Parameters_and_Arguments.md b/source/chapter3/09_Generic_Parameters_and_Arguments.md index d1ac5713..59f077ed 100755 --- a/source/chapter3/09_Generic_Parameters_and_Arguments.md +++ b/source/chapter3/09_Generic_Parameters_and_Arguments.md @@ -2,7 +2,7 @@ 本节涉及泛型类型、泛型函数以及泛型构造器的参数,包括形参和实参。声明泛型类型、函数或构造器时,须指定相应的类型参数。类型参数相当于一个占位符,当实例化泛型类型、调用泛型函数或泛型构造器时,就用具体的类型实参替代之。 -关于 Swift 语言的泛型概述,请参阅 [泛型](../chapter2/22_Generics.html)。 +关于 Swift 语言的泛型概述,请参阅 [泛型](../chapter2/22_Generics.md)。 ## 泛型形参子句 @@ -56,7 +56,7 @@ simpleMax(3.14159, 2.71828) // T 被推断为 Double 类型 泛型函数或构造器可以重载,但在泛型形参子句中的类型形参必须有不同的约束或要求,抑或二者皆不同。当调用重载的泛型函数或构造器时,编译器会根据这些约束来决定调用哪个重载函数或构造器。 -更多关于泛型 where 从句的信息和关于泛型函数声明的例子,可以看一看 [泛型 where 子句](https://github.com/numbbbbb/the-swift-programming-language-in-chinese/blob/gh-pages/source/chapter2/22_Generics.html#where_clauses) +更多关于泛型 where 从句的信息和关于泛型函数声明的例子,可以看一看 [泛型 where 子句](./https://github.com/numbbbbb/the-swift-programming-language-in-chinese/blob/gh-pages/source/chapter2/22_Generics.md#where_clauses) > 泛型形参子句语法 > @@ -67,11 +67,11 @@ simpleMax(3.14159, 2.71828) // T 被推断为 Double 类型 > *泛型形参列表* → [*泛形形参*](#generic-parameter) | [*泛形形参*](#generic-parameter) **,** [*泛型形参列表*](#generic-parameter-list) > -> *泛形形参* → [*类型名称*](03_Types.html#type-name) +> *泛形形参* → [*类型名称*](./03_Types.md#type-name) > -> *泛形形参* → [*类型名称*](03_Types.html#type-name) **:** [*类型标识符*](03_Types.html#type-identifier) +> *泛形形参* → [*类型名称*](./03_Types.md#type-name) **:** [*类型标识符*](./03_Types.md#type-identifier) > -> *泛形形参* → [*类型名称*](03_Types.html#type-name) **:** [*协议合成类型*](03_Types.html#protocol-composition-type) +> *泛形形参* → [*类型名称*](./03_Types.md#type-name) **:** [*协议合成类型*](./03_Types.md#protocol-composition-type) > > > @@ -85,12 +85,12 @@ simpleMax(3.14159, 2.71828) // T 被推断为 Double 类型 > > > -> *一致性约束* → [*类型标识符*](03_Types.html#type-identifier) **:** [*类型标识符*](03_Types.html#type-identifier) +> *一致性约束* → [*类型标识符*](./03_Types.md#type-identifier) **:** [*类型标识符*](./03_Types.md#type-identifier) > -> *一致性约束* → [*类型标识符*](03_Types.html#type-identifier) **:** [*协议合成类型*](03_Types.html#protocol-composition-type) +> *一致性约束* → [*类型标识符*](./03_Types.md#type-identifier) **:** [*协议合成类型*](./03_Types.md#protocol-composition-type) > -> *同类型约束* → [*类型标识符*](03_Types.html#type-identifier) **==** [*类型*](03_Types.html#type) +> *同类型约束* → [*类型标识符*](./03_Types.md#type-identifier) **==** [*类型*](./03_Types.md#type) > @@ -129,5 +129,5 @@ let arrayOfArrays: Array> = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] > *泛型实参列表* → [*泛型实参*](#generic-argument) | [*泛型实参*](#generic-argument) **,** [*泛型实参列表*](#generic-argument-list) > -> *泛型实参* → [*类型*](03_Types.html#type) +> *泛型实参* → [*类型*](./03_Types.md#type) > diff --git a/source/chapter3/10_Summary_of_the_Grammar.md b/source/chapter3/10_Summary_of_the_Grammar.md index 0bfd6f58..d18a6dd0 100755 --- a/source/chapter3/10_Summary_of_the_Grammar.md +++ b/source/chapter3/10_Summary_of_the_Grammar.md @@ -5,17 +5,17 @@ > 语句语法 > -> *语句* → [*表达式*](../chapter3/04_Expressions.html#expression) **;** _可选_ +> *语句* → [*表达式*](./04_Expressions.md#expression) **;** _可选_ > -> *语句* → [*声明*](../chapter3/05_Declarations.html#declaration) **;** _可选_ +> *语句* → [*声明*](./05_Declarations.md#declaration) **;** _可选_ > -> *语句* → [*循环语句*](../chapter3/10_Statements.html#loop_statement) **;** _可选_ +> *语句* → [*循环语句*](./10_Statements.md#loop_statement) **;** _可选_ > -> *语句* → [*分支语句*](../chapter3/10_Statements.html#branch_statement) **;** _可选_ +> *语句* → [*分支语句*](./10_Statements.md#branch_statement) **;** _可选_ > -> *语句* → [*标记语句(Labeled Statement)*](../chapter3/10_Statements.html#labeled_statement) +> *语句* → [*标记语句(Labeled Statement)*](./10_Statements.md#labeled_statement) > -> *语句* → [*控制转移语句*](../chapter3/10_Statements.html#control_transfer_statement) **;** _可选_ +> *语句* → [*控制转移语句*](./10_Statements.md#control_transfer_statement) **;** _可选_ > > *语句* → [*延迟语句*](TODO) **;** _可选_ > @@ -23,45 +23,45 @@ > *语句* → [*执行语句*](TODO) **;** _可选_ > -> *多条语句(Statements)* → [*语句*](../chapter3/10_Statements.html#statement) [*多条语句(Statements)*](../chapter3/10_Statements.html#statements) _可选_ +> *多条语句(Statements)* → [*语句*](./10_Statements.md#statement) [*多条语句(Statements)*](./10_Statements.md#statements) _可选_ > > 循环语句语法 > -> *循环语句* → [*for 语句*](../chapter3/10_Statements.html#for_statement) +> *循环语句* → [*for 语句*](./10_Statements.md#for_statement) > -> *循环语句* → [*for-in 语句*](../chapter3/10_Statements.html#for_in_statement) +> *循环语句* → [*for-in 语句*](./10_Statements.md#for_in_statement) > -> *循环语句* → [*while 语句*](../chapter3/10_Statements.html#wheetatype 类型 ile_statement) +> *循环语句* → [*while 语句*](./10_Statements.md#wheetatype 类型 ile_statement) > -> *循环语句* → [*repeat-while 语句*](../chapter3/10_Statements.html#do_while_statement) +> *循环语句* → [*repeat-while 语句*](./10_Statements.md#do_while_statement) > > For 循环语法 > -> *for 语句* → **for** [*for 初始条件*](../chapter3/10_Statements.html#for_init) _可选_ **;** [*表达式*](../chapter3/04_Expressions.html#expression) _可选_ **;** [*表达式*](../chapter3/04_Expressions.html#expression) _可选_ [*代码块*](../chapter3/05_Declarations.html#code_block) +> *for 语句* → **for** [*for 初始条件*](./10_Statements.md#for_init) _可选_ **;** [*表达式*](./04_Expressions.md#expression) _可选_ **;** [*表达式*](./04_Expressions.md#expression) _可选_ [*代码块*](./05_Declarations.md#code_block) > -> *for 语句* → **for** **(** [*for 初始条件*](../chapter3/10_Statements.html#for_init) _可选_ **;** [*表达式*](../chapter3/04_Expressions.html#expression) _可选_ **;** [*表达式*](../chapter3/04_Expressions.html#expression) _可选_ **)** [*代码块*](../chapter3/05_Declarations.html#code_block) +> *for 语句* → **for** **(** [*for 初始条件*](./10_Statements.md#for_init) _可选_ **;** [*表达式*](./04_Expressions.md#expression) _可选_ **;** [*表达式*](./04_Expressions.md#expression) _可选_ **)** [*代码块*](./05_Declarations.md#code_block) > -> *for 初始条件* → [*变量声明*](../chapter3/05_Declarations.html#variable_declaration) | [*表达式集*](../chapter3/04_Expressions.html#expression_list) +> *for 初始条件* → [*变量声明*](./05_Declarations.md#variable_declaration) | [*表达式集*](./04_Expressions.md#expression_list) > > For-In 循环语法 > -> *for-in 语句* → **for case** _可选_ [*模式*](../chapter3/07_Patterns.html#pattern) **in** [*表达式*](../chapter3/04_Expressions.html#expression) [*代码块*](../chapter3/05_Declarations.html#code_block) [*where 从句*](TODO) _可选_ +> *for-in 语句* → **for case** _可选_ [*模式*](./07_Patterns.md#pattern) **in** [*表达式*](./04_Expressions.md#expression) [*代码块*](./05_Declarations.md#code_block) [*where 从句*](TODO) _可选_ > > While 循环语法 > -> *while 语句* → **while** [*条件从句*](../chapter3/10_Statements.html#while_condition) [*代码块*](../chapter3/05_Declarations.html#code_block) +> *while 语句* → **while** [*条件从句*](./10_Statements.md#while_condition) [*代码块*](./05_Declarations.md#code_block) > > *条件从句* → [*表达式*](TODO) > @@ -95,11 +95,11 @@ > 分支语句语法 > -> *分支语句* → [*if 语句*](../chapter3/10_Statements.html#if_statement) +> *分支语句* → [*if 语句*](./10_Statements.md#if_statement) > > *分支语句* → [*guard 语句*](TODO) > -> *分支语句* → [*switch 语句*](../chapter3/10_Statements.html#switch_statement) +> *分支语句* → [*switch 语句*](./10_Statements.md#switch_statement) > @@ -108,7 +108,7 @@ > > *if 语句* → **if** [*条件从句*](TODO) [*代码块*](TODO) [*else 从句(Clause)*](TODO) _可选_ > -> *else 从句(Clause)* → **else** [*代码块*](../chapter3/05_Declarations.html#code_block) | **else** [*if 语句*](../chapter3/10_Statements.html#if_statement) +> *else 从句(Clause)* → **else** [*代码块*](./05_Declarations.md#code_block) | **else** [*if 语句*](./10_Statements.md#if_statement) > @@ -122,17 +122,17 @@ > Switch 语句语法 > -> *switch 语句* → **switch** [*表达式*](../chapter3/04_Expressions.html#expression) **{** [*SwitchCase*](../chapter3/10_Statements.html#switch_cases) _可选_ **}** +> *switch 语句* → **switch** [*表达式*](./04_Expressions.md#expression) **{** [*SwitchCase*](./10_Statements.md#switch_cases) _可选_ **}** > -> *SwitchCase 集* → [*SwitchCase*](../chapter3/10_Statements.html#switch_case) [*SwitchCase 集*](../chapter3/10_Statements.html#switch_cases) _可选_ +> *SwitchCase 集* → [*SwitchCase*](./10_Statements.md#switch_case) [*SwitchCase 集*](./10_Statements.md#switch_cases) _可选_ > -> *SwitchCase* → [*case 标签*](../chapter3/10_Statements.html#case_label) [*多条语句(Statements)*](../chapter3/10_Statements.html#statements) | [*default 标签*](../chapter3/10_Statements.html#default_label) [*多条语句(Statements)*](../chapter3/10_Statements.html#statements) +> *SwitchCase* → [*case 标签*](./10_Statements.md#case_label) [*多条语句(Statements)*](./10_Statements.md#statements) | [*default 标签*](./10_Statements.md#default_label) [*多条语句(Statements)*](./10_Statements.md#statements) > -> *SwitchCase* → [*case 标签*](../chapter3/10_Statements.html#case_label) **;** | [*default 标签*](../chapter3/10_Statements.html#default_label) **;** +> *SwitchCase* → [*case 标签*](./10_Statements.md#case_label) **;** | [*default 标签*](./10_Statements.md#default_label) **;** > -> *case 标签* → **case** [*case 项集*](../chapter3/10_Statements.html#case_item_list) **:** +> *case 标签* → **case** [*case 项集*](./10_Statements.md#case_item_list) **:** > -> *case 项集* → [*模式*](../chapter3/07_Patterns.html#pattern) [*where-clause*](../chapter3/10_Statements.html#guard_clause) _可选_ | [*模式*](../chapter3/07_Patterns.html#pattern) [*where-clause*](../chapter3/10_Statements.html#guard_clause) _可选_ **,** [*case 项集*](../chapter3/10_Statements.html#case_item_list) +> *case 项集* → [*模式*](./07_Patterns.md#pattern) [*where-clause*](./10_Statements.md#guard_clause) _可选_ | [*模式*](./07_Patterns.md#pattern) [*where-clause*](./10_Statements.md#guard_clause) _可选_ **,** [*case 项集*](./10_Statements.md#case_item_list) > > *default 标签* → **default** **:** > @@ -145,24 +145,24 @@ > 标记语句语法 > -> *标记语句(Labeled Statement)* → [*语句标签*](../chapter3/10_Statements.html#statement_label) [*循环语句*](../chapter3/10_Statements.html#loop_statement) | [*语句标签*](../chapter3/10_Statements.html#statement_label) [*if 语句*](../chapter3/10_Statements.html#switch_statement) | [*语句标签*](TODY) [*switch 语句*](TODY) +> *标记语句(Labeled Statement)* → [*语句标签*](./10_Statements.md#statement_label) [*循环语句*](./10_Statements.md#loop_statement) | [*语句标签*](./10_Statements.md#statement_label) [*if 语句*](./10_Statements.md#switch_statement) | [*语句标签*](TODY) [*switch 语句*](TODY) > -> *语句标签* → [*标签名称*](../chapter3/10_Statements.html#label_name) **:** +> *语句标签* → [*标签名称*](./10_Statements.md#label_name) **:** > -> *标签名称* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> *标签名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > > 控制传递语句(Control Transfer Statement)语法 > -> *控制传递语句* → [*break 语句*](../chapter3/10_Statements.html#break_statement) +> *控制传递语句* → [*break 语句*](./10_Statements.md#break_statement) > -> *控制传递语句* → [*continue 语句*](../chapter3/10_Statements.html#continue_statement) +> *控制传递语句* → [*continue 语句*](./10_Statements.md#continue_statement) > -> *控制传递语句* → [*fallthrough 语句*](../chapter3/10_Statements.html#fallthrough_statement) +> *控制传递语句* → [*fallthrough 语句*](./10_Statements.md#fallthrough_statement) > -> *控制传递语句* → [*return 语句*](../chapter3/10_Statements.html#return_statement) +> *控制传递语句* → [*return 语句*](./10_Statements.md#return_statement) > > *控制传递语句* → [*throw 语句*](TODO) > @@ -171,14 +171,14 @@ > Break 语句语法 > -> *break 语句* → **break** [*标签名称*](../chapter3/10_Statements.html#label_name) _可选_ +> *break 语句* → **break** [*标签名称*](./10_Statements.md#label_name) _可选_ > > Continue 语句语法 > -> *continue 语句* → **continue** [*标签名称*](../chapter3/10_Statements.html#label_name) _可选_ +> *continue 语句* → **continue** [*标签名称*](./10_Statements.md#label_name) _可选_ > @@ -192,7 +192,7 @@ > Return 语句语法 > -> *return 语句* → **return** [*表达式*](../chapter3/04_Expressions.html#expression) _可选_ +> *return 语句* → **return** [*表达式*](./04_Expressions.md#expression) _可选_ > @@ -249,38 +249,38 @@ > 泛型形参从句(Generic Parameter Clause)语法 > > -> *泛型参数从句* → **<** [*泛型参数集*](GenericParametersAndArguments.html#generic_parameter_list) [*约束从句*](GenericParametersAndArguments.html#requirement_clause) _可选_ **>** +> *泛型参数从句* → **<** [*泛型参数集*](./GenericParametersAndArguments.md#generic_parameter_list) [*约束从句*](./GenericParametersAndArguments.md#requirement_clause) _可选_ **>** > -> *泛型参数集* → [*泛形参数*](GenericParametersAndArguments.html#generic_parameter) | [*泛形参数*](GenericParametersAndArguments.html#generic_parameter) **,** [*泛型参数集*](GenericParametersAndArguments.html#generic_parameter_list) +> *泛型参数集* → [*泛形参数*](./GenericParametersAndArguments.md#generic_parameter) | [*泛形参数*](./GenericParametersAndArguments.md#generic_parameter) **,** [*泛型参数集*](./GenericParametersAndArguments.md#generic_parameter_list) > -> *泛形参数* → [*类型名称*](../chapter3/03_Types.html#type_name) +> *泛形参数* → [*类型名称*](./03_Types.md#type_name) > -> *泛形参数* → [*类型名称*](../chapter3/03_Types.html#type_name) **:** [*类型标识*](../chapter3/03_Types.html#type_identifier) +> *泛形参数* → [*类型名称*](./03_Types.md#type_name) **:** [*类型标识*](./03_Types.md#type_identifier) > -> *泛形参数* → [*类型名称*](../chapter3/03_Types.html#type_name) **:** [*协议合成类型*](../chapter3/03_Types.html#protocol_composition_type) +> *泛形参数* → [*类型名称*](./03_Types.md#type_name) **:** [*协议合成类型*](./03_Types.md#protocol_composition_type) > -> *约束从句* → **where** [*约束集*](GenericParametersAndArguments.html#requirement_list) +> *约束从句* → **where** [*约束集*](./GenericParametersAndArguments.md#requirement_list) > -> *约束集* → [*约束*](GenericParametersAndArguments.html#requirement) | [*约束*](GenericParametersAndArguments.html#requirement) **,** [*约束集*](GenericParametersAndArguments.html#requirement_list) +> *约束集* → [*约束*](./GenericParametersAndArguments.md#requirement) | [*约束*](./GenericParametersAndArguments.md#requirement) **,** [*约束集*](./GenericParametersAndArguments.md#requirement_list) > -> *约束* → [*一致性约束*](GenericParametersAndArguments.html#conformance_requirement) | [*同类型约束*](GenericParametersAndArguments.html#same_type_requirement) +> *约束* → [*一致性约束*](./GenericParametersAndArguments.md#conformance_requirement) | [*同类型约束*](./GenericParametersAndArguments.md#same_type_requirement) > -> *一致性约束* → [*类型标识*](../chapter3/03_Types.html#type_identifier) **:** [*类型标识*](../chapter3/03_Types.html#type_identifier) +> *一致性约束* → [*类型标识*](./03_Types.md#type_identifier) **:** [*类型标识*](./03_Types.md#type_identifier) > -> *一致性约束* → [*类型标识*](../chapter3/03_Types.html#type_identifier) **:** [*协议合成类型*](../chapter3/03_Types.html#protocol_composition_type) +> *一致性约束* → [*类型标识*](./03_Types.md#type_identifier) **:** [*协议合成类型*](./03_Types.md#protocol_composition_type) > -> *同类型约束* → [*类型标识*](../chapter3/03_Types.html#type_identifier) **==** [*类型*](../chapter3/03_Types.html#type_identifier) +> *同类型约束* → [*类型标识*](./03_Types.md#type_identifier) **==** [*类型*](./03_Types.md#type_identifier) > > 泛型实参从句语法 > -> *(泛型参数从句 Generic Argument Clause)* → **<** [*泛型参数集*](GenericParametersAndArguments.html#generic_argument_list) **>** +> *(泛型参数从句 Generic Argument Clause)* → **<** [*泛型参数集*](./GenericParametersAndArguments.md#generic_argument_list) **>** > -> *泛型参数集* → [*泛型参数*](GenericParametersAndArguments.html#generic_argument) | [*泛型参数*](GenericParametersAndArguments.html#generic_argument) **,** [*泛型参数集*](GenericParametersAndArguments.html#generic_argument_list) +> *泛型参数集* → [*泛型参数*](./GenericParametersAndArguments.md#generic_argument) | [*泛型参数*](./GenericParametersAndArguments.md#generic_argument) **,** [*泛型参数集*](./GenericParametersAndArguments.md#generic_argument_list) > -> *泛型参数* → [*类型*](../chapter3/03_Types.html#type) +> *泛型参数* → [*类型*](./03_Types.md#type) > @@ -288,35 +288,35 @@ > 声明语法 > -> *声明* → [*导入声明*](../chapter3/05_Declarations.html#import_declaration) +> *声明* → [*导入声明*](./05_Declarations.md#import_declaration) > -> *声明* → [*常量声明*](../chapter3/05_Declarations.html#constant_declaration) +> *声明* → [*常量声明*](./05_Declarations.md#constant_declaration) > -> *声明* → [*变量声明*](../chapter3/05_Declarations.html#variable_declaration) +> *声明* → [*变量声明*](./05_Declarations.md#variable_declaration) > -> *声明* → [*类型别名声明*](../chapter3/05_Declarations.html#typealias_declaration) +> *声明* → [*类型别名声明*](./05_Declarations.md#typealias_declaration) > -> *声明* → [*函数声明*](../chapter3/05_Declarations.html#function_declaration) +> *声明* → [*函数声明*](./05_Declarations.md#function_declaration) > -> *声明* → [*枚举声明*](../chapter3/05_Declarations.html#enum_declaration) +> *声明* → [*枚举声明*](./05_Declarations.md#enum_declaration) > -> *声明* → [*结构体声明*](../chapter3/05_Declarations.html#struct_declaration) +> *声明* → [*结构体声明*](./05_Declarations.md#struct_declaration) > -> *声明* → [*类声明*](../chapter3/05_Declarations.html#class_declaration) +> *声明* → [*类声明*](./05_Declarations.md#class_declaration) > -> *声明* → [*协议声明*](../chapter3/05_Declarations.html#protocol_declaration) +> *声明* → [*协议声明*](./05_Declarations.md#protocol_declaration) > -> *声明* → [*构造器声明*](../chapter3/05_Declarations.html#initializer_declaration) +> *声明* → [*构造器声明*](./05_Declarations.md#initializer_declaration) > -> *声明* → [*析构器声明*](../chapter3/05_Declarations.html#deinitializer_declaration) +> *声明* → [*析构器声明*](./05_Declarations.md#deinitializer_declaration) > -> *声明* → [*扩展声明*](../chapter3/05_Declarations.html#extension_declaration) +> *声明* → [*扩展声明*](./05_Declarations.md#extension_declaration) > -> *声明* → [*下标声明*](../chapter3/05_Declarations.html#subscript_declaration) +> *声明* → [*下标声明*](./05_Declarations.md#subscript_declaration) > -> *声明* → [*运算符声明*](../chapter3/05_Declarations.html#operator_declaration) +> *声明* → [*运算符声明*](./05_Declarations.md#operator_declaration) > -> *声明(Declarations)集* → [*声明*](../chapter3/05_Declarations.html#declaration) [*声明(Declarations)集*](../chapter3/05_Declarations.html#declarations) _可选_ +> *声明(Declarations)集* → [*声明*](./05_Declarations.md#declaration) [*声明(Declarations)集*](./05_Declarations.md#declarations) _可选_ > @@ -324,176 +324,176 @@ > 顶级(Top Level)声明语法 > -> *顶级声明* → [*多条语句(Statements)*](../chapter3/10_Statements.html#statements) _可选_ +> *顶级声明* → [*多条语句(Statements)*](./10_Statements.md#statements) _可选_ > > 代码块语法 > -> *代码块* → **{** [*多条语句(Statements)*](../chapter3/10_Statements.html#statements) _可选_ **}** +> *代码块* → **{** [*多条语句(Statements)*](./10_Statements.md#statements) _可选_ **}** > > 导入(Import)声明语法 > -> *导入声明* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ **import** [*导入类型*](../chapter3/05_Declarations.html#import_kind) _可选_ [*导入路径*](../chapter3/05_Declarations.html#import_path) +> *导入声明* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ **import** [*导入类型*](./05_Declarations.md#import_kind) _可选_ [*导入路径*](./05_Declarations.md#import_path) > > *导入类型* → **typealias** | **struct** | **class** | **enum** | **protocol** | **var** | **func** > -> *导入路径* → [*导入路径标识符*](../chapter3/05_Declarations.html#import_path_identifier) | [*导入路径标识符*](../chapter3/05_Declarations.html#import_path_identifier) **.** [*导入路径*](../chapter3/05_Declarations.html#import_path) +> *导入路径* → [*导入路径标识符*](./05_Declarations.md#import_path_identifier) | [*导入路径标识符*](./05_Declarations.md#import_path_identifier) **.** [*导入路径*](./05_Declarations.md#import_path) > -> *导入路径标识符* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) | [*运算符*](../chapter3/02_Lexical_Structure.html#operator) +> *导入路径标识符* → [*标识符*](./02_Lexical_Structure.md#identifier) | [*运算符*](./02_Lexical_Structure.md#operator) > > 常数声明语法 > -> *常量声明* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*声明修改符(Modifiers)集*](../chapter3/05_Declarations.html#declaration_specifiers) _可选_ **let** [*模式构造器集*](../chapter3/05_Declarations.html#pattern_initializer_list) +> *常量声明* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*声明修改符(Modifiers)集*](./05_Declarations.md#declaration_specifiers) _可选_ **let** [*模式构造器集*](./05_Declarations.md#pattern_initializer_list) > -> *模式构造器集* → [*模式构造器*](../chapter3/05_Declarations.html#pattern_initializer) | [*模式构造器*](../chapter3/05_Declarations.html#pattern_initializer) **,** [*模式构造器集*](../chapter3/05_Declarations.html#pattern_initializer_list) +> *模式构造器集* → [*模式构造器*](./05_Declarations.md#pattern_initializer) | [*模式构造器*](./05_Declarations.md#pattern_initializer) **,** [*模式构造器集*](./05_Declarations.md#pattern_initializer_list) > -> *模式构造器* → [*模式*](../ chapter3/07_Patterns.html#pattern) [*构造器*](../chapter3/05_Declarations.html#initializer) _可选_ +> *模式构造器* → [*模式*](../ chapter3/07_Patterns.md#pattern) [*构造器*](./05_Declarations.md#initializer) _可选_ > -> *构造器* → **=** [*表达式*](../chapter3/04_Expressions.html#expression) +> *构造器* → **=** [*表达式*](./04_Expressions.md#expression) > > 变量声明语法 > -> *变量声明* → [*变量声明头(Head)*](../chapter3/05_Declarations.html#variable_declaration_head) [*模式构造器集*](../chapter3/05_Declarations.html#pattern_initializer_list) +> *变量声明* → [*变量声明头(Head)*](./05_Declarations.md#variable_declaration_head) [*模式构造器集*](./05_Declarations.md#pattern_initializer_list) > -> *变量声明* → [*变量声明头(Head)*](../chapter3/05_Declarations.html#variable_declaration_head) [*变量名*](../chapter3/05_Declarations.html#variable_name) [*类型注解*](../chapter3/03_Types.html#type_annotation) [*代码块*](../chapter3/05_Declarations.html#code_block) +> *变量声明* → [*变量声明头(Head)*](./05_Declarations.md#variable_declaration_head) [*变量名*](./05_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*代码块*](./05_Declarations.md#code_block) > -> *变量声明* → [*变量声明头(Head)*](../chapter3/05_Declarations.html#variable_declaration_head) [*变量名*](../chapter3/05_Declarations.html#variable_name) [*类型注解*](../chapter3/03_Types.html#type_annotation) [*getter-setter 块*](../chapter3/05_Declarations.html#getter_setter_block) +> *变量声明* → [*变量声明头(Head)*](./05_Declarations.md#variable_declaration_head) [*变量名*](./05_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*getter-setter 块*](./05_Declarations.md#getter_setter_block) > -> *变量声明* → [*变量声明头(Head)*](../chapter3/05_Declarations.html#variable_declaration_head) [*变量名*](../chapter3/05_Declarations.html#variable_name) [*类型注解*](../chapter3/03_Types.html#type_annotation) [*getter-setter 关键字(Keyword)块*](../chapter3/05_Declarations.html#getter_setter_keyword_block) +> *变量声明* → [*变量声明头(Head)*](./05_Declarations.md#variable_declaration_head) [*变量名*](./05_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*getter-setter 关键字(Keyword)块*](./05_Declarations.md#getter_setter_keyword_block) > -> *变量声明* → [*变量声明头(Head)*](../chapter3/05_Declarations.html#variable_declaration_head) [*变量名*](../chapter3/05_Declarations.html#variable_name) [*类型注解*](../chapter3/03_Types.html#type_annotation) [*构造器*](../chapter3/05_Declarations.html#initializer) _可选_ [*willSet-didSet 代码块*](../chapter3/05_Declarations.html#willSet_didSet_block) +> *变量声明* → [*变量声明头(Head)*](./05_Declarations.md#variable_declaration_head) [*变量名*](./05_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*构造器*](./05_Declarations.md#initializer) _可选_ [*willSet-didSet 代码块*](./05_Declarations.md#willSet_didSet_block) > -> *变量声明头(Head)* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*声明修改符(Modifers)集*](../chapter3/05_Declarations.html#declaration_specifiers) _可选_ **var** +> *变量声明头(Head)* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*声明修改符(Modifers)集*](./05_Declarations.md#declaration_specifiers) _可选_ **var** > -> *变量名称* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> *变量名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> *getter-setter 块* → **{** [*getter 从句*](../chapter3/05_Declarations.html#getter_clause) [*setter 从句*](../chapter3/05_Declarations.html#setter_clause) _可选_ **}** +> *getter-setter 块* → **{** [*getter 从句*](./05_Declarations.md#getter_clause) [*setter 从句*](./05_Declarations.md#setter_clause) _可选_ **}** > -> *getter-setter 块* → **{** [*setter 从句*](../chapter3/05_Declarations.html#setter_clause) [*getter 从句*](../chapter3/05_Declarations.html#getter_clause) **}** +> *getter-setter 块* → **{** [*setter 从句*](./05_Declarations.md#setter_clause) [*getter 从句*](./05_Declarations.md#getter_clause) **}** > -> *getter 从句* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ **get** [*代码块*](../chapter3/05_Declarations.html#code_block) +> *getter 从句* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ **get** [*代码块*](./05_Declarations.md#code_block) > -> *setter 从句* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ **set** [*setter 名称*](../chapter3/05_Declarations.html#setter_name) _可选_ [*代码块*](../chapter3/05_Declarations.html#code_block) +> *setter 从句* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ **set** [*setter 名称*](./05_Declarations.md#setter_name) _可选_ [*代码块*](./05_Declarations.md#code_block) > -> *setter 名称* → **(** [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) **)** +> *setter 名称* → **(** [*标识符*](./02_Lexical_Structure.md#identifier) **)** > -> *getter-setter 关键字(Keyword)块* → **{** [*getter 关键字(Keyword)从句*](../chapter3/05_Declarations.html#getter_keyword_clause) [*setter 关键字(Keyword)从句*](../chapter3/05_Declarations.html#setter_keyword_clause) _可选_ **}** +> *getter-setter 关键字(Keyword)块* → **{** [*getter 关键字(Keyword)从句*](./05_Declarations.md#getter_keyword_clause) [*setter 关键字(Keyword)从句*](./05_Declarations.md#setter_keyword_clause) _可选_ **}** > -> *getter-setter 关键字(Keyword)块* → **{** [*setter 关键字(Keyword)从句*](../chapter3/05_Declarations.html#setter_keyword_clause) [*getter 关键字(Keyword)从句*](../chapter3/05_Declarations.html#getter_keyword_clause) **}** +> *getter-setter 关键字(Keyword)块* → **{** [*setter 关键字(Keyword)从句*](./05_Declarations.md#setter_keyword_clause) [*getter 关键字(Keyword)从句*](./05_Declarations.md#getter_keyword_clause) **}** > -> *getter 关键字(Keyword)从句* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ **get** +> *getter 关键字(Keyword)从句* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ **get** > -> *setter 关键字(Keyword)从句* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ **set** +> *setter 关键字(Keyword)从句* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ **set** > -> *willSet-didSet 代码块* → **{** [*willSet 从句*](../chapter3/05_Declarations.html#willSet_clause) [*didSet 从句*](../chapter3/05_Declarations.html#didSet_clause) _可选_ **}** +> *willSet-didSet 代码块* → **{** [*willSet 从句*](./05_Declarations.md#willSet_clause) [*didSet 从句*](./05_Declarations.md#didSet_clause) _可选_ **}** > -> *willSet-didSet 代码块* → **{** [*didSet 从句*](../chapter3/05_Declarations.html#didSet_clause) [*willSet 从句*](../chapter3/05_Declarations.html#willSet_clause) **}** +> *willSet-didSet 代码块* → **{** [*didSet 从句*](./05_Declarations.md#didSet_clause) [*willSet 从句*](./05_Declarations.md#willSet_clause) **}** > -> *willSet 从句* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ **willSet** [*setter 名称*](../chapter3/05_Declarations.html#setter_name) _可选_ [*代码块*](../chapter3/05_Declarations.html#code_block) +> *willSet 从句* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ **willSet** [*setter 名称*](./05_Declarations.md#setter_name) _可选_ [*代码块*](./05_Declarations.md#code_block) > -> *didSet 从句* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ +> *didSet 从句* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ > - **didSet** [*setter 名称*](../chapter3/05_Declarations.html#setter_name) _可选_ [*代码块*](../chapter3/05_Declarations.html#code_block) + **didSet** [*setter 名称*](./05_Declarations.md#setter_name) _可选_ [*代码块*](./05_Declarations.md#code_block) > 类型别名声明语法 > -> *类型别名声明* → [*类型别名头(Head)*](../chapter3/05_Declarations.html#typealias_head) [*类型别名赋值*](../chapter3/05_Declarations.html#typealias_assignment) +> *类型别名声明* → [*类型别名头(Head)*](./05_Declarations.md#typealias_head) [*类型别名赋值*](./05_Declarations.md#typealias_assignment) > -> *类型别名头(Head)* → [*属性*](TODO) _可选_ [*访问级别修改符(access-level-modifier)*](TODO) **typealias** [*类型别名名称*](../chapter3/05_Declarations.html#typealias_name) +> *类型别名头(Head)* → [*属性*](./TODO) _可选_ [*访问级别修改符(access-level-modifier)*](TODO) **typealias** [*类型别名名称*](./05_Declarations.md#typealias_name) > -> *类型别名名称* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> *类型别名名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> *类型别名赋值* → **=** [*类型*](../chapter3/03_Types.html#type) +> *类型别名赋值* → **=** [*类型*](./03_Types.md#type) > > 函数声明语法 > -> *函数声明* → [*函数头*](../chapter3/05_Declarations.html#function_head) [*函数名*](../chapter3/05_Declarations.html#function_name) [*泛型参数从句*](GenericParametersAndArguments.html#generic_parameter_clause) _可选_ [*函数签名(Signature)*](../chapter3/05_Declarations.html#function_signature) [*函数体*](../chapter3/05_Declarations.html#function_body) +> *函数声明* → [*函数头*](./05_Declarations.md#function_head) [*函数名*](./05_Declarations.md#function_name) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_parameter_clause) _可选_ [*函数签名(Signature)*](./05_Declarations.md#function_signature) [*函数体*](./05_Declarations.md#function_body) > -> *函数头* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*声明描述符(Specifiers)集*](../chapter3/05_Declarations.html#declaration_specifiers) _可选_ **func** +> *函数头* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*声明描述符(Specifiers)集*](./05_Declarations.md#declaration_specifiers) _可选_ **func** > -> *函数名* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) | [*运算符*](../chapter3/02_Lexical_Structure.html#operator) +> *函数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | [*运算符*](./02_Lexical_Structure.md#operator) > -> *函数签名(Signature)* → [*parameter-clauses*](../chapter3/05_Declarations.html#parameter_clauses) **throws** _可选_ [*函数结果*](../chapter3/05_Declarations.html#function_result) _可选_ +> *函数签名(Signature)* → [*parameter-clauses*](./05_Declarations.md#parameter_clauses) **throws** _可选_ [*函数结果*](./05_Declarations.md#function_result) _可选_ > -> *函数签名(Signature)* → [*parameter-clauses*](../chapter3/05_Declarations.html#parameter_clauses) **rethrows** [*函数结果*](../chapter3/05_Declarations.html#function_result) _可选_ +> *函数签名(Signature)* → [*parameter-clauses*](./05_Declarations.md#parameter_clauses) **rethrows** [*函数结果*](./05_Declarations.md#function_result) _可选_ > -> *函数结果* → **->** [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*类型*](../chapter3/03_Types.html#type) +> *函数结果* → **->** [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*类型*](./03_Types.md#type) > -> *函数体* → [*代码块*](../chapter3/05_Declarations.html#code_block) +> *函数体* → [*代码块*](./05_Declarations.md#code_block) > -> *参数从句* → [*参数从句*](../chapter3/05_Declarations.html#parameter_clause) [*parameter-clauses*](../chapter3/05_Declarations.html#parameter_clauses) _可选_ +> *参数从句* → [*参数从句*](./05_Declarations.md#parameter_clause) [*parameter-clauses*](./05_Declarations.md#parameter_clauses) _可选_ > -> *参数从句* → **(** **)** | **(** [*参数集*](../chapter3/05_Declarations.html#parameter_list) **...** _可选_ **)** +> *参数从句* → **(** **)** | **(** [*参数集*](./05_Declarations.md#parameter_list) **...** _可选_ **)** > -> *参数集* → [*参数*](../chapter3/05_Declarations.html#parameter) | [*参数*](../chapter3/05_Declarations.html#parameter) **,** [*参数集*](../chapter3/05_Declarations.html#parameter_list) +> *参数集* → [*参数*](./05_Declarations.md#parameter) | [*参数*](./05_Declarations.md#parameter) **,** [*参数集*](./05_Declarations.md#parameter_list) > -> *参数* → **inout** _可选_ **let** _可选_ [*外部参数名*](../chapter3/05_Declarations.html#parameter_name) _可选_ [*本地参数名*](../chapter3/05_Declarations.html#local_parameter_name) _可选_ [*类型注解*](../chapter3/03_Types.html#type_annotation) [*默认参数从句*](../chapter3/05_Declarations.html#default_argument_clause) _可选_ +> *参数* → **inout** _可选_ **let** _可选_ [*外部参数名*](./05_Declarations.md#parameter_name) _可选_ [*本地参数名*](./05_Declarations.md#local_parameter_name) _可选_ [*类型注解*](./03_Types.md#type_annotation) [*默认参数从句*](./05_Declarations.md#default_argument_clause) _可选_ > -> *参数* → **inout** _可选_ **var** [*外部参数名*](../chapter3/05_Declarations.html#parameter_name) [*本地参数名*](../chapter3/05_Declarations.html#local_parameter_name) _可选_ [*类型注解*](../chapter3/03_Types.html#type_annotation) [*默认参数从句*](../chapter3/05_Declarations.html#default_argument_clause) _可选_ +> *参数* → **inout** _可选_ **var** [*外部参数名*](./05_Declarations.md#parameter_name) [*本地参数名*](./05_Declarations.md#local_parameter_name) _可选_ [*类型注解*](./03_Types.md#type_annotation) [*默认参数从句*](./05_Declarations.md#default_argument_clause) _可选_ > -> *参数* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*类型*](../chapter3/03_Types.html#type) +> *参数* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*类型*](./03_Types.md#type) > -> *外部参数名* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) | **_** +> *外部参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | **_** > -> *本地参数名* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) | **_** +> *本地参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | **_** > -> *默认参数从句* → **=** [*表达式*](../chapter3/04_Expressions.html#expression) +> *默认参数从句* → **=** [*表达式*](./04_Expressions.md#expression) > > 枚举声明语法 > -> *枚举声明* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](TODO) _可选_ [*联合式枚举*](../chapter3/05_Declarations.html#union_style_enum) +> *枚举声明* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](./TODO) _可选_ [*联合式枚举*](./05_Declarations.md#union_style_enum) > -> *枚举声明* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](TODO) _可选_ [*原始值式枚举(raw-value-style-enum)*](TODO) +> *枚举声明* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](TODO) _可选_ [*原始值式枚举(raw-value-style-enum)*](TODO) > -> *联合式枚举* → **enum** [*枚举名*](../chapter3/05_Declarations.html#enum_name) [*泛型参数从句*](GenericParametersAndArguments.html#generic_parameter_clause) _可选_ [*类型继承从句(type-inheritance-clause)*](TODO) _可选_ **{** [*联合样式枚举成员*](../chapter3/05_Declarations.html#union_style_enum_members) _可选_ **}** +> *联合式枚举* → **enum** [*枚举名*](./05_Declarations.md#enum_name) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_parameter_clause) _可选_ [*类型继承从句(type-inheritance-clause)*](./TODO) _可选_ **{** [*联合样式枚举成员*](./05_Declarations.md#union_style_enum_members) _可选_ **}** > -> *联合样式枚举成员* → [*union-style-enum-member*](../chapter3/05_Declarations.html#union_style_enum_member) [*联合样式枚举成员*](../chapter3/05_Declarations.html#union_style_enum_members) _可选_ +> *联合样式枚举成员* → [*union-style-enum-member*](./05_Declarations.md#union_style_enum_member) [*联合样式枚举成员*](./05_Declarations.md#union_style_enum_members) _可选_ > -> *联合样式枚举成员* → [*声明*](../chapter3/05_Declarations.html#declaration) | [*联合式(Union Style)的枚举 case 从句*](../chapter3/05_Declarations.html#union_style_enum_case_clause) +> *联合样式枚举成员* → [*声明*](./05_Declarations.md#declaration) | [*联合式(Union Style)的枚举 case 从句*](./05_Declarations.md#union_style_enum_case_clause) > -> *联合式(Union Style)的枚举 case 从句* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ **case** [*联合式(Union Style)的枚举 case 集*](../chapter3/05_Declarations.html#union_style_enum_case_list) +> *联合式(Union Style)的枚举 case 从句* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ **case** [*联合式(Union Style)的枚举 case 集*](./05_Declarations.md#union_style_enum_case_list) > -> *联合式(Union Style)的枚举 case 集* → [*联合式(Union Style)的 case*](../chapter3/05_Declarations.html#union_style_enum_case) | [*联合式(Union Style)的 case*](../chapter3/05_Declarations.html#union_style_enum_case) **,** [*联合式(Union Style)的枚举 case 集*](../chapter3/05_Declarations.html#union_style_enum_case_list) +> *联合式(Union Style)的枚举 case 集* → [*联合式(Union Style)的 case*](./05_Declarations.md#union_style_enum_case) | [*联合式(Union Style)的 case*](./05_Declarations.md#union_style_enum_case) **,** [*联合式(Union Style)的枚举 case 集*](./05_Declarations.md#union_style_enum_case_list) > -> *联合式(Union Style)的枚举 case* → [*枚举的 case 名*](../chapter3/05_Declarations.html#enum_case_name) [*元组类型*](../chapter3/03_Types.html#tuple_type) _可选_ +> *联合式(Union Style)的枚举 case* → [*枚举的 case 名*](./05_Declarations.md#enum_case_name) [*元组类型*](./03_Types.md#tuple_type) _可选_ > -> *枚举名* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> *枚举名* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> *枚举的 case 名* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> *枚举的 case 名* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> *原始值式枚举* → **enum** [*枚举名*](../chapter3/05_Declarations.html#enum_name) [*泛型参数从句*](GenericParametersAndArguments.html#generic_parameter_clause) _可选_ **:** [*类型标识*](../chapter3/03_Types.html#type_identifier) **{** [*原始值式枚举成员集*](../chapter3/05_Declarations.html#raw_value_style_enum_members) _可选_ **}** +> *原始值式枚举* → **enum** [*枚举名*](./05_Declarations.md#enum_name) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_parameter_clause) _可选_ **:** [*类型标识*](./03_Types.md#type_identifier) **{** [*原始值式枚举成员集*](./05_Declarations.md#raw_value_style_enum_members) _可选_ **}** > -> *原始值式枚举成员集* → [*原始值式枚举成员*](../chapter3/05_Declarations.html#raw_value_style_enum_member) [*原始值式枚举成员集*](../chapter3/05_Declarations.html#raw_value_style_enum_members) _可选_ +> *原始值式枚举成员集* → [*原始值式枚举成员*](./05_Declarations.md#raw_value_style_enum_member) [*原始值式枚举成员集*](./05_Declarations.md#raw_value_style_enum_members) _可选_ > -> *原始值式枚举成员* → [*声明*](../chapter3/05_Declarations.html#declaration) | [*原始值式枚举 case 从句*](../chapter3/05_Declarations.html#raw_value_style_enum_case_clause) +> *原始值式枚举成员* → [*声明*](./05_Declarations.md#declaration) | [*原始值式枚举 case 从句*](./05_Declarations.md#raw_value_style_enum_case_clause) > -> *原始值式枚举 case 从句* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ **case** [*原始值式枚举 case 集*](../chapter3/05_Declarations.html#raw_value_style_enum_case_list) +> *原始值式枚举 case 从句* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ **case** [*原始值式枚举 case 集*](./05_Declarations.md#raw_value_style_enum_case_list) > -> *原始值式枚举 case 集* → [*原始值式枚举 case*](../chapter3/05_Declarations.html#raw_value_style_enum_case) | [*原始值式枚举 case*](../chapter3/05_Declarations.html#raw_value_style_enum_case) **,** [*原始值式枚举 case 集*](../chapter3/05_Declarations.html#raw_value_style_enum_case_list) +> *原始值式枚举 case 集* → [*原始值式枚举 case*](./05_Declarations.md#raw_value_style_enum_case) | [*原始值式枚举 case*](./05_Declarations.md#raw_value_style_enum_case) **,** [*原始值式枚举 case 集*](./05_Declarations.md#raw_value_style_enum_case_list) > -> *原始值式枚举 case* → [*枚举的 case 名*](../chapter3/05_Declarations.html#enum_case_name) [*原始值赋值*](../chapter3/05_Declarations.html#raw_value_assignment) _可选_ +> *原始值式枚举 case* → [*枚举的 case 名*](./05_Declarations.md#enum_case_name) [*原始值赋值*](./05_Declarations.md#raw_value_assignment) _可选_ > -> *原始值赋值* → **=** [*字面量*](../chapter3/02_Lexical_Structure.html#literal) +> *原始值赋值* → **=** [*字面量*](./02_Lexical_Structure.md#literal) > > *原始值字面量(raw-value-literal)* → [*数值字面量*](TODO) | [*字符串字面量*](TODO) | [*布尔字面量*](TODO) > @@ -502,147 +502,147 @@ > 结构体声明语法 > -> *结构体声明* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](TODO) _可选_ **struct** [*结构体名称*](../chapter3/05_Declarations.html#struct_name) [*泛型参数从句*](GenericParametersAndArguments.html#generic_parameter_clause) _可选_ [*类型继承从句*](../chapter3/03_Types.html#type_inheritance_clause) _可选_ [*结构体主体*](../chapter3/05_Declarations.html#struct_body) +> *结构体声明* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](./TODO) _可选_ **struct** [*结构体名称*](./05_Declarations.md#struct_name) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_parameter_clause) _可选_ [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*结构体主体*](./05_Declarations.md#struct_body) > -> *结构体名称* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> *结构体名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> *结构体主体* → **{** [*声明(Declarations)集*](../chapter3/05_Declarations.html#declarations) _可选_ **}** +> *结构体主体* → **{** [*声明(Declarations)集*](./05_Declarations.md#declarations) _可选_ **}** > > 类声明语法 > -> *类声明* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](TODO) **class** [*类名*](../chapter3/05_Declarations.html#class_name) [*泛型参数从句*](GenericParametersAndArguments.html#generic_parameter_clause) _可选_ [*类型继承从句*](../chapter3/03_Types.html#type_inheritance_clause) _可选_ [*类主体*](../chapter3/05_Declarations.html#class_body) +> *类声明* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](./TODO) **class** [*类名*](./05_Declarations.md#class_name) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_parameter_clause) _可选_ [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*类主体*](./05_Declarations.md#class_body) > -> *类名* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> *类名* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> *类主体* → **{** [*声明(Declarations)集*](../chapter3/05_Declarations.html#declarations) _可选_ **}** +> *类主体* → **{** [*声明(Declarations)集*](./05_Declarations.md#declarations) _可选_ **}** > > 协议(Protocol)声明语法 > -> *协议声明* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_[*访问级别修改器(access-level-modifier)*](TODO) **protocol** [*协议名*](../chapter3/05_Declarations.html#protocol_name) [*类型继承从句*](../chapter3/03_Types.html#type_inheritance_clause) _可选_ [*协议主体*](../chapter3/05_Declarations.html#protocol_body) +> *协议声明* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_[*访问级别修改器(access-level-modifier)*](./TODO) **protocol** [*协议名*](./05_Declarations.md#protocol_name) [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*协议主体*](./05_Declarations.md#protocol_body) > -> *协议名* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> *协议名* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> *协议主体* → **{** [*协议成员声明(Declarations)集*](../chapter3/05_Declarations.html#protocol_member_declarations) _可选_ **}** +> *协议主体* → **{** [*协议成员声明(Declarations)集*](./05_Declarations.md#protocol_member_declarations) _可选_ **}** > -> *协议成员声明* → [*协议属性声明*](../chapter3/05_Declarations.html#protocol_property_declaration) +> *协议成员声明* → [*协议属性声明*](./05_Declarations.md#protocol_property_declaration) > -> *协议成员声明* → [*协议方法声明*](../chapter3/05_Declarations.html#protocol_method_declaration) +> *协议成员声明* → [*协议方法声明*](./05_Declarations.md#protocol_method_declaration) > -> *协议成员声明* → [*协议构造器声明*](../chapter3/05_Declarations.html#protocol_initializer_declaration) +> *协议成员声明* → [*协议构造器声明*](./05_Declarations.md#protocol_initializer_declaration) > -> *协议成员声明* → [*协议下标声明*](../chapter3/05_Declarations.html#protocol_subscript_declaration) +> *协议成员声明* → [*协议下标声明*](./05_Declarations.md#protocol_subscript_declaration) > -> *协议成员声明* → [*协议关联类型声明*](../chapter3/05_Declarations.html#protocol_associated_type_declaration) +> *协议成员声明* → [*协议关联类型声明*](./05_Declarations.md#protocol_associated_type_declaration) > -> *协议成员声明(Declarations)集* → [*协议成员声明*](../chapter3/05_Declarations.html#protocol_member_declaration) [*协议成员声明(Declarations)集*](../chapter3/05_Declarations.html#protocol_member_declarations) _可选_ +> *协议成员声明(Declarations)集* → [*协议成员声明*](./05_Declarations.md#protocol_member_declaration) [*协议成员声明(Declarations)集*](./05_Declarations.md#protocol_member_declarations) _可选_ > > 协议属性声明语法 > -> *协议属性声明* → [*变量声明头(Head)*](../chapter3/05_Declarations.html#variable_declaration_head) [*变量名*](../chapter3/05_Declarations.html#variable_name) [*类型注解*](../chapter3/03_Types.html#type_annotation) [*getter-setter 关键字(Keyword)块*](../chapter3/05_Declarations.html#getter_setter_keyword_block) +> *协议属性声明* → [*变量声明头(Head)*](./05_Declarations.md#variable_declaration_head) [*变量名*](./05_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*getter-setter 关键字(Keyword)块*](./05_Declarations.md#getter_setter_keyword_block) > > 协议方法声明语法 > -> *协议方法声明* → [*函数头*](../chapter3/05_Declarations.html#function_head) [*函数名*](../chapter3/05_Declarations.html#function_name) [*泛型参数从句*](GenericParametersAndArguments.html#generic_parameter_clause) _可选_ [*函数签名(Signature)*](../chapter3/05_Declarations.html#function_signature) +> *协议方法声明* → [*函数头*](./05_Declarations.md#function_head) [*函数名*](./05_Declarations.md#function_name) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_parameter_clause) _可选_ [*函数签名(Signature)*](./05_Declarations.md#function_signature) > > 协议构造器声明语法 > -> *协议构造器声明* → [*构造器头(Head)*](../chapter3/05_Declarations.html#initializer_head) [*泛型参数从句*](GenericParametersAndArguments.html#generic_parameter_clause) _可选_ [*参数从句*](../chapter3/05_Declarations.html#parameter_clause) +> *协议构造器声明* → [*构造器头(Head)*](./05_Declarations.md#initializer_head) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_parameter_clause) _可选_ [*参数从句*](./05_Declarations.md#parameter_clause) > > 协议下标声明语法 > -> *协议下标声明* → [*下标头(Head)*](../chapter3/05_Declarations.html#subscript_head) [*下标结果(Result)*](../chapter3/05_Declarations.html#subscript_result) [*getter-setter 关键字(Keyword)块*](../chapter3/05_Declarations.html#getter_setter_keyword_block) +> *协议下标声明* → [*下标头(Head)*](./05_Declarations.md#subscript_head) [*下标结果(Result)*](./05_Declarations.md#subscript_result) [*getter-setter 关键字(Keyword)块*](./05_Declarations.md#getter_setter_keyword_block) > > 协议关联类型声明语法 > -> *协议关联类型声明* → [*类型别名头(Head)*](../chapter3/05_Declarations.html#typealias_head) [*类型继承从句*](../chapter3/03_Types.html#type_inheritance_clause) _可选_ [*类型别名赋值*](../chapter3/05_Declarations.html#typealias_assignment) _可选_ +> *协议关联类型声明* → [*类型别名头(Head)*](./05_Declarations.md#typealias_head) [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*类型别名赋值*](./05_Declarations.md#typealias_assignment) _可选_ > > 构造器声明语法 > -> *构造器声明* → [*构造器头(Head)*](../chapter3/05_Declarations.html#initializer_head) [*泛型参数从句*](GenericParametersAndArguments.html#generic_parameter_clause) _可选_ [*参数从句*](../chapter3/05_Declarations.html#parameter_clause) [*构造器主体*](../chapter3/05_Declarations.html#initializer_body) +> *构造器声明* → [*构造器头(Head)*](./05_Declarations.md#initializer_head) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_parameter_clause) _可选_ [*参数从句*](./05_Declarations.md#parameter_clause) [*构造器主体*](./05_Declarations.md#initializer_body) > -> *构造器头(Head)* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*声明修改器集(declaration-modifiers)*](TODO) _可选_ **init** +> *构造器头(Head)* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*声明修改器集(declaration-modifiers)*](TODO) _可选_ **init** > -> *构造器头(Head)* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*声明修改器集(declaration-modifiers)*](TODO) _可选_ **init ?** +> *构造器头(Head)* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*声明修改器集(declaration-modifiers)*](TODO) _可选_ **init ?** > -> *构造器头(Head)* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*声明修改器集(declaration-modifiers)*](TODO) _可选_ **init !** +> *构造器头(Head)* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*声明修改器集(declaration-modifiers)*](TODO) _可选_ **init !** > -> *构造器主体* → [*代码块*](../chapter3/05_Declarations.html#code_block) +> *构造器主体* → [*代码块*](./05_Declarations.md#code_block) > > 析构器声明语法 > -> *析构器声明* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ **deinit** [*代码块*](../chapter3/05_Declarations.html#code_block) +> *析构器声明* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ **deinit** [*代码块*](./05_Declarations.md#code_block) > > 扩展(Extension)声明语法 > -> *扩展声明* → [*访问级别修改器*](TODO) _可选_ **extension** [*类型标识*](../chapter3/03_Types.html#type_identifier) [*类型继承从句*](../chapter3/03_Types.html#type_inheritance_clause) _可选_ [*extension-body*](../chapter3/05_Declarations.html#extension_body) +> *扩展声明* → [*访问级别修改器*](./TODO) _可选_ **extension** [*类型标识*](./03_Types.md#type_identifier) [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*extension-body*](./05_Declarations.md#extension_body) > -> *extension-body* → **{** [*声明(Declarations)集*](../chapter3/05_Declarations.html#declarations) _可选_ **}** +> *extension-body* → **{** [*声明(Declarations)集*](./05_Declarations.md#declarations) _可选_ **}** > > 下标声明语法 > -> *下标声明* → [*下标头(Head)*](../chapter3/05_Declarations.html#subscript_head) [*下标结果(Result)*](../chapter3/05_Declarations.html#subscript_result) [*代码块*](../chapter3/05_Declarations.html#code_block) +> *下标声明* → [*下标头(Head)*](./05_Declarations.md#subscript_head) [*下标结果(Result)*](./05_Declarations.md#subscript_result) [*代码块*](./05_Declarations.md#code_block) > -> *下标声明* → [*下标头(Head)*](../chapter3/05_Declarations.html#subscript_head) [*下标结果(Result)*](../chapter3/05_Declarations.html#subscript_result) [*getter-setter 块*](../chapter3/05_Declarations.html#getter_setter_block) +> *下标声明* → [*下标头(Head)*](./05_Declarations.md#subscript_head) [*下标结果(Result)*](./05_Declarations.md#subscript_result) [*getter-setter 块*](./05_Declarations.md#getter_setter_block) > -> *下标声明* → [*下标头(Head)*](../chapter3/05_Declarations.html#subscript_head) [*下标结果(Result)*](../chapter3/05_Declarations.html#subscript_result) [*getter-setter 关键字(Keyword)块*](../chapter3/05_Declarations.html#getter_setter_keyword_block) +> *下标声明* → [*下标头(Head)*](./05_Declarations.md#subscript_head) [*下标结果(Result)*](./05_Declarations.md#subscript_result) [*getter-setter 关键字(Keyword)块*](./05_Declarations.md#getter_setter_keyword_block) > -> *下标头(Head)* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*声明修改器(declaration-modifiers)*](TODO) _可选_ **subscript** [*参数从句*](../chapter3/05_Declarations.html#parameter_clause) +> *下标头(Head)* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*声明修改器(declaration-modifiers)*](./TODO) _可选_ **subscript** [*参数从句*](./05_Declarations.md#parameter_clause) > -> *下标结果(Result)* → **->** [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*类型*](../chapter3/03_Types.html#type) +> *下标结果(Result)* → **->** [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*类型*](./03_Types.md#type) > > 运算符声明语法 > -> *运算符声明* → [*前置运算符声明*](../chapter3/05_Declarations.html#prefix_operator_declaration) | [*后置运算符声明*](../chapter3/05_Declarations.html#postfix_operator_declaration) | [*中置运算符声明*](../chapter3/05_Declarations.html#infix_operator_declaration) +> *运算符声明* → [*前置运算符声明*](./05_Declarations.md#prefix_operator_declaration) | [*后置运算符声明*](./05_Declarations.md#postfix_operator_declaration) | [*中置运算符声明*](./05_Declarations.md#infix_operator_declaration) > -> *前置运算符声明* → **prefix** **运算符** [*运算符*](../chapter3/02_Lexical_Structure.html#operator) **{** **}** +> *前置运算符声明* → **prefix** **运算符** [*运算符*](./02_Lexical_Structure.md#operator) **{** **}** > -> *后置运算符声明* → **postfix** **运算符** [*运算符*](../chapter3/02_Lexical_Structure.html#operator) **{** **}** +> *后置运算符声明* → **postfix** **运算符** [*运算符*](./02_Lexical_Structure.md#operator) **{** **}** > -> *中置运算符声明* → **infix** **运算符** [*运算符*](../chapter3/02_Lexical_Structure.html#operator) **{** [*中置运算符属性集*](../chapter3/05_Declarations.html#infix_operator_attributes) _可选_ **}** +> *中置运算符声明* → **infix** **运算符** [*运算符*](./02_Lexical_Structure.md#operator) **{** [*中置运算符属性集*](./05_Declarations.md#infix_operator_attributes) _可选_ **}** > -> *中置运算符属性集* → [*优先级从句*](../chapter3/05_Declarations.html#precedence_clause) _可选_ [*结和性从句*](../chapter3/05_Declarations.html#associativity_clause) _可选_ +> *中置运算符属性集* → [*优先级从句*](./05_Declarations.md#precedence_clause) _可选_ [*结和性从句*](./05_Declarations.md#associativity_clause) _可选_ > -> *优先级从句* → **precedence** [*优先级水平*](../chapter3/05_Declarations.html#precedence_level) +> *优先级从句* → **precedence** [*优先级水平*](./05_Declarations.md#precedence_level) > > *优先级水平* → 数值 0 到 255,首末项包括在内 > -> *结和性从句* → **associativity** [*结和性*](../chapter3/05_Declarations.html#associativity) +> *结和性从句* → **associativity** [*结和性*](./05_Declarations.md#associativity) > > *结和性* → **left** | **right** | **none** > @@ -671,21 +671,21 @@ > 模式(Patterns)语法 > -> *模式* → [*通配符模式*](../chapter3/07_Patterns.html#wildcard_pattern) [*类型注解*](../chapter3/03_Types.html#type_annotation) _可选_ +> *模式* → [*通配符模式*](./07_Patterns.md#wildcard_pattern) [*类型注解*](./03_Types.md#type_annotation) _可选_ > -> *模式* → [*标识符模式*](../chapter3/07_Patterns.html#identifier_pattern) [*类型注解*](../chapter3/03_Types.html#type_annotati Value Bindingon ) _可选_ +> *模式* → [*标识符模式*](./07_Patterns.md#identifier_pattern) [*类型注解*](./03_Types.md#type_annotati Value Bindingon ) _可选_ > -> *模式* → [*值绑定模式*](../chapter3/07_Patterns.html#value_binding_pattern) +> *模式* → [*值绑定模式*](./07_Patterns.md#value_binding_pattern) > -> *模式* → [*元组模式*](../chapter3/07_Patterns.html#tuple_pattern) [*类型注解*](../chapter3/03_Types.html#type_annotation) _可选_ +> *模式* → [*元组模式*](./07_Patterns.md#tuple_pattern) [*类型注解*](./03_Types.md#type_annotation) _可选_ > -> *模式* → [*枚举个例模式*](../chapter3/07_Patterns.html#enum_case_pattern) +> *模式* → [*枚举个例模式*](./07_Patterns.md#enum_case_pattern) > > *模式* → [*可选模式*](TODO) > -> *模式* → [*类型转换模式*](../chapter3/07_Patterns.html#type_casting_pattern) +> *模式* → [*类型转换模式*](./07_Patterns.md#type_casting_pattern) > -> *模式* → [*表达式模式*](../chapter3/07_Patterns.html#expression_pattern) +> *模式* → [*表达式模式*](./07_Patterns.md#expression_pattern) > @@ -699,32 +699,32 @@ > 标识符模式语法 > -> *标识符模式* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> *标识符模式* → [*标识符*](./02_Lexical_Structure.md#identifier) > > 值绑定(Value Binding)模式语法 > -> *值绑定模式* → **var** [*模式*](../chapter3/07_Patterns.html#pattern) | **let** [*模式*](../chapter3/07_Patterns.html#pattern) +> *值绑定模式* → **var** [*模式*](./07_Patterns.md#pattern) | **let** [*模式*](./07_Patterns.md#pattern) > > 元组模式语法 > -> *元组模式* → **(** [*元组模式元素集*](../chapter3/07_Patterns.html#tuple_pattern_element_list) _可选_ **)** +> *元组模式* → **(** [*元组模式元素集*](./07_Patterns.md#tuple_pattern_element_list) _可选_ **)** > -> *元组模式元素集* → [*元组模式元素*](../chapter3/07_Patterns.html#tuple_pattern_element) | [*元组模式元素*](../chapter3/07_Patterns.html#tuple_pattern_element) **,** [*元组模式元素集*](../chapter3/07_Patterns.html#tuple_pattern_element_list) +> *元组模式元素集* → [*元组模式元素*](./07_Patterns.md#tuple_pattern_element) | [*元组模式元素*](./07_Patterns.md#tuple_pattern_element) **,** [*元组模式元素集*](./07_Patterns.md#tuple_pattern_element_list) > -> *元组模式元素* → [*模式*](../chapter3/07_Patterns.html#pattern) +> *元组模式元素* → [*模式*](./07_Patterns.md#pattern) > > 枚举用例模式语法 > -> *enum-case-pattern* → [*类型标识*](../chapter3/03_Types.html#type_identifier) _可选_ **.** [*枚举的 case 名*](../chapter3/05_Declarations.html#enum_case_name) [*元组模式*](../chapter3/07_Patterns.html#tuple_pattern) _可选_ +> *enum-case-pattern* → [*类型标识*](./03_Types.md#type_identifier) _可选_ **.** [*枚举的 case 名*](./05_Declarations.md#enum_case_name) [*元组模式*](./07_Patterns.md#tuple_pattern) _可选_ > @@ -737,18 +737,18 @@ > 类型转换模式语法 > -> *类型转换模式(type-casting-pattern)* → [*is 模式*](../chapter3/07_Patterns.html#is_pattern) | [*as 模式*](../chapter3/07_Patterns.html#as_pattern) +> *类型转换模式(type-casting-pattern)* → [*is 模式*](./07_Patterns.md#is_pattern) | [*as 模式*](./07_Patterns.md#as_pattern) > -> *is 模式* → **is** [*类型*](../chapter3/03_Types.html#type) +> *is 模式* → **is** [*类型*](./03_Types.md#type) > -> *as 模式* → [*模式*](../chapter3/07_Patterns.html#pattern) **as** [*类型*](../chapter3/03_Types.html#type) +> *as 模式* → [*模式*](./07_Patterns.md#pattern) **as** [*类型*](./03_Types.md#type) > > 表达式模式语法 > -> *表达式模式* → [*表达式*](../chapter3/04_Expressions.html#expression) +> *表达式模式* → [*表达式*](./04_Expressions.md#expression) > @@ -756,21 +756,21 @@ > 属性语法 > -> *属性* → **@** [*属性名*](../chapter3/06_Attributes.html#attribute_name) [*属性参数从句*](../chapter3/06_Attributes.html#attribute_argument_clause) _可选_ +> *属性* → **@** [*属性名*](./06_Attributes.md#attribute_name) [*属性参数从句*](./06_Attributes.md#attribute_argument_clause) _可选_ > -> *属性名* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> *属性名* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> *属性参数从句* → **(** [*平衡令牌集*](../chapter3/06_Attributes.html#balanced_tokens) _可选_ **)** +> *属性参数从句* → **(** [*平衡令牌集*](./06_Attributes.md#balanced_tokens) _可选_ **)** > -> *属性(Attributes)集* → [*属性*](../chapter3/06_Attributes.html#attribute) [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ +> *属性(Attributes)集* → [*属性*](./06_Attributes.md#attribute) [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ > -> *平衡令牌集* → [*平衡令牌*](../chapter3/06_Attributes.html#balanced_token) [*平衡令牌集*](../chapter3/06_Attributes.html#balanced_tokens) _可选_ +> *平衡令牌集* → [*平衡令牌*](./06_Attributes.md#balanced_token) [*平衡令牌集*](./06_Attributes.md#balanced_tokens) _可选_ > -> *平衡令牌* → **(** [*平衡令牌集*](../chapter3/06_Attributes.html#balanced_tokens) _可选_ **)** +> *平衡令牌* → **(** [*平衡令牌集*](./06_Attributes.md#balanced_tokens) _可选_ **)** > -> *平衡令牌* → **[** [*平衡令牌集*](../chapter3/06_Attributes.html#balanced_tokens) _可选_ **]** +> *平衡令牌* → **[** [*平衡令牌集*](./06_Attributes.md#balanced_tokens) _可选_ **]** > -> *平衡令牌* → **{** [*平衡令牌集*](../chapter3/06_Attributes.html#balanced_tokens) _可选_ **}** +> *平衡令牌* → **{** [*平衡令牌集*](./06_Attributes.md#balanced_tokens) _可选_ **}** > > *平衡令牌* → **任意标识符、关键字、字面量或运算符** > @@ -782,20 +782,20 @@ > 表达式语法 > -> *表达式* → [*try-operator*](TODO) _可选_ [*前置表达式*](../chapter3/04_Expressions.html#prefix_expression) [*二元表达式集*](../chapter3/04_Expressions.html#binary_expressions) _可选_ +> *表达式* → [*try-operator*](./TODO) _可选_ [*前置表达式*](./04_Expressions.md#prefix_expression) [*二元表达式集*](./04_Expressions.md#binary_expressions) _可选_ > -> *表达式集* → [*表达式*](../chapter3/04_Expressions.html#expression) | [*表达式*](../chapter3/04_Expressions.html#expression) **,** [*表达式集*](../chapter3/04_Expressions.html#expression_list) +> *表达式集* → [*表达式*](./04_Expressions.md#expression) | [*表达式*](./04_Expressions.md#expression) **,** [*表达式集*](./04_Expressions.md#expression_list) > > 前置表达式语法 > -> *前置表达式* → [*前置运算符*](../chapter3/02_Lexical_Structure.html#prefix_operator) _可选_ [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) +> *前置表达式* → [*前置运算符*](./02_Lexical_Structure.md#prefix_operator) _可选_ [*后置表达式*](./04_Expressions.md#postfix_expression) > -> *前置表达式* → [*写入写出(in-out)表达式*](../chapter3/04_Expressions.html#in_out_expression) +> *前置表达式* → [*写入写出(in-out)表达式*](./04_Expressions.md#in_out_expression) > -> *写入写出(in-out)表达式* → **&** [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> *写入写出(in-out)表达式* → **&** [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -808,15 +808,15 @@ > 二元表达式语法 > -> *二元表达式* → [*二元运算符*](../chapter3/02_Lexical_Structure.html#binary_operator) [*前置表达式*](../chapter3/04_Expressions.html#prefix_expression) +> *二元表达式* → [*二元运算符*](./02_Lexical_Structure.md#binary_operator) [*前置表达式*](./04_Expressions.md#prefix_expression) > -> *二元表达式* → [*赋值运算符*](../chapter3/04_Expressions.html#assignment_operator) [*try 运算符*](TODO) _可选_ [*前置表达式*](../chapter3/04_Expressions.html#prefix_expression) +> *二元表达式* → [*赋值运算符*](./04_Expressions.md#assignment_operator) [*try 运算符*](./TODO) _可选_ [*前置表达式*](./04_Expressions.md#prefix_expression) > -> *二元表达式* → [*条件运算符*](../chapter3/04_Expressions.html#conditional_operator) [*try 运算符*](TODO) _可选_ [*前置表达式*](../chapter3/04_Expressions.html#prefix_expression) +> *二元表达式* → [*条件运算符*](./04_Expressions.md#conditional_operator) [*try 运算符*](./TODO) _可选_ [*前置表达式*](./04_Expressions.md#prefix_expression) > -> *二元表达式* → [*类型转换运算符*](../chapter3/04_Expressions.html#type_casting_operator) +> *二元表达式* → [*类型转换运算符*](./04_Expressions.md#type_casting_operator) > -> *二元表达式集* → [*二元表达式*](../chapter3/04_Expressions.html#binary_expression) [*二元表达式集*](../chapter3/04_Expressions.html#binary_expressions) _可选_ +> *二元表达式集* → [*二元表达式*](./04_Expressions.md#binary_expression) [*二元表达式集*](./04_Expressions.md#binary_expressions) _可选_ > @@ -830,64 +830,64 @@ > 三元条件运算符语法 > -> *三元条件运算符* → **?** [*表达式*](../chapter3/04_Expressions.html#expression) **:** +> *三元条件运算符* → **?** [*表达式*](./04_Expressions.md#expression) **:** > > 类型转换运算符语法 > -> *类型转换运算符* → **is** [*类型*](../chapter3/03_Types.html#type) +> *类型转换运算符* → **is** [*类型*](./03_Types.md#type) > -> *类型转换运算符* → **as** [*类型*](../chapter3/03_Types.html#type) +> *类型转换运算符* → **as** [*类型*](./03_Types.md#type) > -> *类型转换运算符* → **as ?** [*类型*](../chapter3/03_Types.html#type) +> *类型转换运算符* → **as ?** [*类型*](./03_Types.md#type) > -> *类型转换运算符* → **as !** [*类型*](../chapter3/03_Types.html#type) +> *类型转换运算符* → **as !** [*类型*](./03_Types.md#type) > > 主表达式语法 > -> *主表达式* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) [*泛型参数从句*](GenericParametersAndArguments.html#generic_argument_clause) _可选_ +> *主表达式* → [*标识符*](./02_Lexical_Structure.md#identifier) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_argument_clause) _可选_ > -> *主表达式* → [*字面量表达式*](../chapter3/04_Expressions.html#literal_expression) +> *主表达式* → [*字面量表达式*](./04_Expressions.md#literal_expression) > -> *主表达式* → [*self 表达式*](../chapter3/04_Expressions.html#self_expression) +> *主表达式* → [*self 表达式*](./04_Expressions.md#self_expression) > -> *主表达式* → [*超类表达式*](../chapter3/04_Expressions.html#superclass_expression) +> *主表达式* → [*超类表达式*](./04_Expressions.md#superclass_expression) > -> *主表达式* → [*闭包表达式*](../chapter3/04_Expressions.html#closure_expression) +> *主表达式* → [*闭包表达式*](./04_Expressions.md#closure_expression) > -> *主表达式* → [*圆括号表达式*](../chapter3/04_Expressions.html#parenthesized_expression) +> *主表达式* → [*圆括号表达式*](./04_Expressions.md#parenthesized_expression) > -> *主表达式* → [*隐式成员表达式*](../chapter3/04_Expressions.html#implicit_member_expression) +> *主表达式* → [*隐式成员表达式*](./04_Expressions.md#implicit_member_expression) > -> *主表达式* → [*通配符表达式*](../chapter3/04_Expressions.html#wildcard_expression) +> *主表达式* → [*通配符表达式*](./04_Expressions.md#wildcard_expression) > > 字面量表达式语法 > -> *字面量表达式* → [*字面量*](../chapter3/02_Lexical_Structure.html#literal) +> *字面量表达式* → [*字面量*](./02_Lexical_Structure.md#literal) > -> *字面量表达式* → [*数组字面量*](../chapter3/04_Expressions.html#array_literal) | [*字典字面量*](../chapter3/04_Expressions.html#dictionary_literal) +> *字面量表达式* → [*数组字面量*](./04_Expressions.md#array_literal) | [*字典字面量*](./04_Expressions.md#dictionary_literal) > > *字面量表达式* → **__FILE__** | **__LINE__** | **__COLUMN__** | **__FUNCTION__** > -> *数组字面量* → **[** [*数组字面量项集*](../chapter3/04_Expressions.html#array_literal_items) _可选_ **]** +> *数组字面量* → **[** [*数组字面量项集*](./04_Expressions.md#array_literal_items) _可选_ **]** > -> *数组字面量项集* → [*数组字面量项*](../chapter3/04_Expressions.html#array_literal_item) **,** _可选_ | [*数组字面量项*](../chapter3/04_Expressions.html#array_literal_item) **,** [*数组字面量项集*](../chapter3/04_Expressions.html#array_literal_items) +> *数组字面量项集* → [*数组字面量项*](./04_Expressions.md#array_literal_item) **,** _可选_ | [*数组字面量项*](./04_Expressions.md#array_literal_item) **,** [*数组字面量项集*](./04_Expressions.md#array_literal_items) > -> *数组字面量项* → [*表达式*](../chapter3/04_Expressions.html#expression) +> *数组字面量项* → [*表达式*](./04_Expressions.md#expression) > -> *字典字面量* → **[** [*字典字面量项集*](../chapter3/04_Expressions.html#dictionary_literal_items) **]** | **[** **:** **]** +> *字典字面量* → **[** [*字典字面量项集*](./04_Expressions.md#dictionary_literal_items) **]** | **[** **:** **]** > -> *字典字面量项集* → [*字典字面量项*](../chapter3/04_Expressions.html#dictionary_literal_item) **,** _可选_ | [*字典字面量项*](../chapter3/04_Expressions.html#dictionary_literal_item) **,** [*字典字面量项集*](../chapter3/04_Expressions.html#dictionary_literal_items) +> *字典字面量项集* → [*字典字面量项*](./04_Expressions.md#dictionary_literal_item) **,** _可选_ | [*字典字面量项*](./04_Expressions.md#dictionary_literal_item) **,** [*字典字面量项集*](./04_Expressions.md#dictionary_literal_items) > -> *字典字面量项* → [*表达式*](../chapter3/04_Expressions.html#expression) **:** [*表达式*](../chapter3/04_Expressions.html#expression) +> *字典字面量项* → [*表达式*](./04_Expressions.md#expression) **:** [*表达式*](./04_Expressions.md#expression) > @@ -896,9 +896,9 @@ > > *self 表达式* → **self** > -> *self 表达式* → **self** **.** [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> *self 表达式* → **self** **.** [*标识符*](./02_Lexical_Structure.md#identifier) > -> *self 表达式* → **self** **[** [*表达式*](../chapter3/04_Expressions.html#expression) **]** +> *self 表达式* → **self** **[** [*表达式*](./04_Expressions.md#expression) **]** > > *self 表达式* → **self** **.** **init** > @@ -907,11 +907,11 @@ > 超类表达式语法 > -> *超类表达式* → [*超类方法表达式*](../chapter3/04_Expressions.html#superclass_method_expression) | [*超类下标表达式*](../chapter3/04_Expressions.html#超类下标表达式) | [*超类构造器表达式*](../chapter3/04_Expressions.html#superclass_initializer_expression) +> *超类表达式* → [*超类方法表达式*](./04_Expressions.md#superclass_method_expression) | [*超类下标表达式*](./04_Expressions.md#超类下标表达式) | [*超类构造器表达式*](./04_Expressions.md#superclass_initializer_expression) > -> *超类方法表达式* → **super** **.** [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> *超类方法表达式* → **super** **.** [*标识符*](./02_Lexical_Structure.md#identifier) > -> *超类下标表达式* → **super** **[** [*表达式*](../chapter3/04_Expressions.html#expression) **]** +> *超类下标表达式* → **super** **[** [*表达式*](./04_Expressions.md#expression) **]** > > *超类构造器表达式* → **super** **.** **init** > @@ -920,19 +920,19 @@ > 闭包表达式语法 > -> *闭包表达式* → **{** [*闭包签名(Signational)*](../chapter3/04_Expressions.html#closure_signature) _可选_ [*多条语句(Statements)*](../chapter3/10_Statements.html#statements) **}** +> *闭包表达式* → **{** [*闭包签名(Signational)*](./04_Expressions.md#closure_signature) _可选_ [*多条语句(Statements)*](./10_Statements.md#statements) **}** > -> *闭包签名(Signational)* → [*参数从句*](../chapter3/05_Declarations.html#parameter_clause) [*函数结果*](../chapter3/05_Declarations.html#function_result) _可选_ **in** +> *闭包签名(Signational)* → [*参数从句*](./05_Declarations.md#parameter_clause) [*函数结果*](./05_Declarations.md#function_result) _可选_ **in** > -> *闭包签名(Signational)* → [*标识符集*](../chapter3/02_Lexical_Structure.html#identifier_list) [*函数结果*](../chapter3/05_Declarations.html#function_result) _可选_ **in** +> *闭包签名(Signational)* → [*标识符集*](./02_Lexical_Structure.md#identifier_list) [*函数结果*](./05_Declarations.md#function_result) _可选_ **in** > -> *闭包签名(Signational)* → [*捕获(Capature)集*](../chapter3/04_Expressions.html#capture_list) [*参数从句*](../chapter3/05_Declarations.html#parameter_clause) [*函数结果*](../chapter3/05_Declarations.html#function_result) _可选_ **in** +> *闭包签名(Signational)* → [*捕获(Capature)集*](./04_Expressions.md#capture_list) [*参数从句*](./05_Declarations.md#parameter_clause) [*函数结果*](./05_Declarations.md#function_result) _可选_ **in** > -> *闭包签名(Signational)* → [*捕获(Capature)集*](../chapter3/04_Expressions.html#capture_list) [*标识符集*](../chapter3/02_Lexical_Structure.html#identifier_list) [*函数结果*](../chapter3/05_Declarations.html#function_result) _可选_ **in** +> *闭包签名(Signational)* → [*捕获(Capature)集*](./04_Expressions.md#capture_list) [*标识符集*](./02_Lexical_Structure.md#identifier_list) [*函数结果*](./05_Declarations.md#function_result) _可选_ **in** > -> *闭包签名(Signational)* → [*捕获(Capature)集*](../chapter3/04_Expressions.html#capture_list) **in** +> *闭包签名(Signational)* → [*捕获(Capature)集*](./04_Expressions.md#capture_list) **in** > -> *捕获(Capature)集* → **[** [*捕获(Capature)说明符*](../chapter3/04_Expressions.html#capture_specifier) [*表达式*](../chapter3/04_Expressions.html#expression) **]** +> *捕获(Capature)集* → **[** [*捕获(Capature)说明符*](./04_Expressions.md#capture_specifier) [*表达式*](./04_Expressions.md#expression) **]** > > *捕获(Capature)说明符* → **weak** | **unowned** | **unowned(safe)** | **unowned(unsafe)** > @@ -941,18 +941,18 @@ > 隐式成员表达式语法 > -> *隐式成员表达式* → **.** [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> *隐式成员表达式* → **.** [*标识符*](./02_Lexical_Structure.md#identifier) > > 圆括号表达式(Parenthesized Expression)语法 > -> *圆括号表达式* → **(** [*表达式元素集*](../chapter3/04_Expressions.html#expression_element_list) _可选_ **)** +> *圆括号表达式* → **(** [*表达式元素集*](./04_Expressions.md#expression_element_list) _可选_ **)** > -> *表达式元素集* → [*表达式元素*](../chapter3/04_Expressions.html#expression_element) | [*表达式元素*](../chapter3/04_Expressions.html#expression_element) **,** [*表达式元素集*](../chapter3/04_Expressions.html#expression_element_list) +> *表达式元素集* → [*表达式元素*](./04_Expressions.md#expression_element) | [*表达式元素*](./04_Expressions.md#expression_element) **,** [*表达式元素集*](./04_Expressions.md#expression_element_list) > -> *表达式元素* → [*表达式*](../chapter3/04_Expressions.html#expression) | [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) **:** [*表达式*](../chapter3/04_Expressions.html#expression) +> *表达式元素* → [*表达式*](./04_Expressions.md#expression) | [*标识符*](./02_Lexical_Structure.md#identifier) **:** [*表达式*](./04_Expressions.md#expression) > @@ -966,87 +966,87 @@ > 后置表达式语法 > -> *后置表达式* → [*主表达式*](../chapter3/04_Expressions.html#primary_expression) +> *后置表达式* → [*主表达式*](./04_Expressions.md#primary_expression) > -> *后置表达式* → [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) [*后置运算符*](../chapter3/02_Lexical_Structure.html#postfix_operator) +> *后置表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) [*后置运算符*](./02_Lexical_Structure.md#postfix_operator) > -> *后置表达式* → [*函数调用表达式*](../chapter3/04_Expressions.html#function_call_expression) +> *后置表达式* → [*函数调用表达式*](./04_Expressions.md#function_call_expression) > -> *后置表达式* → [*构造器表达式*](../chapter3/04_Expressions.html#initializer_expression) +> *后置表达式* → [*构造器表达式*](./04_Expressions.md#initializer_expression) > -> *后置表达式* → [*显示成员表达式*](../chapter3/04_Expressions.html#explicit_member_expression) +> *后置表达式* → [*显示成员表达式*](./04_Expressions.md#explicit_member_expression) > -> *后置表达式* → [*后置 self 表达式*](../chapter3/04_Expressions.html#postfix_self_expression) +> *后置表达式* → [*后置 self 表达式*](./04_Expressions.md#postfix_self_expression) > -> *后置表达式* → [*动态类型表达式*](../chapter3/04_Expressions.html#dynamic_type_expression) +> *后置表达式* → [*动态类型表达式*](./04_Expressions.md#dynamic_type_expression) > -> *后置表达式* → [*下标表达式*](../chapter3/04_Expressions.html#subscript_expression) +> *后置表达式* → [*下标表达式*](./04_Expressions.md#subscript_expression) > -> *后置表达式* → [*强制取值(Forced Value)表达式*](../chapter3/04_Expressions.html#forced_value_expression) +> *后置表达式* → [*强制取值(Forced Value)表达式*](./04_Expressions.md#forced_value_expression) > -> *后置表达式* → [*可选链(Optional Chaining)表达式*](../chapter3/04_Expressions.html#optional_chaining_expression) +> *后置表达式* → [*可选链(Optional Chaining)表达式*](./04_Expressions.md#optional_chaining_expression) > > 函数调用表达式语法 > -> *函数调用表达式* → [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) [*圆括号表达式*](../chapter3/04_Expressions.html#parenthesized_expression) +> *函数调用表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) [*圆括号表达式*](./04_Expressions.md#parenthesized_expression) > -> *函数调用表达式* → [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) [*圆括号表达式*](../chapter3/04_Expressions.html#parenthesized_expression) _可选_ [*后置闭包(Trailing Closure)*](../chapter3/04_Expressions.html#trailing_closure) +> *函数调用表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) [*圆括号表达式*](./04_Expressions.md#parenthesized_expression) _可选_ [*后置闭包(Trailing Closure)*](./04_Expressions.md#trailing_closure) > -> *后置闭包(Trailing Closure)* → [*闭包表达式*](../chapter3/04_Expressions.html#closure_expression) +> *后置闭包(Trailing Closure)* → [*闭包表达式*](./04_Expressions.md#closure_expression) > > 构造器表达式语法 > -> *构造器表达式* → [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) **.** **init** +> *构造器表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **.** **init** > > 显式成员表达式语法 > -> *显示成员表达式* → [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) **.** [*十进制数字*](../chapter3/02_Lexical_Structure.html#decimal_digit) +> *显示成员表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **.** [*十进制数字*](./02_Lexical_Structure.md#decimal_digit) > -> *显示成员表达式* → [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) **.** [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) [*泛型参数从句*](GenericParametersAndArguments.html#generic_argument_clause) _可选_ +> *显示成员表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **.** [*标识符*](./02_Lexical_Structure.md#identifier) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_argument_clause) _可选_ > > 后置 Self 表达式语法 > -> *后置 self 表达式* → [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) **.** **self** +> *后置 self 表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **.** **self** > > 动态类型表达式语法 > -> *动态类型表达式* → [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) **.** **dynamicType** +> *动态类型表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **.** **dynamicType** > > 附属脚本表达式语法 > -> *附属脚本表达式* → [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) **[** [*表达式集*](../chapter3/04_Expressions.html#expression_list) **]** +> *附属脚本表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **[** [*表达式集*](./04_Expressions.md#expression_list) **]** > > 强制取值(Forced Value)语法 > -> *强制取值(Forced Value)表达式* → [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) **!** +> *强制取值(Forced Value)表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **!** > > 可选链表达式语法 > -> *可选链表达式* → [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression) **?** +> *可选链表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **?** > @@ -1054,13 +1054,13 @@ > 标识符语法 > -> *标识符* → [*标识符头(Head)*](../chapter3/02_Lexical_Structure.html#identifier_head) [*标识符字符集*](../chapter3/02_Lexical_Structure.html#identifier_characters) _可选_ +> *标识符* → [*标识符头(Head)*](./02_Lexical_Structure.md#identifier_head) [*标识符字符集*](./02_Lexical_Structure.md#identifier_characters) _可选_ > -> *标识符* → [*标识符头(Head)*](../chapter3/02_Lexical_Structure.html#identifier_head) [*标识符字符集*](../chapter3/02_Lexical_Structure.html#identifier_characters) _可选_ +> *标识符* → [*标识符头(Head)*](./02_Lexical_Structure.md#identifier_head) [*标识符字符集*](./02_Lexical_Structure.md#identifier_characters) _可选_ > -> *标识符* → [*隐式参数名*](../chapter3/02_Lexical_Structure.html#implicit_parameter_name) +> *标识符* → [*隐式参数名*](./02_Lexical_Structure.md#implicit_parameter_name) > -> *标识符集* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) | [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) **,** [*标识符集*](../chapter3/02_Lexical_Structure.html#identifier_list) +> *标识符集* → [*标识符*](./02_Lexical_Structure.md#identifier) | [*标识符*](./02_Lexical_Structure.md#identifier) **,** [*标识符集*](./02_Lexical_Structure.md#identifier_list) > > *标识符头(Head)* → Upper- or lowercase letter A through Z > @@ -1098,18 +1098,18 @@ > > *标识符字符* → U+0300–U+036F, U+1DC0–U+1DFF, U+20D0–U+20FF, or U+FE20–U+FE2F > -> *标识符字符* → [*标识符头(Head)*](../chapter3/02_Lexical_Structure.html#identifier_head) +> *标识符字符* → [*标识符头(Head)*](./02_Lexical_Structure.md#identifier_head) > -> *标识符字符集* → [*标识符字符*](../chapter3/02_Lexical_Structure.html#identifier_character) [*标识符字符集*](../chapter3/02_Lexical_Structure.html#identifier_characters) _可选_ +> *标识符字符集* → [*标识符字符*](./02_Lexical_Structure.md#identifier_character) [*标识符字符集*](./02_Lexical_Structure.md#identifier_characters) _可选_ > -> *隐式参数名* → **$** [*十进制数字集*](../chapter3/02_Lexical_Structure.html#decimal_digits) +> *隐式参数名* → **$** [*十进制数字集*](./02_Lexical_Structure.md#decimal_digits) > > 字面量语法 > -> *字面量* → [*数值型字面量*](../chapter3/02_Lexical_Structure.html#integer_literal) | [*字符串字面量*](../chapter3/02_Lexical_Structure.html#floating_point_literal) | [*布尔字面量*](../chapter3/02_Lexical_Structure.html#string_literal) | [*空字面量*](TODO) +> *字面量* → [*数值型字面量*](./02_Lexical_Structure.md#integer_literal) | [*字符串字面量*](./02_Lexical_Structure.md#floating_point_literal) | [*布尔字面量*](./02_Lexical_Structure.md#string_literal) | [*空字面量*](TODO) > > *数值型字面量* → **-** _可选_ [*整形字面量*](TODO) | **-** _可选_ [*浮点型字面量*](TODO) > @@ -1122,65 +1122,65 @@ > 整型字面量语法 > -> *整型字面量* → [*二进制字面量*](../chapter3/02_Lexical_Structure.html#binary_literal) +> *整型字面量* → [*二进制字面量*](./02_Lexical_Structure.md#binary_literal) > -> *整型字面量* → [*八进制字面量*](../chapter3/02_Lexical_Structure.html#octal_literal) +> *整型字面量* → [*八进制字面量*](./02_Lexical_Structure.md#octal_literal) > -> *整型字面量* → [*十进制字面量*](../chapter3/02_Lexical_Structure.html#decimal_literal) +> *整型字面量* → [*十进制字面量*](./02_Lexical_Structure.md#decimal_literal) > -> *整型字面量* → [*十六进制字面量*](../chapter3/02_Lexical_Structure.html#hexadecimal_literal) +> *整型字面量* → [*十六进制字面量*](./02_Lexical_Structure.md#hexadecimal_literal) > -> *二进制字面量* → **0b** [*二进制数字*](../chapter3/02_Lexical_Structure.html#binary_digit) [*二进制字面量字符集*](../chapter3/02_Lexical_Structure.html#binary_literal_characters) _可选_ +> *二进制字面量* → **0b** [*二进制数字*](./02_Lexical_Structure.md#binary_digit) [*二进制字面量字符集*](./02_Lexical_Structure.md#binary_literal_characters) _可选_ > > *二进制数字* → 数值 0 到 1 > -> *二进制字面量字符* → [*二进制数字*](../chapter3/02_Lexical_Structure.html#binary_digit) | **_** +> *二进制字面量字符* → [*二进制数字*](./02_Lexical_Structure.md#binary_digit) | **_** > -> *二进制字面量字符集* → [*二进制字面量字符*](../chapter3/02_Lexical_Structure.html#binary_literal_character) [*二进制字面量字符集*](../chapter3/02_Lexical_Structure.html#binary_literal_characters) _可选_ +> *二进制字面量字符集* → [*二进制字面量字符*](./02_Lexical_Structure.md#binary_literal_character) [*二进制字面量字符集*](./02_Lexical_Structure.md#binary_literal_characters) _可选_ > -> *八进制字面量* → **0o** [*八进制数字*](../chapter3/02_Lexical_Structure.html#octal_digit) [*八进制字符集*](../chapter3/02_Lexical_Structure.html#octal_literal_characters) _可选_ +> *八进制字面量* → **0o** [*八进制数字*](./02_Lexical_Structure.md#octal_digit) [*八进制字符集*](./02_Lexical_Structure.md#octal_literal_characters) _可选_ > > *八进字数字* → 数值 0 到 7 > -> *八进制字符* → [*八进制数字*](../chapter3/02_Lexical_Structure.html#octal_digit) | **_** +> *八进制字符* → [*八进制数字*](./02_Lexical_Structure.md#octal_digit) | **_** > -> *八进制字符集* → [*八进制字符*](../chapter3/02_Lexical_Structure.html#octal_literal_character) [*八进制字符集*](../chapter3/02_Lexical_Structure.html#octal_literal_characters) _可选_ +> *八进制字符集* → [*八进制字符*](./02_Lexical_Structure.md#octal_literal_character) [*八进制字符集*](./02_Lexical_Structure.md#octal_literal_characters) _可选_ > -> *十进制字面量* → [*十进制数字*](../chapter3/02_Lexical_Structure.html#decimal_digit) [*十进制字符集*](../chapter3/02_Lexical_Structure.html#decimal_literal_characters) _可选_ +> *十进制字面量* → [*十进制数字*](./02_Lexical_Structure.md#decimal_digit) [*十进制字符集*](./02_Lexical_Structure.md#decimal_literal_characters) _可选_ > > *十进制数字* → 数值 0 到 9 > -> *十进制数字集* → [*十进制数字*](../chapter3/02_Lexical_Structure.html#decimal_digit) [*十进制数字集*](../chapter3/02_Lexical_Structure.html#decimal_digits) _可选_ +> *十进制数字集* → [*十进制数字*](./02_Lexical_Structure.md#decimal_digit) [*十进制数字集*](./02_Lexical_Structure.md#decimal_digits) _可选_ > -> *十进制字面量字符* → [*十进制数字*](../chapter3/02_Lexical_Structure.html#decimal_digit) | **_** +> *十进制字面量字符* → [*十进制数字*](./02_Lexical_Structure.md#decimal_digit) | **_** > -> *十进制字面量字符集* → [*十进制字面量字符*](../chapter3/02_Lexical_Structure.html#decimal_literal_character) [*十进制字面量字符集*](../chapter3/02_Lexical_Structure.html#decimal_literal_characters) _可选_ +> *十进制字面量字符集* → [*十进制字面量字符*](./02_Lexical_Structure.md#decimal_literal_character) [*十进制字面量字符集*](./02_Lexical_Structure.md#decimal_literal_characters) _可选_ > -> *十六进制字面量* → **0x** [*十六进制数字*](../chapter3/02_Lexical_Structure.html#hexadecimal_digit) [*十六进制字面量字符集*](../chapter3/02_Lexical_Structure.html#hexadecimal_literal_characters) _可选_ +> *十六进制字面量* → **0x** [*十六进制数字*](./02_Lexical_Structure.md#hexadecimal_digit) [*十六进制字面量字符集*](./02_Lexical_Structure.md#hexadecimal_literal_characters) _可选_ > > *十六进制数字* → 数值 0 到 9, a through f, or A through F > -> *十六进制字符* → [*十六进制数字*](../chapter3/02_Lexical_Structure.html#hexadecimal_digit) | **_** +> *十六进制字符* → [*十六进制数字*](./02_Lexical_Structure.md#hexadecimal_digit) | **_** > -> *十六进制字面量字符集* → [*十六进制字符*](../chapter3/02_Lexical_Structure.html#hexadecimal_literal_character) [*十六进制字面量字符集*](../chapter3/02_Lexical_Structure.html#hexadecimal_literal_characters) _可选_ +> *十六进制字面量字符集* → [*十六进制字符*](./02_Lexical_Structure.md#hexadecimal_literal_character) [*十六进制字面量字符集*](./02_Lexical_Structure.md#hexadecimal_literal_characters) _可选_ > > 浮点型字面量语法 > -> *浮点数字面量* → [*十进制字面量*](../chapter3/02_Lexical_Structure.html#decimal_literal) [*十进制分数*](../chapter3/02_Lexical_Structure.html#decimal_fraction) _可选_ [*十进制指数*](../chapter3/02_Lexical_Structure.html#decimal_exponent) _可选_ +> *浮点数字面量* → [*十进制字面量*](./02_Lexical_Structure.md#decimal_literal) [*十进制分数*](./02_Lexical_Structure.md#decimal_fraction) _可选_ [*十进制指数*](./02_Lexical_Structure.md#decimal_exponent) _可选_ > -> *浮点数字面量* → [*十六进制字面量*](../chapter3/02_Lexical_Structure.html#hexadecimal_literal) [*十六进制分数*](../chapter3/02_Lexical_Structure.html#hexadecimal_fraction) _可选_ [*十六进制指数*](../chapter3/02_Lexical_Structure.html#hexadecimal_exponent) +> *浮点数字面量* → [*十六进制字面量*](./02_Lexical_Structure.md#hexadecimal_literal) [*十六进制分数*](./02_Lexical_Structure.md#hexadecimal_fraction) _可选_ [*十六进制指数*](./02_Lexical_Structure.md#hexadecimal_exponent) > -> *十进制分数* → **.** [*十进制字面量*](../chapter3/02_Lexical_Structure.html#decimal_literal) +> *十进制分数* → **.** [*十进制字面量*](./02_Lexical_Structure.md#decimal_literal) > -> *十进制指数* → [*浮点数 e*](../chapter3/02_Lexical_Structure.html#floating_point_e) [*正负号*](../chapter3/02_Lexical_Structure.html#sign) _可选_ [*十进制字面量*](../chapter3/02_Lexical_Structure.html#decimal_literal) +> *十进制指数* → [*浮点数 e*](./02_Lexical_Structure.md#floating_point_e) [*正负号*](./02_Lexical_Structure.md#sign) _可选_ [*十进制字面量*](./02_Lexical_Structure.md#decimal_literal) > -> *十六进制分数* → **.** [*十六进制数*](../chapter3/02_Lexical_Structure.html#hexadecimal_literal) +> *十六进制分数* → **.** [*十六进制数*](./02_Lexical_Structure.md#hexadecimal_literal) > [*十六进制字面量字符集*](TODO)_可选_ -> *十六进制指数* → [*浮点数 p*](../chapter3/02_Lexical_Structure.html#floating_point_p) [*正负号*](../chapter3/02_Lexical_Structure.html#sign) _可选_ [*十六进制字面量*](../chapter3/02_Lexical_Structure.html#hexadecimal_literal) +> *十六进制指数* → [*浮点数 p*](./02_Lexical_Structure.md#floating_point_p) [*正负号*](./02_Lexical_Structure.md#sign) _可选_ [*十六进制字面量*](./02_Lexical_Structure.md#hexadecimal_literal) > > *浮点数 e* → **e** | **E** > @@ -1193,13 +1193,13 @@ > 字符串型字面量语法 > -> *字符串字面量* → **"** [*引用文本*](../chapter3/02_Lexical_Structure.html#quoted_text) **"** +> *字符串字面量* → **"** [*引用文本*](./02_Lexical_Structure.md#quoted_text) **"** > -> *引用文本* → [*引用文本条目*](../chapter3/02_Lexical_Structure.html#quoted_text_item) [*引用文本*](../chapter3/02_Lexical_Structure.html#quoted_text) _可选_ +> *引用文本* → [*引用文本条目*](./02_Lexical_Structure.md#quoted_text_item) [*引用文本*](./02_Lexical_Structure.md#quoted_text) _可选_ > -> *引用文本条目* → [*转义字符*](../chapter3/02_Lexical_Structure.html#escaped_character) +> *引用文本条目* → [*转义字符*](./02_Lexical_Structure.md#escaped_character) > -> *引用文本条目* → **(** [*表达式*](../chapter3/04_Expressions.html#expression) **)** +> *引用文本条目* → **(** [*表达式*](./04_Expressions.md#expression) **)** > > *引用文本条目* → 除了"­, \­, U+000A, or U+000D 的所有 Unicode 的字符 > @@ -1214,7 +1214,7 @@ > 运算符语法语法 > -> *运算符* → [*运算符头*](../chapter3/02_Lexical_Structure.html#operator_character) [*运算符字符集*](../chapter3/02_Lexical_Structure.html#operator) _可选_ +> *运算符* → [*运算符头*](./02_Lexical_Structure.md#operator_character) [*运算符字符集*](./02_Lexical_Structure.md#operator) _可选_ > > *运算符* → [*点运算符头*](TODO) [*点运算符字符集*](TODO) _可选_ > @@ -1270,11 +1270,11 @@ > > *点运算符字符集* → [*点运算符字符*](TODO) [*点运算符字符集*](TODO) _可选_ > -> *二元运算符* → [*运算符*](../chapter3/02_Lexical_Structure.html#operator) +> *二元运算符* → [*运算符*](./02_Lexical_Structure.md#operator) > -> *前置运算符* → [*运算符*](../chapter3/02_Lexical_Structure.html#operator) +> *前置运算符* → [*运算符*](./02_Lexical_Structure.md#operator) > -> *后置运算符* → [*运算符*](../chapter3/02_Lexical_Structure.html#operator) +> *后置运算符* → [*运算符*](./02_Lexical_Structure.md#operator) > @@ -1282,45 +1282,45 @@ > 类型语法 > -> *类型* → [*数组类型*](../chapter3/03_Types.html#array_type) | [*字典类型*](TODO) | [*函数类型*](../chapter3/03_Types.html#function_type) | [*类型标识符*](../chapter3/03_Types.html#type_identifier) | [*元组类型*](../chapter3/03_Types.html#tuple_type) | [*可选类型*](../chapter3/03_Types.html#optional_type) | [*隐式解析可选类型*](../chapter3/03_Types.html#implicitly_unwrapped_optional_type) | [*协议合成类型*](../chapter3/03_Types.html#protocol_composition_type) | [*元型类型*](../chapter3/03_Types.html#metatype_type) +> *类型* → [*数组类型*](./03_Types.md#array_type) | [*字典类型*](./TODO) | [*函数类型*](./03_Types.md#function_type) | [*类型标识符*](./03_Types.md#type_identifier) | [*元组类型*](./03_Types.md#tuple_type) | [*可选类型*](./03_Types.md#optional_type) | [*隐式解析可选类型*](./03_Types.md#implicitly_unwrapped_optional_type) | [*协议合成类型*](./03_Types.md#protocol_composition_type) | [*元型类型*](./03_Types.md#metatype_type) > > 类型注解语法 > -> *类型注解* → **:** [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ [*类型*](../chapter3/03_Types.html#type) +> *类型注解* → **:** [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*类型*](./03_Types.md#type) > > 类型标识语法 > -> *类型标识* → [*类型名称*](../chapter3/03_Types.html#type_name) [*泛型参数从句*](GenericParametersAndArguments.html#generic_argument_clause) _可选_ | [*类型名称*](../chapter3/03_Types.html#type_name) [*泛型参数从句*](GenericParametersAndArguments.html#generic_argument_clause) _可选_ **.** [*类型标识符*](../chapter3/03_Types.html#type_identifier) +> *类型标识* → [*类型名称*](./03_Types.md#type_name) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_argument_clause) _可选_ | [*类型名称*](./03_Types.md#type_name) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_argument_clause) _可选_ **.** [*类型标识符*](./03_Types.md#type_identifier) > -> *类型名* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> *类型名* → [*标识符*](./02_Lexical_Structure.md#identifier) > > 元组类型语法 > -> *元组类型* → **(** [*元组类型主体*](../chapter3/03_Types.html#tuple_type_body) _可选_ **)** +> *元组类型* → **(** [*元组类型主体*](./03_Types.md#tuple_type_body) _可选_ **)** > -> *元组类型主体* → [*元组类型的元素集*](../chapter3/03_Types.html#tuple_type_element_list) **...** _可选_ +> *元组类型主体* → [*元组类型的元素集*](./03_Types.md#tuple_type_element_list) **...** _可选_ > -> *元组类型的元素集* → [*元组类型的元素*](../chapter3/03_Types.html#tuple_type_element) | [*元组类型的元素*](../chapter3/03_Types.html#tuple_type_element) **,** [*元组类型的元素集*](../chapter3/03_Types.html#tuple_type_element_list) +> *元组类型的元素集* → [*元组类型的元素*](./03_Types.md#tuple_type_element) | [*元组类型的元素*](./03_Types.md#tuple_type_element) **,** [*元组类型的元素集*](./03_Types.md#tuple_type_element_list) > -> *元组类型的元素* → [*属性(Attributes)集*](../chapter3/06_Attributes.html#attributes) _可选_ **inout** _可选_ [*类型*](../chapter3/03_Types.html#type) | **inout** _可选_ [*元素名*](../chapter3/03_Types.html#element_name) [*类型注解*](../chapter3/03_Types.html#type_annotation) +> *元组类型的元素* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ **inout** _可选_ [*类型*](./03_Types.md#type) | **inout** _可选_ [*元素名*](./03_Types.md#element_name) [*类型注解*](./03_Types.md#type_annotation) > -> *元素名* → [*标识符*](../chapter3/02_Lexical_Structure.html#identifier) +> *元素名* → [*标识符*](./02_Lexical_Structure.md#identifier) > > 函数类型语法 > -> *函数类型* → [*类型*](../chapter3/03_Types.html#type) **throws** _可选_ **->** [*类型*](../chapter3/03_Types.html#type) +> *函数类型* → [*类型*](./03_Types.md#type) **throws** _可选_ **->** [*类型*](./03_Types.md#type) > > *函数类型* → [*类型*](TODO) **rethrows** **->** [*类型*](TODO) > @@ -1329,7 +1329,7 @@ > 数组类型语法 > -> *数组类型* → **[** [*类型*](../chapter3/03_Types.html#array_type) **]** +> *数组类型* → **[** [*类型*](./03_Types.md#array_type) **]** > @@ -1342,45 +1342,45 @@ > 可选类型语法 > -> *可选类型* → [*类型*](../chapter3/03_Types.html#type) **?** +> *可选类型* → [*类型*](./03_Types.md#type) **?** > > 隐式解析可选类型(Implicitly Unwrapped Optional Type)语法 > -> *隐式解析可选类型* → [*类型*](../chapter3/03_Types.html#type) **!** +> *隐式解析可选类型* → [*类型*](./03_Types.md#type) **!** > > 协议合成类型语法 > -> *协议合成类型* → **protocol** **<** [*协议标识符集*](../chapter3/03_Types.html#protocol_identifier_list) _可选_ **>** +> *协议合成类型* → **protocol** **<** [*协议标识符集*](./03_Types.md#protocol_identifier_list) _可选_ **>** > -> *协议标识符集* → [*协议标识符*](../chapter3/03_Types.html#protocol_identifier) | [*协议标识符*](../chapter3/03_Types.html#protocol_identifier) **,** [*协议标识符集*](../chapter3/03_Types.html#protocol_identifier_list) +> *协议标识符集* → [*协议标识符*](./03_Types.md#protocol_identifier) | [*协议标识符*](./03_Types.md#protocol_identifier) **,** [*协议标识符集*](./03_Types.md#protocol_identifier_list) > -> *协议标识符* → [*类型标识符*](../chapter3/03_Types.html#type_identifier) +> *协议标识符* → [*类型标识符*](./03_Types.md#type_identifier) > > 元(Metatype)类型语法 > -> *元类型* → [*类型*](../chapter3/03_Types.html#type) **.** **Type** | [*类型*](../chapter3/03_Types.html#type) **.** **Protocol** +> *元类型* → [*类型*](./03_Types.md#type) **.** **Type** | [*类型*](./03_Types.md#type) **.** **Protocol** > > 类型继承从句语法 > -> *类型继承从句* → **:** [*类条件(class-requirement))*](TODO) **,** [*类型继承集*](../chapter3/03_Types.html#type_inheritance_list) +> *类型继承从句* → **:** [*类条件(class-requirement))*](./TODO) **,** [*类型继承集*](./03_Types.md#type_inheritance_list) > > *类型继承从句* → **:** [*类条件(class-requirement))*](TODO) > > *类型继承从句* → **:** [*类型继承集*](TODO) > -> *类型继承集* → [*类型标识符*](../chapter3/03_Types.html#type_identifier) | [*类型标识符*](../chapter3/03_Types.html#type_identifier) **,** [*类型继承集*](../chapter3/03_Types.html#type_inheritance_list) +> *类型继承集* → [*类型标识符*](./03_Types.md#type_identifier) | [*类型标识符*](./03_Types.md#type_identifier) **,** [*类型继承集*](./03_Types.md#type_inheritance_list) > > *类条件* → **class** > From 5fca0fa7040945545de2e13ec1c3d766fc28aa1e Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Tue, 26 Mar 2019 23:25:08 -0500 Subject: [PATCH 054/107] fix chapter 3 relative links --- .../01_About_the_Language_Reference.md | 6 +- source/chapter3/02_Lexical_Structure.md | 8 +- source/chapter3/03_Types.md | 16 +- source/chapter3/04_Expressions.md | 34 +- source/chapter3/05_Statements.md | 35 +- source/chapter3/06_Declarations.md | 148 ++++---- source/chapter3/07_Attributes.md | 8 +- source/chapter3/08_Patterns.md | 10 +- .../09_Generic_Parameters_and_Arguments.md | 2 +- source/chapter3/10_Summary_of_the_Grammar.md | 358 +++++++++--------- 10 files changed, 313 insertions(+), 312 deletions(-) diff --git a/source/chapter3/01_About_the_Language_Reference.md b/source/chapter3/01_About_the_Language_Reference.md index 48518c7c..fa2d96f2 100755 --- a/source/chapter3/01_About_the_Language_Reference.md +++ b/source/chapter3/01_About_the_Language_Reference.md @@ -20,14 +20,14 @@ Swift 语言相对较小,这是由于 Swift 代码中常用的类型、函数 > getter-setter 方法块语法 > -> *getter-setter 方法块* → { [*getter 子句*](./05_Declarations.md#getter-clause) [*setter 子句*](./05_Declarations.md#setter-clause)可选 } | { [*setter 子句*](./05_Declarations.md#setter-clause) [*getter 子句*](./05_Declarations.md#getter-clause) } +> *getter-setter 方法块* → { [*getter 子句*](./06_Declarations.md#getter-clause) [*setter 子句*](./06_Declarations.md#setter-clause)可选 } | { [*setter 子句*](./06_Declarations.md#setter-clause) [*getter 子句*](./06_Declarations.md#getter-clause) } > 这个定义表明,一个 getter-setter 方法块可以由一个 getter 分句后跟一个可选的 setter 分句构成,然后用大括号括起来,或者由一个 setter 分句后跟一个 getter 分句构成,然后用大括号括起来。上述的语法产式等价于下面的两个语法产式, : > getter-setter 方法块语法 > -> getter-setter 方法块 → { [*getter 子句*](./05_Declarations.md#getter-clause) [*setter 子句*](./05_Declarations.md#setter-clause)可选 } +> getter-setter 方法块 → { [*getter 子句*](./06_Declarations.md#getter-clause) [*setter 子句*](./06_Declarations.md#setter-clause)可选 } > -> getter-setter 方法块 → { [*setter 子句*](./05_Declarations.md#setter-clause) [*getter 子句*](./05_Declarations.md#getter-clause) } +> getter-setter 方法块 → { [*setter 子句*](./06_Declarations.md#setter-clause) [*getter 子句*](./06_Declarations.md#getter-clause) } > diff --git a/source/chapter3/02_Lexical_Structure.md b/source/chapter3/02_Lexical_Structure.md index d7d48b07..5a0a412c 100755 --- a/source/chapter3/02_Lexical_Structure.md +++ b/source/chapter3/02_Lexical_Structure.md @@ -52,7 +52,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > *多行注释内容项* → 任何 Unicode 标量值, 除了 `/*` 或者 `*/` > -注释可以包含额外的格式和标记,正如 [*Markup Formatting Reference*](./https://developer.apple.com/library/prerelease/ios/documentation/Xcode/Reference/xcode_markup_formatting_ref/index.md#//apple_ref/doc/uid/TP40016497) 所述。 +注释可以包含额外的格式和标记,正如 [*Markup Formatting Reference*](https://developer.apple.com/library/archive/documentation/Xcode/Reference/xcode_markup_formatting_ref/index.html) 所述。 ## 标识符 @@ -374,7 +374,7 @@ true // 布尔值字面量 let x = 3; "1 2 \(x)" ``` -字符串字面量的默认推导类型为 `String`。更多有关 `String` 类型的信息请参考 [字符串和字符](../chapter2/03_Strings_and_Characters.md) 以及 [*字符串结构参考*](./https://developer.apple.com/library/prerelease/ios/documentation/Swift/Reference/Swift_String_Structure/index.md#//apple_ref/doc/uid/TP40015181)。 +字符串字面量的默认推导类型为 `String`。更多有关 `String` 类型的信息请参考 [字符串和字符](../chapter2/03_Strings_and_Characters.md) 以及 [*字符串结构参考*](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Reference/Swift_String_Structure/index.md#//apple_ref/doc/uid/TP40015181)。 用 `+` 操作符连接的字符型字面量是在编译时进行连接的。比如下面的 `textA` 和 `textB` 是完全一样的,`textA` 没有任何运行时的连接操作。 @@ -428,7 +428,7 @@ let textB = "Hello world" ## 运算符 -Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基础运算符](../chapter2/02_Basic_Operators.md) 和 [高级运算符](../chapter2/25_Advanced_Operators.md) 中进行了阐述。这一小节将描述哪些字符能用于自定义运算符。 +Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基础运算符](../chapter2/02_Basic_Operators.md) 和 [高级运算符](../chapter2/26_Advanced_Operators.md) 中进行了阐述。这一小节将描述哪些字符能用于自定义运算符。 自定义运算符可以由以下其中之一的 ASCII 字符 `/`、`=`、`-`、`+`、`!`、`*`、`%`、`<`、`>`、`&`、`|`、`^`、`?` 以及 `~`,或者后面语法中规定的任一个 Unicode 字符(其中包含了*数学运算符*、*零散符号(Miscellaneous Symbols)* 以及印刷符号(Dingbats)之类的 Unicode 块)开始。在第一个字符之后,允许使用组合型 Unicode 字符。 @@ -454,7 +454,7 @@ Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基 在某些特定的设计中 ,以 `<` 或 `>` 开头的运算符会被分离成两个或多个符号,剩余部分可能会以同样的方式被再次分离。因此,在 `Dictionary>` 中没有必要添加空白来消除闭合字符 `>` 的歧义。在这个例子中, 闭合字符 `>` 不会被视为单独的符号,因而不会被错误解析为 `>>` 运算符。 -要学习如何自定义运算符,请参考 [自定义运算符](../chapter2/25_Advanced_Operators.md#custom_operators) 和 [运算符声明](./05_Declarations.md#operator_declaration)。要学习如何重载运算符,请参考 [运算符函数](../chapter2/25_Advanced_Operators.md#operator_functions)。 +要学习如何自定义运算符,请参考 [自定义运算符](../chapter2/26_Advanced_Operators.md#custom_operators) 和 [运算符声明](./06_Declarations.md#operator_declaration)。要学习如何重载运算符,请参考 [运算符函数](../chapter2/26_Advanced_Operators.md#operator_functions)。 > 运算符语法 > diff --git a/source/chapter3/03_Types.md b/source/chapter3/03_Types.md index 29a5d3df..b5a139d9 100644 --- a/source/chapter3/03_Types.md +++ b/source/chapter3/03_Types.md @@ -17,7 +17,7 @@ Swift 语言存在两种类型:命名型类型和复合型类型。命名型类型是指定义时可以给定名字的类型。命名型类型包括类、结构体、枚举和协议。比如,一个用户定义的类 `MyClass` 的实例拥有类型 `MyClass`。除了用户定义的命名型类型,Swift 标准库也定义了很多常用的命名型类型,包括那些表示数组、字典和可选值的类型。 -那些通常被其它语言认为是基本或原始的数据型类型,比如表示数字、字符和字符串的类型,实际上就是命名型类型,这些类型在 Swift 标准库中是使用结构体来定义和实现的。因为它们是命名型类型,因此你可以按照 [扩展](../chapter2/21_Extensions.md) 和 [扩展声明](./05_Declarations.md#extension_declaration) 中讨论的那样,声明一个扩展来增加它们的行为以满足你程序的需求。 +那些通常被其它语言认为是基本或原始的数据型类型,比如表示数字、字符和字符串的类型,实际上就是命名型类型,这些类型在 Swift 标准库中是使用结构体来定义和实现的。因为它们是命名型类型,因此你可以按照 [扩展](../chapter2/20_Extensions.md) 和 [扩展声明](./06_Declarations.md#extension_declaration) 中讨论的那样,声明一个扩展来增加它们的行为以满足你程序的需求。 复合型类型是没有名字的类型,它由 Swift 本身定义。Swift 存在两种复合型类型:函数类型和元组类型。一个复合型类型可以包含命名型类型和其它复合型类型。例如,元组类型 `(Int, (Int, Int))` 包含两个元素:第一个是命名型类型 `Int`,第二个是另一个复合型类型 `(Int, Int)`。 @@ -70,7 +70,7 @@ func someFunction(a: Int) { /* ... */ } > 类型注解语法 > -> *类型注解* → **:** [*特性列表*](./06_Attributes.md#attributes)可选 **输入输出参数**可选 [*类型*](#type) +> *类型注解* → **:** [*特性列表*](./07_Attributes.md#attributes)可选 **输入输出参数**可选 [*类型*](#type) > @@ -96,7 +96,7 @@ var someValue: ExampleModule.MyType > 类型标识符语法 > -> *类型标识符* → [*类型名称*](./#type-name) [*泛型参数子句*](08_Generic_Parameters_and_Arguments.md#generic_argument_clause)可选 | [*类型名称*](./#type-name) [*泛型参数子句*](08_Generic_Parameters_and_Arguments.md#generic_argument_clause)可选 **.** [*类型标识符*](#type-identifier) +> *类型标识符* → [*类型名称*](#type-name) [*泛型参数子句*](08_Generic_Parameters_and_Arguments.md#generic_argument_clause)可选 | [*类型名称*](#type-name) [*泛型参数子句*](08_Generic_Parameters_and_Arguments.md#generic_argument_clause)可选 **.** [*类型标识符*](#type-identifier) > > *类型名称* → [*标识符*](./02_Lexical_Structure.md#identifier) @@ -188,7 +188,7 @@ var operation: (Int, Int) -> Int // 正确 如果一个函数类型包涵多个箭头(->),那么函数类型将从右向左进行组合。例如,函数类型 `Int -> Int -> Int` 可以理解为 `Int -> (Int -> Int)`,也就是说,该函数类型的参数为 `Int` 类型,其返回类型是一个参数类型为 `Int`,返回类型为 `Int` 的函数类型。 > -函数类型若要抛出错误就必须使用 `throws` 关键字来标记,若要重抛错误则必须使用 `rethrows` 关键字来标记。`throws` 关键字是函数类型的一部分,非抛出函数是抛出函数函数的一个子类型。因此,在使用抛出函数的地方也可以使用不抛出函数。抛出和重抛函数的相关描述见章节 [抛出函数与方法](./05_Declarations.md#throwing_functions_and_methods) 和 [重抛函数与方法](./05_Declarations.md#rethrowing_functions_and_methods)。 +函数类型若要抛出错误就必须使用 `throws` 关键字来标记,若要重抛错误则必须使用 `rethrows` 关键字来标记。`throws` 关键字是函数类型的一部分,非抛出函数是抛出函数函数的一个子类型。因此,在使用抛出函数的地方也可以使用不抛出函数。抛出和重抛函数的相关描述见章节 [抛出函数与方法](./06_Declarations.md#throwing_functions_and_methods) 和 [重抛函数与方法](./06_Declarations.md#rethrowing_functions_and_methods)。 ### 对非逃逸闭包的限制 @@ -220,9 +220,9 @@ func takesTwoFunctions(first: (Any) -> Void, second: (Any) -> Void) { > 函数类型语法 > -> *函数类型* → [*特性列表*](./06_Attributes.md#attributes)可选 [*函数类型子句*](#function-type-argument-clause) **throws**可选 **->** [*类型*](#type) +> *函数类型* → [*特性列表*](./07_Attributes.md#attributes)可选 [*函数类型子句*](#function-type-argument-clause) **throws**可选 **->** [*类型*](#type) > -> *函数类型* → [*特性列表*](./06_Attributes.md#attributes)可选 [*函数类型子句*](#function-type-argument-clause) **rethrows­** **->** [*类型*](#type) +> *函数类型* → [*特性列表*](./07_Attributes.md#attributes)可选 [*函数类型子句*](#function-type-argument-clause) **rethrows­** **->** [*类型*](#type) > > *函数类型子句* → (­)­ @@ -233,7 +233,7 @@ func takesTwoFunctions(first: (Any) -> Void, second: (Any) -> Void) { > *函数类型参数列表* → [*函数类型参数*](function-type-argument) | [*函数类型参数*](function-type-argument), [*函数类型参数列表*](#function-type-argument-list) > -> *函数类型参数* → [*特性列表*](./06_Attributes.md#attributes)可选 **输入输出参数**可选 [*类型*](#type) | [*参数标签*](#argument-label) [*类型注解*](#type-annotation) +> *函数类型参数* → [*特性列表*](./07_Attributes.md#attributes)可选 **输入输出参数**可选 [*类型*](#type) | [*参数标签*](#argument-label) [*类型注解*](#type-annotation) > > *参数标签* → [*标识符*](./02_Lexical_Structure.md#identifier) @@ -456,7 +456,7 @@ let anotherInstance = metatype.init(string: "some string") 类可以继承单个超类,采纳任意数量的协议。当定义一个类时,超类的名字必须出现在类型标识符列表首位,然后跟上该类需要采纳的任意数量的协议。如果一个类不是从其它类继承而来,那么列表可以以协议开头。关于类继承更多的讨论和例子,请参阅 [继承](../chapter2/13_Inheritance.md)。 -其它命名型类型可能只继承或采纳一系列协议。协议类型可以继承自任意数量的其他协议。当一个协议类型继承自其它协议时,其它协议中定义的要求会被整合在一起,然后从当前协议继承的任意类型必须符合所有这些条件。正如在 [协议声明](./05_Declarations.md#protocol_declaration) 中所讨论的那样,可以把 `class` 关键字放到协议类型的类型继承子句的首位,这样就可以声明一个类类型专属协议。 +其它命名型类型可能只继承或采纳一系列协议。协议类型可以继承自任意数量的其他协议。当一个协议类型继承自其它协议时,其它协议中定义的要求会被整合在一起,然后从当前协议继承的任意类型必须符合所有这些条件。正如在 [协议声明](./06_Declarations.md#protocol_declaration) 中所讨论的那样,可以把 `class` 关键字放到协议类型的类型继承子句的首位,这样就可以声明一个类类型专属协议。 枚举定义中的类型继承子句可以是一系列协议,或是枚举的原始值类型的命名型类型。在枚举定义中使用类型继承子句来指定原始值类型的例子,请参阅 [原始值](../chapter2/08_Enumerations.md#raw_values)。 diff --git a/source/chapter3/04_Expressions.md b/source/chapter3/04_Expressions.md index 2fba2882..35c3c58b 100644 --- a/source/chapter3/04_Expressions.md +++ b/source/chapter3/04_Expressions.md @@ -18,9 +18,9 @@ Swift 中存在四种表达式:前缀表达式,二元表达式,基本表 前缀表达式由可选的前缀运算符和表达式组成。前缀运算符只接收一个参数,表达式则紧随其后。 -关于这些运算符的更多信息,请参阅 [基本运算符](../chapter2/02_Basic_Operators.md) 和 [高级运算符](../chapter2/25_Advanced_Operators.md)。 +关于这些运算符的更多信息,请参阅 [基本运算符](../chapter2/02_Basic_Operators.md) 和 [高级运算符](../chapter2/26_Advanced_Operators.md)。 -关于 Swift 标准库提供的运算符的更多信息,请参阅 [*Swift Standard Library Operators Reference*](./https://developer.apple.com/library/prerelease/ios/documentation/Swift/Reference/Swift_StandardLibrary_Operators/index.md#//apple_ref/doc/uid/TP40016054)。 +关于 Swift 标准库提供的运算符的更多信息,请参阅 [*Operators Declarations*](https://developer.apple.com/documentation/swift/swift_standard_library/operator_declarations)。 除了标准库运算符,你也可以对某个变量使用 `&` 运算符,从而将其传递给函数的输入输出参数。更多信息,请参阅 [输入输出参数](../chapter2/06_Functions.md#in_out_parameters)。 @@ -67,7 +67,7 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try `try` 表达式不能出现在二进制运算符的的右侧,除非二进制运算符是赋值运算符或者 `try` 表达式是被圆括号括起来的。 -关于 `try`、`try?` 和 `try!` 的更多信息,以及该如何使用的例子,请参阅 [错误处理](../chapter2/18_Error_Handling.md)。 +关于 `try`、`try?` 和 `try!` 的更多信息,以及该如何使用的例子,请参阅 [错误处理](../chapter2/17_Error_Handling.md)。 > Try 表达式语法 > @@ -180,13 +180,13 @@ f(x as Any) // 打印“Function for Any” ``` -桥接可将 Swift 标准库中的类型(例如 `String`)作为一个与之相关的 Foundation 类型(例如 `NSString`)来使用,而不需要新建一个实例。关于桥接的更多信息,请参阅 [*Using Swift with Cocoa and Objective-C (Swift4.1)*](./https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/index.md#//apple_ref/doc/uid/TP40014216) 中的 [Working with Cocoa Data Types](./https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/WorkingWithCocoaDataTypes.md#//apple_ref/doc/uid/TP40014216-CH6)。 +桥接可将 Swift 标准库中的类型(例如 `String`)作为一个与之相关的 Foundation 类型(例如 `NSString`)来使用,而不需要新建一个实例。关于桥接的更多信息,请参阅 [*Working with Foundation Types*](https://developer.apple.com/documentation/swift/imported_c_and_objective-c_apis/working_with_foundation_types)。 `as?` 运算符有条件地执行类型转换,返回目标类型的可选值。在运行时,如果转换成功,返回的可选值将包含转换后的值,否则返回 `nil`。如果在编译时就能确定转换一定会成功或是失败,则会导致编译报错。 `as!` 运算符执行强制类型转换,返回目标类型的非可选值。如果转换失败,则会导致运行时错误。表达式 `x as! T` 效果等同于 `(x as? T)!`。 -关于类型转换的更多内容和例子,请参阅 [类型转换](../chapter2/19_Type_Casting.md)。 +关于类型转换的更多内容和例子,请参阅 [类型转换](../chapter2/18_Type_Casting.md)。 > 类型转换运算符语法 @@ -208,7 +208,7 @@ f(x as Any) > 基本表达式语法 > -> *基本表达式* → [*标识符*](./02_Lexical_Structure.md#identifier) [*泛型实参子句*](./08_Generic_Parameters_and_Arguments.md#generic-argument-clause)可选 +> *基本表达式* → [*标识符*](./02_Lexical_Structure.md#identifier) [*泛型实参子句*](./09_Generic_Parameters_and_Arguments.md#generic-argument-clause)可选 > > *基本表达式* → [*字面量表达式*](#literal-expression) > @@ -427,7 +427,7 @@ struct Point { } ``` -闭包的参数声明形式跟函数一样,请参阅 [函数声明](./05_Declarations.md#function_declaration)。 +闭包的参数声明形式跟函数一样,请参阅 [函数声明](./06_Declarations.md#function_declaration)。 闭包还有几种特殊的形式,能让闭包使用起来更加简洁: @@ -532,13 +532,13 @@ myFunction { [weak parent = self.parent] in print(parent!.title) } > > > -> 闭包签名* → [*参数子句*](./#parameter-clause) [*函数结果*](05_Declarations.md#function-result)可选 **in** +> 闭包签名* → [*参数子句*](#parameter-clause) [*函数结果*](05_Declarations.md#function-result)可选 **in** > -> *闭包签名* → [*标识符列表*](./#identifier-list) [*函数结果*](05_Declarations.md#function-result)可选 **in** +> *闭包签名* → [*标识符列表*](#identifier-list) [*函数结果*](05_Declarations.md#function-result)可选 **in** > -> *闭包签名* → [*捕获列表*](./#capture-list) [*参数子句*](05_Declarations.md#parameter-clause) [*函数结果*](./05_Declarations.md#function-result)可选 **in** +> *闭包签名* → [*捕获列表*](#capture-list) [*参数子句*](05_Declarations.md#parameter-clause) [*函数结果*](./06_Declarations.md#function-result)可选 **in** > -> *闭包签名* → [*捕获列表*](./#capture-list) [*标识符列表*](02_Lexical_Structure.md#identifier-list) [*函数结果*](./05_Declarations.md#function-result)可选 **in** +> *闭包签名* → [*捕获列表*](#capture-list) [*标识符列表*](02_Lexical_Structure.md#identifier-list) [*函数结果*](./06_Declarations.md#function-result)可选 **in** > > *闭包签名* → [*捕获列表*](#capture-list) **in** > @@ -927,7 +927,7 @@ print(keyPath == c.getSomeKeyPath()) > *后缀表达式* → [*基本表达式*](#primary-expression) > -> *后缀表达式* → [*后缀表达式*](./#postfix-expression) [*后缀运算符*](02_Lexical_Structure.md#postfix-operator) +> *后缀表达式* → [*后缀表达式*](#postfix-expression) [*后缀运算符*](02_Lexical_Structure.md#postfix-operator) > > *后缀表达式* → [*函数调用表达式*](#function-call-expression) > @@ -996,7 +996,7 @@ myData.someMethod {$0 == 13} > > > -> *函数调用参数* → [表达式](./#expression) | [标识符](02_Lexical_Structure.md#identifier) **:** [*表达式*](#expression) +> *函数调用参数* → [表达式](#expression) | [标识符](02_Lexical_Structure.md#identifier) **:** [*表达式*](#expression) > > *函数调用参数* → [运算符](./02_Lexical_Structure.md#operator) | [标识符](./02_Lexical_Structure.md#identifier) **:** [*运算符*](./02_Lexical_Structure.md#operator) > @@ -1117,11 +1117,11 @@ let x = [10, 3, 20, 15, 4] > 显式成员表达式语法 > -> *显式成员表达式* → [*后缀表达式*](./#postfix-expression) **.** [*十进制数字*] (02_Lexical_Structure.md#decimal-digit) +> *显式成员表达式* → [*后缀表达式*](#postfix-expression) **.** [*十进制数字*] (02_Lexical_Structure.md#decimal-digit) > -> *显式成员表达式* → [*后缀表达式*](./#postfix-expression) **.** [*标识符*](02_Lexical_Structure.md#identifier) [*泛型实参子句*](./08_Generic_Parameters_and_Arguments.md#generic-argument-clause)可选
+> *显式成员表达式* → [*后缀表达式*](#postfix-expression) **.** [*标识符*](02_Lexical_Structure.md#identifier) [*泛型实参子句*](./09_Generic_Parameters_and_Arguments.md#generic-argument-clause)可选
> -> *显式成员表达式* → [*后缀表达式*](./#postfix-expression) **.** [*标识符*] (02_Lexical_Structure.md#identifier) **(** [*参数名称*](#argument-names) **)** +> *显式成员表达式* → [*后缀表达式*](#postfix-expression) **.** [*标识符*] (02_Lexical_Structure.md#identifier) **(** [*参数名称*](#argument-names) **)** > > *参数名称* → [*参数名*](#argument-name) [*参数名称*](#argument-names)可选
@@ -1161,7 +1161,7 @@ let x = [10, 3, 20, 15, 4] 要获取下标表达式的值,可将索引表达式作为下标表达式的参数来调用下标 getter。下标 setter 的调用方式与之一样。 -关于下标的声明,请参阅 [协议下标声明](./05_Declarations.md#protocol_subscript_declaration)。 +关于下标的声明,请参阅 [协议下标声明](./06_Declarations.md#protocol_subscript_declaration)。 > 下标表达式语法 > diff --git a/source/chapter3/05_Statements.md b/source/chapter3/05_Statements.md index b4b8e6a7..97d91deb 100755 --- a/source/chapter3/05_Statements.md +++ b/source/chapter3/05_Statements.md @@ -12,7 +12,7 @@ > *语句* → [*表达式*](./04_Expressions.md#expression) **;**可选 > -> *语句* → [*声明*](./05_Declarations.md#declaration) **;**可选 +> *语句* → [*声明*](./06_Declarations.md#declaration) **;**可选 > > *语句* → [*循环语句*](#loop-statement) **;**可选 > @@ -69,7 +69,7 @@ for item in collection { > > -> *for-in 语句* → **for** **case**可选 [*模式*](./07_Patterns.md#pattern) **in** [*表达式*](./04_Expressions.md#expression) [*where 子句*](./#where-clause)可选 [*代码块*](05_Declarations.md#code-block) +> *for-in 语句* → **for** **case**可选 [*模式*](./08_Patterns.md#pattern) **in** [*表达式*](./04_Expressions.md#expression) [*where 子句*](#where-clause)可选 [*代码块*](05_Declarations.md#code-block) > @@ -98,7 +98,7 @@ while condition { > > -> *while 语句* → **while** [*条件子句*](./#condition-clause) [*代码块*](05_Declarations.md#code-block) +> *while 语句* → **while** [*条件子句*](#condition-clause) [*代码块*](05_Declarations.md#code-block) > @@ -109,10 +109,10 @@ while condition { > > -> *case 条件* → **case** [*模式*](./07_Patterns.md#pattern) [*构造器*](./05_Declarations.md#initializer) +> *case 条件* → **case** [*模式*](./08_Patterns.md#pattern) [*构造器*](./06_Declarations.md#initializer) > -> *可选绑定条件* → **let** [*模式*](./07_Patterns.md#pattern) [*构造器*](./05_Declarations.md#initializer) | **var** [*模式*](./07_Patterns.md#pattern) [*构造器*](./05_Declarations.md#initializer) +> *可选绑定条件* → **let** [*模式*](./08_Patterns.md#pattern) [*构造器*](./06_Declarations.md#initializer) | **var** [*模式*](./08_Patterns.md#pattern) [*构造器*](./06_Declarations.md#initializer) > @@ -141,7 +141,7 @@ repeat { > > -> *repeat-while 语句* → **repeat** [*代码块*](./05_Declarations.md#code-block) **while** [*表达式*](./04_Expressions.md#expression) +> *repeat-while 语句* → **repeat** [*代码块*](./06_Declarations.md#code-block) **while** [*表达式*](./04_Expressions.md#expression) > @@ -205,10 +205,10 @@ if condition 1 { > > -> *if 语句* → **if** [*条件子句*](./#condition-clause) [*代码块*](05_Declarations.md#code-block) [*else 子句*](#else-clause)可选 +> *if 语句* → **if** [*条件子句*](#condition-clause) [*代码块*](05_Declarations.md#code-block) [*else 子句*](#else-clause)可选 > -> *else 子句* → **else** [*代码块*](./05_Declarations.md#code-block) | **else** [*if 语句*](#if-statement) +> *else 子句* → **else** [*代码块*](./06_Declarations.md#code-block) | **else** [*if 语句*](#if-statement) > @@ -235,13 +235,13 @@ guard condition else { * `continue` * `throw` -关于控制转移语句,请参阅 [控制转移语句](./#control_transfer_statements)。关于 `Never` 返回类型的函数,请参阅 [永不返回的函数](05_Declarations.md#rethrowing_functions_and_methods)。 +关于控制转移语句,请参阅 [控制转移语句](#control_transfer_statements)。关于 `Never` 返回类型的函数,请参阅 [永不返回的函数](05_Declarations.md#rethrowing_functions_and_methods)。 > guard 语句语法 > > -> *guard 语句* → **guard** [*条件子句*](./#condition-clause) **else** [*代码块*] (05_Declarations.md#code-block) +> *guard 语句* → **guard** [*条件子句*](#condition-clause) **else** [*代码块*] (05_Declarations.md#code-block) > @@ -285,6 +285,7 @@ case let (x, y) where x == y: 在 Swift 中,`switch` 语句中控制表达式的每一个可能的值都必须至少有一个 `case` 与之对应。在某些无法面面俱到的情况下(例如,表达式的类型是 `Int`),你可以使用 `default` 分支满足该要求。 + #### 对未来枚举的 `case` 进行 `switch` 非冻结枚举(`nonfronzen enumeration`)是一种特殊的枚举类型,它可能在未来会增加新的枚举 `case`,即使这时候你已经编译并且发布了你的应用,所以在 switch 非冻结枚举前需要深思熟虑。当一个库的作者们把一个枚举标记为非冻结的,这意味着他们保留了增加新的枚举 `case` 的权利,并且任何和这个枚举交互的代码都要在不需要重新编译的条件下能够处理那些未来可能新加入的 `case` 。只有那些标准库,比如用 Swift 实现的苹果的一些框架,C 以及 Objective-C 代码才能够声明非冻结枚举。你在 Swift 中声明的枚举不能是非冻结的。 @@ -329,7 +330,7 @@ case .suppressed: > *case 标签* → [*属性*](#switch-case-attributes-label)可选 **case** [*case 项列表*](#case-item-list) **:** > -> *case 项列表* → [*模式*](./07_Patterns.md#pattern) [*where 子句*](./#where-clause)可选 | [*模式*](07_Patterns.md#pattern) [*where 子句*](#where-clause)可选 **,** [*case 项列表*](#case-item-list) +> *case 项列表* → [*模式*](./08_Patterns.md#pattern) [*where 子句*](#where-clause)可选 | [*模式*](07_Patterns.md#pattern) [*where 子句*](#where-clause)可选 **,** [*case 项列表*](#case-item-list) > > *default 标签* → [*属性*](#switch-case-attributes-label)可选 **default** **:** @@ -491,7 +492,7 @@ case .suppressed: > 注意 > > -> 正如 [可失败构造器](./05_Declarations.md#failable_initializers) 中所描述的,`return nil` 在可失败构造器中用于表明构造失败。 +> 正如 [可失败构造器](./06_Declarations.md#failable_initializers) 中所描述的,`return nil` 在可失败构造器中用于表明构造失败。 > 而只写 `return` 时,仅仅是从该函数或方法中返回,而不返回任何值(也就是说,函数或方法的返回类型为 `Void` 或者说 `()`)。 @@ -517,7 +518,7 @@ case .suppressed: 表达式的结果必须符合 `ErrorType` 协议。 -关于如何使用 `throw` 语句的例子,请参阅 [错误处理](../chapter2/18_Error_Handling.md) 一章的 [用 throwing 函数传递错误](../chapter2/18_Error_Handling.md#propagating_errors_using_throwing_functions)。 +关于如何使用 `throw` 语句的例子,请参阅 [错误处理](../chapter2/17_Error_Handling.md) 一章的 [用 throwing 函数传递错误](../chapter2/17_Error_Handling.md#propagating_errors_using_throwing_functions)。 > throw 语句语法 > @@ -561,7 +562,7 @@ f() > > -> *延迟语句* → **defer** [*代码块*](./05_Declarations.md#code-block) +> *延迟语句* → **defer** [*代码块*](./06_Declarations.md#code-block) > @@ -586,7 +587,7 @@ do { 如同 `switch` 语句,编译器会判断 `catch` 子句是否有遗漏。如果 `catch` 子句没有遗漏,则认为错误已被处理。否则,错误会自动传递到外围作用域,被某个 `catch` 子句处理掉或者被用 `throws` 关键字声明的抛出函数继续向外抛出。 -为了确保错误已经被处理,可以让 `catch` 子句使用匹配所有错误的模式,如通配符模式(`_`)。如果一个 `catch` 子句不指定一种具体模式,`catch` 子句会匹配任何错误,并绑定到名为 `error` 的局部常量。有关在 `catch` 子句中使用模式的更多信息,请参阅 [模式](./07_Patterns.md)。 +为了确保错误已经被处理,可以让 `catch` 子句使用匹配所有错误的模式,如通配符模式(`_`)。如果一个 `catch` 子句不指定一种具体模式,`catch` 子句会匹配任何错误,并绑定到名为 `error` 的局部常量。有关在 `catch` 子句中使用模式的更多信息,请参阅 [模式](./08_Patterns.md)。 关于如何在 `do` 语句中使用一系列 `catch` 子句的例子,请参阅 [错误处理](../chapter2/17_Error_Handling.md#handling_errors)。 @@ -594,13 +595,13 @@ do { > > -> *do 语句* → **do** [*代码块*](./05_Declarations.md#code-block) [*多条 catch 子句*](#catch-clauses)可选 +> *do 语句* → **do** [*代码块*](./06_Declarations.md#code-block) [*多条 catch 子句*](#catch-clauses)可选 > > *多条 catch 子句* → [*catch 子句*](#catch-clause) [*多条 catch 子句*](#catch-clauses)可选 > -> *catch 子句* → **catch** [*模式*](./07_Patterns.md#pattern)可选 [*where 子句*](./#where-clause)可选 [*代码块*](05_Declarations.md#code-block) +> *catch 子句* → **catch** [*模式*](./08_Patterns.md#pattern)可选 [*where 子句*](#where-clause)可选 [*代码块*](05_Declarations.md#code-block) > diff --git a/source/chapter3/06_Declarations.md b/source/chapter3/06_Declarations.md index b5451591..88e14806 100755 --- a/source/chapter3/06_Declarations.md +++ b/source/chapter3/06_Declarations.md @@ -50,7 +50,7 @@ Swift 的源文件中的顶级代码(top-level code)由零个或多个语句 > 顶级声明语法 > -> *顶级声明* → [*多条语句*](./10_Statements.md#statements)可选 +> *顶级声明* → [*多条语句*](./05_Statements.md#statements)可选 > @@ -70,7 +70,7 @@ Swift 的源文件中的顶级代码(top-level code)由零个或多个语句 > > > -> *代码块* → **{** [*多条语句*](./10_Statements.md#statements)可选 **}** +> *代码块* → **{** [*多条语句*](./05_Statements.md#statements)可选 **}** > @@ -94,7 +94,7 @@ import 模块.子模块 > > > -> *导入声明* → [*特性列表*](./06_Attributes.md#attributes)可选 **import** [*导入类型*](#import-kind)可选 [*导入路径*](#import-path) +> *导入声明* → [*特性列表*](./07_Attributes.md#attributes)可选 **import** [*导入类型*](#import-kind)可选 [*导入路径*](#import-path) > > > @@ -148,7 +148,7 @@ print("The second number is \(secondNumber).") > > > -> *常量声明* → [*特性列表*](./06_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **let** [*模式构造器列表*](pattern-initializer-list) +> *常量声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **let** [*模式构造器列表*](pattern-initializer-list) > > > @@ -156,7 +156,7 @@ print("The second number is \(secondNumber).") > > > -> *模式构造器* → [*模式*](./07_Patterns.md#pattern) [*构造器*](#initializer)可选 +> *模式构造器* → [*模式*](./08_Patterns.md#pattern) [*构造器*](#initializer)可选 > > > @@ -270,19 +270,19 @@ var 变量名称: 类型 = 表达式 { > *变量声明* → [*变量声明头*](#variable-declaration-head) [*模式构造器列表*](#pattern-initializer-list) > -> *变量声明* → [*变量声明头*](./#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*代码块*](#code-block) +> *变量声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*代码块*](#code-block) > -> *变量声明* → [*变量声明头*](./#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*getter-setter 代码块*](#getter-setter-block) +> *变量声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*getter-setter 代码块*](#getter-setter-block) > -> *变量声明* → [*变量声明头*](./#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*getter-setter 关键字代码块*](#getter-setter-keyword-block) +> *变量声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*getter-setter 关键字代码块*](#getter-setter-keyword-block) > > *变量声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*构造器*](#initializer) [*willSet-didSet 代码块*](#willSet-didSet-block) > -> *变量声明* → [*变量声明头*](./#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*构造器*](#initializer)可选 [*willSet-didSet 代码块*](#willSet-didSet-block) +> *变量声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*构造器*](#initializer)可选 [*willSet-didSet 代码块*](#willSet-didSet-block) > -> *变量声明头* → [*特性列表*](./06_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **var** +> *变量声明头* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **var** > > > @@ -298,11 +298,11 @@ var 变量名称: 类型 = 表达式 { > > > -> *getter 子句* → [*特性列表*](./06_Attributes.md#attributes)可选 **get** [*代码块*](#code-block) +> *getter 子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **get** [*代码块*](#code-block) > > > -> *setter 子句* → [*特性列表*](./06_Attributes.md#attributes)可选 **set** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) +> *setter 子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **set** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) > > > @@ -316,11 +316,11 @@ var 变量名称: 类型 = 表达式 { > > > -> *getter 关键字子句* → [*特性列表*](./06_Attributes.md#attributes)可选 **get** +> *getter 关键字子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **get** > > > -> *setter 关键字子句* → [*特性列表*](./06_Attributes.md#attributes)可选 **set** +> *setter 关键字子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **set** > @@ -330,11 +330,11 @@ var 变量名称: 类型 = 表达式 { > > > -> *willSet 子句* → [*特性列表*](./06_Attributes.md#attributes)可选 **willSet** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) +> *willSet 子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **willSet** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) > > > -> *didSet 子句* → [*特性列表*](./06_Attributes.md#attributes)可选 **didSet** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) +> *didSet 子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **didSet** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) > @@ -400,7 +400,7 @@ func sum(_ sequence: T) -> Int where T.Element == Int { > > > -> *类型别名声明* → [*特性列表*](./06_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **typealias** [*类型别名名称*](#typealias-name) [*类型别子句*](#typealias-clause) [*类型别名赋值*](#typealias-assignment) +> *类型别名声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **typealias** [*类型别名名称*](#typealias-name) [*类型别子句*](#typealias-clause) [*类型别名赋值*](#typealias-assignment) > > > @@ -607,7 +607,7 @@ func someFunction(callback: () throws -> Void) rethrows { Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它的调用者。`Never` 返回类型的函数或方法可以称为不归,不归函数、方法要么引发不可恢复的错误,要么永远不停地运作,这会使调用后本应执行得代码就不再执行了。但即使是不归函数、方法,抛错函数和重抛出函数也可以将程序控制转移到合适的 `catch` 代码块。 -不归函数、方法可以在 guard 语句的 else 字句中调用,具体讨论在[*Guard 语句*](./10_Statements.md#guard_statements)。 +不归函数、方法可以在 guard 语句的 else 字句中调用,具体讨论在[*Guard 语句*](./05_Statements.md#guard_statements)。 你可以重写一个不归方法,但是新的方法必须保持原有的返回类型和没有返回的行为。 @@ -615,11 +615,11 @@ Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它 > 函数声明语法 > -> *函数声明* → [*函数头*](./#function-head) [*函数名*](#function-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*函数签名*](./#function-signature) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause) [*函数体*](#function-body)可选 +> *函数声明* → [*函数头*](#function-head) [*函数名*](#function-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*函数签名*](#function-signature) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause) [*函数体*](#function-body)可选 > -> *函数头* → [*特性列表*](./06_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **func** +> *函数头* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **func** > > > @@ -635,7 +635,7 @@ Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它 > > > -> *函数结果* → **->** [*特性列表*](./06_Attributes.md#attributes)可选 [*类型*](./03_Types.md#type) +> *函数结果* → **->** [*特性列表*](./07_Attributes.md#attributes)可选 [*类型*](./03_Types.md#type) > > > @@ -652,11 +652,11 @@ Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它 > > > -> *参数* → [*外部参数名*](./#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.md#type-annotation) [*默认参数子句*](#default-argument-clause)可选 +> *参数* → [*外部参数名*](#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.md#type-annotation) [*默认参数子句*](#default-argument-clause)可选 > -> *参数* → [*外部参数名*](./#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.md#type-annotation) +> *参数* → [*外部参数名*](#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.md#type-annotation) > -> *参数* → [*外部参数名*](./#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.md#type-annotation) **...** +> *参数* → [*外部参数名*](#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.md#type-annotation) **...** > > > @@ -683,7 +683,7 @@ Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它 不同于类或者结构体,枚举类型并不隐式提供默认构造器,所有构造器必须显式声明。一个构造器可以委托给枚举中的其他构造器,但是构造过程仅当构造器将一个枚举用例赋值给 `self` 后才算完成。 -和结构体类似但是和类不同,枚举是值类型。枚举实例在被赋值到变量或常量时,或者传递给函数作为参数时会被复制。更多关于值类型的信息,请参阅 [结构体和枚举是值类型](../chapter2/09_Classes_and_Structures.md#structures_and_enumerations_are_value_types)。 +和结构体类似但是和类不同,枚举是值类型。枚举实例在被赋值到变量或常量时,或者传递给函数作为参数时会被复制。更多关于值类型的信息,请参阅 [结构体和枚举是值类型](../chapter2/09_Structures_And_Classes.md#structures_and_enumerations_are_value_types)。 可以扩展枚举类型,正如在 [扩展声明](#extension_declaration) 中讨论的一样。 @@ -781,7 +781,7 @@ enum GamePlayMode: String { 使用点语法(`.`)来引用枚举类型的枚举用例,例如 `EnumerationType.enumerationCase`。当枚举类型可以由上下文推断而出时,可以省略它(但是 `.` 仍然需要),正如 [枚举语法](../chapter2/08_Enumerations.md#enumeration_syntax) 和 [显式成员表达式](./04_Expressions.md#explicit_member_expression) 所述。 -可以使用 `switch` 语句来检验枚举用例的值,正如 [使用 switch 语句匹配枚举值](../chapter2/08_Enumerations.md#matching_enumeration_values_with_a_switch_statement) 所述。枚举类型是模式匹配的,依靠 `switch` 语句 `case` 块中的枚举用例模式,正如 [枚举用例模式](./07_Patterns.md#enumeration_case_pattern) 所述。 +可以使用 `switch` 语句来检验枚举用例的值,正如 [使用 switch 语句匹配枚举值](../chapter2/08_Enumerations.md#matching_enumeration_values_with_a_switch_statement) 所述。枚举类型是模式匹配的,依靠 `switch` 语句 `case` 块中的枚举用例模式,正如 [枚举用例模式](./08_Patterns.md#enumeration_case_pattern) 所述。 > 枚举声明语法 @@ -789,12 +789,12 @@ enum GamePlayMode: String { > > > -> *枚举声明* → [*特性列表*](./06_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 [*联合风格枚举*](#union-style-enum) +> *枚举声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 [*联合风格枚举*](#union-style-enum) > -> *枚举声明* → [*特性列表*](./06_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier) 可选 [*原始值风格枚举*](#raw-value-style-enum) +> *枚举声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier) 可选 [*原始值风格枚举*](#raw-value-style-enum) > > -> *联合风格枚举* → **indirect**可选 **enum** [*枚举名称*](./#enum-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [类型继承子句](./03_Types.md#type-inheritance-clause)可选 **{** [*多个联合风格枚举成员*](#union-style-enum-members)可选 **}** +> *联合风格枚举* → **indirect**可选 **enum** [*枚举名称*](#enum-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [类型继承子句](./03_Types.md#type-inheritance-clause)可选 **{** [*多个联合风格枚举成员*](#union-style-enum-members)可选 **}** > > > @@ -802,11 +802,11 @@ enum GamePlayMode: String { > > > -> *联合风格枚举成员* → [*声明*](./#declaration) | [*联合风格枚举用例子句*](#union-style-enum-case-clause) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) +> *联合风格枚举成员* → [*声明*](#declaration) | [*联合风格枚举用例子句*](#union-style-enum-case-clause) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > > > -> *联合风格枚举用例子句* → [*特性列表*](./06_Attributes.md#attributes)可选 **indirect**可选 **case** [*联合风格枚举用例列表*](#union-style-enum-case-list) +> *联合风格枚举用例子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **indirect**可选 **case** [*联合风格枚举用例列表*](#union-style-enum-case-list) > > > @@ -814,7 +814,7 @@ enum GamePlayMode: String { > > > -> *联合风格枚举用例* → [*枚举用例名称*](./#enum-case-name) [*元组类型*](03_Types.md#tuple-type)可选 +> *联合风格枚举用例* → [*枚举用例名称*](#enum-case-name) [*元组类型*](03_Types.md#tuple-type)可选 > > > @@ -828,7 +828,7 @@ enum GamePlayMode: String { > > > -> *原始值风格枚举* → **enum** [*枚举名称*](./#enum-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause) [*泛型 where 子句*](./08_Generic_Parameters_and_Arguments.md#generic-where-clause) **{** [*多个原始值风格枚举成员*](#raw-value-style-enum-members) **}** +> *原始值风格枚举* → **enum** [*枚举名称*](#enum-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause) **{** [*多个原始值风格枚举成员*](#raw-value-style-enum-members) **}** > > > @@ -836,11 +836,11 @@ enum GamePlayMode: String { > > > -> *原始值风格枚举成员* → [*声明*](./#declaration) | [*原始值风格枚举用例子句*](#raw-value-style-enum-case-clause) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) +> *原始值风格枚举成员* → [*声明*](#declaration) | [*原始值风格枚举用例子句*](#raw-value-style-enum-case-clause) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > > > -> *原始值风格枚举用例子句* → [*特性列表*](./06_Attributes.md#attributes)可选 **case** [*原始值风格枚举用例列表*](#raw-value-style-enum-case-list) +> *原始值风格枚举用例子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **case** [*原始值风格枚举用例列表*](#raw-value-style-enum-case-list) > > > @@ -870,7 +870,7 @@ struct 结构体名称: 采纳的协议 { } ``` -结构体内可包含零个或多个声明。这些声明可以包括存储型和计算型属性、类型属性、实例方法、类型方法、构造器、下标、类型别名,甚至其他结构体、类、和枚举声明。结构体声明不能包含析构器或者协议声明。关于结构体的详细讨论和示例,请参阅 [类和结构体](../chapter2/09_Classes_and_Structures.md)。 +结构体内可包含零个或多个声明。这些声明可以包括存储型和计算型属性、类型属性、实例方法、类型方法、构造器、下标、类型别名,甚至其他结构体、类、和枚举声明。结构体声明不能包含析构器或者协议声明。关于结构体的详细讨论和示例,请参阅 [类和结构体](../chapter2/09_Structures_And_Classes.md)。 结构体可以采纳任意数量的协议,但是不能继承自类、枚举或者其他结构体。 @@ -884,10 +884,10 @@ struct 结构体名称: 采纳的协议 { 结构体的构造过程请参阅 [构造过程](../chapter2/14_Initialization.md)。 -结构体实例的属性可以用点语法(`.`)来访问,正如 [访问属性](../chapter2/09_Classes_and_Structures.md#accessing_properties) 所述。 +结构体实例的属性可以用点语法(`.`)来访问,正如 [访问属性](../chapter2/09_Structures_And_Classes.md#accessing_properties) 所述。 结构体是值类型。结构体的实例在被赋予变量或常量,或传递给函数作为参数时会被复制。关于值类型的更多信息,请参阅 -[结构体和枚举是值类型](../chapter2/09_Classes_and_Structures.md#structures_and_enumerations_are_value_types)。 +[结构体和枚举是值类型](../chapter2/09_Structures_And_Classes.md#structures_and_enumerations_are_value_types)。 可以使用扩展声明来扩展结构体类型的行为,请参阅 [扩展声明](#extension_declaration)。 @@ -897,7 +897,7 @@ struct 结构体名称: 采纳的协议 { > > > -> *结构体声明* → [*特性列表*](./06_Attributes.md#attributes)可选 [*访问级别修饰符*](./#access-level-modifier) 可选 **struct** [*结构体名称*](#struct-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*结构体主体*](#struct-body) +> *结构体声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier) 可选 **struct** [*结构体名称*](#struct-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*结构体主体*](#struct-body) > > > @@ -914,7 +914,7 @@ struct 结构体名称: 采纳的协议 { > > > -> *结构体成员* → [*声明*](./#declaration) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) +> *结构体成员* → [*声明*](#declaration) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > @@ -929,7 +929,7 @@ class 类名: 超类, 采纳的协议 { } ``` -类内可以包含零个或多个声明。这些声明可以包括存储型和计算型属性、实例方法、类型方法、构造器、唯一的析构器、下标、类型别名,甚至其他结构体、类和枚举声明。类声明不能包含协议声明。关于类的详细讨论和示例,请参阅 [类和结构体](../chapter2/09_Classes_and_Structures.md)。 +类内可以包含零个或多个声明。这些声明可以包括存储型和计算型属性、实例方法、类型方法、构造器、唯一的析构器、下标、类型别名,甚至其他结构体、类和枚举声明。类声明不能包含协议声明。关于类的详细讨论和示例,请参阅 [类和结构体](../chapter2/09_Structures_And_Classes.md)。 一个类只能继承自一个超类,但是可以采纳任意数量的协议。超类紧跟在类名和冒号后面,其后跟着采纳的协议。泛型类可以继承自其它泛型类和非泛型类,但是非泛型类只能继承自其它非泛型类。当在冒号后面写泛型超类的名称时,必须写上泛型类的全名,包括它的泛型形参子句。 @@ -947,9 +947,9 @@ class 类名: 超类, 采纳的协议 { * 如果没有声明构造器,而且类的所有属性都被赋予了初始值,调用类的默认构造器,请参阅 [默认构造器](../chapter2/14_Initialization.md#default_initializers)。 -类实例属性可以用点语法(`.`)来访问,请参阅 [访问属性](../chapter2/09_Classes_and_Structures.md#accessing_properties)。 +类实例属性可以用点语法(`.`)来访问,请参阅 [访问属性](../chapter2/09_Structures_And_Classes.md#accessing_properties)。 -类是引用类型。当被赋予常量或变量,或者传递给函数作为参数时,类的实例会被引用,而不是被复制。关于引用类型的更多信息,请参阅 [结构体和枚举是值类型](../chapter2/09_Classes_and_Structures.md#structures_and_enumerations_are_value_types)。 +类是引用类型。当被赋予常量或变量,或者传递给函数作为参数时,类的实例会被引用,而不是被复制。关于引用类型的更多信息,请参阅 [结构体和枚举是值类型](../chapter2/09_Structures_And_Classes.md#structures_and_enumerations_are_value_types)。 可以使用扩展声明来扩展类的行为,请参阅 [扩展声明](#extension_declaration)。 @@ -959,9 +959,9 @@ class 类名: 超类, 采纳的协议 { > > > -> *类声明* → [*特性列表*](./06_Attributes.md#attributes)可选 [访问级别修饰符](./#access-level-modifier)可选 **final**可选 **class** [*类名*](#class-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*类主体*](#class-body) +> *类声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [访问级别修饰符](#access-level-modifier)可选 **final**可选 **class** [*类名*](#class-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*类主体*](#class-body) > -> *类声明* → [*特性列表*](./06_Attributes.md#attributes)可选 **final** [访问级别修饰符](./#access-level-modifier)可选 **class** [*类名*](#class-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*类主体*](#class-body) +> *类声明* → [*特性列表*](./07_Attributes.md#attributes)可选 **final** [访问级别修饰符](#access-level-modifier)可选 **class** [*类名*](#class-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*类主体*](#class-body) > > > @@ -976,7 +976,7 @@ class 类名: 超类, 采纳的协议 { > > > -> *类成员* → [*声明*](./#declaration) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) +> *类成员* → [*声明*](#declaration) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > @@ -1028,7 +1028,7 @@ protocol SomeProtocol: AnyObject { > > > -> *协议声明* → [*特性列表*](./06_Attributes.md#attributes)可选 [*访问级别修饰符*](./#access-level-modifier)可选 **protocol** [*协议名称*](#protocol-name) [*类型继承子句*](03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*协议主体*](#protocol-body) +> *协议声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **protocol** [*协议名称*](#protocol-name) [*类型继承子句*](03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*协议主体*](#protocol-body) > > > @@ -1043,7 +1043,7 @@ protocol SomeProtocol: AnyObject { > > > -> *协议成员* → [*协议成员声明*](./#protocol-member-declaration) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) +> *协议成员* → [*协议成员声明*](#protocol-member-declaration) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > > > @@ -1083,7 +1083,7 @@ var 属性名: 类型 { get set } > > > -> *协议属性声明* → [*变量声明头*](./#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*getter-setter 关键字代码块*](#getter-setter-keyword-block) +> *协议属性声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*getter-setter 关键字代码块*](#getter-setter-keyword-block) > @@ -1100,7 +1100,7 @@ var 属性名: 类型 { get set } > > > -> *协议方法声明* → [*函数头*](./#function-head) [*函数名*](#function-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*函数签名*](./#function-signature) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 +> *协议方法声明* → [*函数头*](#function-head) [*函数名*](#function-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*函数签名*](#function-signature) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 > @@ -1121,9 +1121,9 @@ var 属性名: 类型 { get set } > > > -> *协议构造器声明* → [*构造器头*](./#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](./#parameter-clause) **throws**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 +> *协议构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **throws**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 > -> *协议构造器声明* → [*构造器头*](./#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](./#parameter-clause) **rethrows** [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 +> *协议构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **rethrows** [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 > @@ -1145,7 +1145,7 @@ subscript (参数列表) -> 返回类型 { get set } > > > -> *协议下标声明* → [*下标头*](./#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*getter-setter 关键字代码块*](#getter-setter-keyword-block) +> *协议下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*getter-setter 关键字代码块*](#getter-setter-keyword-block) > @@ -1179,7 +1179,7 @@ protocol SubProtocolB: SomeProtocol where SomeType: Equatable { } > > > -> *协议关联类型声明* → [*特性列表*](./06_Attributes.md#attributes)可选 [*访问级别修饰符*](./#access-level-modifier)可选 **associatedtype** [*类型别名头*](#typealias-head) [*类型继承子句*](03_Types.md#type-inheritance-clause)可选 [*类型别名赋值*](./#typealias-assignment)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 +> *协议关联类型声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **associatedtype** [*类型别名头*](#typealias-head) [*类型继承子句*](03_Types.md#type-inheritance-clause)可选 [*类型别名赋值*](#typealias-assignment)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 > @@ -1274,17 +1274,17 @@ if let actualInstance = SomeStruct(input: "Hello") { > > > -> *构造器声明* → [*构造器头*](./#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](./#parameter-clause) **throws**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*构造器主体*](#initializer-body) +> *构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **throws**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*构造器主体*](#initializer-body) > -> *构造器声明* → [*构造器头*](./#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](./#parameter-clause) **rethrows**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*构造器主体*](#initializer-body) +> *构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **rethrows**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*构造器主体*](#initializer-body) > > > -> *构造器头* → [*特性列表*](./06_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **init** +> *构造器头* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **init** > -> *构造器头* → [*特性列表*](./06_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **init** **?** +> *构造器头* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **init** **?** > -> *构造器头* → [*特性列表*](./06_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **init** **!** +> *构造器头* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **init** **!** > > > @@ -1315,7 +1315,7 @@ deinit { > > > -> *析构器声明* → [*特性列表*](./06_Attributes.md#attributes)可选 **deinit** [*代码块*](#code-block) +> *析构器声明* → [*特性列表*](./07_Attributes.md#attributes)可选 **deinit** [*代码块*](#code-block) > @@ -1516,7 +1516,7 @@ extension Array: Loggable where Element: MarkedLoggable { } > > > -> *扩展声明* → [特性](./06_Attributes.md#type_attributes)可选 [访问级别修饰符](./#access-level-modifier)可选 **extension** [*类型标识符*](03_Types.md#type-identifier) [*类型-继承-子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*扩展主体*](#extension-body) +> *扩展声明* → [特性](./07_Attributes.md#type_attributes)可选 [访问级别修饰符](#access-level-modifier)可选 **extension** [*类型标识符*](03_Types.md#type-identifier) [*类型-继承-子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*扩展主体*](#extension-body) > > > @@ -1524,7 +1524,7 @@ extension Array: Loggable where Element: MarkedLoggable { } > > *多条声明* → [单条声明](#subscript_declaration) [多条声明](#declarations) 可选 > -> *单条声明* → [声明语句](./#declarations) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) +> *单条声明* → [声明语句](#declarations) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > @@ -1567,19 +1567,19 @@ subscript (参数列表) -> 返回类型 { > > > -> *下标声明* → [*下标头*](./#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*代码块*](#code-block) +> *下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*代码块*](#code-block) > -> *下标声明* → [*下标头*](./#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*getter-setter 代码块*](#getter-setter-block) +> *下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*getter-setter 代码块*](#getter-setter-block) > -> *下标声明* → [*下标头*](./#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*getter-setter 关键字代码块*](#getter-setter-keyword-block) +> *下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*getter-setter 关键字代码块*](#getter-setter-keyword-block) > > > -> *下标头* → [*特性列表*](./06_Attributes.md#attributes)可选 [*声明修饰符列表*](./#declaration-modifiers)可选 **subscript** [*泛型参数子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) +> *下标头* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **subscript** [*泛型参数子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) > > > -> *下标结果* → **->** [*特性列表*](./06_Attributes.md#attributes)可选 [*类型*](./03_Types.md#type) +> *下标结果* → **->** [*特性列表*](./07_Attributes.md#attributes)可选 [*类型*](./03_Types.md#type) > @@ -1621,7 +1621,7 @@ postfix operator 运算符名称 {} 和前缀运算符一样,后缀运算符的声明中不指定优先级,而且后缀运算符是非结合的。 -声明了一个新的运算符以后,需要实现一个跟这个运算符同名的函数来实现这个运算符。如果是实现一个前缀或者后缀运算符,也必须使用相符的 `prefix` 或者 `postfix` 声明修饰符标记函数声明。如果是实现中缀运算符,则不需要使用 `infix` 声明修饰符标记函数声明。关于如何实现一个新的运算符的例子,请参阅 [自定义运算符](../chapter2/25_Advanced_Operators.md#custom_operators)。 +声明了一个新的运算符以后,需要实现一个跟这个运算符同名的函数来实现这个运算符。如果是实现一个前缀或者后缀运算符,也必须使用相符的 `prefix` 或者 `postfix` 声明修饰符标记函数声明。如果是实现中缀运算符,则不需要使用 `infix` 声明修饰符标记函数声明。关于如何实现一个新的运算符的例子,请参阅 [自定义运算符](../chapter2/26_Advanced_Operators.md#custom_operators)。 > 运算符声明语法 @@ -1634,7 +1634,7 @@ postfix operator 运算符名称 {} > > > -> *后缀运算符声明* → **postfix** **运算符** [*运算符*] (02_Lexical_Structure.html#operator) **{** **}** +> *后缀运算符声明* → **postfix** **运算符** [*运算符*](./02_Lexical_Structure.html#operator) **{** **}** > > > @@ -1735,7 +1735,7 @@ Swift 定义了大量的优先级组来与标准库的运算符配合使用, 该修饰符用于修饰协议中的属性、方法以及下标成员,表示符合类型可以不实现这些成员要求。 -只能将 `optional` 修饰符用于被 `objc` 特性标记的协议。这样一来,就只有类类型可以采纳并符合拥有可选成员要求的协议。关于如何使用 `optional` 修饰符,以及如何访问可选协议成员(比如,不确定符合类型是否已经实现了这些可选成员)的信息,请参阅 [可选协议要求](../chapter2/22_Protocols.md#optional_protocol_requirements)。 +只能将 `optional` 修饰符用于被 `objc` 特性标记的协议。这样一来,就只有类类型可以采纳并符合拥有可选成员要求的协议。关于如何使用 `optional` 修饰符,以及如何访问可选协议成员(比如,不确定符合类型是否已经实现了这些可选成员)的信息,请参阅 [可选协议要求](../chapter2/21_Protocols.md#optional_protocol_requirements)。 `required` @@ -1743,7 +1743,7 @@ Swift 定义了大量的优先级组来与标准库的运算符配合使用, `unowned` -该修饰符用于修饰存储型变量、常量或者存储型变量属性,表示该变量或属性持有其存储对象的无主引用。如果在此存储对象释放后尝试访问该对象,会引发运行时错误。如同弱引用一样,该引用类型的变量或属性必须是类类型。与弱引用不同的是,这种类型的变量或属性是非可选的。关于 `unowned` 更多的信息和例子,请参阅 [无主引用](../chapter2/16_Automatic_Reference_Counting.md#unowned_references) +该修饰符用于修饰存储型变量、常量或者存储型变量属性,表示该变量或属性持有其存储对象的无主引用。如果在此存储对象释放后尝试访问该对象,会引发运行时错误。如同弱引用一样,该引用类型的变量或属性必须是类类型。与弱引用不同的是,这种类型的变量或属性是非可选的。关于 `unowned` 更多的信息和例子,请参阅 [无主引用](../chapter2/23_Automatic_Reference_Counting.md#unowned_references) `unowned(safe)` @@ -1755,12 +1755,12 @@ Swift 定义了大量的优先级组来与标准库的运算符配合使用, `weak` -该修饰符用于修饰变量或存储型变量属性,表示该变量或属性持有其存储的对象的弱引用。这种变量或属性的类型必须是可选的类类型。使用 `weak` 修饰符可避免强引用循环。关于 `weak` 修饰符的更多信息和例子,请参阅 [弱引用](../chapter2/16_Automatic_Reference_Counting.md#resolving_strong_reference_cycles_between_class_instances)。 +该修饰符用于修饰变量或存储型变量属性,表示该变量或属性持有其存储的对象的弱引用。这种变量或属性的类型必须是可选的类类型。使用 `weak` 修饰符可避免强引用循环。关于 `weak` 修饰符的更多信息和例子,请参阅 [弱引用](../chapter2/23_Automatic_Reference_Counting.md#resolving_strong_reference_cycles_between_class_instances)。 ### 访问控制级别 -Swift 提供了三个级别的访问控制:`public`、`internal` 和 `private`。可以使用以下任意一种访问级别修饰符来指定声明的访问级别。访问控制在 [访问控制](../chapter2/24_Access_Control.md) 中有详细讨论。 +Swift 提供了三个级别的访问控制:`public`、`internal` 和 `private`。可以使用以下任意一种访问级别修饰符来指定声明的访问级别。访问控制在 [访问控制](../chapter2/25_Access_Control.md) 中有详细讨论。 `public` @@ -1774,7 +1774,7 @@ Swift 提供了三个级别的访问控制:`public`、`internal` 和 `private` 该修饰符表示声明只能被所在源文件的代码访问。 -以上访问级别修饰符都可以选择带上一个参数,该参数由一对圆括号和其中的 `set` 关键字组成(例如,`private(set)`)。使用这种形式的访问级别修饰符来限制某个属性或下标的 setter 的访问级别低于其本身的访问级别,正如 [Getter 和 Setter](../chapter2/24_Access_Control.md#getters_and_setters) 中所讨论的。 +以上访问级别修饰符都可以选择带上一个参数,该参数由一对圆括号和其中的 `set` 关键字组成(例如,`private(set)`)。使用这种形式的访问级别修饰符来限制某个属性或下标的 setter 的访问级别低于其本身的访问级别,正如 [Getter 和 Setter](../chapter2/25_Access_Control.md#getters_and_setters) 中所讨论的。 > 声明修饰符的语法 diff --git a/source/chapter3/07_Attributes.md b/source/chapter3/07_Attributes.md index 3d67d09b..d4ee1edc 100755 --- a/source/chapter3/07_Attributes.md +++ b/source/chapter3/07_Attributes.md @@ -279,7 +279,7 @@ NSApplicationMain(CommandLine.argc, CommandLine.unsafeArgv) 如果你将 `objc` 特性应用于枚举,每一个枚举用例都会以枚举名称和用例名称组合的方式暴露在 Objective-C 代码中。例如,在 `Planet` 枚举中有一个名为 `Venus` 的用例,该用例暴露在 Objective-C 代码中时叫做 `PlanetVenus`。 -`objc` 特性有一个可选的参数,由标识符构成。当你想把 `objc` 所修饰的实体以一个不同的名字暴露给 Objective-C 时,你就可以使用这个特性参数。你可以使用这个参数来命名类、枚举类型、枚举用例、协议、方法、存取方法以及构造器。如果你要指定类、协议或枚举在 Objective-C 下的名称,在名称上包含三个字母的前缀,如 [Objective-C 编程](./https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.md#//apple_ref/doc/uid/TP40011210) 中的 [约定](./https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Conventions/Conventions.md#//apple_ref/doc/uid/TP40011210-CH10-SW1)。下面的例子把 `ExampleClass` 中的 `enabled` 属性的取值方法暴露给 Objective-C,名字是 `isEnabled`,而不是它原来的属性名。 +`objc` 特性有一个可选的参数,由标识符构成。当你想把 `objc` 所修饰的实体以一个不同的名字暴露给 Objective-C 时,你就可以使用这个特性参数。你可以使用这个参数来命名类、枚举类型、枚举用例、协议、方法、存取方法以及构造器。如果你要指定类、协议或枚举在 Objective-C 下的名称,在名称上包含三个字母的前缀,如 [Objective-C 编程](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html#//apple_ref/doc/uid/TP40011210) 中的 [约定](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Conventions/Conventions.html#//apple_ref/doc/uid/TP40011210-CH10-SW1)。下面的例子把 `ExampleClass` 中的 `enabled` 属性的取值方法暴露给 Objective-C,名字是 `isEnabled`,而不是它原来的属性名。 ```swift class ExampleClass: NSObject { @@ -349,7 +349,7 @@ class ExampleClass: NSObject { ### `autoclosure` -这个特性通过把表达式自动封装成无参数的闭包来延迟表达式的计算。它可以修饰类型为返回表达式结果类型的无参数函数类型的函数参数。关于如何使用 autoclosure 特性的例子,请参阅 [自动闭包](./https://docs.swift.org/swift-book/LanguageGuide/Closures.md#ID543) 和 [函数类型](./https://docs.swift.org/swift-book/ReferenceManual/Types.md#ID449)。 +这个特性通过把表达式自动封装成无参数的闭包来延迟表达式的计算。它可以修饰类型为返回表达式结果类型的无参数函数类型的函数参数。关于如何使用 autoclosure 特性的例子,请参阅 [自动闭包](../chapter2/07_Closures.md#autoclosures) 和 [函数类型](./03_Types.md#function_type)。 ### `convention` @@ -369,7 +369,7 @@ convention 特性总是与下面的参数之一一起出现。 ### `escaping` -在函数或者方法声明上使用该特性,它表示参数将不会被存储以供延迟执行,这将确保参数不会超出函数调用的生命周期。在使用 `escaping` 声明特性的函数类型中访问属性和方法时不需要显式地使用 `self.`。关于如何使用 `escaping` 特性的例子,请参阅 [逃逸闭包](./https://docs.swift.org/swift-book/LanguageGuide/Closures.md#ID546)。 +在函数或者方法声明上使用该特性,它表示参数将不会被存储以供延迟执行,这将确保参数不会超出函数调用的生命周期。在使用 `escaping` 声明特性的函数类型中访问属性和方法时不需要显式地使用 `self.`。关于如何使用 `escaping` 特性的例子,请参阅 [逃逸闭包](../chapter2/07_Closures.md#escaping_closures)。 ## Switch Case 特性 @@ -378,7 +378,7 @@ convention 特性总是与下面的参数之一一起出现。 ### `unknown` -次特性用于 switch case,表示在编译时该地方不会匹配枚举的任何情况。有关如何使用 `unknown` 特性的示例,可参阅 [Switching over Future Enumeration Cases](./https://docs.swift.org/swift-book/ReferenceManual/Statements.md#ID602)。 +次特性用于 switch case,表示在编译时该地方不会匹配枚举的任何情况。有关如何使用 `unknown` 特性的示例,可参阅 [对未来枚举的 `case` 进行 `switch`](./05_Statements.md#future-case)。 > 特性语法 > diff --git a/source/chapter3/08_Patterns.md b/source/chapter3/08_Patterns.md index 5d36f98c..4baba9bc 100755 --- a/source/chapter3/08_Patterns.md +++ b/source/chapter3/08_Patterns.md @@ -11,13 +11,13 @@ Swift 中的模式分为两类:一种能成功匹配任何类型的值,另 > 模式语法 > -> *模式* → [*通配符模式*](./#wildcard_pattern) [*类型标注*](03_Types.md#type-annotation)可选 +> *模式* → [*通配符模式*](#wildcard_pattern) [*类型标注*](03_Types.md#type-annotation)可选 > -> *模式* → [*标识符模式*](./#identifier_pattern) [*类型标注*](03_Types.md#type-annotation)可选 +> *模式* → [*标识符模式*](#identifier_pattern) [*类型标注*](03_Types.md#type-annotation)可选 > > *模式* → [*值绑定模式*](#value-binding-pattern) > -> *模式* → [*元组模式*](./#tuple-pattern) [*类型标注*](03_Types.md#type-annotation)可选 +> *模式* → [*元组模式*](#tuple-pattern) [*类型标注*](03_Types.md#type-annotation)可选 > > *模式* → [*枚举用例模式*](#enum-case-pattern) > @@ -136,7 +136,7 @@ let (a): Int = 2 // a: Int = 2 > 枚举用例模式语法 > -> *枚举用例模式* → [*类型标识*](./03_Types.md#type-identifier)可选 **.** [*枚举用例名*](./05_Declarations.md#enum-case-name) [*元组模式*](#tuple-pattern)可选 +> *枚举用例模式* → [*类型标识*](./03_Types.md#type-identifier)可选 **.** [*枚举用例名*](./06_Declarations.md#enum-case-name) [*元组模式*](#tuple-pattern)可选 > @@ -203,7 +203,7 @@ for case let number? in arrayOfOptinalInts { > *is 模式* → **is** [*类型*](./03_Types.md#type) > -> *as 模式* → [*模式*](./#pattern) **as** [*类型*](03_Types.md#type) +> *as 模式* → [*模式*](#pattern) **as** [*类型*](03_Types.md#type) > diff --git a/source/chapter3/09_Generic_Parameters_and_Arguments.md b/source/chapter3/09_Generic_Parameters_and_Arguments.md index 59f077ed..ed0cac15 100755 --- a/source/chapter3/09_Generic_Parameters_and_Arguments.md +++ b/source/chapter3/09_Generic_Parameters_and_Arguments.md @@ -56,7 +56,7 @@ simpleMax(3.14159, 2.71828) // T 被推断为 Double 类型 泛型函数或构造器可以重载,但在泛型形参子句中的类型形参必须有不同的约束或要求,抑或二者皆不同。当调用重载的泛型函数或构造器时,编译器会根据这些约束来决定调用哪个重载函数或构造器。 -更多关于泛型 where 从句的信息和关于泛型函数声明的例子,可以看一看 [泛型 where 子句](./https://github.com/numbbbbb/the-swift-programming-language-in-chinese/blob/gh-pages/source/chapter2/22_Generics.md#where_clauses) +更多关于泛型 where 从句的信息和关于泛型函数声明的例子,可以看一看 [泛型 where 子句](../chapter2/22_Generics.md#where_clauses) > 泛型形参子句语法 > diff --git a/source/chapter3/10_Summary_of_the_Grammar.md b/source/chapter3/10_Summary_of_the_Grammar.md index d18a6dd0..d8ccc305 100755 --- a/source/chapter3/10_Summary_of_the_Grammar.md +++ b/source/chapter3/10_Summary_of_the_Grammar.md @@ -7,15 +7,15 @@ > > *语句* → [*表达式*](./04_Expressions.md#expression) **;** _可选_ > -> *语句* → [*声明*](./05_Declarations.md#declaration) **;** _可选_ +> *语句* → [*声明*](./06_Declarations.md#declaration) **;** _可选_ > -> *语句* → [*循环语句*](./10_Statements.md#loop_statement) **;** _可选_ +> *语句* → [*循环语句*](./05_Statements.md#loop_statement) **;** _可选_ > -> *语句* → [*分支语句*](./10_Statements.md#branch_statement) **;** _可选_ +> *语句* → [*分支语句*](./05_Statements.md#branch_statement) **;** _可选_ > -> *语句* → [*标记语句(Labeled Statement)*](./10_Statements.md#labeled_statement) +> *语句* → [*标记语句(Labeled Statement)*](./05_Statements.md#labeled_statement) > -> *语句* → [*控制转移语句*](./10_Statements.md#control_transfer_statement) **;** _可选_ +> *语句* → [*控制转移语句*](./05_Statements.md#control_transfer_statement) **;** _可选_ > > *语句* → [*延迟语句*](TODO) **;** _可选_ > @@ -23,45 +23,45 @@ > *语句* → [*执行语句*](TODO) **;** _可选_ > -> *多条语句(Statements)* → [*语句*](./10_Statements.md#statement) [*多条语句(Statements)*](./10_Statements.md#statements) _可选_ +> *多条语句(Statements)* → [*语句*](./05_Statements.md#statement) [*多条语句(Statements)*](./05_Statements.md#statements) _可选_ > > 循环语句语法 > -> *循环语句* → [*for 语句*](./10_Statements.md#for_statement) +> *循环语句* → [*for 语句*](./05_Statements.md#for_statement) > -> *循环语句* → [*for-in 语句*](./10_Statements.md#for_in_statement) +> *循环语句* → [*for-in 语句*](./05_Statements.md#for_in_statement) > -> *循环语句* → [*while 语句*](./10_Statements.md#wheetatype 类型 ile_statement) +> *循环语句* → [*while 语句*](./05_Statements.md#wheetatype 类型 ile_statement) > -> *循环语句* → [*repeat-while 语句*](./10_Statements.md#do_while_statement) +> *循环语句* → [*repeat-while 语句*](./05_Statements.md#do_while_statement) > > For 循环语法 > -> *for 语句* → **for** [*for 初始条件*](./10_Statements.md#for_init) _可选_ **;** [*表达式*](./04_Expressions.md#expression) _可选_ **;** [*表达式*](./04_Expressions.md#expression) _可选_ [*代码块*](./05_Declarations.md#code_block) +> *for 语句* → **for** [*for 初始条件*](./05_Statements.md#for_init) _可选_ **;** [*表达式*](./04_Expressions.md#expression) _可选_ **;** [*表达式*](./04_Expressions.md#expression) _可选_ [*代码块*](./06_Declarations.md#code_block) > -> *for 语句* → **for** **(** [*for 初始条件*](./10_Statements.md#for_init) _可选_ **;** [*表达式*](./04_Expressions.md#expression) _可选_ **;** [*表达式*](./04_Expressions.md#expression) _可选_ **)** [*代码块*](./05_Declarations.md#code_block) +> *for 语句* → **for** **(** [*for 初始条件*](./05_Statements.md#for_init) _可选_ **;** [*表达式*](./04_Expressions.md#expression) _可选_ **;** [*表达式*](./04_Expressions.md#expression) _可选_ **)** [*代码块*](./06_Declarations.md#code_block) > -> *for 初始条件* → [*变量声明*](./05_Declarations.md#variable_declaration) | [*表达式集*](./04_Expressions.md#expression_list) +> *for 初始条件* → [*变量声明*](./06_Declarations.md#variable_declaration) | [*表达式集*](./04_Expressions.md#expression_list) > > For-In 循环语法 > -> *for-in 语句* → **for case** _可选_ [*模式*](./07_Patterns.md#pattern) **in** [*表达式*](./04_Expressions.md#expression) [*代码块*](./05_Declarations.md#code_block) [*where 从句*](TODO) _可选_ +> *for-in 语句* → **for case** _可选_ [*模式*](./08_Patterns.md#pattern) **in** [*表达式*](./04_Expressions.md#expression) [*代码块*](./06_Declarations.md#code_block) [*where 从句*](TODO) _可选_ > > While 循环语法 > -> *while 语句* → **while** [*条件从句*](./10_Statements.md#while_condition) [*代码块*](./05_Declarations.md#code_block) +> *while 语句* → **while** [*条件从句*](./05_Statements.md#while_condition) [*代码块*](./06_Declarations.md#code_block) > > *条件从句* → [*表达式*](TODO) > @@ -95,11 +95,11 @@ > 分支语句语法 > -> *分支语句* → [*if 语句*](./10_Statements.md#if_statement) +> *分支语句* → [*if 语句*](./05_Statements.md#if_statement) > > *分支语句* → [*guard 语句*](TODO) > -> *分支语句* → [*switch 语句*](./10_Statements.md#switch_statement) +> *分支语句* → [*switch 语句*](./05_Statements.md#switch_statement) > @@ -108,7 +108,7 @@ > > *if 语句* → **if** [*条件从句*](TODO) [*代码块*](TODO) [*else 从句(Clause)*](TODO) _可选_ > -> *else 从句(Clause)* → **else** [*代码块*](./05_Declarations.md#code_block) | **else** [*if 语句*](./10_Statements.md#if_statement) +> *else 从句(Clause)* → **else** [*代码块*](./06_Declarations.md#code_block) | **else** [*if 语句*](./05_Statements.md#if_statement) > @@ -122,17 +122,17 @@ > Switch 语句语法 > -> *switch 语句* → **switch** [*表达式*](./04_Expressions.md#expression) **{** [*SwitchCase*](./10_Statements.md#switch_cases) _可选_ **}** +> *switch 语句* → **switch** [*表达式*](./04_Expressions.md#expression) **{** [*SwitchCase*](./05_Statements.md#switch_cases) _可选_ **}** > -> *SwitchCase 集* → [*SwitchCase*](./10_Statements.md#switch_case) [*SwitchCase 集*](./10_Statements.md#switch_cases) _可选_ +> *SwitchCase 集* → [*SwitchCase*](./05_Statements.md#switch_case) [*SwitchCase 集*](./05_Statements.md#switch_cases) _可选_ > -> *SwitchCase* → [*case 标签*](./10_Statements.md#case_label) [*多条语句(Statements)*](./10_Statements.md#statements) | [*default 标签*](./10_Statements.md#default_label) [*多条语句(Statements)*](./10_Statements.md#statements) +> *SwitchCase* → [*case 标签*](./05_Statements.md#case_label) [*多条语句(Statements)*](./05_Statements.md#statements) | [*default 标签*](./05_Statements.md#default_label) [*多条语句(Statements)*](./05_Statements.md#statements) > -> *SwitchCase* → [*case 标签*](./10_Statements.md#case_label) **;** | [*default 标签*](./10_Statements.md#default_label) **;** +> *SwitchCase* → [*case 标签*](./05_Statements.md#case_label) **;** | [*default 标签*](./05_Statements.md#default_label) **;** > -> *case 标签* → **case** [*case 项集*](./10_Statements.md#case_item_list) **:** +> *case 标签* → **case** [*case 项集*](./05_Statements.md#case_item_list) **:** > -> *case 项集* → [*模式*](./07_Patterns.md#pattern) [*where-clause*](./10_Statements.md#guard_clause) _可选_ | [*模式*](./07_Patterns.md#pattern) [*where-clause*](./10_Statements.md#guard_clause) _可选_ **,** [*case 项集*](./10_Statements.md#case_item_list) +> *case 项集* → [*模式*](./08_Patterns.md#pattern) [*where-clause*](./05_Statements.md#guard_clause) _可选_ | [*模式*](./08_Patterns.md#pattern) [*where-clause*](./05_Statements.md#guard_clause) _可选_ **,** [*case 项集*](./05_Statements.md#case_item_list) > > *default 标签* → **default** **:** > @@ -145,9 +145,9 @@ > 标记语句语法 > -> *标记语句(Labeled Statement)* → [*语句标签*](./10_Statements.md#statement_label) [*循环语句*](./10_Statements.md#loop_statement) | [*语句标签*](./10_Statements.md#statement_label) [*if 语句*](./10_Statements.md#switch_statement) | [*语句标签*](TODY) [*switch 语句*](TODY) +> *标记语句(Labeled Statement)* → [*语句标签*](./05_Statements.md#statement_label) [*循环语句*](./05_Statements.md#loop_statement) | [*语句标签*](./05_Statements.md#statement_label) [*if 语句*](./05_Statements.md#switch_statement) | [*语句标签*](TODY) [*switch 语句*](TODY) > -> *语句标签* → [*标签名称*](./10_Statements.md#label_name) **:** +> *语句标签* → [*标签名称*](./05_Statements.md#label_name) **:** > > *标签名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -156,13 +156,13 @@ > 控制传递语句(Control Transfer Statement)语法 > -> *控制传递语句* → [*break 语句*](./10_Statements.md#break_statement) +> *控制传递语句* → [*break 语句*](./05_Statements.md#break_statement) > -> *控制传递语句* → [*continue 语句*](./10_Statements.md#continue_statement) +> *控制传递语句* → [*continue 语句*](./05_Statements.md#continue_statement) > -> *控制传递语句* → [*fallthrough 语句*](./10_Statements.md#fallthrough_statement) +> *控制传递语句* → [*fallthrough 语句*](./05_Statements.md#fallthrough_statement) > -> *控制传递语句* → [*return 语句*](./10_Statements.md#return_statement) +> *控制传递语句* → [*return 语句*](./05_Statements.md#return_statement) > > *控制传递语句* → [*throw 语句*](TODO) > @@ -171,14 +171,14 @@ > Break 语句语法 > -> *break 语句* → **break** [*标签名称*](./10_Statements.md#label_name) _可选_ +> *break 语句* → **break** [*标签名称*](./05_Statements.md#label_name) _可选_ > > Continue 语句语法 > -> *continue 语句* → **continue** [*标签名称*](./10_Statements.md#label_name) _可选_ +> *continue 语句* → **continue** [*标签名称*](./05_Statements.md#label_name) _可选_ > @@ -249,9 +249,9 @@ > 泛型形参从句(Generic Parameter Clause)语法 > > -> *泛型参数从句* → **<** [*泛型参数集*](./GenericParametersAndArguments.md#generic_parameter_list) [*约束从句*](./GenericParametersAndArguments.md#requirement_clause) _可选_ **>** +> *泛型参数从句* → **<** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list) [*约束从句*](./09_Generic_Parameters_and_Arguments.md#requirement_clause) _可选_ **>** > -> *泛型参数集* → [*泛形参数*](./GenericParametersAndArguments.md#generic_parameter) | [*泛形参数*](./GenericParametersAndArguments.md#generic_parameter) **,** [*泛型参数集*](./GenericParametersAndArguments.md#generic_parameter_list) +> *泛型参数集* → [*泛形参数*](./09_Generic_Parameters_and_Arguments.md#generic_parameter) | [*泛形参数*](./09_Generic_Parameters_and_Arguments.md#generic_parameter) **,** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list) > > *泛形参数* → [*类型名称*](./03_Types.md#type_name) > @@ -259,11 +259,11 @@ > > *泛形参数* → [*类型名称*](./03_Types.md#type_name) **:** [*协议合成类型*](./03_Types.md#protocol_composition_type) > -> *约束从句* → **where** [*约束集*](./GenericParametersAndArguments.md#requirement_list) +> *约束从句* → **where** [*约束集*](./09_Generic_Parameters_and_Arguments.md#requirement_list) > -> *约束集* → [*约束*](./GenericParametersAndArguments.md#requirement) | [*约束*](./GenericParametersAndArguments.md#requirement) **,** [*约束集*](./GenericParametersAndArguments.md#requirement_list) +> *约束集* → [*约束*](./09_Generic_Parameters_and_Arguments.md#requirement) | [*约束*](./09_Generic_Parameters_and_Arguments.md#requirement) **,** [*约束集*](./09_Generic_Parameters_and_Arguments.md#requirement_list) > -> *约束* → [*一致性约束*](./GenericParametersAndArguments.md#conformance_requirement) | [*同类型约束*](./GenericParametersAndArguments.md#same_type_requirement) +> *约束* → [*一致性约束*](./09_Generic_Parameters_and_Arguments.md#conformance_requirement) | [*同类型约束*](./09_Generic_Parameters_and_Arguments.md#same_type_requirement) > > *一致性约束* → [*类型标识*](./03_Types.md#type_identifier) **:** [*类型标识*](./03_Types.md#type_identifier) > @@ -276,9 +276,9 @@ > 泛型实参从句语法 > -> *(泛型参数从句 Generic Argument Clause)* → **<** [*泛型参数集*](./GenericParametersAndArguments.md#generic_argument_list) **>** +> *(泛型参数从句 Generic Argument Clause)* → **<** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_argument_list) **>** > -> *泛型参数集* → [*泛型参数*](./GenericParametersAndArguments.md#generic_argument) | [*泛型参数*](./GenericParametersAndArguments.md#generic_argument) **,** [*泛型参数集*](./GenericParametersAndArguments.md#generic_argument_list) +> *泛型参数集* → [*泛型参数*](./09_Generic_Parameters_and_Arguments.md#generic_argument) | [*泛型参数*](./09_Generic_Parameters_and_Arguments.md#generic_argument) **,** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_argument_list) > > *泛型参数* → [*类型*](./03_Types.md#type) > @@ -288,35 +288,35 @@ > 声明语法 > -> *声明* → [*导入声明*](./05_Declarations.md#import_declaration) +> *声明* → [*导入声明*](./06_Declarations.md#import_declaration) > -> *声明* → [*常量声明*](./05_Declarations.md#constant_declaration) +> *声明* → [*常量声明*](./06_Declarations.md#constant_declaration) > -> *声明* → [*变量声明*](./05_Declarations.md#variable_declaration) +> *声明* → [*变量声明*](./06_Declarations.md#variable_declaration) > -> *声明* → [*类型别名声明*](./05_Declarations.md#typealias_declaration) +> *声明* → [*类型别名声明*](./06_Declarations.md#typealias_declaration) > -> *声明* → [*函数声明*](./05_Declarations.md#function_declaration) +> *声明* → [*函数声明*](./06_Declarations.md#function_declaration) > -> *声明* → [*枚举声明*](./05_Declarations.md#enum_declaration) +> *声明* → [*枚举声明*](./06_Declarations.md#enum_declaration) > -> *声明* → [*结构体声明*](./05_Declarations.md#struct_declaration) +> *声明* → [*结构体声明*](./06_Declarations.md#struct_declaration) > -> *声明* → [*类声明*](./05_Declarations.md#class_declaration) +> *声明* → [*类声明*](./06_Declarations.md#class_declaration) > -> *声明* → [*协议声明*](./05_Declarations.md#protocol_declaration) +> *声明* → [*协议声明*](./06_Declarations.md#protocol_declaration) > -> *声明* → [*构造器声明*](./05_Declarations.md#initializer_declaration) +> *声明* → [*构造器声明*](./06_Declarations.md#initializer_declaration) > -> *声明* → [*析构器声明*](./05_Declarations.md#deinitializer_declaration) +> *声明* → [*析构器声明*](./06_Declarations.md#deinitializer_declaration) > -> *声明* → [*扩展声明*](./05_Declarations.md#extension_declaration) +> *声明* → [*扩展声明*](./06_Declarations.md#extension_declaration) > -> *声明* → [*下标声明*](./05_Declarations.md#subscript_declaration) +> *声明* → [*下标声明*](./06_Declarations.md#subscript_declaration) > -> *声明* → [*运算符声明*](./05_Declarations.md#operator_declaration) +> *声明* → [*运算符声明*](./06_Declarations.md#operator_declaration) > -> *声明(Declarations)集* → [*声明*](./05_Declarations.md#declaration) [*声明(Declarations)集*](./05_Declarations.md#declarations) _可选_ +> *声明(Declarations)集* → [*声明*](./06_Declarations.md#declaration) [*声明(Declarations)集*](./06_Declarations.md#declarations) _可选_ > @@ -324,25 +324,25 @@ > 顶级(Top Level)声明语法 > -> *顶级声明* → [*多条语句(Statements)*](./10_Statements.md#statements) _可选_ +> *顶级声明* → [*多条语句(Statements)*](./05_Statements.md#statements) _可选_ > > 代码块语法 > -> *代码块* → **{** [*多条语句(Statements)*](./10_Statements.md#statements) _可选_ **}** +> *代码块* → **{** [*多条语句(Statements)*](./05_Statements.md#statements) _可选_ **}** > > 导入(Import)声明语法 > -> *导入声明* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ **import** [*导入类型*](./05_Declarations.md#import_kind) _可选_ [*导入路径*](./05_Declarations.md#import_path) +> *导入声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **import** [*导入类型*](./06_Declarations.md#import_kind) _可选_ [*导入路径*](./06_Declarations.md#import_path) > > *导入类型* → **typealias** | **struct** | **class** | **enum** | **protocol** | **var** | **func** > -> *导入路径* → [*导入路径标识符*](./05_Declarations.md#import_path_identifier) | [*导入路径标识符*](./05_Declarations.md#import_path_identifier) **.** [*导入路径*](./05_Declarations.md#import_path) +> *导入路径* → [*导入路径标识符*](./06_Declarations.md#import_path_identifier) | [*导入路径标识符*](./06_Declarations.md#import_path_identifier) **.** [*导入路径*](./06_Declarations.md#import_path) > > *导入路径标识符* → [*标识符*](./02_Lexical_Structure.md#identifier) | [*运算符*](./02_Lexical_Structure.md#operator) > @@ -351,11 +351,11 @@ > 常数声明语法 > -> *常量声明* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*声明修改符(Modifiers)集*](./05_Declarations.md#declaration_specifiers) _可选_ **let** [*模式构造器集*](./05_Declarations.md#pattern_initializer_list) +> *常量声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修改符(Modifiers)集*](./06_Declarations.md#declaration_specifiers) _可选_ **let** [*模式构造器集*](./06_Declarations.md#pattern_initializer_list) > -> *模式构造器集* → [*模式构造器*](./05_Declarations.md#pattern_initializer) | [*模式构造器*](./05_Declarations.md#pattern_initializer) **,** [*模式构造器集*](./05_Declarations.md#pattern_initializer_list) +> *模式构造器集* → [*模式构造器*](./06_Declarations.md#pattern_initializer) | [*模式构造器*](./06_Declarations.md#pattern_initializer) **,** [*模式构造器集*](./06_Declarations.md#pattern_initializer_list) > -> *模式构造器* → [*模式*](../ chapter3/07_Patterns.md#pattern) [*构造器*](./05_Declarations.md#initializer) _可选_ +> *模式构造器* → [*模式*](./08_Patterns.md#pattern) [*构造器*](./06_Declarations.md#initializer) _可选_ > > *构造器* → **=** [*表达式*](./04_Expressions.md#expression) > @@ -364,55 +364,55 @@ > 变量声明语法 > -> *变量声明* → [*变量声明头(Head)*](./05_Declarations.md#variable_declaration_head) [*模式构造器集*](./05_Declarations.md#pattern_initializer_list) +> *变量声明* → [*变量声明头(Head)*](./06_Declarations.md#variable_declaration_head) [*模式构造器集*](./06_Declarations.md#pattern_initializer_list) > -> *变量声明* → [*变量声明头(Head)*](./05_Declarations.md#variable_declaration_head) [*变量名*](./05_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*代码块*](./05_Declarations.md#code_block) +> *变量声明* → [*变量声明头(Head)*](./06_Declarations.md#variable_declaration_head) [*变量名*](./06_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*代码块*](./06_Declarations.md#code_block) > -> *变量声明* → [*变量声明头(Head)*](./05_Declarations.md#variable_declaration_head) [*变量名*](./05_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*getter-setter 块*](./05_Declarations.md#getter_setter_block) +> *变量声明* → [*变量声明头(Head)*](./06_Declarations.md#variable_declaration_head) [*变量名*](./06_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*getter-setter 块*](./06_Declarations.md#getter_setter_block) > -> *变量声明* → [*变量声明头(Head)*](./05_Declarations.md#variable_declaration_head) [*变量名*](./05_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*getter-setter 关键字(Keyword)块*](./05_Declarations.md#getter_setter_keyword_block) +> *变量声明* → [*变量声明头(Head)*](./06_Declarations.md#variable_declaration_head) [*变量名*](./06_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*getter-setter 关键字(Keyword)块*](./06_Declarations.md#getter_setter_keyword_block) > -> *变量声明* → [*变量声明头(Head)*](./05_Declarations.md#variable_declaration_head) [*变量名*](./05_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*构造器*](./05_Declarations.md#initializer) _可选_ [*willSet-didSet 代码块*](./05_Declarations.md#willSet_didSet_block) +> *变量声明* → [*变量声明头(Head)*](./06_Declarations.md#variable_declaration_head) [*变量名*](./06_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*构造器*](./06_Declarations.md#initializer) _可选_ [*willSet-didSet 代码块*](./06_Declarations.md#willSet_didSet_block) > -> *变量声明头(Head)* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*声明修改符(Modifers)集*](./05_Declarations.md#declaration_specifiers) _可选_ **var** +> *变量声明头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修改符(Modifers)集*](./06_Declarations.md#declaration_specifiers) _可选_ **var** > > *变量名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> *getter-setter 块* → **{** [*getter 从句*](./05_Declarations.md#getter_clause) [*setter 从句*](./05_Declarations.md#setter_clause) _可选_ **}** +> *getter-setter 块* → **{** [*getter 从句*](./06_Declarations.md#getter_clause) [*setter 从句*](./06_Declarations.md#setter_clause) _可选_ **}** > -> *getter-setter 块* → **{** [*setter 从句*](./05_Declarations.md#setter_clause) [*getter 从句*](./05_Declarations.md#getter_clause) **}** +> *getter-setter 块* → **{** [*setter 从句*](./06_Declarations.md#setter_clause) [*getter 从句*](./06_Declarations.md#getter_clause) **}** > -> *getter 从句* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ **get** [*代码块*](./05_Declarations.md#code_block) +> *getter 从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **get** [*代码块*](./06_Declarations.md#code_block) > -> *setter 从句* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ **set** [*setter 名称*](./05_Declarations.md#setter_name) _可选_ [*代码块*](./05_Declarations.md#code_block) +> *setter 从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **set** [*setter 名称*](./06_Declarations.md#setter_name) _可选_ [*代码块*](./06_Declarations.md#code_block) > > *setter 名称* → **(** [*标识符*](./02_Lexical_Structure.md#identifier) **)** > -> *getter-setter 关键字(Keyword)块* → **{** [*getter 关键字(Keyword)从句*](./05_Declarations.md#getter_keyword_clause) [*setter 关键字(Keyword)从句*](./05_Declarations.md#setter_keyword_clause) _可选_ **}** +> *getter-setter 关键字(Keyword)块* → **{** [*getter 关键字(Keyword)从句*](./06_Declarations.md#getter_keyword_clause) [*setter 关键字(Keyword)从句*](./06_Declarations.md#setter_keyword_clause) _可选_ **}** > -> *getter-setter 关键字(Keyword)块* → **{** [*setter 关键字(Keyword)从句*](./05_Declarations.md#setter_keyword_clause) [*getter 关键字(Keyword)从句*](./05_Declarations.md#getter_keyword_clause) **}** +> *getter-setter 关键字(Keyword)块* → **{** [*setter 关键字(Keyword)从句*](./06_Declarations.md#setter_keyword_clause) [*getter 关键字(Keyword)从句*](./06_Declarations.md#getter_keyword_clause) **}** > -> *getter 关键字(Keyword)从句* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ **get** +> *getter 关键字(Keyword)从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **get** > -> *setter 关键字(Keyword)从句* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ **set** +> *setter 关键字(Keyword)从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **set** > -> *willSet-didSet 代码块* → **{** [*willSet 从句*](./05_Declarations.md#willSet_clause) [*didSet 从句*](./05_Declarations.md#didSet_clause) _可选_ **}** +> *willSet-didSet 代码块* → **{** [*willSet 从句*](./06_Declarations.md#willSet_clause) [*didSet 从句*](./06_Declarations.md#didSet_clause) _可选_ **}** > -> *willSet-didSet 代码块* → **{** [*didSet 从句*](./05_Declarations.md#didSet_clause) [*willSet 从句*](./05_Declarations.md#willSet_clause) **}** +> *willSet-didSet 代码块* → **{** [*didSet 从句*](./06_Declarations.md#didSet_clause) [*willSet 从句*](./06_Declarations.md#willSet_clause) **}** > -> *willSet 从句* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ **willSet** [*setter 名称*](./05_Declarations.md#setter_name) _可选_ [*代码块*](./05_Declarations.md#code_block) +> *willSet 从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **willSet** [*setter 名称*](./06_Declarations.md#setter_name) _可选_ [*代码块*](./06_Declarations.md#code_block) > -> *didSet 从句* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ +> *didSet 从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ > - **didSet** [*setter 名称*](./05_Declarations.md#setter_name) _可选_ [*代码块*](./05_Declarations.md#code_block) + **didSet** [*setter 名称*](./06_Declarations.md#setter_name) _可选_ [*代码块*](./06_Declarations.md#code_block) > 类型别名声明语法 > -> *类型别名声明* → [*类型别名头(Head)*](./05_Declarations.md#typealias_head) [*类型别名赋值*](./05_Declarations.md#typealias_assignment) +> *类型别名声明* → [*类型别名头(Head)*](./06_Declarations.md#typealias_head) [*类型别名赋值*](./06_Declarations.md#typealias_assignment) > -> *类型别名头(Head)* → [*属性*](./TODO) _可选_ [*访问级别修改符(access-level-modifier)*](TODO) **typealias** [*类型别名名称*](./05_Declarations.md#typealias_name) +> *类型别名头(Head)* → [*属性*](TODO) _可选_ [*访问级别修改符(access-level-modifier)*](TODO) **typealias** [*类型别名名称*](./06_Declarations.md#typealias_name) > > *类型别名名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -423,32 +423,32 @@ > 函数声明语法 > -> *函数声明* → [*函数头*](./05_Declarations.md#function_head) [*函数名*](./05_Declarations.md#function_name) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_parameter_clause) _可选_ [*函数签名(Signature)*](./05_Declarations.md#function_signature) [*函数体*](./05_Declarations.md#function_body) +> *函数声明* → [*函数头*](./06_Declarations.md#function_head) [*函数名*](./06_Declarations.md#function_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*函数签名(Signature)*](./06_Declarations.md#function_signature) [*函数体*](./06_Declarations.md#function_body) > -> *函数头* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*声明描述符(Specifiers)集*](./05_Declarations.md#declaration_specifiers) _可选_ **func** +> *函数头* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明描述符(Specifiers)集*](./06_Declarations.md#declaration_specifiers) _可选_ **func** > > *函数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | [*运算符*](./02_Lexical_Structure.md#operator) > -> *函数签名(Signature)* → [*parameter-clauses*](./05_Declarations.md#parameter_clauses) **throws** _可选_ [*函数结果*](./05_Declarations.md#function_result) _可选_ +> *函数签名(Signature)* → [*parameter-clauses*](./06_Declarations.md#parameter_clauses) **throws** _可选_ [*函数结果*](./06_Declarations.md#function_result) _可选_ > -> *函数签名(Signature)* → [*parameter-clauses*](./05_Declarations.md#parameter_clauses) **rethrows** [*函数结果*](./05_Declarations.md#function_result) _可选_ +> *函数签名(Signature)* → [*parameter-clauses*](./06_Declarations.md#parameter_clauses) **rethrows** [*函数结果*](./06_Declarations.md#function_result) _可选_ > -> *函数结果* → **->** [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*类型*](./03_Types.md#type) +> *函数结果* → **->** [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*类型*](./03_Types.md#type) > -> *函数体* → [*代码块*](./05_Declarations.md#code_block) +> *函数体* → [*代码块*](./06_Declarations.md#code_block) > -> *参数从句* → [*参数从句*](./05_Declarations.md#parameter_clause) [*parameter-clauses*](./05_Declarations.md#parameter_clauses) _可选_ +> *参数从句* → [*参数从句*](./06_Declarations.md#parameter_clause) [*parameter-clauses*](./06_Declarations.md#parameter_clauses) _可选_ > -> *参数从句* → **(** **)** | **(** [*参数集*](./05_Declarations.md#parameter_list) **...** _可选_ **)** +> *参数从句* → **(** **)** | **(** [*参数集*](./06_Declarations.md#parameter_list) **...** _可选_ **)** > -> *参数集* → [*参数*](./05_Declarations.md#parameter) | [*参数*](./05_Declarations.md#parameter) **,** [*参数集*](./05_Declarations.md#parameter_list) +> *参数集* → [*参数*](./06_Declarations.md#parameter) | [*参数*](./06_Declarations.md#parameter) **,** [*参数集*](./06_Declarations.md#parameter_list) > -> *参数* → **inout** _可选_ **let** _可选_ [*外部参数名*](./05_Declarations.md#parameter_name) _可选_ [*本地参数名*](./05_Declarations.md#local_parameter_name) _可选_ [*类型注解*](./03_Types.md#type_annotation) [*默认参数从句*](./05_Declarations.md#default_argument_clause) _可选_ +> *参数* → **inout** _可选_ **let** _可选_ [*外部参数名*](./06_Declarations.md#parameter_name) _可选_ [*本地参数名*](./06_Declarations.md#local_parameter_name) _可选_ [*类型注解*](./03_Types.md#type_annotation) [*默认参数从句*](./06_Declarations.md#default_argument_clause) _可选_ > -> *参数* → **inout** _可选_ **var** [*外部参数名*](./05_Declarations.md#parameter_name) [*本地参数名*](./05_Declarations.md#local_parameter_name) _可选_ [*类型注解*](./03_Types.md#type_annotation) [*默认参数从句*](./05_Declarations.md#default_argument_clause) _可选_ +> *参数* → **inout** _可选_ **var** [*外部参数名*](./06_Declarations.md#parameter_name) [*本地参数名*](./06_Declarations.md#local_parameter_name) _可选_ [*类型注解*](./03_Types.md#type_annotation) [*默认参数从句*](./06_Declarations.md#default_argument_clause) _可选_ > -> *参数* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*类型*](./03_Types.md#type) +> *参数* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*类型*](./03_Types.md#type) > > *外部参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | **_** > @@ -461,37 +461,37 @@ > 枚举声明语法 > -> *枚举声明* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](./TODO) _可选_ [*联合式枚举*](./05_Declarations.md#union_style_enum) +> *枚举声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](TODO) _可选_ [*联合式枚举*](./06_Declarations.md#union_style_enum) > -> *枚举声明* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](TODO) _可选_ [*原始值式枚举(raw-value-style-enum)*](TODO) +> *枚举声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](TODO) _可选_ [*原始值式枚举(raw-value-style-enum)*](TODO) > -> *联合式枚举* → **enum** [*枚举名*](./05_Declarations.md#enum_name) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_parameter_clause) _可选_ [*类型继承从句(type-inheritance-clause)*](./TODO) _可选_ **{** [*联合样式枚举成员*](./05_Declarations.md#union_style_enum_members) _可选_ **}** +> *联合式枚举* → **enum** [*枚举名*](./06_Declarations.md#enum_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承从句(type-inheritance-clause)*](TODO) _可选_ **{** [*联合样式枚举成员*](./06_Declarations.md#union_style_enum_members) _可选_ **}** > -> *联合样式枚举成员* → [*union-style-enum-member*](./05_Declarations.md#union_style_enum_member) [*联合样式枚举成员*](./05_Declarations.md#union_style_enum_members) _可选_ +> *联合样式枚举成员* → [*union-style-enum-member*](./06_Declarations.md#union_style_enum_member) [*联合样式枚举成员*](./06_Declarations.md#union_style_enum_members) _可选_ > -> *联合样式枚举成员* → [*声明*](./05_Declarations.md#declaration) | [*联合式(Union Style)的枚举 case 从句*](./05_Declarations.md#union_style_enum_case_clause) +> *联合样式枚举成员* → [*声明*](./06_Declarations.md#declaration) | [*联合式(Union Style)的枚举 case 从句*](./06_Declarations.md#union_style_enum_case_clause) > -> *联合式(Union Style)的枚举 case 从句* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ **case** [*联合式(Union Style)的枚举 case 集*](./05_Declarations.md#union_style_enum_case_list) +> *联合式(Union Style)的枚举 case 从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **case** [*联合式(Union Style)的枚举 case 集*](./06_Declarations.md#union_style_enum_case_list) > -> *联合式(Union Style)的枚举 case 集* → [*联合式(Union Style)的 case*](./05_Declarations.md#union_style_enum_case) | [*联合式(Union Style)的 case*](./05_Declarations.md#union_style_enum_case) **,** [*联合式(Union Style)的枚举 case 集*](./05_Declarations.md#union_style_enum_case_list) +> *联合式(Union Style)的枚举 case 集* → [*联合式(Union Style)的 case*](./06_Declarations.md#union_style_enum_case) | [*联合式(Union Style)的 case*](./06_Declarations.md#union_style_enum_case) **,** [*联合式(Union Style)的枚举 case 集*](./06_Declarations.md#union_style_enum_case_list) > -> *联合式(Union Style)的枚举 case* → [*枚举的 case 名*](./05_Declarations.md#enum_case_name) [*元组类型*](./03_Types.md#tuple_type) _可选_ +> *联合式(Union Style)的枚举 case* → [*枚举的 case 名*](./06_Declarations.md#enum_case_name) [*元组类型*](./03_Types.md#tuple_type) _可选_ > > *枚举名* → [*标识符*](./02_Lexical_Structure.md#identifier) > > *枚举的 case 名* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> *原始值式枚举* → **enum** [*枚举名*](./05_Declarations.md#enum_name) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_parameter_clause) _可选_ **:** [*类型标识*](./03_Types.md#type_identifier) **{** [*原始值式枚举成员集*](./05_Declarations.md#raw_value_style_enum_members) _可选_ **}** +> *原始值式枚举* → **enum** [*枚举名*](./06_Declarations.md#enum_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ **:** [*类型标识*](./03_Types.md#type_identifier) **{** [*原始值式枚举成员集*](./06_Declarations.md#raw_value_style_enum_members) _可选_ **}** > -> *原始值式枚举成员集* → [*原始值式枚举成员*](./05_Declarations.md#raw_value_style_enum_member) [*原始值式枚举成员集*](./05_Declarations.md#raw_value_style_enum_members) _可选_ +> *原始值式枚举成员集* → [*原始值式枚举成员*](./06_Declarations.md#raw_value_style_enum_member) [*原始值式枚举成员集*](./06_Declarations.md#raw_value_style_enum_members) _可选_ > -> *原始值式枚举成员* → [*声明*](./05_Declarations.md#declaration) | [*原始值式枚举 case 从句*](./05_Declarations.md#raw_value_style_enum_case_clause) +> *原始值式枚举成员* → [*声明*](./06_Declarations.md#declaration) | [*原始值式枚举 case 从句*](./06_Declarations.md#raw_value_style_enum_case_clause) > -> *原始值式枚举 case 从句* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ **case** [*原始值式枚举 case 集*](./05_Declarations.md#raw_value_style_enum_case_list) +> *原始值式枚举 case 从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **case** [*原始值式枚举 case 集*](./06_Declarations.md#raw_value_style_enum_case_list) > -> *原始值式枚举 case 集* → [*原始值式枚举 case*](./05_Declarations.md#raw_value_style_enum_case) | [*原始值式枚举 case*](./05_Declarations.md#raw_value_style_enum_case) **,** [*原始值式枚举 case 集*](./05_Declarations.md#raw_value_style_enum_case_list) +> *原始值式枚举 case 集* → [*原始值式枚举 case*](./06_Declarations.md#raw_value_style_enum_case) | [*原始值式枚举 case*](./06_Declarations.md#raw_value_style_enum_case) **,** [*原始值式枚举 case 集*](./06_Declarations.md#raw_value_style_enum_case_list) > -> *原始值式枚举 case* → [*枚举的 case 名*](./05_Declarations.md#enum_case_name) [*原始值赋值*](./05_Declarations.md#raw_value_assignment) _可选_ +> *原始值式枚举 case* → [*枚举的 case 名*](./06_Declarations.md#enum_case_name) [*原始值赋值*](./06_Declarations.md#raw_value_assignment) _可选_ > > *原始值赋值* → **=** [*字面量*](./02_Lexical_Structure.md#literal) > @@ -502,147 +502,147 @@ > 结构体声明语法 > -> *结构体声明* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](./TODO) _可选_ **struct** [*结构体名称*](./05_Declarations.md#struct_name) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_parameter_clause) _可选_ [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*结构体主体*](./05_Declarations.md#struct_body) +> *结构体声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](TODO) _可选_ **struct** [*结构体名称*](./06_Declarations.md#struct_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*结构体主体*](./06_Declarations.md#struct_body) > > *结构体名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> *结构体主体* → **{** [*声明(Declarations)集*](./05_Declarations.md#declarations) _可选_ **}** +> *结构体主体* → **{** [*声明(Declarations)集*](./06_Declarations.md#declarations) _可选_ **}** > > 类声明语法 > -> *类声明* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](./TODO) **class** [*类名*](./05_Declarations.md#class_name) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_parameter_clause) _可选_ [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*类主体*](./05_Declarations.md#class_body) +> *类声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](TODO) **class** [*类名*](./06_Declarations.md#class_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*类主体*](./06_Declarations.md#class_body) > > *类名* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> *类主体* → **{** [*声明(Declarations)集*](./05_Declarations.md#declarations) _可选_ **}** +> *类主体* → **{** [*声明(Declarations)集*](./06_Declarations.md#declarations) _可选_ **}** > > 协议(Protocol)声明语法 > -> *协议声明* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_[*访问级别修改器(access-level-modifier)*](./TODO) **protocol** [*协议名*](./05_Declarations.md#protocol_name) [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*协议主体*](./05_Declarations.md#protocol_body) +> *协议声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_[*访问级别修改器(access-level-modifier)*](TODO) **protocol** [*协议名*](./06_Declarations.md#protocol_name) [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*协议主体*](./06_Declarations.md#protocol_body) > > *协议名* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> *协议主体* → **{** [*协议成员声明(Declarations)集*](./05_Declarations.md#protocol_member_declarations) _可选_ **}** +> *协议主体* → **{** [*协议成员声明(Declarations)集*](./06_Declarations.md#protocol_member_declarations) _可选_ **}** > -> *协议成员声明* → [*协议属性声明*](./05_Declarations.md#protocol_property_declaration) +> *协议成员声明* → [*协议属性声明*](./06_Declarations.md#protocol_property_declaration) > -> *协议成员声明* → [*协议方法声明*](./05_Declarations.md#protocol_method_declaration) +> *协议成员声明* → [*协议方法声明*](./06_Declarations.md#protocol_method_declaration) > -> *协议成员声明* → [*协议构造器声明*](./05_Declarations.md#protocol_initializer_declaration) +> *协议成员声明* → [*协议构造器声明*](./06_Declarations.md#protocol_initializer_declaration) > -> *协议成员声明* → [*协议下标声明*](./05_Declarations.md#protocol_subscript_declaration) +> *协议成员声明* → [*协议下标声明*](./06_Declarations.md#protocol_subscript_declaration) > -> *协议成员声明* → [*协议关联类型声明*](./05_Declarations.md#protocol_associated_type_declaration) +> *协议成员声明* → [*协议关联类型声明*](./06_Declarations.md#protocol_associated_type_declaration) > -> *协议成员声明(Declarations)集* → [*协议成员声明*](./05_Declarations.md#protocol_member_declaration) [*协议成员声明(Declarations)集*](./05_Declarations.md#protocol_member_declarations) _可选_ +> *协议成员声明(Declarations)集* → [*协议成员声明*](./06_Declarations.md#protocol_member_declaration) [*协议成员声明(Declarations)集*](./06_Declarations.md#protocol_member_declarations) _可选_ > > 协议属性声明语法 > -> *协议属性声明* → [*变量声明头(Head)*](./05_Declarations.md#variable_declaration_head) [*变量名*](./05_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*getter-setter 关键字(Keyword)块*](./05_Declarations.md#getter_setter_keyword_block) +> *协议属性声明* → [*变量声明头(Head)*](./06_Declarations.md#variable_declaration_head) [*变量名*](./06_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*getter-setter 关键字(Keyword)块*](./06_Declarations.md#getter_setter_keyword_block) > > 协议方法声明语法 > -> *协议方法声明* → [*函数头*](./05_Declarations.md#function_head) [*函数名*](./05_Declarations.md#function_name) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_parameter_clause) _可选_ [*函数签名(Signature)*](./05_Declarations.md#function_signature) +> *协议方法声明* → [*函数头*](./06_Declarations.md#function_head) [*函数名*](./06_Declarations.md#function_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*函数签名(Signature)*](./06_Declarations.md#function_signature) > > 协议构造器声明语法 > -> *协议构造器声明* → [*构造器头(Head)*](./05_Declarations.md#initializer_head) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_parameter_clause) _可选_ [*参数从句*](./05_Declarations.md#parameter_clause) +> *协议构造器声明* → [*构造器头(Head)*](./06_Declarations.md#initializer_head) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*参数从句*](./06_Declarations.md#parameter_clause) > > 协议下标声明语法 > -> *协议下标声明* → [*下标头(Head)*](./05_Declarations.md#subscript_head) [*下标结果(Result)*](./05_Declarations.md#subscript_result) [*getter-setter 关键字(Keyword)块*](./05_Declarations.md#getter_setter_keyword_block) +> *协议下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*getter-setter 关键字(Keyword)块*](./06_Declarations.md#getter_setter_keyword_block) > > 协议关联类型声明语法 > -> *协议关联类型声明* → [*类型别名头(Head)*](./05_Declarations.md#typealias_head) [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*类型别名赋值*](./05_Declarations.md#typealias_assignment) _可选_ +> *协议关联类型声明* → [*类型别名头(Head)*](./06_Declarations.md#typealias_head) [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*类型别名赋值*](./06_Declarations.md#typealias_assignment) _可选_ > > 构造器声明语法 > -> *构造器声明* → [*构造器头(Head)*](./05_Declarations.md#initializer_head) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_parameter_clause) _可选_ [*参数从句*](./05_Declarations.md#parameter_clause) [*构造器主体*](./05_Declarations.md#initializer_body) +> *构造器声明* → [*构造器头(Head)*](./06_Declarations.md#initializer_head) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*参数从句*](./06_Declarations.md#parameter_clause) [*构造器主体*](./06_Declarations.md#initializer_body) > -> *构造器头(Head)* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*声明修改器集(declaration-modifiers)*](TODO) _可选_ **init** +> *构造器头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修改器集(declaration-modifiers)*](TODO) _可选_ **init** > -> *构造器头(Head)* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*声明修改器集(declaration-modifiers)*](TODO) _可选_ **init ?** +> *构造器头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修改器集(declaration-modifiers)*](TODO) _可选_ **init ?** > -> *构造器头(Head)* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*声明修改器集(declaration-modifiers)*](TODO) _可选_ **init !** +> *构造器头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修改器集(declaration-modifiers)*](TODO) _可选_ **init !** > -> *构造器主体* → [*代码块*](./05_Declarations.md#code_block) +> *构造器主体* → [*代码块*](./06_Declarations.md#code_block) > > 析构器声明语法 > -> *析构器声明* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ **deinit** [*代码块*](./05_Declarations.md#code_block) +> *析构器声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **deinit** [*代码块*](./06_Declarations.md#code_block) > > 扩展(Extension)声明语法 > -> *扩展声明* → [*访问级别修改器*](./TODO) _可选_ **extension** [*类型标识*](./03_Types.md#type_identifier) [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*extension-body*](./05_Declarations.md#extension_body) +> *扩展声明* → [*访问级别修改器*](TODO) _可选_ **extension** [*类型标识*](./03_Types.md#type_identifier) [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*extension-body*](./06_Declarations.md#extension_body) > -> *extension-body* → **{** [*声明(Declarations)集*](./05_Declarations.md#declarations) _可选_ **}** +> *extension-body* → **{** [*声明(Declarations)集*](./06_Declarations.md#declarations) _可选_ **}** > > 下标声明语法 > -> *下标声明* → [*下标头(Head)*](./05_Declarations.md#subscript_head) [*下标结果(Result)*](./05_Declarations.md#subscript_result) [*代码块*](./05_Declarations.md#code_block) +> *下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*代码块*](./06_Declarations.md#code_block) > -> *下标声明* → [*下标头(Head)*](./05_Declarations.md#subscript_head) [*下标结果(Result)*](./05_Declarations.md#subscript_result) [*getter-setter 块*](./05_Declarations.md#getter_setter_block) +> *下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*getter-setter 块*](./06_Declarations.md#getter_setter_block) > -> *下标声明* → [*下标头(Head)*](./05_Declarations.md#subscript_head) [*下标结果(Result)*](./05_Declarations.md#subscript_result) [*getter-setter 关键字(Keyword)块*](./05_Declarations.md#getter_setter_keyword_block) +> *下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*getter-setter 关键字(Keyword)块*](./06_Declarations.md#getter_setter_keyword_block) > -> *下标头(Head)* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*声明修改器(declaration-modifiers)*](./TODO) _可选_ **subscript** [*参数从句*](./05_Declarations.md#parameter_clause) +> *下标头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修改器(declaration-modifiers)*](TODO) _可选_ **subscript** [*参数从句*](./06_Declarations.md#parameter_clause) > -> *下标结果(Result)* → **->** [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*类型*](./03_Types.md#type) +> *下标结果(Result)* → **->** [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*类型*](./03_Types.md#type) > > 运算符声明语法 > -> *运算符声明* → [*前置运算符声明*](./05_Declarations.md#prefix_operator_declaration) | [*后置运算符声明*](./05_Declarations.md#postfix_operator_declaration) | [*中置运算符声明*](./05_Declarations.md#infix_operator_declaration) +> *运算符声明* → [*前置运算符声明*](./06_Declarations.md#prefix_operator_declaration) | [*后置运算符声明*](./06_Declarations.md#postfix_operator_declaration) | [*中置运算符声明*](./06_Declarations.md#infix_operator_declaration) > > *前置运算符声明* → **prefix** **运算符** [*运算符*](./02_Lexical_Structure.md#operator) **{** **}** > > *后置运算符声明* → **postfix** **运算符** [*运算符*](./02_Lexical_Structure.md#operator) **{** **}** > -> *中置运算符声明* → **infix** **运算符** [*运算符*](./02_Lexical_Structure.md#operator) **{** [*中置运算符属性集*](./05_Declarations.md#infix_operator_attributes) _可选_ **}** +> *中置运算符声明* → **infix** **运算符** [*运算符*](./02_Lexical_Structure.md#operator) **{** [*中置运算符属性集*](./06_Declarations.md#infix_operator_attributes) _可选_ **}** > -> *中置运算符属性集* → [*优先级从句*](./05_Declarations.md#precedence_clause) _可选_ [*结和性从句*](./05_Declarations.md#associativity_clause) _可选_ +> *中置运算符属性集* → [*优先级从句*](./06_Declarations.md#precedence_clause) _可选_ [*结和性从句*](./06_Declarations.md#associativity_clause) _可选_ > -> *优先级从句* → **precedence** [*优先级水平*](./05_Declarations.md#precedence_level) +> *优先级从句* → **precedence** [*优先级水平*](./06_Declarations.md#precedence_level) > > *优先级水平* → 数值 0 到 255,首末项包括在内 > -> *结和性从句* → **associativity** [*结和性*](./05_Declarations.md#associativity) +> *结和性从句* → **associativity** [*结和性*](./06_Declarations.md#associativity) > > *结和性* → **left** | **right** | **none** > @@ -671,21 +671,21 @@ > 模式(Patterns)语法 > -> *模式* → [*通配符模式*](./07_Patterns.md#wildcard_pattern) [*类型注解*](./03_Types.md#type_annotation) _可选_ +> *模式* → [*通配符模式*](./08_Patterns.md#wildcard_pattern) [*类型注解*](./03_Types.md#type_annotation) _可选_ > -> *模式* → [*标识符模式*](./07_Patterns.md#identifier_pattern) [*类型注解*](./03_Types.md#type_annotati Value Bindingon ) _可选_ +> *模式* → [*标识符模式*](./08_Patterns.md#identifier_pattern) [*类型注解*](./03_Types.md#type_annotati Value Bindingon ) _可选_ > -> *模式* → [*值绑定模式*](./07_Patterns.md#value_binding_pattern) +> *模式* → [*值绑定模式*](./08_Patterns.md#value_binding_pattern) > -> *模式* → [*元组模式*](./07_Patterns.md#tuple_pattern) [*类型注解*](./03_Types.md#type_annotation) _可选_ +> *模式* → [*元组模式*](./08_Patterns.md#tuple_pattern) [*类型注解*](./03_Types.md#type_annotation) _可选_ > -> *模式* → [*枚举个例模式*](./07_Patterns.md#enum_case_pattern) +> *模式* → [*枚举个例模式*](./08_Patterns.md#enum_case_pattern) > > *模式* → [*可选模式*](TODO) > -> *模式* → [*类型转换模式*](./07_Patterns.md#type_casting_pattern) +> *模式* → [*类型转换模式*](./08_Patterns.md#type_casting_pattern) > -> *模式* → [*表达式模式*](./07_Patterns.md#expression_pattern) +> *模式* → [*表达式模式*](./08_Patterns.md#expression_pattern) > @@ -706,25 +706,25 @@ > 值绑定(Value Binding)模式语法 > -> *值绑定模式* → **var** [*模式*](./07_Patterns.md#pattern) | **let** [*模式*](./07_Patterns.md#pattern) +> *值绑定模式* → **var** [*模式*](./08_Patterns.md#pattern) | **let** [*模式*](./08_Patterns.md#pattern) > > 元组模式语法 > -> *元组模式* → **(** [*元组模式元素集*](./07_Patterns.md#tuple_pattern_element_list) _可选_ **)** +> *元组模式* → **(** [*元组模式元素集*](./08_Patterns.md#tuple_pattern_element_list) _可选_ **)** > -> *元组模式元素集* → [*元组模式元素*](./07_Patterns.md#tuple_pattern_element) | [*元组模式元素*](./07_Patterns.md#tuple_pattern_element) **,** [*元组模式元素集*](./07_Patterns.md#tuple_pattern_element_list) +> *元组模式元素集* → [*元组模式元素*](./08_Patterns.md#tuple_pattern_element) | [*元组模式元素*](./08_Patterns.md#tuple_pattern_element) **,** [*元组模式元素集*](./08_Patterns.md#tuple_pattern_element_list) > -> *元组模式元素* → [*模式*](./07_Patterns.md#pattern) +> *元组模式元素* → [*模式*](./08_Patterns.md#pattern) > > 枚举用例模式语法 > -> *enum-case-pattern* → [*类型标识*](./03_Types.md#type_identifier) _可选_ **.** [*枚举的 case 名*](./05_Declarations.md#enum_case_name) [*元组模式*](./07_Patterns.md#tuple_pattern) _可选_ +> *enum-case-pattern* → [*类型标识*](./03_Types.md#type_identifier) _可选_ **.** [*枚举的 case 名*](./06_Declarations.md#enum_case_name) [*元组模式*](./08_Patterns.md#tuple_pattern) _可选_ > @@ -737,11 +737,11 @@ > 类型转换模式语法 > -> *类型转换模式(type-casting-pattern)* → [*is 模式*](./07_Patterns.md#is_pattern) | [*as 模式*](./07_Patterns.md#as_pattern) +> *类型转换模式(type-casting-pattern)* → [*is 模式*](./08_Patterns.md#is_pattern) | [*as 模式*](./08_Patterns.md#as_pattern) > > *is 模式* → **is** [*类型*](./03_Types.md#type) > -> *as 模式* → [*模式*](./07_Patterns.md#pattern) **as** [*类型*](./03_Types.md#type) +> *as 模式* → [*模式*](./08_Patterns.md#pattern) **as** [*类型*](./03_Types.md#type) > @@ -756,21 +756,21 @@ > 属性语法 > -> *属性* → **@** [*属性名*](./06_Attributes.md#attribute_name) [*属性参数从句*](./06_Attributes.md#attribute_argument_clause) _可选_ +> *属性* → **@** [*属性名*](./07_Attributes.md#attribute_name) [*属性参数从句*](./07_Attributes.md#attribute_argument_clause) _可选_ > > *属性名* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> *属性参数从句* → **(** [*平衡令牌集*](./06_Attributes.md#balanced_tokens) _可选_ **)** +> *属性参数从句* → **(** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **)** > -> *属性(Attributes)集* → [*属性*](./06_Attributes.md#attribute) [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ +> *属性(Attributes)集* → [*属性*](./07_Attributes.md#attribute) [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ > -> *平衡令牌集* → [*平衡令牌*](./06_Attributes.md#balanced_token) [*平衡令牌集*](./06_Attributes.md#balanced_tokens) _可选_ +> *平衡令牌集* → [*平衡令牌*](./07_Attributes.md#balanced_token) [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ > -> *平衡令牌* → **(** [*平衡令牌集*](./06_Attributes.md#balanced_tokens) _可选_ **)** +> *平衡令牌* → **(** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **)** > -> *平衡令牌* → **[** [*平衡令牌集*](./06_Attributes.md#balanced_tokens) _可选_ **]** +> *平衡令牌* → **[** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **]** > -> *平衡令牌* → **{** [*平衡令牌集*](./06_Attributes.md#balanced_tokens) _可选_ **}** +> *平衡令牌* → **{** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **}** > > *平衡令牌* → **任意标识符、关键字、字面量或运算符** > @@ -782,7 +782,7 @@ > 表达式语法 > -> *表达式* → [*try-operator*](./TODO) _可选_ [*前置表达式*](./04_Expressions.md#prefix_expression) [*二元表达式集*](./04_Expressions.md#binary_expressions) _可选_ +> *表达式* → [*try-operator*](TODO) _可选_ [*前置表达式*](./04_Expressions.md#prefix_expression) [*二元表达式集*](./04_Expressions.md#binary_expressions) _可选_ > > *表达式集* → [*表达式*](./04_Expressions.md#expression) | [*表达式*](./04_Expressions.md#expression) **,** [*表达式集*](./04_Expressions.md#expression_list) > @@ -810,9 +810,9 @@ > > *二元表达式* → [*二元运算符*](./02_Lexical_Structure.md#binary_operator) [*前置表达式*](./04_Expressions.md#prefix_expression) > -> *二元表达式* → [*赋值运算符*](./04_Expressions.md#assignment_operator) [*try 运算符*](./TODO) _可选_ [*前置表达式*](./04_Expressions.md#prefix_expression) +> *二元表达式* → [*赋值运算符*](./04_Expressions.md#assignment_operator) [*try 运算符*](TODO) _可选_ [*前置表达式*](./04_Expressions.md#prefix_expression) > -> *二元表达式* → [*条件运算符*](./04_Expressions.md#conditional_operator) [*try 运算符*](./TODO) _可选_ [*前置表达式*](./04_Expressions.md#prefix_expression) +> *二元表达式* → [*条件运算符*](./04_Expressions.md#conditional_operator) [*try 运算符*](TODO) _可选_ [*前置表达式*](./04_Expressions.md#prefix_expression) > > *二元表达式* → [*类型转换运算符*](./04_Expressions.md#type_casting_operator) > @@ -850,7 +850,7 @@ > 主表达式语法 > -> *主表达式* → [*标识符*](./02_Lexical_Structure.md#identifier) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_argument_clause) _可选_ +> *主表达式* → [*标识符*](./02_Lexical_Structure.md#identifier) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_argument_clause) _可选_ > > *主表达式* → [*字面量表达式*](./04_Expressions.md#literal_expression) > @@ -920,15 +920,15 @@ > 闭包表达式语法 > -> *闭包表达式* → **{** [*闭包签名(Signational)*](./04_Expressions.md#closure_signature) _可选_ [*多条语句(Statements)*](./10_Statements.md#statements) **}** +> *闭包表达式* → **{** [*闭包签名(Signational)*](./04_Expressions.md#closure_signature) _可选_ [*多条语句(Statements)*](./05_Statements.md#statements) **}** > -> *闭包签名(Signational)* → [*参数从句*](./05_Declarations.md#parameter_clause) [*函数结果*](./05_Declarations.md#function_result) _可选_ **in** +> *闭包签名(Signational)* → [*参数从句*](./06_Declarations.md#parameter_clause) [*函数结果*](./06_Declarations.md#function_result) _可选_ **in** > -> *闭包签名(Signational)* → [*标识符集*](./02_Lexical_Structure.md#identifier_list) [*函数结果*](./05_Declarations.md#function_result) _可选_ **in** +> *闭包签名(Signational)* → [*标识符集*](./02_Lexical_Structure.md#identifier_list) [*函数结果*](./06_Declarations.md#function_result) _可选_ **in** > -> *闭包签名(Signational)* → [*捕获(Capature)集*](./04_Expressions.md#capture_list) [*参数从句*](./05_Declarations.md#parameter_clause) [*函数结果*](./05_Declarations.md#function_result) _可选_ **in** +> *闭包签名(Signational)* → [*捕获(Capature)集*](./04_Expressions.md#capture_list) [*参数从句*](./06_Declarations.md#parameter_clause) [*函数结果*](./06_Declarations.md#function_result) _可选_ **in** > -> *闭包签名(Signational)* → [*捕获(Capature)集*](./04_Expressions.md#capture_list) [*标识符集*](./02_Lexical_Structure.md#identifier_list) [*函数结果*](./05_Declarations.md#function_result) _可选_ **in** +> *闭包签名(Signational)* → [*捕获(Capature)集*](./04_Expressions.md#capture_list) [*标识符集*](./02_Lexical_Structure.md#identifier_list) [*函数结果*](./06_Declarations.md#function_result) _可选_ **in** > > *闭包签名(Signational)* → [*捕获(Capature)集*](./04_Expressions.md#capture_list) **in** > @@ -1011,7 +1011,7 @@ > > *显示成员表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **.** [*十进制数字*](./02_Lexical_Structure.md#decimal_digit) > -> *显示成员表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **.** [*标识符*](./02_Lexical_Structure.md#identifier) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_argument_clause) _可选_ +> *显示成员表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **.** [*标识符*](./02_Lexical_Structure.md#identifier) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_argument_clause) _可选_ > @@ -1282,21 +1282,21 @@ > 类型语法 > -> *类型* → [*数组类型*](./03_Types.md#array_type) | [*字典类型*](./TODO) | [*函数类型*](./03_Types.md#function_type) | [*类型标识符*](./03_Types.md#type_identifier) | [*元组类型*](./03_Types.md#tuple_type) | [*可选类型*](./03_Types.md#optional_type) | [*隐式解析可选类型*](./03_Types.md#implicitly_unwrapped_optional_type) | [*协议合成类型*](./03_Types.md#protocol_composition_type) | [*元型类型*](./03_Types.md#metatype_type) +> *类型* → [*数组类型*](./03_Types.md#array_type) | [*字典类型*](TODO) | [*函数类型*](./03_Types.md#function_type) | [*类型标识符*](./03_Types.md#type_identifier) | [*元组类型*](./03_Types.md#tuple_type) | [*可选类型*](./03_Types.md#optional_type) | [*隐式解析可选类型*](./03_Types.md#implicitly_unwrapped_optional_type) | [*协议合成类型*](./03_Types.md#protocol_composition_type) | [*元型类型*](./03_Types.md#metatype_type) > > 类型注解语法 > -> *类型注解* → **:** [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ [*类型*](./03_Types.md#type) +> *类型注解* → **:** [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*类型*](./03_Types.md#type) > > 类型标识语法 > -> *类型标识* → [*类型名称*](./03_Types.md#type_name) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_argument_clause) _可选_ | [*类型名称*](./03_Types.md#type_name) [*泛型参数从句*](./GenericParametersAndArguments.md#generic_argument_clause) _可选_ **.** [*类型标识符*](./03_Types.md#type_identifier) +> *类型标识* → [*类型名称*](./03_Types.md#type_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_argument_clause) _可选_ | [*类型名称*](./03_Types.md#type_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_argument_clause) _可选_ **.** [*类型标识符*](./03_Types.md#type_identifier) > > *类型名* → [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -1311,7 +1311,7 @@ > > *元组类型的元素集* → [*元组类型的元素*](./03_Types.md#tuple_type_element) | [*元组类型的元素*](./03_Types.md#tuple_type_element) **,** [*元组类型的元素集*](./03_Types.md#tuple_type_element_list) > -> *元组类型的元素* → [*属性(Attributes)集*](./06_Attributes.md#attributes) _可选_ **inout** _可选_ [*类型*](./03_Types.md#type) | **inout** _可选_ [*元素名*](./03_Types.md#element_name) [*类型注解*](./03_Types.md#type_annotation) +> *元组类型的元素* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **inout** _可选_ [*类型*](./03_Types.md#type) | **inout** _可选_ [*元素名*](./03_Types.md#element_name) [*类型注解*](./03_Types.md#type_annotation) > > *元素名* → [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -1374,7 +1374,7 @@ > 类型继承从句语法 > -> *类型继承从句* → **:** [*类条件(class-requirement))*](./TODO) **,** [*类型继承集*](./03_Types.md#type_inheritance_list) +> *类型继承从句* → **:** [*类条件(class-requirement))*](TODO) **,** [*类型继承集*](./03_Types.md#type_inheritance_list) > > *类型继承从句* → **:** [*类条件(class-requirement))*](TODO) > From cd06ac6f5253d388976c4ce71823b1ae573d5f50 Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Tue, 26 Mar 2019 23:40:52 -0500 Subject: [PATCH 055/107] test gitbook anchor --- source/chapter3/08_Patterns.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/chapter3/08_Patterns.md b/source/chapter3/08_Patterns.md index 4baba9bc..76c0b2de 100755 --- a/source/chapter3/08_Patterns.md +++ b/source/chapter3/08_Patterns.md @@ -28,8 +28,7 @@ Swift 中的模式分为两类:一种能成功匹配任何类型的值,另 > *模式* → [*表达式模式*](#expression-pattern) > - -## 通配符模式(Wildcard Pattern) +## 通配符模式(Wildcard Pattern) {#wildcard_pattern} *通配符模式*由一个下划线(`_`)构成,用于匹配并忽略任何值。当你想忽略被匹配的值时可以使用该模式。例如,下面这段代码在闭区间 `1...3` 中迭代,每次迭代都忽略该区间的当前值: From fc86ccb932f2274efeb896c85fcf5fde4f52ac94 Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Wed, 27 Mar 2019 00:14:08 -0500 Subject: [PATCH 056/107] fix all anchor format --- source/chapter1/03_a_swift_tour.md | 24 +- source/chapter2/01_The_Basics.md | 87 ++-- source/chapter2/02_Basic_Operators.md | 45 +- source/chapter2/03_Strings_and_Characters.md | 72 +-- source/chapter2/04_Collection_Types.md | 75 +-- source/chapter2/05_Control_Flow.md | 66 +-- source/chapter2/06_Functions.md | 54 +-- source/chapter2/07_Closures.md | 37 +- source/chapter2/08_Enumerations.md | 24 +- source/chapter2/09_Structures_And_Classes.md | 27 +- source/chapter2/10_Properties.md | 36 +- source/chapter2/11_Methods.md | 15 +- source/chapter2/12_Subscripts.md | 9 +- source/chapter2/13_Inheritance.md | 15 +- source/chapter2/14_Initialization.md | 89 ++-- source/chapter2/15_Deinitialization.md | 6 +- source/chapter2/16_Optional_Chaining.md | 24 +- source/chapter2/17_Error_Handling.md | 12 +- source/chapter2/18_Type_Casting.md | 12 +- source/chapter2/19_Nested_Types.md | 6 +- source/chapter2/21_Protocols.md | 59 +-- source/chapter2/22_Generics.md | 54 +-- .../23_Automatic_Reference_Counting.md | 35 +- source/chapter2/24_Memory_Safety.md | 15 +- source/chapter2/25_Access_Control.md | 81 ++-- source/chapter2/26_Advanced_Operators.md | 51 +- .../01_About_the_Language_Reference.md | 3 +- source/chapter3/02_Lexical_Structure.md | 138 +++--- source/chapter3/03_Types.md | 74 +-- source/chapter3/04_Expressions.md | 231 ++++----- source/chapter3/05_Statements.md | 234 ++++------ source/chapter3/06_Declarations.md | 439 +++++++----------- source/chapter3/07_Attributes.md | 85 ++-- source/chapter3/08_Patterns.md | 54 +-- .../09_Generic_Parameters_and_Arguments.md | 34 +- source/chapter3/10_Summary_of_the_Grammar.md | 24 +- source/chapter4/02_Type_Custom.md | 19 +- .../chapter4/05_Value_and_Reference_Types.md | 9 +- source/chapter4/07_Optional_Case_Study.md | 15 +- 39 files changed, 878 insertions(+), 1511 deletions(-) diff --git a/source/chapter1/03_a_swift_tour.md b/source/chapter1/03_a_swift_tour.md index f4ad3366..dc1fed4b 100755 --- a/source/chapter1/03_a_swift_tour.md +++ b/source/chapter1/03_a_swift_tour.md @@ -16,8 +16,7 @@ print("Hello, world!") > > [Download Playground](https://docs.swift.org/swift-book/GuidedTour/GuidedTour.playground.zip) - -## 简单值 +## 简单值 {#simple_values} 使用 `let` 来声明常量,使用 `var` 来声明变量。一个常量的值,在编译的时候,并不需要有明确的值,但是你只能为它赋值一次。这说明你可以用一个常量来命名一个值,一次赋值就即可在多个地方使用。 @@ -102,8 +101,7 @@ shoppingList = [] occupations = [:] ``` - -## 控制流 +## 控制流 {#control_flow} 使用 `if` 和 `switch` 来进行条件操作,使用 `for-in`、`while` 和 `repeat-while` 来进行循环。包裹条件和循环变量的括号可以省略,但是语句体的大括号是必须的。 @@ -223,8 +221,7 @@ print(total) 使用 `..<` 创建的范围不包含上界,如果想包含的话需要使用 `...`。 - -## 函数和闭包 +## 函数和闭包 {#functions_and_closures} 使用 `func` 来声明一个函数,使用名字和参数来调用函数。使用 `->` 来指定函数返回值的类型。 @@ -345,8 +342,7 @@ let sortedNumbers = numbers.sorted { $0 > $1 } print(sortedNumbers) ``` - -## 对象和类 +## 对象和类 {#objects_and_classes} 使用 `class` 和类名来创建一个类。类中属性的声明和常量、变量声明一样,唯一的区别就是它们的上下文是类。同样,方法和函数声明也一样。 @@ -495,8 +491,7 @@ let optionalSquare: Square? = Square(sideLength: 2.5, name: "optional square") let sideLength = optionalSquare?.sideLength ``` - -## 枚举和结构体 +## 枚举和结构体 {#enumerations_and_structure} 使用 `enum` 来创建一个枚举。就像类和其他所有命名类型一样,枚举可以包含方法。 @@ -609,8 +604,7 @@ let threeOfSpadesDescription = threeOfSpades.simpleDescription() > > 给 `Card` 添加一个方法,创建一副完整的扑克牌并把每张牌的 rank 和 suit 对应起来。 - -## 协议和扩展 +## 协议和扩展 {#protocols_and_extensions} 使用 `protocol` 来声明一个协议。 @@ -680,8 +674,7 @@ print(protocolValue.simpleDescription) 即使 `protocolValue` 变量运行时的类型是 `simpleClass` ,编译器还是会把它的类型当做 `ExampleProtocol`。这表示你不能调用在协议之外的方法或者属性。 - -## 错误处理 +## 错误处理 {#error_handling} 使用采用 `Error` 协议的类型来表示错误。 @@ -764,8 +757,7 @@ fridgeContains("banana") print(fridgeIsOpen) ``` - -## 泛型 +## 泛型 {#generics} 在尖括号里写一个名字来创建一个泛型函数或者类型。 diff --git a/source/chapter2/01_The_Basics.md b/source/chapter2/01_The_Basics.md index 9e28e84c..ac5a5263 100755 --- a/source/chapter2/01_The_Basics.md +++ b/source/chapter2/01_The_Basics.md @@ -13,13 +13,11 @@ Swift 还增加了可选(Optional)类型,用于处理值缺失的情况。 Swift 是一门*类型安全*的语言,这意味着 Swift 可以让你清楚地知道值的类型。如果你的代码需要一个 `String` ,类型安全会阻止你不小心传入一个 `Int` 。同样的,如果你的代码需要一个 `String`,类型安全会阻止你意外传入一个可选的 `String` 。类型安全可以帮助你在开发阶段尽早发现并修正错误。 - -## 常量和变量 +## 常量和变量 {#constants_and_variables} 常量和变量把一个名字(比如 `maximumNumberOfLoginAttempts` 或者 `welcomeMessage` )和一个指定类型的值(比如数字 `10` 或者字符串 `"Hello"` )关联起来。*常量*的值一旦设定就不能改变,而*变量*的值可以随意更改。 - -### 声明常量和变量 +### 声明常量和变量 {#declaring} 常量和变量必须在使用前声明,用 `let` 来声明常量,用 `var` 来声明变量。下面的例子展示了如何用常量和变量来记录用户尝试登录的次数: @@ -44,8 +42,7 @@ var x = 0.0, y = 0.0, z = 0.0 > > 如果你的代码中有不需要改变的值,请使用 `let` 关键字将它声明为常量。只将需要改变的值声明为变量。 - -### 类型标注 +### 类型标注 {#type_annotations} 当你声明常量或者变量的时候可以加上*类型标注(type annotation)*,说明常量或者变量中要存储的值的类型。如果要添加类型标注,需要在常量或者变量名后面加上一个冒号和空格,然后加上类型名称。 @@ -77,8 +74,7 @@ var red, green, blue: Double > > 一般来说你很少需要写类型标注。如果你在声明常量或者变量的时候赋了一个初始值,Swift 可以推断出这个常量或者变量的类型,请参考[类型安全和类型推断](#type_safety_and_type_inference)。在上面的例子中,没有给 `welcomeMessage` 赋初始值,所以变量 `welcomeMessage` 的类型是通过一个类型标注指定的,而不是通过初始值推断的。 - -### 常量和变量的命名 +### 常量和变量的命名 {#naming} 常量和变量名可以包含任何字符,包括 Unicode 字符: @@ -112,8 +108,7 @@ languageName = "Swift++" // 这会报编译时错误 - languageName 不可改变 ``` - -### 输出常量和变量 +### 输出常量和变量 {#printing} 你可以用 `print(_:separator:terminator:)` 函数来输出当前常量或变量的值: @@ -135,8 +130,7 @@ print("The current value of friendlyWelcome is \(friendlyWelcome)") > > 字符串插值所有可用的选项,请参考[字符串插值](./03_Strings_and_Characters.md#string_interpolation)。 - -## 注释 +## 注释 {#comments} 请将你的代码中的非执行文本注释成提示或者笔记以方便你将来阅读。Swift 的编译器将会在编译代码时自动忽略掉注释部分。 @@ -163,8 +157,7 @@ Swift 中的注释与 C 语言的注释非常相似。单行注释以双正斜 通过运用嵌套多行注释,你可以快速方便的注释掉一大段代码,即使这段代码之中已经含有了多行注释块。 - -## 分号 +## 分号 {#semicolons} 与其他大部分编程语言不同,Swift 并不强制要求你在每条语句的结尾处使用分号(`;`),当然,你也可以按照你自己的习惯添加分号。有一种情况下必须要用分号,即你打算在同一行内写多条独立的语句: @@ -173,15 +166,13 @@ let cat = "🐱"; print(cat) // 输出“🐱” ``` - -## 整数 +## 整数 {#integers} 整数就是没有小数部分的数字,比如 `42` 和 `-23` 。整数可以是 `有符号`(正、负、零)或者 `无符号`(正、零)。 Swift 提供了8、16、32和64位的有符号和无符号整数类型。这些整数类型和 C 语言的命名方式很像,比如8位无符号整数类型是 `UInt8`,32位有符号整数类型是 `Int32` 。就像 Swift 的其他类型一样,整数类型采用大写命名法。 - -### 整数范围 +### 整数范围 {#integer_bounds} 你可以访问不同整数类型的 `min` 和 `max` 属性来获取对应类型的最小值和最大值: @@ -192,8 +183,7 @@ let maxValue = UInt8.max // maxValue 为 255,是 UInt8 类型 `min` 和 `max` 所传回值的类型,正是其所对的整数类型(如上例 UInt8, 所传回的类型是 UInt8),可用在表达式中相同类型值旁。 - -### Int +### Int {#Int} 一般来说,你不需要专门指定整数的长度。Swift 提供了一个特殊的整数类型 `Int`,长度与当前平台的原生字长相同: @@ -202,8 +192,7 @@ let maxValue = UInt8.max // maxValue 为 255,是 UInt8 类型 除非你需要特定长度的整数,一般来说使用 `Int` 就够了。这可以提高代码一致性和可复用性。即使是在32位平台上,`Int` 可以存储的整数范围也可以达到 `-2,147,483,648` ~ `2,147,483,647`,大多数时候这已经足够大了。 - -### UInt +### UInt {#UInt} Swift 也提供了一个特殊的无符号类型 `UInt`,长度与当前平台的原生字长相同: @@ -214,8 +203,7 @@ Swift 也提供了一个特殊的无符号类型 `UInt`,长度与当前平台 > > 尽量不要使用 `UInt`,除非你真的需要存储一个和当前平台原生字长相同的无符号整数。除了这种情况,最好使用 `Int`,即使你要存储的值已知是非负的。统一使用 `Int` 可以提高代码的可复用性,避免不同类型数字之间的转换,并且匹配数字的类型推断,请参考[类型安全和类型推断](#type_safety_and_type_inference)。 - -## 浮点数 +## 浮点数 {#floating-point_numbers} 浮点数是有小数部分的数字,比如 `3.14159`、`0.1` 和 `-273.15`。 @@ -228,8 +216,7 @@ Swift 也提供了一个特殊的无符号类型 `UInt`,长度与当前平台 > > `Double` 精确度很高,至少有15位数字,而 `Float` 只有6位数字。选择哪个类型取决于你的代码需要处理的值的范围,在两种类型都匹配的情况下,将优先选择 `Double`。 - -## 类型安全和类型推断 +## 类型安全和类型推断 {#type_safety_and_type_inference} Swift 是一个*类型安全(type safe)*的语言。类型安全的语言可以让你清楚地知道代码要处理的值的类型。如果你的代码需要一个 `String`,你绝对不可能不小心传进去一个 `Int`。 @@ -266,8 +253,7 @@ let anotherPi = 3 + 0.14159 原始值 `3` 没有显式声明类型,而表达式中出现了一个浮点字面量,所以表达式会被推断为 `Double` 类型。 - -## 数值型字面量 +## 数值型字面量 {#numeric_literals} 整数字面量可以被写作: @@ -313,15 +299,13 @@ let oneMillion = 1_000_000 let justOverOneMillion = 1_000_000.000_000_1 ``` - -## 数值型类型转换 +## 数值型类型转换 {#numeric_type_conversion} 通常来讲,即使代码中的整数常量和变量已知非负,也请使用 `Int` 类型。总是使用默认的整数类型可以保证你的整数常量和变量可以直接被复用并且可以匹配整数类字面量的类型推断。 只有在必要的时候才使用其他整数类型,比如要处理外部的长度明确的数据或者为了优化性能、内存占用等等。使用显式指定长度的类型可以及时发现值溢出并且可以暗示正在处理特殊数据。 - -### 整数转换 +### 整数转换 {#integer_conversion} 不同整数类型的变量和常量可以存储不同范围的数字。`Int8` 类型的常量或者变量可以存储的数字范围是 `-128`~`127`,而 `UInt8` 类型的常量或者变量能存储的数字范围是 `0`~`255`。如果数字超出了常量或者变量可存储的范围,编译的时候会报错: @@ -346,8 +330,7 @@ let twoThousandAndOne = twoThousand + UInt16(one) `SomeType(ofInitialValue)` 是调用 Swift 构造器并传入一个初始值的默认方法。在语言内部,`UInt16` 有一个构造器,可以接受一个 `UInt8` 类型的值,所以这个构造器可以用现有的 `UInt8` 来创建一个新的 `UInt16`。注意,你并不能传入任意类型的值,只能传入 `UInt16` 内部有对应构造器的值。不过你可以扩展现有的类型来让它可以接收其他类型的值(包括自定义类型),请参考[扩展](./20_Extensions.md)。 - -### 整数和浮点数转换 +### 整数和浮点数转换 {#integer_and_floating_point_conversion} 整数和浮点数的转换必须显式指定类型: @@ -373,8 +356,7 @@ let integerPi = Int(pi) > > 结合数字类常量和变量不同于结合数字类字面量。字面量 `3` 可以直接和字面量 `0.14159` 相加,因为数字字面量本身没有明确的类型。它们的类型只在编译器需要求值的时候被推测。 - -## 类型别名 +## 类型别名 {#type_aliases} *类型别名(type aliases)*就是给现有类型定义另一个名字。你可以使用 `typealias` 关键字来定义类型别名。 @@ -393,8 +375,7 @@ var maxAmplitudeFound = AudioSample.min 本例中,`AudioSample` 被定义为 `UInt16` 的一个别名。因为它是别名,`AudioSample.min` 实际上是 `UInt16.min`,所以会给 `maxAmplitudeFound` 赋一个初值 `0`。 - -## 布尔值 +## 布尔值 {#booleans} Swift 有一个基本的*布尔(Boolean)类型*,叫做 `Bool`。布尔值指*逻辑*上的值,因为它们只能是真或者假。Swift 有两个布尔常量,`true` 和 `false`: @@ -440,8 +421,7 @@ if i == 1 { 和 Swift 中的其他类型安全的例子一样,这个方法可以避免错误并保证这块代码的意图总是清晰的。 - -## 元组 +## 元组 {#tuples} *元组(tuples)*把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型。 @@ -504,8 +484,7 @@ print("The status message is \(http200Status.description)") > > 元组在临时组织值的时候很有用,但是并不适合创建复杂的数据结构。如果你的数据结构并不是临时使用,请使用类或者结构体而不是元组。请参考[类和结构体](./09_Classes_and_Structures.md)。 - -## 可选类型 +## 可选类型 {#optionals} 使用*可选类型(optionals)*来处理值可能缺失的情况。可选类型表示两种可能: 或者有值, 你可以解析可选类型访问这个值, 或者根本没有值。 @@ -526,8 +505,7 @@ let convertedNumber = Int(possibleNumber) 因为该构造器可能会失败,所以它返回一个*可选类型*(optional)`Int`,而不是一个 `Int`。一个可选的 `Int` 被写作 `Int?` 而不是 `Int`。问号暗示包含的值是可选类型,也就是说可能包含 `Int` 值也可能*不包含值*。(不能包含其他任何值比如 `Bool` 值或者 `String` 值。只能是 `Int` 或者什么都没有。) - -### nil +### nil {#nil} 你可以给可选变量赋值为 `nil` 来表示它没有值: @@ -553,8 +531,7 @@ var surveyAnswer: String? > > Swift 的 `nil` 和 Objective-C 中的 `nil` 并不一样。在 Objective-C 中,`nil` 是一个指向不存在对象的指针。在 Swift 中,`nil` 不是指针——它是一个确定的值,用来表示值缺失。任何类型的可选状态都可以被设置为 `nil`,不只是对象类型。 - -### if 语句以及强制解析 +### if 语句以及强制解析 {#if} 你可以使用 `if` 语句和 `nil` 比较来判断一个可选值是否包含值。你可以使用“相等”(`==`)或“不等”(`!=`)来执行比较。 @@ -582,8 +559,7 @@ if convertedNumber != nil { > > 使用 `!` 来获取一个不存在的可选值会导致运行时错误。使用 `!` 来强制解析值之前,一定要确定可选包含一个非 `nil` 的值。 - -### 可选绑定 +### 可选绑定 {#optional_binding} 使用*可选绑定(optional binding)*来判断可选类型是否包含值,如果包含就把值赋给一个临时常量或者变量。可选绑定可以用在 `if` 和 `while` 语句中,这条语句不仅可以用来判断可选类型中是否有值,同时可以将可选类型中的值赋给一个常量或者变量。`if` 和 `while` 语句,请参考[控制流](./05_Control_Flow.md)。 @@ -636,8 +612,7 @@ if let firstNumber = Int("4") { > > 在 `if` 条件语句中使用常量和变量来创建一个可选绑定,仅在 `if` 语句的句中(`body`)中才能获取到值。相反,在 `guard` 语句中使用常量和变量来创建一个可选绑定,仅在 `guard` 语句外且在语句后才能获取到值,请参考[提前退出](./05_Control_Flow.md#early_exit)。 - -### 隐式解析可选类型 +### 隐式解析可选类型 {#implicityly_unwrapped_optionals} 如上所述,可选类型暗示了常量或者变量可以“没有值”。可选可以通过 `if` 语句来判断是否有值,如果有值的话可以通过可选绑定来解析值。 @@ -685,8 +660,7 @@ if let definiteString = assumedString { > > 如果一个变量之后可能变成 `nil` 的话请不要使用隐式解析可选类型。如果你需要在变量的生命周期中判断是否是 `nil` 的话,请使用普通可选类型。 - -## 错误处理 +## 错误处理 {#error_handling} 你可以使用 *错误处理(error handling)* 来应对程序执行中可能会遇到的错误条件。 @@ -736,8 +710,7 @@ do { 抛出,捕捉,以及传播错误会在[错误处理](./17_Error_Handling.md)章节详细说明。 - -## 断言和先决条件 +## 断言和先决条件 {#assertions_and_preconditions} 断言和先决条件是在运行时所做的检查。你可以用他们来检查在执行后续代码之前是否一个必要的条件已经被满足了。如果断言或者先决条件中的布尔条件评估的结果为 true(真),则代码像往常一样继续执行。如果布尔条件评估结果为 false(假),程序的当前状态是无效的,则代码执行结束,应用程序中止。 @@ -749,8 +722,7 @@ do { 断言和先决条件的不同点是,他们什么时候进行状态检测:断言仅在调试环境运行,而先决条件则在调试环境和生产环境中运行。在生产环境中,断言的条件将不会进行评估。这个意味着你可以使用很多断言在你的开发阶段,但是这些断言在生产环境中不会产生任何影响。 - -### 使用断言进行调试 +### 使用断言进行调试 {#debugging_with_assertions} 你可以调用 Swift 标准库的 `assert(_:_:file:line:)` 函数来写一个断言。向这个函数传入一个结果为 `true` 或者 `false` 的表达式以及一条信息,当表达式的结果为 `false` 的时候这条信息会被显示: @@ -780,8 +752,7 @@ if age > 10 { } ``` - -### 强制执行先决条件 +### 强制执行先决条件 {#enforcing_preconditions} 当一个条件可能为假,但是继续执行代码要求条件必须为真的时候,需要使用先决条件。例如使用先决条件来检查是否下标越界,或者来检查是否将一个正确的参数传给函数。 diff --git a/source/chapter2/02_Basic_Operators.md b/source/chapter2/02_Basic_Operators.md index 5fe0ac2d..3127b7d1 100755 --- a/source/chapter2/02_Basic_Operators.md +++ b/source/chapter2/02_Basic_Operators.md @@ -8,8 +8,7 @@ Swift 还提供了 C 语言没有的区间运算符,例如 `a.. -## 术语 +## 术语 {#terminology} 运算符分为一元、二元和三元运算符: @@ -19,8 +18,7 @@ Swift 还提供了 C 语言没有的区间运算符,例如 `a.. -## 赋值运算符 +## 赋值运算符 {#assignment_operator} *赋值运算符*(`a = b`),表示用 `b` 的值来初始化或更新 `a` 的值: @@ -48,8 +46,7 @@ if x = y { 通过将 `if x = y` 标记为无效语句,Swift 能帮你避免把 (`==`)错写成(`=`)这类错误的出现。 - -## 算术运算符 +## 算术运算符 {#arithmetic_operators} Swift 中所有数值类型都支持了基本的四则*算术运算符*: @@ -73,8 +70,7 @@ Swift 中所有数值类型都支持了基本的四则*算术运算符*: "hello, " + "world" // 等于 "hello, world" ``` - -### 求余运算符 +### 求余运算符 {#remainder_operator} *求余运算符*(`a % b`)是计算 `b` 的多少倍刚刚好可以容入 `a`,返回多出来的那部分(余数)。 @@ -118,8 +114,7 @@ Swift 中所有数值类型都支持了基本的四则*算术运算符*: 在对负数 `b` 求余时,`b` 的符号会被忽略。这意味着 `a % b` 和 `a % -b` 的结果是相同的。 - -### 一元负号运算符 +### 一元负号运算符 {#unary_minus_operator} 数值的正负号可以使用前缀 `-`(即*一元负号符*)来切换: @@ -131,8 +126,7 @@ let plusThree = -minusThree // plusThree 等于 3, 或 "负负3" 一元负号符(`-`)写在操作数之前,中间没有空格。 - -### 一元正号运算符 +### 一元正号运算符 {#unary_plus_operator} *一元正号符*(`+`)不做任何改变地返回操作数的值: @@ -143,8 +137,7 @@ let alsoMinusSix = +minusSix // alsoMinusSix 等于 -6 虽然一元正号符什么都不会改变,但当你在使用一元负号来表达负数时,你可以使用一元正号来表达正数,如此你的代码会具有对称美。 - -## 组合赋值运算符 +## 组合赋值运算符 {#compound_assignment_operators} 如同 C 语言,Swift 也提供把其他运算符和赋值运算(`=`)组合的*组合赋值运算符*,组合加运算(`+=`)是其中一个例子: @@ -162,8 +155,7 @@ a += 2 更多 Swift 标准库运算符的信息,请看[运算符声明](https://developer.apple.com/documentation/swift/operator_declarations)。 ‌ - -## 比较运算符(Comparison Operators) +## 比较运算符(Comparison Operators) {#comparison_operators} 所有标准 C 语言中的*比较运算符*都可以在 Swift 中使用: @@ -224,8 +216,7 @@ if name == "world" { > > Swift 标准库只能比较七个以内元素的元组比较函数。如果你的元组元素超过七个时,你需要自己实现比较运算符。 - -## 三元运算符(Ternary Conditional Operator) +## 三元运算符(Ternary Conditional Operator) {#ternary_conditional_operator} *三元运算符*的特殊在于它是有三个操作数的运算符,它的形式是 `问题 ? 答案 1 : 答案 2`。它简洁地表达根据 `问题`成立与否作出二选一的操作。如果 `问题` 成立,返回 `答案 1` 的结果;反之返回 `答案 2` 的结果。 @@ -266,8 +257,7 @@ if hasHeader { 三元运算为二选一场景提供了一个非常便捷的表达形式。不过需要注意的是,滥用三元运算符会降低代码可读性。所以我们应避免在一个复合语句中使用多个三元运算符。 - -## 空合运算符(Nil Coalescing Operator) +## 空合运算符(Nil Coalescing Operator) {#nil_coalescing_operator} *空合运算符*(`a ?? b`)将对可选类型 `a` 进行空判断,如果 `a` 包含一个值就进行解包,否则就返回一个默认值 `b`。表达式 `a` 必须是 Optional 类型。默认值 `b` 的类型必须要和 `a` 存储值的类型保持一致。 @@ -304,13 +294,11 @@ colorNameToUse = userDefinedColorName ?? defaultColorName // userDefinedColorName 非空,因此 colorNameToUse 的值为 "green" ``` - -## 区间运算符(Range Operators) +## 区间运算符(Range Operators) {#range_operators} Swift 提供了几种方便表达一个区间的值的*区间运算符*。 - -### 闭区间运算符 +### 闭区间运算符 {#closed_range_operator} *闭区间运算符*(`a...b`)定义一个包含从 `a` 到 `b`(包括 `a` 和 `b`)的所有值的区间。`a` 的值不能超过 `b`。 @@ -329,8 +317,7 @@ for index in 1...5 { 关于 `for-in` 循环,请看[控制流](./05_Control_Flow.md)。 - -### 半开区间运算符 +### 半开区间运算符 {#half-open_range_operator} *半开区间运算符*(`a.. -### 单侧区间 +### 单侧区间 {#one-sided_ranges} 闭区间操作符有另一个表达形式,可以表达往一侧无限延伸的区间 —— 例如,一个包含了数组从索引 2 到结尾的所有值的区间。在这些情况下,你可以省略掉区间操作符一侧的值。这种区间叫做单侧区间,因为操作符只有一侧有值。例如: @@ -390,8 +376,7 @@ range.contains(4) // true range.contains(-1) // true ``` - -## 逻辑运算符(Logical Operators) +## 逻辑运算符(Logical Operators) {#logical_operators} *逻辑运算符*的操作对象是逻辑布尔值。Swift 支持基于 C 语言的三个标准逻辑运算。 diff --git a/source/chapter2/03_Strings_and_Characters.md b/source/chapter2/03_Strings_and_Characters.md index a03e1d46..210487f3 100755 --- a/source/chapter2/03_Strings_and_Characters.md +++ b/source/chapter2/03_Strings_and_Characters.md @@ -12,8 +12,7 @@ Swift 的 `String` 和 `Character` 类型提供了一种快速且兼容 Unicode > > 更多关于在 Foundation 和 Cocoa 中使用 `String` 的信息请查看 *[Bridging Between String and NSString](https://developer.apple.com/documentation/swift/string#2919514)*。 - -## 字符串字面量 +## 字符串字面量 {#string_literals} 你可以在代码里使用一段预定义的字符串值作为字符串字面量。字符串字面量是由一对双引号包裹着的具有固定顺序的字符集。 @@ -25,8 +24,7 @@ let someString = "Some string literal value" 注意,Swift 之所以推断 `someString` 常量为字符串类型,是因为它使用了字面量方式进行初始化。 - -### 多行字符串字面量 +### 多行字符串字面量 {#multiline_string_literals} 如果你需要一个字符串是跨越多行的,那就使用多行字符串字面量 — 由一对三个双引号包裹着的具有固定顺序的文本字符集: @@ -78,8 +76,7 @@ It also ends with a line break. 在上面的例子中,尽管整个多行字符串字面量都是缩进的(源代码缩进),第一行和最后一行没有以空白字符串开始(实际的变量值)。中间一行的缩进用空白字符串(源代码缩进)比关闭引号(`"""`)之前的空白字符串多,所以,它的行首将有4个空格。 - -### 字符串字面量的特殊字符 +### 字符串字面量的特殊字符 {#special_characters_in_string_literals} 字符串字面量可以包含以下特殊字符: @@ -107,8 +104,7 @@ Escaping all three quotes \"\"\" """ ``` - -## 初始化空字符串 +## 初始化空字符串 {#initializing_an_empty_string} 要创建一个空字符串作为初始值,可以将空的字符串字面量赋值给变量,也可以初始化一个新的 `String` 实例: @@ -127,8 +123,7 @@ if emptyString.isEmpty { // 打印输出:“Nothing to see here” ``` - -## 字符串可变性 +## 字符串可变性 {#string_mutability} 你可以通过将一个特定字符串分配给一个变量来对其进行修改,或者分配给一个常量来保证其不会被修改: @@ -146,8 +141,7 @@ constantString += " and another Highlander" > > 在 Objective-C 和 Cocoa 中,需要通过选择两个不同的类(`NSString` 和 `NSMutableString`)来指定字符串是否可以被修改。 - -## 字符串是值类型 +## 字符串是值类型 {#strings_are_value_types} 在 Swift 中 `String` 类型是*值类型*。如果你创建了一个新的字符串,那么当其进行常量、变量赋值操作,或在函数/方法中传递时,会进行值拷贝。在前述任一情况下,都会对已有字符串值创建新副本,并对该新副本而非原始字符串进行传递或赋值操作。值类型在 [结构体和枚举是值类型](./09_Classes_and_Structures.md#structures_and_enumerations_are_value_types) 中进行了详细描述。 @@ -155,8 +149,7 @@ Swift 默认拷贝字符串的行为保证了在函数/方法向你传递的字 在实际编译时,Swift 编译器会优化字符串的使用,使实际的复制只发生在绝对必要的情况下,这意味着你将字符串作为值类型的同时可以获得极高的性能。 - -## 使用字符 +## 使用字符 {#working_with_characters} 你可通过 `for-in` 循环来遍历字符串,获取字符串中每一个字符的值: @@ -188,8 +181,7 @@ print(catString) // 打印输出:“Cat!🐱” ``` - -## 连接字符串和字符 +## 连接字符串和字符 {#concatenating_strings_and_characters} 字符串可以通过加法运算符(`+`)相加在一起(或称“连接”)创建一个新的字符串: @@ -249,8 +241,7 @@ print(goodStart + end) 上面的代码,把 `badStart` 和 `end` 拼接起来的字符串非我们想要的结果。因为 `badStart` 最后一行没有换行符,它与 `end` 的第一行结合到了一起。相反的,`goodStart` 的每一行都以换行符结尾,所以它与 `end` 拼接的字符串总共有三行,正如我们期望的那样。 - -## 字符串插值 +## 字符串插值 {#string_interpolation} *字符串插值*是一种构建新字符串的方式,可以在其中包含常量、变量、字面量和表达式。**字符串字面量**和**多行字符串字面量**都可以使用字符串插值。你插入的字符串字面量的每一项都在以反斜线为前缀的圆括号中: @@ -268,20 +259,17 @@ let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)" > > 插值字符串中写在括号中的表达式不能包含非转义反斜杠(`\`),并且不能包含回车或换行符。不过,插值字符串可以包含其他字面量。 - -## Unicode +## Unicode {#unicode} *Unicode*是一个用于在不同书写系统中对文本进行编码、表示和处理的国际标准。它使你可以用标准格式表示来自任意语言几乎所有的字符,并能够对文本文件或网页这样的外部资源中的字符进行读写操作。Swift 的 `String` 和 `Character` 类型是完全兼容 Unicode 标准的。 - -### Unicode 标量 +### Unicode 标量 {#unicode_scalars} Swift 的 `String` 类型是基于 *Unicode 标量* 建立的。Unicode 标量是对应字符或者修饰符的唯一的 21 位数字,例如 `U+0061` 表示小写的拉丁字母(`LATIN SMALL LETTER A`)("`a`"),`U+1F425` 表示小鸡表情(`FRONT-FACING BABY CHICK`)("`🐥`")。 请注意,并非所有 21 位 Unicode 标量值都分配给字符,某些标量被保留用于将来分配或用于 UTF-16 编码。已分配的标量值通常也有一个名称,例如上面示例中的 LATIN SMALL LETTER A 和 FRONT-FACING BABY CHICK。 - -### 可扩展的字形群集 +### 可扩展的字形群集 {#extended_grapheme_clusters} 每一个 Swift 的 `Character` 类型代表一个*可扩展的字形群*。而一个可扩展的字形群构成了人类可读的单个字符,它由一个或多个(当组合时) Unicode 标量的序列组成。 @@ -318,8 +306,7 @@ let regionalIndicatorForUS: Character = "\u{1F1FA}\u{1F1F8}" // regionalIndicatorForUS 是 🇺🇸 ``` - -## 计算字符数量 +## 计算字符数量 {#counting_characters} 如果想要获得一个字符串中 `Character` 值的数量,可以使用 `count` 属性: @@ -350,13 +337,11 @@ print("the number of characters in \(word) is \(word.count)") > > 另外需要注意的是通过 `count` 属性返回的字符数量并不总是与包含相同字符的 `NSString` 的 `length` 属性相同。`NSString` 的 `length` 属性是利用 UTF-16 表示的十六位代码单元数字,而不是 Unicode 可扩展的字符群集。 - -## 访问和修改字符串 +## 访问和修改字符串 {#accessing_and_modifying_a_string} 你可以通过字符串的属性和方法来访问和修改它,当然也可以用下标语法完成。 - -### 字符串索引 +### 字符串索引 {#string_indices} 每一个 `String` 值都有一个关联的索引(*index*)类型,`String.Index`,它对应着字符串中的每一个 `Character` 的位置。 @@ -401,8 +386,7 @@ for index in greeting.indices { > > 你可以使用 `startIndex` 和 `endIndex` 属性或者 `index(before:)` 、`index(after:)` 和 `index(_:offsetBy:)` 方法在任意一个确认的并遵循 `Collection` 协议的类型里面,如上文所示是使用在 `String` 中,你也可以使用在 `Array`、`Dictionary` 和 `Set` 中。 - -### 插入和删除 +### 插入和删除 {#inserting_and_removing} 调用 `insert(_:at:)` 方法可以在一个字符串的指定索引插入一个字符,调用 `insert(contentsOf:at:)` 方法可以在一个字符串的指定索引插入一个段字符串。 @@ -430,8 +414,7 @@ welcome.removeSubrange(range) > > 你可以使用 `insert(_:at:)`、`insert(contentsOf:at:)`、`remove(at:)` 和 `removeSubrange(_:)` 方法在任意一个确认的并遵循 `RangeReplaceableCollection` 协议的类型里面,如上文所示是使用在 `String` 中,你也可以使用在 `Array`、`Dictionary` 和 `Set` 中。 - -## 子字符串 +## 子字符串 {#substrings} 当你从字符串中获取一个子字符串 —— 例如,使用下标或者 `prefix(_:)` 之类的方法 —— 就可以得到一个 `SubString` 的实例,而非另外一个 `String`。Swift 里的 `SubString` 绝大部分函数都跟 `String` 一样,意味着你可以使用同样的方式去操作 `SubString` 和 `String`。然而,跟 `String` 不同的是,你只有在短时间内需要操作字符串时,才会使用 `SubString`。当你需要长时间保存结果时,就把 `SubString` 转化为 `String` 的实例: @@ -455,13 +438,11 @@ let newString = String(beginning) > > `String` 和 `SubString` 都遵循 `StringProtocol` 协议,这意味着操作字符串的函数使用 `StringProtocol` 会更加方便。你可以传入 `String` 或 `SubString` 去调用函数。 - -## 比较字符串 +## 比较字符串 {#comparing_strings} Swift 提供了三种方式来比较文本值:字符串字符相等、前缀相等和后缀相等。 - -### 字符串/字符相等 +### 字符串/字符相等 {#string_and_character_equality} 字符串/字符可以用等于操作符(`==`)和不等于操作符(`!=`),详细描述在[比较运算符](./02_Basic_Operators.md#comparison_operators): @@ -508,8 +489,7 @@ if latinCapitalLetterA != cyrillicCapitalLetterA { > > 在 Swift 中,字符串和字符并不区分地域(not locale-sensitive)。 - -### 前缀/后缀相等 +### 前缀/后缀相等 {#prefix_and_suffix_equality} 通过调用字符串的 `hasPrefix(_:)`/`hasSuffix(_:)` 方法来检查字符串是否拥有特定前缀/后缀,两个方法均接收一个 `String` 类型的参数,并返回一个布尔值。 @@ -564,8 +544,7 @@ print("\(mansionCount) mansion scenes; \(cellCount) cell scenes") > > `hasPrefix(_:)` 和 `hasSuffix(_:)` 方法都是在每个字符串中逐字符比较其可扩展的字符群集是否标准相等,详细描述在[字符串/字符相等](#string_and_character_equality)。 - -## 字符串的 Unicode 表示形式 +## 字符串的 Unicode 表示形式 {#unicode_representations_of_strings} 当一个 Unicode 字符串被写进文本文件或者其他储存时,字符串中的 Unicode 标量会用 Unicode 定义的几种 `编码格式`(encoding forms)编码。每一个字符串中的小块编码都被称 `代码单元`(code units)。这些包括 UTF-8 编码格式(编码字符串为 8 位的代码单元), UTF-16 编码格式(编码字符串位 16 位的代码单元),以及 UTF-32 编码格式(编码字符串32位的代码单元)。 @@ -583,8 +562,7 @@ Swift 提供了几种不同的方式来访问字符串的 Unicode 表示形式 let dogString = "Dog‼🐶" ``` - -### UTF-8 表示 +### UTF-8 表示 {#UTF-8_representation} 你可以通过遍历 `String` 的 `utf8` 属性来访问它的 `UTF-8` 表示。其为 `String.UTF8View` 类型的属性,`UTF8View` 是无符号 8 位(`UInt8`)值的集合,每一个 `UInt8` 值都是一个字符的 UTF-8 表示: @@ -635,8 +613,7 @@ print("") 上面的例子中,前三个 10 进制 `codeUnit` 值(`68`、`111`、`103`)代表了字符 `D`、`o` 和 `g`,它们的 UTF-8 表示与 ASCII 表示相同。接下来的三个 10 进制 `codeUnit` 值(`226`、`128`、`188`)是 `DOUBLE EXCLAMATION MARK` 的3字节 UTF-8 表示。最后的四个 `codeUnit` 值(`240`、`159`、`144`、`182`)是 `DOG FACE` 的4字节 UTF-8 表示。 - -### UTF-16 表示 +### UTF-16 表示 {#UTF-16_representation} 你可以通过遍历 `String` 的 `utf16` 属性来访问它的 `UTF-16` 表示。其为 `String.UTF16View` 类型的属性,`UTF16View` 是无符号16位(`UInt16`)值的集合,每一个 `UInt16` 都是一个字符的 UTF-16 表示: @@ -683,8 +660,7 @@ print("") 第五和第六个 `codeUnit` 值(`55357` 和 `56374`)是 `DOG FACE` 字符的 UTF-16 表示。第一个值为 `U+D83D`(十进制值为 `55357`),第二个值为 `U+DC36`(十进制值为 `56374`)。 - -### Unicode 标量表示 +### Unicode 标量表示 {#unicode_scalars_representation} 你可以通过遍历 `String` 值的 `unicodeScalars` 属性来访问它的 Unicode 标量表示。其为 `UnicodeScalarView` 类型的属性,`UnicodeScalarView` 是 `UnicodeScalar` 类型的值的集合。 diff --git a/source/chapter2/04_Collection_Types.md b/source/chapter2/04_Collection_Types.md index dac39962..0c90d31e 100755 --- a/source/chapter2/04_Collection_Types.md +++ b/source/chapter2/04_Collection_Types.md @@ -10,8 +10,7 @@ Swift 语言中的 `Arrays`、`Sets` 和 `Dictionaries` 中存储的数据值类 > > Swift 的 `Arrays`、`Sets` 和 `Dictionaries` 类型被实现为*泛型集合*。更多关于泛型类型和集合,参见 [泛型](./23_Generics.md)章节。 - -## 集合的可变性 +## 集合的可变性 {#mutability_of_collections} 如果创建一个 `Arrays`、`Sets` 或 `Dictionaries` 并且把它分配成一个变量,这个集合将会是*可变的*。这意味着你可以在创建之后添加更多或移除已存在的数据项,或者改变集合中的数据项。如果我们把 `Arrays`、`Sets` 或 `Dictionaries` 分配成常量,那么它就是*不可变的*,它的大小和内容都不能被改变。 @@ -19,8 +18,7 @@ Swift 语言中的 `Arrays`、`Sets` 和 `Dictionaries` 中存储的数据值类 > > 在我们不需要改变集合的时候创建不可变集合是很好的实践。如此 Swift 编译器可以优化我们创建的集合。 - -## 数组(Arrays) +## 数组(Arrays) {#arrays} *数组*使用有序列表存储同一类型的多个值。相同的值可以多次出现在一个数组的不同位置中。 @@ -28,13 +26,11 @@ Swift 语言中的 `Arrays`、`Sets` 和 `Dictionaries` 中存储的数据值类 > > Swift 的 `Array` 类型被桥接到 `Foundation` 中的 `NSArray` 类。更多关于在 `Foundation` 和 `Cocoa` 中使用 `Array` 的信息,参见 [*Using Swift with Cocoa and Obejective-C(Swift 4.1)*](https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/index.html#//apple_ref/doc/uid/TP40014216) 中[使用 Cocoa 数据类型](https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/WorkingWithCocoaDataTypes.html#//apple_ref/doc/uid/TP40014216-CH6)部分。 - -### 数组的简单语法 +### 数组的简单语法 {#array_type_shorthand_syntax} 写 Swift 数组应该遵循像 `Array` 这样的形式,其中 `Element` 是这个数组中唯一允许存在的数据类型。我们也可以使用像 `[Element]` 这样的简单语法。尽管两种形式在功能上是一样的,但是推荐较短的那种,而且在本文中都会使用这种形式来使用数组。 - -### 创建一个空数组 +### 创建一个空数组 {#creating_an_empty_array} 我们可以使用构造语法来创建一个由特定数据类型构成的空数组: @@ -55,8 +51,7 @@ someInts = [] // someInts 现在是空数组,但是仍然是 [Int] 类型的。 ``` - -### 创建一个带有默认值的数组 +### 创建一个带有默认值的数组 {#creating_an_array_with_a_default_value} Swift 中的 `Array` 类型还提供一个可以创建特定大小并且所有数据都被默认的构造方法。我们可以把准备加入新数组的数据项数量(`count`)和适当类型的初始值(`repeating`)传入数组构造函数: @@ -65,8 +60,7 @@ var threeDoubles = Array(repeating: 0.0, count: 3) // threeDoubles 是一种 [Double] 数组,等价于 [0.0, 0.0, 0.0] ``` - -### 通过两个数组相加创建一个数组 +### 通过两个数组相加创建一个数组 {#creating_an_array_by_adding_two_arrays_together} 我们可以使用加法操作符(`+`)来组合两种已存在的相同类型数组。新数组的数据类型会被从两个数组的数据类型中推断出来: @@ -78,8 +72,7 @@ var sixDoubles = threeDoubles + anotherThreeDoubles // sixDoubles 被推断为 [Double],等价于 [0.0, 0.0, 0.0, 2.5, 2.5, 2.5] ``` - -### 用数组字面量构造数组 +### 用数组字面量构造数组 {#creating_an_array_with_an_array_literals} 我们可以使用*数组字面量*来进行数组构造,这是一种用一个或者多个数值构造数组的简单方法。数组字面量是一系列由逗号分割并由方括号包含的数值: @@ -108,8 +101,7 @@ var shoppingList = ["Eggs", "Milk"] 因为所有数组字面量中的值都是相同的类型,Swift 可以推断出 `[String]` 是 `shoppingList` 中变量的正确类型。 - -### 访问和修改数组 +### 访问和修改数组 {#accessing_and_modifying_an_array} 我们可以通过数组的方法和属性来访问和修改数组,或者使用下标语法。 @@ -215,8 +207,7 @@ let apples = shoppingList.removeLast() // apples 常量的值现在等于“Apples”字符串 ``` - -### 数组的遍历 +### 数组的遍历 {#iterating_over_an_array} 我们可以使用 `for-in` 循环来遍历所有数组中的数据项: @@ -246,8 +237,7 @@ for (index, value) in shoppingList.enumerated() { 更多关于 `for-in` 循环的介绍请参见[for 循环](05_Control_Flow.html#for_loops)。 - -## 集合(Sets) +## 集合(Sets) {#sets} *集合(Set)*用来存储相同类型并且没有确定顺序的值。当集合元素顺序不重要时或者希望确保每个元素只出现一次时可以使用集合而不是数组。 @@ -256,8 +246,7 @@ for (index, value) in shoppingList.enumerated() { > > 关于使用 `Foundation` 和 `Cocoa` 中 `Set` 的知识,参见 [*Using Swift with Cocoa and Obejective-C(Swift 4.1)*](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/index.html#//apple_ref/doc/uid/TP40014216) 中[使用 Cocoa 数据类型](https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/WorkingWithCocoaDataTypes.html#//apple_ref/doc/uid/TP40014216-CH6)部分。 - -### 集合类型的哈希值 +### 集合类型的哈希值 {#hash_values_for_set_types} 一个类型为了存储在集合中,该类型必须是*可哈希化*的——也就是说,该类型必须提供一个方法来计算它的*哈希值*。一个哈希值是 `Int` 类型的,相等的对象哈希值必须相同,比如 `a==b`,因此必须 `a.hashValue == b.hashValue`。 @@ -275,13 +264,11 @@ Swift 的所有基本类型(比如 `String`、`Int`、`Double` 和 `Bool`) 关于遵循协议的更多信息,请看[协议](./22_Protocols.md)。 - -### 集合类型语法 +### 集合类型语法 {#set_type_syntax} Swift 中的 `Set` 类型被写为 `Set`,这里的 `Element` 表示 `Set` 中允许存储的类型,和数组不同的是,集合没有等价的简化形式。 - -### 创建和构造一个空的集合 +### 创建和构造一个空的集合 {#creating_and_initalizing_an_empty_set} 你可以通过构造器语法创建一个特定类型的空集合: @@ -304,8 +291,7 @@ letters = [] // letters 现在是一个空的 Set,但是它依然是 Set 类型 ``` - -### 用数组字面量创建集合 +### 用数组字面量创建集合 {#creating_a_set_with_an_array_literal} 你可以使用数组字面量来构造集合,并且可以使用简化形式写一个或者多个值作为集合元素。 @@ -330,8 +316,7 @@ var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"] 由于数组字面量中的所有元素类型相同,Swift 可以推断出 `Set` 作为 `favoriteGenres` 变量的正确类型。 - -### 访问和修改一个集合 +### 访问和修改一个集合 {#accesing_and_modifying_a_set} 你可以通过 `Set` 的属性和方法来访问和修改一个 `Set`。 @@ -382,8 +367,7 @@ if favoriteGenres.contains("Funk") { // 打印“It's too funky in here.” ``` - -### 遍历一个集合 +### 遍历一个集合 {#iterating_over_a_set} 你可以在一个 `for-in` 循环中遍历一个 `Set` 中的所有值。 @@ -409,13 +393,11 @@ for genre in favoriteGenres.sorted() { // Jazz ``` - -## 集合操作 +## 集合操作 {#performing_set_operations} 你可以高效地完成 `Set` 的一些基本操作,比如把两个集合组合到一起,判断两个集合共有元素,或者判断两个集合是否全包含,部分包含或者不相交。 - -### 基本集合操作 +### 基本集合操作 {#fundamental_set_operations} 下面的插图描述了两个集合 `a` 和 `b`,以及通过阴影部分的区域显示集合各种操作的结果。 @@ -441,8 +423,7 @@ oddDigits.symmetricDifference(singleDigitPrimeNumbers).sorted() // [1, 2, 9] ``` - -### 集合成员关系和相等 +### 集合成员关系和相等 {#set_membership_and_equality} 下面的插图描述了三个集合 `a`、`b` 和 `c`,以及通过重叠区域表述集合间共享的元素。集合 `a` 是集合 `b` 的父集合,因为 `a` 包含了 `b` 中所有的元素,相反的,集合 `b` 是集合 `a` 的子集合,因为属于 `b` 的元素也被 `a` 包含。集合 `b` 和集合 `c` 彼此不关联,因为它们之间没有共同的元素。 @@ -467,8 +448,7 @@ farmAnimals.isDisjoint(with: cityAnimals) // true ``` - -## 字典 +## 字典 {#dictionaries} *字典*是一种存储多个相同类型的值的容器。每个值(value)都关联唯一的键(key),键作为字典中的这个值数据的标识符。和数组中的数据项不同,字典中的数据项并没有具体顺序。我们在需要通过标识符(键)访问数据的时候使用字典,这种方法很大程度上和我们在现实世界中使用字典查字义的方法一样。 @@ -478,8 +458,7 @@ farmAnimals.isDisjoint(with: cityAnimals) > > 更多关于在 `Foundation` 和 `Cocoa` 中使用 `Dictionary` 类型的信息,参见 [*Using Swift with Cocoa and Obejective-C(Swift 4.1)*](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/index.html#//apple_ref/doc/uid/TP40014216) 中[使用 Cocoa 数据类型](https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/WorkingWithCocoaDataTypes.html#//apple_ref/doc/uid/TP40014216-CH6)部分。 - -### 字典类型简化语法 +### 字典类型简化语法 {#dictionary_type_shorthand_syntax} Swift 的字典使用 `Dictionary` 定义,其中 `Key` 是字典中键的数据类型,`Value` 是字典中对应于这些键所存储值的数据类型。 @@ -489,8 +468,7 @@ Swift 的字典使用 `Dictionary` 定义,其中 `Key` 是字典 我们也可以用 `[Key: Value]` 这样简化的形式去创建一个字典类型。虽然这两种形式功能上相同,但是后者是首选,并且这本指导书涉及到字典类型时通篇采用后者。 - -### 创建一个空字典 +### 创建一个空字典 {#creating_an_empty_dictionary} 我们可以像数组一样使用构造语法创建一个拥有确定类型的空字典: @@ -510,8 +488,7 @@ namesOfIntegers = [:] // namesOfIntegers 又成为了一个 [Int: String] 类型的空字典 ``` - -### 用字典字面量创建字典 +### 用字典字面量创建字典 {#creating_a_dictionary_with_a_dictionary_literal} 我们可以使用*字典字面量*来构造字典,这和我们刚才介绍过的数组字面量拥有相似语法。字典字面量是一种将一个或多个键值对写作 `Dictionary` 集合的快捷途径。 @@ -546,8 +523,7 @@ var airports = ["YYZ": "Toronto Pearson", "DUB": "Dublin"] 因为这个语句中所有的键和值都各自拥有相同的数据类型,Swift 可以推断出 `Dictionary` 是 `airports` 字典的正确类型。 - -### 访问和修改字典 +### 访问和修改字典 {#accessing_and_modifying_a_dictionary} 我们可以通过字典的方法和属性来访问和修改字典,或者通过使用下标语法。 @@ -627,8 +603,7 @@ if let removedValue = airports.removeValue(forKey: "DUB") { // 打印“The removed airport's name is Dublin Airport.” ``` - -### 字典遍历 +### 字典遍历 {#iterating_over_a_dictionary} 我们可以使用 `for-in` 循环来遍历某个字典中的键值对。每一个字典中的数据项都以 `(key, value)` 元组形式返回,并且我们可以使用临时常量或者变量来分解这些元组: diff --git a/source/chapter2/05_Control_Flow.md b/source/chapter2/05_Control_Flow.md index 7c9fea73..015bf860 100755 --- a/source/chapter2/05_Control_Flow.md +++ b/source/chapter2/05_Control_Flow.md @@ -6,8 +6,7 @@ Swift 还提供了 `for-in` 循环,用来更简单地遍历数组(Array) Swift 的 `switch` 语句比许多类 C 语言要更加强大。case 还可以匹配很多不同的模式,包括范围匹配,元组(tuple)和特定类型匹配。`switch` 语句的 case 中匹配的值可以声明为临时常量或变量,在 case 作用域内使用,也可以配合 `where` 来描述更复杂的匹配条件。 - -## For-In 循环 +## For-In 循环 {#for_in_loops} 你可以使用 `for-in` 循环来遍历一个集合中的所有元素,例如数组中的元素、范围内的数字或者字符串中的字符。 @@ -98,16 +97,14 @@ for tickMark in stride(from: 3, through: hours, by: hourInterval) { } ``` - -## While 循环 +## While 循环 {#while_loops} `while` 循环会一直运行一段语句直到条件变成 `false`。这类循环适合使用在第一次迭代前,迭代次数未知的情况下。Swift 提供两种 `while` 循环形式: * `while` 循环,每次在循环开始时计算条件是否符合; * `repeat-while` 循环,每次在循环结束时计算条件是否符合。 - -### While +### While {#while} `while` 循环从计算一个条件开始。如果条件为 `true`,会重复运行一段语句,直到条件变为 `false`。 @@ -177,8 +174,7 @@ print("Game over!") `while` 循环比较适合本例中的这种情况,因为在 `while` 循环开始时,我们并不知道游戏要跑多久,只有在达成指定条件时循环才会结束。 - -### Repeat-While +### Repeat-While {#repeat_while} `while` 循环的另外一种形式是 `repeat-while`,它和 `while` 的区别是在判断循环条件之前,先执行一次循环的代码块。然后重复循环直到条件为 `false`。 @@ -226,15 +222,13 @@ print("Game over!") 循环条件(`while square < finalSquare`)和 `while` 方式相同,但是只会在循环结束后进行计算。在这个游戏中,`repeat-while` 表现得比 `while` 循环更好。`repeat-while` 方式会在条件判断 `square` 没有超出后直接运行 `square += board[square]`,这种方式可以比起前面 `while` 循环的版本,可以省去数组越界的检查。 - -## 条件语句 +## 条件语句 {#conditional_statement} 根据特定的条件执行特定的代码通常是十分有用的。当错误发生时,你可能想运行额外的代码;或者,当值太大或太小时,向用户显示一条消息。要实现这些功能,你就需要使用*条件语句*。 Swift 提供两种类型的条件语句:`if` 语句和 `switch` 语句。通常,当条件较为简单且可能的情况很少时,使用 `if` 语句。而 `switch` 语句更适用于条件较复杂、有更多排列组合的时候。并且 `switch` 在需要用到模式匹配(pattern-matching)的情况下会更有用。 - -### If +### If {#if} `if` 语句最简单的形式就是只包含一个条件,只有该条件为 `true` 时,才执行相关代码: @@ -291,8 +285,7 @@ if temperatureInFahrenheit <= 32 { 在这个例子中,由于既不冷也不热,所以不会触发 `if` 或 `else if` 分支,也就不会打印任何消息。 - -### Switch +### Switch {#switch} `switch` 语句会尝试把某个值与若干个模式(pattern)进行匹配。根据第一个匹配成功的模式,`switch` 语句会执行对应的代码。当有可能的情况较多时,通常用 `switch` 语句替换 `if` 语句。 @@ -333,8 +326,7 @@ default: 在这个例子中,第一个 case 分支用于匹配第一个英文字母 `a`,第二个 case 分支用于匹配最后一个字母 `z`。因为 `switch` 语句必须有一个 case 分支用于覆盖所有可能的字符,而不仅仅是所有的英文字母,所以 switch 语句使用 `default` 分支来匹配除了 `a` 和 `z` 外的所有值,这个分支保证了 swith 语句的完备性。 - -#### 不存在隐式的贯穿 +#### 不存在隐式的贯穿 {#no_implicit_fallthrough} 与 C 和 Objective-C 中的 `switch` 语句不同,在 Swift 中,当匹配的 case 分支中的代码执行完毕后,程序会终止 `switch` 语句,而不会继续执行下一个 case 分支。这也就是说,不需要在 case 分支中显式地使用 `break` 语句。这使得 `switch` 语句更安全、更易用,也避免了漏写 `break` 语句导致多个语言被执行的错误。 @@ -377,8 +369,7 @@ default: > > 如果想要显式贯穿 case 分支,请使用 `fallthrough` 语句,详情请参考[贯穿](#fallthrough)。 - -#### 区间匹配 +#### 区间匹配 {#interval_matching} case 分支的模式也可以是一个值的区间。下面的例子展示了如何使用区间匹配来输出任意数字对应的自然语言格式: @@ -406,8 +397,7 @@ print("There are \(naturalCount) \(countedThings).") 在上例中,`approximateCount` 在一个 `switch` 声明中被评估。每一个 `case` 都与之进行比较。因为 `approximateCount` 落在了 12 到 100 的区间,所以 `naturalCount` 等于 `"dozens of"` 值,并且此后的执行跳出了 `switch` 语句。 - -#### 元组 +#### 元组 {#tuples} 我们可以使用元组在同一个 `switch` 语句中测试多个值。元组中的元素可以是值,也可以是区间。另外,使用下划线(`_`)来匹配所有可能的值。 @@ -436,8 +426,7 @@ default: 不像 C 语言,Swift 允许多个 case 匹配同一个值。实际上,在这个例子中,点 (0, 0)可以匹配所有_四个 case_。但是,如果存在多个匹配,那么只会执行第一个被匹配到的 case 分支。考虑点 (0, 0)会首先匹配 `case (0, 0)`,因此剩下的能够匹配的分支都会被忽视掉。 - -#### 值绑定(Value Bindings) +#### 值绑定(Value Bindings) {#value_bindings} case 分支允许将匹配的值声明为临时常量或变量,并且在 case 分支体内使用 —— 这种行为被称为*值绑定*(value binding),因为匹配的值在 case 分支体内,与临时的常量或变量绑定。 @@ -466,8 +455,7 @@ case let (x, y): 请注意,这个 `switch` 语句不包含默认分支。这是因为最后一个 case ——`case let(x, y)` 声明了一个可以匹配余下所有值的元组。这使得 `switch` 语句已经完备了,因此不需要再书写默认分支。 - -#### Where +#### Where {#where} case 分支的模式可以使用 `where` 语句来判断额外的条件。 @@ -494,8 +482,7 @@ case let (x, y): 就像是值绑定中的例子,由于最后一个 case 分支匹配了余下所有可能的值,`switch` 语句就已经完备了,因此不需要再书写默认分支。 - -#### 复合型 Cases +#### 复合型 Cases {#compound_cases} 当多个条件可以使用同一种方法来处理时,可以将这几种可能放在同一个 `case` 后面,并且用逗号隔开。当 case 后面的任意一种模式匹配的时候,这条分支就会被匹配。并且,如果匹配列表过长,还可以分行书写: @@ -530,8 +517,7 @@ default: 上面的 case 有两个模式:`(let distance, 0)` 匹配了在 x 轴上的值,`(0, let distance)` 匹配了在 y 轴上的值。两个模式都绑定了 `distance`,并且 `distance` 在两种模式下,都是整型——这意味着分支体内的代码,只要 case 匹配,都可以获取到 `distance` 值。 - -## 控制转移语句 +## 控制转移语句 {#control_transfer_statements} 控制转移语句改变你代码的执行顺序,通过它可以实现代码的跳转。Swift 有五种控制转移语句: @@ -543,8 +529,7 @@ default: 我们将会在下面讨论 `continue`、`break` 和 `fallthrough` 语句。`return` 语句将会在[函数](./06_Functions.md)章节讨论,`throw` 语句会在[错误抛出](./18_Error_Handling.md#throwing_errors)章节讨论。 - -### Continue +### Continue {#continue} `continue` 语句告诉一个循环体立刻停止本次循环,重新开始下次循环。就好像在说“本次循环我已经执行完了”,但是并不会离开整个循环体。 @@ -567,18 +552,15 @@ print(puzzleOutput) 在上面的代码中,只要匹配到元音字母或者空格字符,就调用 `continue` 语句,使本次循环结束,重新开始下次循环。这种行为使 `switch` 匹配到元音字母和空格字符时不做处理,而不是让每一个匹配到的字符都被打印。 - -### Break +### Break {#break} `break` 语句会立刻结束整个控制流的执行。`break` 可以在 `switch` 或循环语句中使用,用来提前结束 `switch` 或循环语句。 - -#### 循环语句中的 break +#### 循环语句中的 break {#break_in_a_loop_statement} 当在一个循环体中使用 `break` 时,会立刻中断该循环体的执行,然后跳转到表示循环体结束的大括号(`}`)后的第一行代码。不会再有本次循环的代码被执行,也不会再有下次的循环产生。 - -#### Switch 语句中的 break +#### Switch 语句中的 break {#break_in_a_switch_statement} 当在一个 `switch` 代码块中使用 `break` 时,会立即中断该 `switch` 代码块的执行,并且跳转到表示 `switch` 代码块结束的大括号(`}`)后的第一行代码。 @@ -619,8 +601,7 @@ if let integerValue = possibleIntegerValue { 在上面的例子中,想要把 `Character` 所有的的可能性都枚举出来是不现实的,所以使用 `default` 分支来包含所有上面没有匹配到字符的情况。由于这个 `default` 分支不需要执行任何动作,所以它只写了一条 `break` 语句。一旦落入到 `default` 分支中后,`break` 语句就完成了该分支的所有代码操作,代码继续向下,开始执行 `if let` 语句。 - -### 贯穿(Fallthrough) +### 贯穿(Fallthrough) {#fallthrough} 在 Swift 里,`switch` 语句不会从上一个 case 分支跳转到下一个 case 分支中。相反,只要第一个匹配到的 case 分支完成了它需要执行的语句,整个 `switch` 代码块完成了它的执行。相比之下,C 语言要求你显式地插入 `break` 语句到每个 case 分支的末尾来阻止自动落入到下一个 case 分支中。Swift 的这种避免默认落入到下一个分支中的特性意味着它的 `switch` 功能要比 C 语言的更加清晰和可预测,可以避免无意识地执行多个 case 分支从而引发的错误。 @@ -650,8 +631,7 @@ print(description) > > `fallthrough` 关键字不会检查它下一个将会落入执行的 case 中的匹配条件。`fallthrough` 简单地使代码继续连接到下一个 case 中的代码,这和 C 语言标准中的 `switch` 语句特性是一样的。 - -### 带标签的语句 +### 带标签的语句 {#labeled_statements} 在 Swift 中,你可以在循环体和条件语句中嵌套循环体和条件语句来创造复杂的控制流结构。并且,循环体和条件语句都可以使用 `break` 语句来提前结束整个代码块。因此,显式地指明 `break` 语句想要终止的是哪个循环体或者条件语句,会很有用。类似地,如果你有许多嵌套的循环体,显式指明 `continue` 语句想要影响哪一个循环体也会非常有用。 @@ -722,8 +702,7 @@ print("Game over!") > > 同时请注意,当调用 `continue gameLoop` 去跳转到下一次循环迭代时,这里使用 `gameLoop` 标签并不是严格必须的。因为在这个游戏中,只有一个循环体,所以 `continue` 语句会影响到哪个循环体是没有歧义的。然而,`continue` 语句使用 `gameLoop` 标签也是没有危害的。这样做符合标签的使用规则,同时参照旁边的 `break gameLoop`,能够使游戏的逻辑更加清晰和易于理解。 - -## 提前退出 +## 提前退出 {#early_exit} 像 `if` 语句一样,`guard` 的执行取决于一个表达式的布尔值。我们可以使用 `guard` 语句来要求条件必须为真时,以执行 `guard` 语句后的代码。不同于 `if` 语句,一个 `guard` 语句总是有一个 `else` 从句,如果条件不为真则执行 `else` 从句中的代码。 @@ -757,8 +736,7 @@ greet(person: ["name": "Jane", "location": "Cupertino"]) 相比于可以实现同样功能的 `if` 语句,按需使用 `guard` 语句会提升我们代码的可读性。它可以使你的代码连贯的被执行而不需要将它包在 `else` 块中,它可以使你在紧邻条件判断的地方,处理违规的情况。 - -## 检测 API 可用性 +## 检测 API 可用性 {#checking_api_availability} Swift 内置支持检查 API 可用性,这可以确保我们不会在当前部署机器上,不小心地使用了不可用的 API。 diff --git a/source/chapter2/06_Functions.md b/source/chapter2/06_Functions.md index 7e249b73..fea07880 100755 --- a/source/chapter2/06_Functions.md +++ b/source/chapter2/06_Functions.md @@ -6,8 +6,7 @@ Swift 统一的函数语法非常的灵活,可以用来表示任何函数, 在 Swift 中,每个函数都有一个由函数的参数值类型和返回值类型组成的类型。你可以把函数类型当做任何其他普通变量类型一样处理,这样就可以更简单地把函数当做别的函数的参数,也可以从其他函数中返回函数。函数的定义可以写在其他函数定义中,这样可以在嵌套函数范围内实现功能封装。 - -## 函数的定义与调用 +## 函数的定义与调用 {#Defining_and_Calling_Functions} 当你定义一个函数时,你可以定义一个或多个有名字和类型的值,作为函数的输入,称为*参数*,也可以定义某种类型的值作为函数执行结束时的输出,称为*返回类型*。 @@ -53,13 +52,11 @@ print(greetAgain(person: "Anna")) // 打印“Hello again, Anna!” ``` - -## 函数参数与返回值 +## 函数参数与返回值 {#Function_Parameters_and_Return_Values} 函数参数与返回值在 Swift 中非常的灵活。你可以定义任何类型的函数,包括从只带一个未名参数的简单函数到复杂的带有表达性参数名和不同参数选项的复杂函数。 - -### 无参数函数 +### 无参数函数 {#functions_without_parameters} 函数可以没有参数。下面这个函数就是一个无参数函数,当被调用时,它返回固定的 `String` 消息: @@ -73,8 +70,7 @@ print(sayHelloWorld()) 尽管这个函数没有参数,但是定义中在函数名后还是需要一对圆括号。当被调用时,也需要在函数名后写一对圆括号。 - -### 多参数函数 +### 多参数函数 {#functions_with_multiple_parameters} 函数可以有多种输入参数,这些参数被包含在函数的括号之中,以逗号分隔。 @@ -94,8 +90,7 @@ print(greet(person: "Tim", alreadyGreeted: true)) 你可以通过在括号内使用逗号分隔来传递一个 `String` 参数值和一个标识为 `alreadyGreeted` 的 `Bool` 值,来调用 `greet(person:alreadyGreeted:)` 函数。注意这个函数和上面 `greet(person:)` 是不同的。虽然它们都有着同样的名字 `greet`,但是 `greet(person:alreadyGreeted:)` 函数需要两个参数,而 `greet(person:)` 只需要一个参数。 - -### 无返回值函数 +### 无返回值函数 {#functions_without_return_values} 函数可以没有返回值。下面是 `greet(person:)` 函数的另一个版本,这个函数直接打印一个 `String` 值,而不是返回它: @@ -135,8 +130,7 @@ printWithoutCounting(string: "hello, world") > > 返回值可以被忽略,但定义了有返回值的函数必须返回一个值,如果在函数定义底部没有返回任何值,将导致编译时错误。 - -### 多重返回值函数 +### 多重返回值函数 {#functions_with_multiple_return_values} 你可以用元组(tuple)类型让多个值作为一个复合值从函数中返回。 @@ -171,8 +165,7 @@ print("min is \(bounds.min) and max is \(bounds.max)") 需要注意的是,元组的成员不需要在元组从函数中返回时命名,因为它们的名字已经在函数返回类型中指定了。 - -### 可选元组返回类型 +### 可选元组返回类型 {#optional_tuple_return_types} 如果函数返回的元组类型有可能整个元组都“没有值”,你可以使用*可选的* 元组返回类型反映整个元组可以是 `nil` 的事实。你可以通过在元组类型的右括号后放置一个问号来定义一个可选元组,例如 `(Int, Int)?` 或 `(String, Int, Bool)?` @@ -209,8 +202,7 @@ if let bounds = minMax(array: [8, -6, 2, 109, 3, 71]) { // 打印“min is -6 and max is 109” ``` - -## 函数参数标签和参数名称 +## 函数参数标签和参数名称 {#Function_Argument_Labels_and_Parameter_Names} 每个函数参数都有一个*参数标签(argument label)*以及一个*参数名称(parameter name)*。参数标签在调用函数的时候使用;调用的时候需要将函数的参数标签写在对应的参数前面。参数名称在函数的实现中使用。默认情况下,函数参数使用参数名称来作为它们的参数标签。 @@ -223,8 +215,7 @@ someFunction(firstParameterName: 1, secondParameterName: 2) 所有的参数都必须有一个独一无二的名字。虽然多个参数拥有同样的参数标签是可能的,但是一个唯一的函数标签能够使你的代码更具可读性。 - -### 指定参数标签 +### 指定参数标签 {#specifying_argument_labels} 你可以在参数名称前指定它的参数标签,中间以空格分隔: @@ -246,8 +237,7 @@ print(greet(person: "Bill", from: "Cupertino")) 参数标签的使用能够让一个函数在调用时更有表达力,更类似自然语言,并且仍保持了函数内部的可读性以及清晰的意图。 - -### 忽略参数标签 +### 忽略参数标签 {#omitting_argument_labels} 如果你不希望为某个参数添加一个标签,可以使用一个下划线(`_`)来代替一个明确的参数标签。 @@ -260,8 +250,7 @@ someFunction(1, secondParameterName: 2) 如果一个参数有一个标签,那么在调用的时候必须使用标签来标记这个参数。 - -### 默认参数值 +### 默认参数值 {#default_parameter_values} 你可以在函数体中通过给参数赋值来为任意一个参数定义*默认值(Deafult Value)*。当默认值被定义后,调用这个函数时可以忽略这个参数。 @@ -275,8 +264,7 @@ someFunction(parameterWithoutDefault: 4) // parameterWithDefault = 12 将不带有默认值的参数放在函数参数列表的最前。一般来说,没有默认值的参数更加的重要,将不带默认值的参数放在最前保证在函数调用时,非默认参数的顺序是一致的,同时也使得相同的函数在不同情况下调用时显得更为清晰。 - -### 可变参数 +### 可变参数 {#variadic_parameters} 一个*可变参数(variadic parameter)*可以接受零个或多个值。函数调用时,你可以用可变参数来指定函数参数可以被传入不确定数量的输入值。通过在变量类型名后面加入(`...`)的方式来定义可变参数。 @@ -302,8 +290,7 @@ arithmeticMean(3, 8.25, 18.75) > > 一个函数最多只能拥有一个可变参数。 - -### 输入输出参数 +### 输入输出参数 {#in_out_parameters} 函数参数默认是常量。试图在函数体中更改参数值将会导致编译错误。这意味着你不能错误地更改参数值。如果你想要一个函数可以修改参数的值,并且想要在这些修改在函数调用结束后仍然存在,那么就应该把这个参数定义为*输入输出参数(In-Out Parameters)*。 @@ -343,8 +330,7 @@ print("someInt is now \(someInt), and anotherInt is now \(anotherInt)") > > 输入输出参数和返回值是不一样的。上面的 `swapTwoInts` 函数并没有定义任何返回值,但仍然修改了 `someInt` 和 `anotherInt` 的值。输入输出参数是函数对函数体外产生影响的另一种方式。 - -## 函数类型 +## 函数类型 {#Function_Types} 每个函数都有种特定的*函数类型*,函数的类型由函数的参数类型和返回类型组成。 @@ -375,8 +361,7 @@ func printHelloWorld() { 这个函数的类型是:`() -> Void`,或者叫“没有参数,并返回 `Void` 类型的函数”。 - -### 使用函数类型 +### 使用函数类型 {#using_function_types} 在 Swift 中,使用函数类型就像使用其他类型一样。例如,你可以定义一个类型为函数的常量或变量,并将适当的函数赋值给它: @@ -412,8 +397,7 @@ let anotherMathFunction = addTwoInts // anotherMathFunction 被推断为 (Int, Int) -> Int 类型 ``` - -### 函数类型作为参数类型 +### 函数类型作为参数类型 {#function_types_as_parameter_types} 你可以用 `(Int, Int) -> Int` 这样的函数类型作为另一个函数的参数类型。这样你可以将函数的一部分实现留给函数的调用者来提供。 @@ -433,8 +417,7 @@ printMathResult(addTwoInts, 3, 5) `printMathResult(_:_:_:)` 函数的作用就是输出另一个适当类型的数学函数的调用结果。它不关心传入函数是如何实现的,只关心传入的函数是不是一个正确的类型。这使得 `printMathResult(_:_:_:)` 能以一种类型安全(type-safe)的方式将一部分功能转给调用者实现。 - -### 函数类型作为返回类型 +### 函数类型作为返回类型 {#function_types_as_return_types} 你可以用函数类型作为另一个函数的返回类型。你需要做的是在返回箭头(->)后写一个完整的函数类型。 @@ -483,8 +466,7 @@ print("zero!") // zero! ``` - -## 嵌套函数 +## 嵌套函数 {#Nested_Functions} 到目前为止本章中你所见到的所有函数都叫*全局函数(global functions)*,它们定义在全局域中。你也可以把函数定义在别的函数体中,称作 *嵌套函数(nested functions)*。 diff --git a/source/chapter2/07_Closures.md b/source/chapter2/07_Closures.md index 31486436..84a07220 100755 --- a/source/chapter2/07_Closures.md +++ b/source/chapter2/07_Closures.md @@ -21,15 +21,13 @@ Swift 的闭包表达式拥有简洁的风格,并鼓励在常见场景中进 * 参数名称缩写 * 尾随闭包语法 - -## 闭包表达式 +## 闭包表达式 {#closure_expressions} [嵌套函数](./06_Functions.md#Nested_Functions)作为复杂函数的一部分时,它自包含代码块式的定义和命名形式在使用上带来了方便。当然,编写未完整声明和没有函数名的类函数结构代码是很有用的,尤其是在编码中涉及到函数作为参数的那些方法时。 *闭包表达式*是一种构建内联闭包的方式,它的语法简洁。在保证不丢失它语法清晰明了的同时,闭包表达式提供了几种优化的语法简写形式。下面通过对 `sorted(by:)` 这一个案例的多次迭代改进来展示这个过程,每次迭代都使用了更加简明的方式描述了相同功能。。 - -### 排序方法 +### 排序方法 {#the_sorted_function} Swift 标准库提供了名为 `sorted(by:)` 的方法,它会基于你提供的排序闭包表达式的判断结果对数组中的值(类型确定)进行排序。一旦它完成排序过程,`sorted(by:)` 方法会返回一个与旧数组类型大小相同类型的新数组,该数组的元素有着正确的排序顺序。原数组不会被 `sorted(by:)` 方法修改。 @@ -57,8 +55,7 @@ var reversedNames = names.sorted(by: backward) 然而,以这种方式来编写一个实际上很简单的表达式(`a > b`),确实太过繁琐了。对于这个例子来说,利用闭包表达式语法可以更好地构造一个内联排序闭包。 - -### 闭包表达式语法 +### 闭包表达式语法 {#closure_expression_syntax} 闭包表达式语法有如下的一般形式: @@ -90,8 +87,7 @@ reversedNames = names.sorted(by: { (s1: String, s2: String) -> Bool in return s1 该例中 `sorted(by:)` 方法的整体调用保持不变,一对圆括号仍然包裹住了方法的整个参数。然而,参数现在变成了内联闭包。 - -### 根据上下文推断类型 +### 根据上下文推断类型 {#inferring_type_from_context} 因为排序闭包函数是作为 `sorted(by:)` 方法的参数传入的,Swift 可以推断其参数和返回值的类型。`sorted(by:)` 方法被一个字符串数组调用,因此其参数必须是 `(String, String) -> Bool` 类型的函数。这意味着 `(String, String)` 和 `Bool` 类型并不需要作为闭包表达式定义的一部分。因为所有的类型都可以被正确推断,返回箭头(`->`)和围绕在参数周围的括号也可以被省略: @@ -103,9 +99,7 @@ reversedNames = names.sorted(by: { s1, s2 in return s1 > s2 } ) 尽管如此,你仍然可以明确写出有着完整格式的闭包。如果完整格式的闭包能够提高代码的可读性,则我们更鼓励采用完整格式的闭包。而在 `sorted(by:)` 方法这个例子里,显然闭包的目的就是排序。由于这个闭包是为了处理字符串数组的排序,因此读者能够推测出这个闭包是用于字符串处理的。 - - -### 单表达式闭包的隐式返回 +### 单表达式闭包的隐式返回 {#implicit_returns_from_single_expression_closures} 单行表达式闭包可以通过省略 `return` 关键字来隐式返回单行表达式的结果,如上版本的例子可以改写为: @@ -115,8 +109,7 @@ reversedNames = names.sorted(by: { s1, s2 in s1 > s2 } ) 在这个例子中,`sorted(by:)` 方法的参数类型明确了闭包必须返回一个 `Bool` 类型值。因为闭包函数体只包含了一个单一表达式(`s1 > s2`),该表达式返回 `Bool` 类型值,因此这里没有歧义,`return` 关键字可以省略。 - -### 参数名称缩写 +### 参数名称缩写 {#shorthand_argument_names} Swift 自动为内联闭包提供了参数名称缩写功能,你可以直接通过 `$0`,`$1`,`$2` 来顺序调用闭包的参数,以此类推。 @@ -128,8 +121,7 @@ reversedNames = names.sorted(by: { $0 > $1 } ) 在这个例子中,`$0` 和 `$1` 表示闭包中第一个和第二个 `String` 类型的参数。 - -### 运算符方法 +### 运算符方法 {#operator_methods} 实际上还有一种更*简短的*方式来编写上面例子中的闭包表达式。Swift 的 `String` 类型定义了关于大于号(`>`)的字符串实现,其作为一个函数接受两个 `String` 类型的参数并返回 `Bool` 类型的值。而这正好与 `sorted(by:)` 方法的参数需要的函数类型相符合。因此,你可以简单地传递一个大于号,Swift 可以自动推断找到系统自带的那个字符串函数的实现: @@ -139,8 +131,7 @@ reversedNames = names.sorted(by: >) 更多关于运算符方法的内容请查看[运算符方法](./26_Advanced_Operators.md#operator_methods)。 - -## 尾随闭包 +## 尾随闭包 {#trailing_closures} 如果你需要将一个很长的闭包表达式作为最后一个参数传递给函数,将这个闭包替换成为尾随闭包的形式很有用。尾随闭包是一个书写在函数圆括号之后的闭包表达式,函数支持将其作为最后一个参数调用。在使用尾随闭包时,你不用写出它的参数标签: @@ -223,8 +214,7 @@ let strings = numbers.map { 在上面的例子中,通过尾随闭包语法,优雅地在函数后封装了闭包的具体功能,而不再需要将整个闭包包裹在 `map(_:)` 方法的括号内。 - -## 值捕获 +## 值捕获 {#capturing_values} 闭包可以在其被定义的上下文中*捕获*常量或变量。即使定义这些常量和变量的原作用域已经不存在,闭包仍然可以在闭包函数体内引用和修改这些值。 @@ -302,8 +292,7 @@ incrementByTen() > > 如果你将闭包赋值给一个类实例的属性,并且该闭包通过访问该实例或其成员而捕获了该实例,你将在闭包和该实例间创建一个循环强引用。Swift 使用捕获列表来打破这种循环强引用。更多信息,请参考[闭包引起的循环强引用](./23_Automatic_Reference_Counting.md#strong_reference_cycles_for_closures)。 - -## 闭包是引用类型 +## 闭包是引用类型 {#closures_are_reference_types} 上面的例子中,`incrementBySeven` 和 `incrementByTen` 都是常量,但是这些常量指向的闭包仍然可以增加其捕获的变量的值。这是因为函数和闭包都是*引用类型*。 @@ -317,8 +306,7 @@ alsoIncrementByTen() // 返回的值为50 ``` - -## 逃逸闭包 +## 逃逸闭包 {#escaping_closures} 当一个闭包作为参数传到一个函数中,但是这个闭包在函数返回之后才被执行,我们称该闭包从函数中*逃逸*。当你定义接受闭包作为参数的函数时,你可以在参数名之前标注 `@escaping`,用来指明这个闭包是允许“逃逸”出这个函数的。 @@ -358,8 +346,7 @@ print(instance.x) // 打印出“100” ``` - -## 自动闭包 +## 自动闭包 {#autoclosures} *自动闭包*是一种自动创建的闭包,用于包装传递给函数作为参数的表达式。这种闭包不接受任何参数,当它被调用的时候,会返回被包装在其中的表达式的值。这种便利语法让你能够省略闭包的花括号,用一个普通的表达式来代替显式的闭包。 diff --git a/source/chapter2/08_Enumerations.md b/source/chapter2/08_Enumerations.md index a0f5b539..ed9ae60d 100755 --- a/source/chapter2/08_Enumerations.md +++ b/source/chapter2/08_Enumerations.md @@ -10,8 +10,7 @@ 想了解更多相关信息,请参见[属性](./10_Properties.md),[方法](./11_Methods.md),[构造过程](./14_Initialization.md),[扩展](./20_Extensions.md)和[协议](./21_Protocols.md)。 - -## 枚举语法 +## 枚举语法 {#enumeration_syntax} 使用 `enum` 关键词来创建枚举并且把它们的整个定义放在一对大括号内: @@ -60,8 +59,7 @@ directionToHead = .east 当 `directionToHead` 的类型已知时,再次为其赋值可以省略枚举类型名。在使用具有显式类型的枚举值时,这种写法让代码具有更好的可读性。 - -## 使用 Switch 语句匹配枚举值 +## 使用 Switch 语句匹配枚举值 {#matching_enumeration_values_with_a_switch_statement} 你可以使用 `switch` 语句匹配单个枚举值: @@ -101,8 +99,7 @@ default: // 打印“Mostly harmless” ``` - -## 枚举成员的遍历 +## 枚举成员的遍历 {#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)。 - -## 关联值 +## 关联值 {#associated_values} 枚举语法那一小节的例子演示了如何定义和分类枚举的成员。你可以为 `Planet.earth` 设置一个常量或者变量,并在赋值之后查看这个值。然而,有时候把其他类型的值和成员值一起存储起来会很有用。这额外的信息称为*关联值*,并且你每次在代码中使用该枚举成员时,还可以修改这个关联值。 @@ -202,8 +198,7 @@ case let .qrCode(productCode): // 打印“QR code: ABCDEFGHIJKLMNOP.” ``` - -## 原始值 +## 原始值 {#raw_values} 在[关联值](#associated_values)小节的条形码例子中,演示了如何声明存储不同类型关联值的枚举成员。作为关联值的替代选择,枚举成员可以被默认值(称为*原始值*)预填充,这些原始值的类型必须相同。 @@ -225,8 +220,7 @@ enum ASCIIControlCharacter: Character { > > 原始值和关联值是不同的。原始值是在定义枚举时被预先填充的值,像上述三个 ASCII 码。对于一个特定的枚举成员,它的原始值始终不变。关联值是创建一个基于枚举成员的常量或变量时才设置的值,枚举成员的关联值可以变化。 - -### 原始值的隐式赋值 +### 原始值的隐式赋值 {#implicitly_assigned_raw_values} 在使用原始值为整数或者字符串类型的枚举时,不需要显式地为每一个枚举成员设置原始值,Swift 将会自动为你赋值。 @@ -264,8 +258,7 @@ let sunsetDirection = CompassPoint.west.rawValue // sunsetDirection 值为 "west" ``` - -### 使用原始值初始化枚举实例 +### 使用原始值初始化枚举实例 {#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` 分支被执行。 - -## 递归枚举 +## 递归枚举 {#recursive_enumerations} *递归枚举*是一种枚举类型,它有一个或多个枚举成员使用该枚举类型的实例作为关联值。使用递归枚举时,编译器会插入一个间接层。你可以在枚举成员前加上 `indirect` 来表示该成员可递归。 diff --git a/source/chapter2/09_Structures_And_Classes.md b/source/chapter2/09_Structures_And_Classes.md index a4a972f8..58e3054b 100755 --- a/source/chapter2/09_Structures_And_Classes.md +++ b/source/chapter2/09_Structures_And_Classes.md @@ -8,8 +8,7 @@ > > 通常一个*类*的实例被称为*对象*。然而相比其他语言,Swift 中结构体和类的功能更加相近,本章中所讨论的大部分功能都可以用在结构体或者类上。因此,这里会使用*实例*这个更通用的术语。 - -## 结构体和类对比 +## 结构体和类对比 {#comparing_structures_and_classes} Swift 中结构体和类有很多共同点。两者都可以: @@ -33,8 +32,7 @@ Swift 中结构体和类有很多共同点。两者都可以: 类支持的附加功能是以增加复杂性为代价的。作为一般准则,优先使用结构体,因为它们更容易理解,仅在适当或必要时才使用类。实际上,这意味着你的大多数自定义数据类型都会是结构体和枚举。更多详细的比较参见 [在结构和类之间进行选择](https://developer.apple.com/documentation/swift/choosing_between_structures_and_classes)。 - -### 类型定义的语法 +### 类型定义的语法 {#definition_syntax} 结构体和类有着相似的定义方式。你通过 `struct` 关键字引入结构体,通过 `class` 关键字引入类,并将它们的具体定义放在一对大括号中: @@ -70,8 +68,7 @@ class VideoMode { 在上面的示例还定义了一个名为 `VideoMode` 的类,用来描述视频显示器的某个特定视频模式。这个类包含了四个可变的存储属性。第一个, `resolution`,被初始化为一个新的 `Resolution` 结构体的实例,属性类型被推断为 `Resolution`。新 `VideoMode` 实例同时还会初始化其它三个属性,它们分别是初始值为 `false` 的 `interlaced`(意为“非隔行视频”),初始值为 `0.0` 的 `frameRate`,以及值为可选 `String` 的 `name`。因为 `name` 是一个可选类型,它会被自动赋予一个默认值 `nil`,意为“没有 `name` 值”。 - -### 结构体和类的实例 +### 结构体和类的实例 {#class_and_structure_instances} `Resolution` 结构体和 `VideoMode` 类的定义仅描述了什么是 `Resolution` 和 `VideoMode`。它们并没有描述一个特定的分辨率(resolution)或者视频模式(video mode)。为此,你需要创建结构体或者类的一个实例。 @@ -84,8 +81,7 @@ let someVideoMode = VideoMode() 结构体和类都使用构造器语法来创建新的实例。构造器语法的最简单形式是在结构体或者类的类型名称后跟随一对空括号,如 `Resolution()` 或 `VideoMode()`。通过这种方式所创建的类或者结构体实例,其属性均会被初始化为默认值。[构造过程](./14_Initialization.md) 章节会对类和结构体的初始化进行更详细的讨论。 - -### 属性访问 +### 属性访问 {#accessing_properties} 你可以通过使用*点语法*访问实例的属性。其语法规则是,实例名后面紧跟属性名,两者以点号(`.`)分隔,不带空格: @@ -111,8 +107,7 @@ print("The width of someVideoMode is now \(someVideoMode.resolution.width)") // 打印 "The width of someVideoMode is now 1280" ``` - -### 结构体类型的成员逐一构造器 +### 结构体类型的成员逐一构造器 {#memberwise_initializers_for_structure_types} 所有结构体都有一个自动生成的*成员逐一构造器*,用于初始化新结构体实例中成员的属性。新实例中各个属性的初始值可以通过属性的名称传递到成员逐一构造器之中: @@ -122,8 +117,7 @@ let vga = Resolution(width: 640, height: 480) 与结构体不同,类实例没有默认的成员逐一构造器。[构造过程](./14_Initialization.md) 章节会对构造器进行更详细的讨论。 - -## 结构体和枚举是值类型 +## 结构体和枚举是值类型 {#structures_and_enumerations_are_value_types} *值类型*是这样一种类型,当它被赋值给一个变量、常量或者被传递给一个函数的时候,其值会被*拷贝*。 @@ -191,8 +185,7 @@ print("The remembered direction is \(rememberedDirection)") 当 `rememberedDirection` 被赋予了 `currentDirection` 的值,实际上它被赋予的是值的一个拷贝。赋值过程结束后再修改 `currentDirection` 的值并不影响 `rememberedDirection` 所储存的原始值的拷贝。 - -## 类是引用类型 +## 类是引用类型 {#classes_are_reference_types} 与值类型不同,*引用类型*在被赋予到一个变量、常量或者被传递到一个函数时,其值不会被拷贝。因此,使用的是已存在实例的引用,而不是其拷贝。 @@ -230,8 +223,7 @@ print("The frameRate property of tenEighty is now \(tenEighty.frameRate)") 需要注意的是 `tenEighty` 和 `alsoTenEighty` 被声明为常量而不是变量。然而你依然可以改变 `tenEighty.frameRate` 和 `alsoTenEighty.frameRate`,这是因为 `tenEighty` 和 `alsoTenEighty` 这两个常量的值并未改变。它们并不“存储”这个 `VideoMode` 实例,而仅仅是对 `VideoMode` 实例的引用。所以,改变的是底层 `VideoMode` 实例的 `frameRate` 属性,而不是指向 `VideoMode` 的常量引用的值。 - -### 恒等运算符 +### 恒等运算符 {#identity_operators} 因为类是引用类型,所以多个常量和变量可能在幕后同时引用同一个类实例。(对于结构体和枚举来说,这并不成立。因为它们作为值类型,在被赋予到常量、变量或者传递到函数时,其值总是会被拷贝。) @@ -253,7 +245,6 @@ if tenEighty === alsoTenEighty { 当在定义你的自定义结构体和类的时候,你有义务来决定判定两个实例“相等”的标准。在章节 [等价操作符](./26_Advanced_Operators.md#equivalence_operators) 中将会详细介绍实现自定义 == 和 !== 运算符的流程。 - -### 指针 +### 指针 {#pointers} 如果你有 C,C++ 或者 Objective-C 语言的经验,那么你也许会知道这些语言使用*指针*来引用内存中的地址。Swift 中引用了某个引用类型实例的常量或变量,与 C 语言中的指针类似,不过它并不直接指向某个内存地址,也不要求你使用星号(`*`)来表明你在创建一个引用。相反,Swift 中引用的定义方式与其它的常量或变量的一样。如果需要直接与指针交互,你可以使用标准库提供的指针和缓冲区类型 —— 参见 [手动管理内存](https://developer.apple.com/documentation/swift/swift_standard_library/manual_memory_management)。 diff --git a/source/chapter2/10_Properties.md b/source/chapter2/10_Properties.md index 006d349b..8a4f9bfd 100755 --- a/source/chapter2/10_Properties.md +++ b/source/chapter2/10_Properties.md @@ -6,8 +6,7 @@ 另外,还可以定义属性观察器来监控属性值的变化,以此来触发自定义的操作。属性观察器可以添加到类本身定义的存储属性上,也可以添加到从父类继承的属性上。 - -## 存储属性 +## 存储属性 {#stored_properties} 简单来说,一个存储属性就是存储在特定类或结构体实例里的一个常量或变量。存储属性可以是*变量存储属性*(用关键字 `var` 定义),也可以是*常量存储属性*(用关键字 `let` 定义)。 @@ -28,8 +27,7 @@ rangeOfThreeItems.firstValue = 6 `FixedLengthRange` 的实例包含一个名为 `firstValue` 的变量存储属性和一个名为 `length` 的常量存储属性。在上面的例子中,`length` 在创建实例的时候被初始化,且之后无法修改它的值,因为它是一个常量存储属性。 - -### 常量结构体实例的存储属性 +### 常量结构体实例的存储属性 {#stored_properties_of_constant_structure_instances} 如果创建了一个结构体实例并将其赋值给一个常量,则无法修改该实例的任何属性,即使被声明为可变属性也不行: @@ -46,8 +44,7 @@ rangeOfFourItems.firstValue = 6 属于*引用类型*的类则不一样。把一个引用类型的实例赋给一个常量后,依然可以修改该实例的可变属性。 - -### 延时加载存储属性 +### 延时加载存储属性 {#lazy_stored_properties} *延时加载存储属性*是指当第一次被调用的时候才会计算其初始值的属性。在属性声明前使用 `lazy` 来标示一个延时加载存储属性。 @@ -99,15 +96,13 @@ print(manager.importer.fileName) > > 如果一个被标记为 `lazy` 的属性在没有初始化时就同时被多个线程访问,则无法保证该属性只会被初始化一次。 - -### 存储属性和实例变量 +### 存储属性和实例变量 {#stored_properties_and_instance_variables} 如果您有过 Objective-C 经验,应该知道 Objective-C 为类实例存储值和引用提供两种方法。除了属性之外,还可以使用实例变量作为一个备份存储将变量值赋值给属性。 Swift 编程语言中把这些理论统一用属性来实现。Swift 中的属性没有对应的实例变量,属性的备份存储也无法直接访问。这就避免了不同场景下访问方式的困扰,同时也将属性的定义简化成一个语句。属性的全部信息——包括命名、类型和内存管理特征——作为类型定义的一部分,都定义在一个地方。 - -## 计算属性 +## 计算属性 {#computed_properties} 除存储属性外,类、结构体和枚举可以定义*计算属性*。计算属性不直接存储值,而是提供一个 getter 和一个可选的 setter,来间接获取和设置其他属性或变量的值。 @@ -157,8 +152,7 @@ print("square.origin is now at (\(square.origin.x), \(square.origin.y))") Computed Properties sample - -### 简化 Setter 声明 +### 简化 Setter 声明 {#shorthand_setter_declaration} 如果计算属性的 setter 没有定义表示新值的参数名,则可以使用默认名称 `newValue`。下面是使用了简化 setter 声明的 `Rect` 结构体代码: @@ -180,8 +174,7 @@ struct AlternativeRect { } ``` - -### 只读计算属性 +### 只读计算属性 {#readonly_computed_properties} 只有 getter 没有 setter 的计算属性叫*只读计算属性*。只读计算属性总是返回一个值,可以通过点运算符访问,但不能设置新的值。 @@ -205,8 +198,7 @@ print("the volume of fourByFiveByTwo is \(fourByFiveByTwo.volume)") 这个例子定义了一个名为 `Cuboid` 的结构体,表示三维空间的立方体,包含 `width`、`height` 和 `depth` 属性。结构体还有一个名为 `volume` 的只读计算属性用来返回立方体的体积。为 `volume` 提供 setter 毫无意义,因为无法确定如何修改 `width`、`height` 和 `depth` 三者的值来匹配新的 `volume`。然而,`Cuboid` 提供一个只读计算属性来让外部用户直接获取体积是很有用的。 - -## 属性观察器 +## 属性观察器 {#property_observers} 属性观察器监控和响应属性值的变化,每次属性被设置值的时候都会调用属性观察器,即使新值和当前值相同的时候也不例外。 @@ -266,8 +258,7 @@ stepCounter.totalSteps = 896 > > 如果将带有观察器的属性通过 in-out 方式传入函数,`willSet` 和 `didSet` 也会调用。这是因为 in-out 参数采用了拷入拷出内存模式:即在函数内部使用的是参数的 copy,函数结束后,又对参数重新赋值。关于 in-out 参数详细的介绍,请参考[输入输出参数](../chapter3/05_Declarations.html#in-out_parameters) - -## 全局变量和局部变量 +## 全局变量和局部变量 {#global_and_local_variables} 计算属性和观察属性所描述的功能也可以用于*全局变量*和*局部变量*。全局变量是在函数、方法、闭包或任何类型之外定义的变量。局部变量是在函数、方法或闭包内部定义的变量。 @@ -281,8 +272,7 @@ stepCounter.totalSteps = 896 > > 局部范围的常量和变量从不延迟计算。 - -## 类型属性 +## 类型属性 {#type_properties} 实例属性属于一个特定类型的实例,每创建一个实例,实例都拥有属于自己的一套属性值,实例之间的属性相互独立。 @@ -298,8 +288,7 @@ stepCounter.totalSteps = 896 > > 存储型类型属性是延迟初始化的,它们只有在第一次被访问的时候才会被初始化。即使它们被多个线程同时访问,系统也保证只会对其进行一次初始化,并且不需要对其使用 `lazy` 修饰符。 - -### 类型属性语法 +### 类型属性语法 {#type_property_syntax} 在 C 或 Objective-C 中,与某个类型关联的静态常量和静态变量,是作为 *global*(全局)静态变量定义的。但是在 Swift 中,类型属性是作为类型定义的一部分写在类型最外层的花括号内,因此它的作用范围也就在类型支持的范围内。 @@ -333,8 +322,7 @@ class SomeClass { > > 例子中的计算型类型属性是只读的,但也可以定义可读可写的计算型类型属性,跟计算型实例属性的语法相同。 - -### 获取和设置类型属性的值 +### 获取和设置类型属性的值 {#querying_and_setting_type_properties} 跟实例属性一样,类型属性也是通过点运算符来访问。但是,类型属性是通过*类型*本身来访问,而不是通过实例。比如: diff --git a/source/chapter2/11_Methods.md b/source/chapter2/11_Methods.md index 130c704b..b6649252 100755 --- a/source/chapter2/11_Methods.md +++ b/source/chapter2/11_Methods.md @@ -4,8 +4,7 @@ 结构体和枚举能够定义方法是 Swift 与 C/Objective-C 的主要区别之一。在 Objective-C 中,类是唯一能定义方法的类型。但在 Swift 中,你不仅能选择是否要定义一个类/结构体/枚举,还能灵活地在你创建的类型(类/结构体/枚举)上定义方法。 - -## 实例方法(Instance Methods) +## 实例方法(Instance Methods) {#instance_methods} *实例方法*是属于某个特定类、结构体或者枚举类型实例的方法。实例方法提供访问和修改实例属性的方法或提供与实例目的相关的功能,并以此来支撑实例的功能。实例方法的语法与函数完全一致,详情参见[函数](./06_Functions.md)。 @@ -50,8 +49,7 @@ counter.reset() 函数参数可以同时有一个局部名称(在函数体内部使用)和一个外部名称(在调用函数时使用),详情参见[指定外部参数名](./06_Functions.md#specifying_external_parameter_names)。方法参数也一样,因为方法就是函数,只是这个函数与某个类型相关联了。 - -### self 属性 +### self 属性 {#the_self_property} 类型的每一个实例都有一个隐含属性叫做 `self`,`self` 完全等同于该实例本身。你可以在一个实例的实例方法中使用这个隐含的 `self` 属性来引用当前实例。 @@ -85,8 +83,7 @@ if somePoint.isToTheRightOf(x: 1.0) { 如果不使用 `self` 前缀,Swift会认为 `x` 的两个用法都引用了名为 `x` 的方法参数。 - -### 在实例方法中修改值类型 +### 在实例方法中修改值类型 {#modifying_value_types_from_within_instance_methods} 结构体和枚举是*值类型*。默认情况下,值类型的属性不能在它的实例方法中被修改。 @@ -118,8 +115,7 @@ fixedPoint.moveBy(x: 2.0, y: 3.0) // 这里将会报告一个错误 ``` - -### 在可变方法中给 self 赋值 +### 在可变方法中给 self 赋值 {#assigning_to_self_within_a_mutating_method} 可变方法能够赋给隐含属性 `self` 一个全新的实例。上面 `Point` 的例子可以用下面的方式改写: @@ -159,8 +155,7 @@ ovenLight.next() 上面的例子中定义了一个三态切换的枚举。每次调用 `next()` 方法时,开关在不同的电源状态(`off`, `low`, `high`)之间循环切换。 - -## 类型方法 +## 类型方法 {#type_methods} 实例方法是被某个类型的实例调用的方法。你也可以定义在类型本身上调用的方法,这种方法就叫做*类型方法*。在方法的 `func` 关键字之前加上关键字 `static`,来指定类型方法。类还可以用关键字 `class` 来允许子类重写父类的方法实现。 diff --git a/source/chapter2/12_Subscripts.md b/source/chapter2/12_Subscripts.md index 54e565bc..ba5df57c 100755 --- a/source/chapter2/12_Subscripts.md +++ b/source/chapter2/12_Subscripts.md @@ -4,8 +4,7 @@ 一个类型可以定义多个下标,通过不同索引类型进行重载。下标不限于一维,你可以定义具有多个入参的下标满足自定义类型的需求。 - -## 下标语法 +## 下标语法 {#subscript_syntax} 下标允许你通过在实例名称后面的方括号中传入一个或者多个索引值来对实例进行存取。语法类似于实例方法语法和计算型属性语法的混合。与定义实例方法类似,定义下标使用 `subscript` 关键字,指定一个或多个输入参数和返回类型;与实例方法不同的是,下标可以设定为读写或只读。这种行为由 getter 和 setter 实现,有点类似计算型属性: @@ -52,8 +51,7 @@ print("six times three is \(threeTimesTable[6])") > > `TimesTable` 例子基于一个固定的数学公式,对 `threeTimesTable[someIndex]` 进行赋值操作并不合适,因此下标定义为只读的。 - -## 下标用法 +## 下标用法 {#subscript_usage} 下标的确切含义取决于使用场景。下标通常作为访问集合,列表或序列中元素的快捷方式。你可以针对自己特定的类或结构体的功能来自由地以最恰当的方式实现下标。 @@ -72,8 +70,7 @@ numberOfLegs["bird"] = 2 > > Swift 的 `Dictionary` 类型的下标接受并返回可选类型的值。上例中的 `numberOfLegs` 字典通过下标返回的是一个 `Int?` 或者说“可选的 int”。`Dictionary` 类型之所以如此实现下标,是因为不是每个键都有个对应的值,同时这也提供了一种通过键删除对应值的方式,只需将键对应的值赋值为 `nil` 即可。 - -## 下标选项 +## 下标选项 {#subscript_options} 下标可以接受任意数量的入参,并且这些入参可以是任意类型。下标的返回值也可以是任意类型。下标可以使用变量参数和可变参数,但不能使用输入输出参数,也不能给参数设置默认值。 diff --git a/source/chapter2/13_Inheritance.md b/source/chapter2/13_Inheritance.md index deac0fd8..ecc78cfc 100755 --- a/source/chapter2/13_Inheritance.md +++ b/source/chapter2/13_Inheritance.md @@ -6,8 +6,7 @@ 可以为类中继承来的属性添加属性观察器,这样一来,当属性值改变时,类就会被通知到。可以为任何属性添加属性观察器,无论它原本被定义为存储型属性还是计算型属性。 - -## 定义一个基类 +## 定义一个基类 {#defining_a_base_class} 不继承于其它类的类,称之为*基类*。 @@ -46,8 +45,7 @@ print("Vehicle: \(someVehicle.description)") `Vehicle` 类定义了一个具有通用特性的车辆类,但实际上对于它本身来说没什么用处。为了让它变得更加有用,还需要进一步完善它,从而能够描述一个具体类型的车辆。 - -## 子类生成 +## 子类生成 {#subclassing} *子类生成*指的是在一个已有类的基础上创建一个新的类。子类继承超类的特性,并且可以进一步完善。你还可以为子类添加新的特性。 @@ -107,8 +105,7 @@ print("Tandem: \(tandem.description)") // 打印:“Tandem: traveling at 22.0 miles per hour” ``` - -## 重写 +## 重写 {#overriding} 子类可以为继承来的实例方法,类方法,实例属性,类属性,或下标提供自己定制的实现。我们把这种行为叫*重写*。 @@ -185,8 +182,7 @@ print("Car: \(car.description)") // 打印“Car: traveling at 25.0 miles per hour in gear 3” ``` - -#### 重写属性观察器 +#### 重写属性观察器 {#overriding_property_observers} 你可以通过重写属性为一个继承来的属性添加属性观察器。这样一来,无论被继承属性原本是如何实现的,当其属性值发生改变时,你就会被通知到。关于属性观察器的更多内容,请看[属性观察器](../chapter2/10_Properties.html#property_observers)。 @@ -216,8 +212,7 @@ print("AutomaticCar: \(automatic.description)") // 打印“AutomaticCar: traveling at 35.0 miles per hour in gear 4” ``` - -## 防止重写 +## 防止重写 {#preventing_overrides} 你可以通过把方法,属性或下标标记为 *`final`* 来防止它们被重写,只需要在声明关键字前加上 `final` 修饰符即可(例如:`final var`、`final func`、`final class func` 以及 `final subscript`)。 diff --git a/source/chapter2/14_Initialization.md b/source/chapter2/14_Initialization.md index 27cae5fc..7fa57ba3 100755 --- a/source/chapter2/14_Initialization.md +++ b/source/chapter2/14_Initialization.md @@ -6,9 +6,7 @@ 类的实例也可以通过实现*析构器*来执行它释放之前自定义的清理工作。想了解更多关于析构器的内容,请参考[析构过程](./15_Deinitialization.md)。 - - -## 存储属性的初始赋值 +## 存储属性的初始赋值 {#setting_initial_values_for_stored_properties} 类和结构体在创建实例时,必须为所有存储型属性设置合适的初始值。存储型属性的值不能处于一个未知的状态。 @@ -18,8 +16,7 @@ > > 当你为存储型属性分配默认值或者在构造器中为设置初始值时,它们的值是被直接设置的,不会触发任何属性观察者。 - -### 构造器 +### 构造器 {#initializers} 构造器在创建某个特定类型的新实例时被调用。它的最简形式类似于一个不带任何形参的实例方法,以关键字 `init` 命名: @@ -45,8 +42,7 @@ print("The default temperature is \(f.temperature)° Fahrenheit") 这个结构体定义了一个不带形参的构造器 `init`,并在里面将存储型属性 `temperature` 的值初始化为 `32.0`(华氏温度下水的冰点)。 - -### 默认属性值 +### 默认属性值 {#default_property_values} 如前所述,你可以在构造器中为存储型属性设置初始值。同样,你也可以在属性声明时为其设置默认值。 @@ -62,14 +58,11 @@ struct Fahrenheit { } ``` - - -## 自定义构造过程 +## 自定义构造过程 {#customizing_initialization} 你可以通过输入形参和可选属性类型来自定义构造过程,也可以在构造过程中分配常量属性。这些都将在后面章节中提到。 - -### 形参的构造过程 +### 形参的构造过程 {#initialization_parameters} 自定义构造过程时,可以在定义中提供*构造形参*,指定其值的类型和名字。构造形参的功能和语法跟函数和方法的形参相同。 @@ -94,8 +87,7 @@ let freezingPointOfWater = Celsius(fromKelvin: 273.15) 第一个构造器拥有一个构造形参,其实参标签为 `fromFahrenheit`,形参命名为 `fahrenheit`;第二个构造器也拥有一个构造形参,其实参标签为 `fromKelvin`,形参命名为 `kelvin`。这两个构造器都将单一的实参转换成摄氏温度值,并保存在属性 `temperatureInCelsius` 中。 - -### 形参命名和实参标签 +### 形参命名和实参标签 {#parameter_names_and_argument_labels} 跟函数和方法形参相同,构造形参可以同时使用在构造器里使用的形参命名和一个外部调用构造器时使用的实参标签。 @@ -135,8 +127,7 @@ let veryGreen = Color(0.0, 1.0, 0.0) // 报编译期错误-需要实参标签 ``` - -### 不带实参标签的构造器形参 +### 不带实参标签的构造器形参 {#initializer_parameters_without_external_names} 如果你不希望构造器的某个形参使用实参标签,可以使用下划线(`_`)来代替显式的实参标签来重写默认行为。 @@ -162,9 +153,7 @@ let bodyTemperature = Celsius(37.0) 构造器调用 `Celsius(37.0)` 意图明确,不需要实参标签。因此适合使用 `init(_ celsius: Double)` 这样的构造器,从而可以通过提供未命名的 `Double` 值来调用构造器。 - - -### 可选属性类型 +### 可选属性类型 {#optional_property_types} 如果你自定义的类型有一个逻辑上允许值为空的存储型属性——无论是因为它无法在初始化时赋值,还是因为它在之后某个时机可以赋值为空——都需要将它声明为 `可选类型`。可选类型的属性将自动初始化为 `nil`,表示这个属性是特意在构造过程设置为空。 @@ -190,8 +179,7 @@ cheeseQuestion.response = "Yes, I do like cheese." 调查问题的答案在询问前是无法确定的,因此我们将属性 `response` 声明为 `String?` 类型,或者说是 “可选类型 `String`“。当 `SurveyQuestion` 的实例初始化时,它将自动赋值为 `nil`,表明“暂时还没有字符“。 - -### 构造过程中常量属性的赋值 +### 构造过程中常量属性的赋值 {#assigning_constant_properties_during_initialization} 你可以在构造过程中的任意时间点给常量属性赋值,只要在构造过程结束时它设置成确定的值。一旦常量属性被赋值,它将永远不可更改。 @@ -218,8 +206,7 @@ beetsQuestion.ask() beetsQuestion.response = "I also like beets. (But not with cheese.)" ``` - -## 默认构造器 +## 默认构造器 {#default_initializers} 如果结构体或类为所有属性提供了默认值,又没有提供任何自定义的构造器,那么 Swift 会给这些结构体或类提供一个*默认构造器*。这个默认构造器将简单地创建一个所有属性值都设置为它们默认值的实例。 @@ -236,8 +223,7 @@ var item = ShoppingListItem() 由于 `ShoppingListItem` 类中的所有属性都有默认值,且它是没有父类的基类,它将自动获得一个将为所有属性设置默认值的并创建实例的默认构造器(由于 `name` 属性是可选 `String` 类型,它将接收一个默认 `nil` 的默认值,尽管代码中没有写出这个值)。上面例子中使用默认构造器创造了一个 `ShoppingListItem` 类的实例(使用 `ShoppingListItem()` 形式的构造器语法),并将其赋值给变量 `item`。 - -### 结构体的逐一成员构造器 +### 结构体的逐一成员构造器 {#memberwise_initializers_for_structure_types} 结构体如果没有定义任何自定义构造器,它们将自动获得一个*逐一成员构造器(memberwise initializer)*。不像默认构造器,即使存储型属性没有默认值,结构体也能会获得逐一成员构造器。 @@ -254,8 +240,7 @@ struct Size { let twoByTwo = Size(width: 2.0, height: 2.0) ``` - -## 值类型的构造器代理 +## 值类型的构造器代理 {#initializer_delegation_for_value_types} 构造器可以通过调用其它构造器来完成实例的部分构造过程。这一过程称为*构造器代理*,它能避免多个构造器间的代码重复。 @@ -331,15 +316,13 @@ let centerRect = Rect(center: Point(x: 4.0, y: 4.0), > > 如果你想用另外一种不需要自己定义 `init()` 和 `init(origin:size:)` 的方式来实现这个例子,请参考[扩展](./21_Extensions.md)。 - -## 类的继承和构造过程 +## 类的继承和构造过程 {#class_inheritance_and_initialization} 类里面的所有存储型属性——包括所有继承自父类的属性——都*必须*在构造过程中设置初始值。 Swift 为类类型提供了两种构造器来确保实例中所有存储型属性都能获得初始值,它们被称为指定构造器和便利构造器。 - -### 指定构造器和便利构造器 +### 指定构造器和便利构造器 {#designated_initializers_and_convenience_initializers} *指定构造器*是类中最主要的构造器。一个指定构造器将初始化类中提供的所有属性,并调用合适的父类构造器让构造过程沿着父类链继续往上进行。 @@ -351,8 +334,7 @@ Swift 为类类型提供了两种构造器来确保实例中所有存储型属 你应当只在必要的时候为类提供便利构造器,比方说某种情况下通过使用便利构造器来快捷调用某个指定构造器,能够节省更多开发时间并让类的构造过程更清晰明了。 - -### 指定构造器和便利构造器的语法 +### 指定构造器和便利构造器的语法 {#syntax_for_designated_and_convenience_initializers} 类的指定构造器的写法跟值类型简单构造器一样: @@ -370,8 +352,7 @@ convenience init(parameters) { } ``` - -### 类类型的构造器代理 +### 类类型的构造器代理 {#initializer_delegation_for_class_types} 为了简化指定构造器和便利构造器之间的调用关系,Swift 构造器之间的代理调用遵循以下三条规则: @@ -408,9 +389,7 @@ convenience init(parameters) { ![复杂构造器代理图](https://docs.swift.org/swift-book/_images/initializerDelegation02_2x.png) -i - -### 两段式构造过程 +### 两段式构造过程 {#two_phase_initialization} Swift 中类的构造过程包含两个阶段。第一个阶段,类中的每个存储型属性赋一个初始值。当每个存储型属性的初始值被赋值后,第二阶段开始,它给每个类一次机会,在新实例准备使用之前进一步自定义它们的存储型属性。 @@ -480,8 +459,7 @@ Swift 编译器将执行 4 种有效的安全检查,以确保两段式构造 最终,一旦子类的指定构造器完成调用,最开始被调用的便利构造器可以执行更多的自定义操作。 - -### 构造器的继承和重写 +### 构造器的继承和重写 {#initializer_inheritance_and_overriding} 跟 Objective-C 中的子类不同,Swift 中的子类默认情况下不会继承父类的构造器。Swift 的这种机制可以防止一个父类的简单构造器被一个更精细的子类继承,而在用来创建子类时的新实例时没有完全或错误被初始化。 @@ -572,9 +550,7 @@ print("Hoverboard: \(hoverboard.description)") > > 子类可以在构造过程修改继承来的变量属性,但是不能修改继承来的常量属性。 - - -### 构造器的自动继承 +### 构造器的自动继承 {#automatic_initializer_inheritance} 如上所述,子类在默认情况下不会继承父类的构造器。但是如果满足特定条件,父类构造器是可以被自动继承的。事实上,这意味着对于许多常见场景你不必重写父类的构造器,并且可以在安全的情况下以最小的代价继承父类的构造器。 @@ -594,8 +570,7 @@ print("Hoverboard: \(hoverboard.description)") > > 子类可以将父类的指定构造器实现为便利构造器来满足规则 2。 - -### 指定构造器和便利构造器实践 +### 指定构造器和便利构造器实践 {#designated_and_convenience_initializers_in_action} 接下来的例子将在实践中展示指定构造器、便利构造器以及构造器的自动继承。这个例子定义了包含三个类 `Food`、`RecipeIngredient` 以及 `ShoppingListItem` 的层级结构,并将演示它们的构造器是如何相互作用的。 @@ -716,8 +691,7 @@ for item in breakfastList { 如上所述,例子中通过字面量方式创建了一个数组 `breakfastList`,它包含了三个 `ShoppingListItem` 实例,因此数组的类型也能被自动推导为 `[ShoppingListItem]`。在数组创建完之后,数组中第一个 `ShoppingListItem` 实例的名字从 `[Unnamed]` 更改为 `Orange juice`,并标记状态为已购买。打印数组中每个元素的描述显示了它们都已按照预期被赋值。 - -## 可失败构造器 +## 可失败构造器 {#failable_initializers} 有时,定义一个构造器可失败的类,结构体或者枚举是很有用的。这里所指的“失败” 指的是,如给构造器传入无效的形参,或缺少某种所需的外部资源,又或是不满足某种必要的条件等。 @@ -795,8 +769,7 @@ if anonymousCreature == nil { > > 检查空字符串的值(如 `""`,而不是 `"Giraffe"` )和检查值为 `nil` 的可选类型的字符串是两个完全不同的概念。上例中的空字符串(`""`)其实是一个有效的,非可选类型的字符串。这里我们之所以让 `Animal` 的可失败构造器构造失败,只是因为对于 `Animal` 这个类的 `species` 属性来说,它更适合有一个具体的值,而不是空字符串。 - -### 枚举类型的可失败构造器 +### 枚举类型的可失败构造器 {#failable_nitializers_for_enumerations} 你可以通过一个带一个或多个形参的可失败构造器来获取枚举类型中特定的枚举成员。如果提供的形参无法匹配任何枚举成员,则构造失败。 @@ -836,8 +809,7 @@ if unknownUnit == nil { // 打印“This is not a defined temperature unit, so initialization failed.” ``` - -### 带原始值的枚举类型的可失败构造器 +### 带原始值的枚举类型的可失败构造器 {#failable_initializers_for_enumerations_with_raw_values} 带原始值的枚举类型会自带一个可失败构造器 `init?(rawValue:)`,该可失败构造器有一个合适的原始值类型的 `rawValue` 形参,选择找到的相匹配的枚举成员,找不到则构造失败。 @@ -861,8 +833,7 @@ if unknownUnit == nil { // 打印“This is not a defined temperature unit, so initialization failed.” ``` - -### 构造失败的传递 +### 构造失败的传递 {#propagation_of_initialization_failure} 类、结构体、枚举的可失败构造器可以横向代理到它们自己其他的可失败构造器。类似的,子类的可失败构造器也能向上代理到父类的可失败构造器。 @@ -926,8 +897,7 @@ if let oneUnnamed = CartItem(name: "", quantity: 1) { // 打印“Unable to initialize one unnamed product” ``` - -### 重写一个可失败构造器 +### 重写一个可失败构造器 {#overriding_a_failable_initializer} 如同其它的构造器,你可以在子类中重写父类的可失败构造器。或者你也可以用子类的非可失败构造器重写一个父类的可失败构造器。这使你可以定义一个不会构造失败的子类,即使父类的构造器允许构造失败。 @@ -985,15 +955,13 @@ class UntitledDocument: Document { 在这个例子中,如果在调用父类的可失败构造器 `init?(name:)` 时传入的是空字符串,那么强制解包操作会引发运行时错误。不过,因为这里是通过字符串常量来调用它,构造器不会失败,所以并不会发生运行时错误。 - -### init! 可失败构造器 +### init! 可失败构造器 {#the_init!_failable_initializer} 通常来说我们通过在 `init` 关键字后添加问号的方式(`init?`)来定义一个可失败构造器,但你也可以通过在 `init` 后面添加感叹号的方式来定义一个可失败构造器(`init!`),该可失败构造器将会构建一个对应类型的隐式解包可选类型的对象。 你可以在 `init?` 中代理到 `init!`,反之亦然。你也可以用 `init?` 重写 `init!`,反之亦然。你还可以用 `init` 代理到 `init!`,不过,一旦 `init!` 构造失败,则会触发一个断言。 - -## 必要构造器 +## 必要构造器 {#required_initializers} 在类的构造器前添加 `required` 修饰符表明所有该类的子类都必须实现该构造器: @@ -1019,8 +987,7 @@ class SomeSubclass: SomeClass { > > 如果子类继承的构造器能满足必要构造器的要求,则无须在子类中显式提供必要构造器的实现。 - -## 通过闭包或函数设置属性的默认值 +## 通过闭包或函数设置属性的默认值 {#setting_a_default_property_value_with_a_closure_or_function} 如果某个存储型属性的默认值需要一些自定义或设置,你可以使用闭包或全局函数为其提供定制的默认值。每当某个属性所在类型的新实例被构造时,对应的闭包或函数会被调用,而它们的返回值会当做默认值赋值给这个属性。 diff --git a/source/chapter2/15_Deinitialization.md b/source/chapter2/15_Deinitialization.md index e17a00a9..8e93b2eb 100755 --- a/source/chapter2/15_Deinitialization.md +++ b/source/chapter2/15_Deinitialization.md @@ -2,8 +2,7 @@ *析构器*只适用于类类型,当一个类的实例被释放之前,析构器会被立即调用。析构器用关键字 `deinit` 来标示,类似于构造器要用 `init` 来标示。 - -## 析构过程原理 +## 析构过程原理 {#how_deinitialization_works} Swift 会自动释放不再需要的实例以释放资源。如[自动引用计数](./23_Automatic_Reference_Counting.md)章节中所讲述,Swift 通过*自动引用计数(ARC)* 处理实例的内存管理。通常当你的实例被释放时不需要手动地去清理。但是,当使用自己的资源时,你可能需要进行一些额外的清理。例如,如果创建了一个自定义的类来打开一个文件,并写入一些数据,你可能需要在类实例被释放之前手动去关闭该文件。 @@ -19,8 +18,7 @@ deinit { 因为直到实例的析构器被调用后,实例才会被释放,所以析构器可以访问实例的所有属性,并且可以根据那些属性可以修改它的行为(比如查找一个需要被关闭的文件)。 - -## 析构器实践 +## 析构器实践 {#deinitializers_in_action} 这是一个析构器实践的例子。这个例子描述了一个简单的游戏,这里定义了两种新类型,分别是 `Bank` 和 `Player`。`Bank` 类管理一种虚拟硬币,确保流通的硬币数量永远不可能超过 10,000。在游戏中有且只能有一个 `Bank` 存在,因此 `Bank` 用类来实现,并使用类型属性和类型方法来存储和管理其当前状态。 diff --git a/source/chapter2/16_Optional_Chaining.md b/source/chapter2/16_Optional_Chaining.md index 514f947a..abd4ac92 100755 --- a/source/chapter2/16_Optional_Chaining.md +++ b/source/chapter2/16_Optional_Chaining.md @@ -6,8 +6,7 @@ > > Swift 的可选链式调用和 Objective-C 中向 `nil` 发送消息有些相像,但是 Swift 的可选链式调用可以应用于任意类型,并且能检查调用是否成功。 - -## 使用可选链式调用代替强制展开 +## 使用可选链式调用代替强制展开 {#optional_chaining_as_an_alternative_to_forced_unwrapping} 通过在想调用的属性、方法,或下标的可选值后面放一个问号(`?`),可以定义一个可选链。这一点很像在可选值后面放一个叹号(`!`)来强制展开它的值。它们的主要区别在于当可选值为空时可选链式调用只会调用失败,然而强制展开将会触发运行时错误。 @@ -80,8 +79,7 @@ if let roomCount = john.residence?.numberOfRooms { // 打印“John's residence has 1 room(s).” ``` - -## 为可选链式调用定义模型类 +## 为可选链式调用定义模型类 {#defining_model_classes_for_optional_chaining} 通过使用可选链式调用可以调用多层属性、方法和下标。这样可以在复杂的模型中向下访问各种子属性,并且判断能否访问子属性的属性、方法和下标。 @@ -156,8 +154,7 @@ class Address { `Address` 类提供了 `buildingIdentifier()` 方法,返回值为 `String?`。 如果 `buildingName` 有值则返回 `buildingName`。或者,如果 `buildingNumber` 和 `street` 均有值,则返回两者拼接得到的字符串。否则,返回 `nil`。 - -## 通过可选链式调用访问属性 +## 通过可选链式调用访问属性 {#accessing_properties_through_optional_chaining} 正如[使用可选链式调用代替强制展开](#optional_chaining_as_an_alternative_to_forced_unwrapping)中所述,可以通过可选链式调用在一个可选值上访问它的属性,并判断访问是否成功。 @@ -203,8 +200,7 @@ john.residence?.address = createAddress() 没有任何打印消息,可以看出 `createAddress()` 函数并未被执行。 - -## 通过可选链式调用来调用方法 +## 通过可选链式调用来调用方法 {#calling_methods_through_optional_chaining} 可以通过可选链式调用来调用方法,并判断是否调用成功,即使这个方法没有返回值。 @@ -240,8 +236,7 @@ if (john.residence?.address = someAddress) != nil { // 打印“It was not possible to set the address.” ``` - -## 通过可选链式调用访问下标 +## 通过可选链式调用访问下标 {#accessing_subscripts_through_optional_chaining} 通过可选链式调用,我们可以在一个可选值上访问下标,并且判断下标调用是否成功。 @@ -286,8 +281,7 @@ if let firstRoomName = john.residence?[0].name { // 打印“The first room name is Living Room.” ``` - -### 访问可选类型的下标 +### 访问可选类型的下标 {#accessing_subscripts_of_optional_type} 如果下标返回可选类型值,比如 Swift 中 `Dictionary` 类型的键的下标,可以在下标的结尾括号后面放一个问号来在其可选返回值上进行可选链式调用: @@ -301,8 +295,7 @@ testScores["Brian"]?[0] = 72 上面的例子中定义了一个 `testScores` 数组,包含了两个键值对,分别把 `String` 类型的键映射到一个 `Int` 值的数组。这个例子用可选链式调用把 `"Dave"` 数组中第一个元素设为 `91`,把 `"Bev"` 数组的第一个元素 `+1`,然后尝试把 `"Brian"` 数组中的第一个元素设为 `72`。前两个调用成功,因为 `testScores` 字典中包含 `"Dave"` 和 `"Bev"` 这两个键。但是 `testScores` 字典中没有 `"Brian"` 这个键,所以第三个调用失败。 - -## 连接多层可选链式调用 +## 连接多层可选链式调用 {#linking_multiple_levels_of_chaining} 可以通过连接多个可选链式调用在更深的模型层级中访问属性、方法以及下标。然而,多层可选链式调用不会增加返回值的可选层级。 @@ -349,8 +342,7 @@ if let johnsStreet = john.residence?.address?.street { 在上面的例子中,因为 `john.residence` 包含一个有效的 `Address` 实例,所以对 `john.residence` 的 `address` 属性赋值将会成功。 - -## 在方法的可选返回值上进行可选链式调用 +## 在方法的可选返回值上进行可选链式调用 {#chaining_on_methods_with_optional_return_values} 上面的例子展示了如何在一个可选值上通过可选链式调用来获取它的属性值。我们还可以在一个可选值上通过可选链式调用来调用方法,并且可以根据需要继续在方法的可选返回值上进行可选链式调用。 diff --git a/source/chapter2/17_Error_Handling.md b/source/chapter2/17_Error_Handling.md index 00ba3f36..c4023892 100755 --- a/source/chapter2/17_Error_Handling.md +++ b/source/chapter2/17_Error_Handling.md @@ -10,8 +10,7 @@ > > Swift 中的错误处理涉及到错误处理模式,这会用到 Cocoa 和 Objective-C 中的 `NSError`。更多详情参见 [用 Swift 解决 Cocoa 错误](https://developer.apple.com/documentation/swift/cocoa_design_patterns/handling_cocoa_errors_in_swift)。 - -## 表示与抛出错误 +## 表示与抛出错误 {#representing_and_throwing_errors} 在 Swift 中,错误用遵循 `Error` 协议的类型的值来表示。这个空协议表明该类型可以用于错误处理。 @@ -31,8 +30,7 @@ enum VendingMachineError: Error { throw VendingMachineError.insufficientFunds(coinsNeeded: 5) ``` - -## 处理错误 +## 处理错误 {#handling_errors} 某个错误被抛出时,附近的某部分代码必须负责处理这个错误,例如纠正这个问题、尝试另外一种方式、或是向用户报告错误。 @@ -44,8 +42,7 @@ Swift 中有 `4` 种处理错误的方式。你可以把函数抛出的错误传 > > Swift 中的错误处理和其他语言中用 `try`,`catch` 和 `throw` 进行异常处理很像。和其他语言中(包括 Objective-C )的异常处理不同的是,Swift 中的错误处理并不涉及解除调用栈,这是一个计算代价高昂的过程。就此而言,`throw` 语句的性能特性是可以和 `return` 语句相媲美的。 - -### 用 throwing 函数传递错误 +### 用 throwing 函数传递错误 {#propagating_errors_using_throwing_functions} 为了表示一个函数、方法或构造器可以抛出错误,在函数声明的参数之后加上 `throws` 关键字。一个标有 `throws` 关键字的函数被称作 *throwing 函数*。如果这个函数指明了返回值类型,`throws` 关键词需要写在返回箭头(`->`)的前面。 @@ -238,8 +235,7 @@ func fetchData() -> Data? { let photo = try! loadImage(atPath: "./Resources/John Appleseed.jpg") ``` - -## 指定清理操作 +## 指定清理操作 {#specifying_cleanup_actions} 你可以使用 `defer` 语句在即将离开当前代码块时执行一系列语句。该语句让你能执行一些必要的清理工作,不管是以何种方式离开当前代码块的——无论是由于抛出错误而离开,或是由于诸如 `return`、`break` 的语句。例如,你可以用 `defer` 语句来确保文件描述符得以关闭,以及手动分配的内存得以释放。 diff --git a/source/chapter2/18_Type_Casting.md b/source/chapter2/18_Type_Casting.md index 4cb08914..874c3234 100644 --- a/source/chapter2/18_Type_Casting.md +++ b/source/chapter2/18_Type_Casting.md @@ -6,8 +6,7 @@ 你也可以用它来检查一个类型是否遵循了某个协议,就像在[检验协议遵循](./21_Protocols.md#checking_for_protocol_conformance)部分讲述的一样。 - -## 为类型转换定义类层次 +## 为类型转换定义类层次 {#defining_a_class_hierarchy_for_type_casting} 你可以将类型转换用在类和子类的层次结构上,检查特定类实例的类型并且转换这个类实例的类型成为这个层次结构中的其他类型。下面的三个代码段定义了一个类层次和一个包含了这些类实例的数组,作为类型转换的例子。 @@ -57,8 +56,7 @@ let library = [ 在幕后 `library` 里存储的媒体项依然是 `Movie` 和 `Song` 类型的。但是,若你迭代它,依次取出的实例会是 `MediaItem` 类型的,而不是 `Movie` 和 `Song` 类型。为了让它们作为原本的类型工作,你需要检查它们的类型或者向下转换它们到其它类型,就像下面描述的一样。 - -## 检查类型 +## 检查类型 {#checking_type} 用*类型检查操作符*(`is`)来检查一个实例是否属于特定子类型。若实例属于那个子类型,类型检查操作符返回 `true`,否则返回 `false`。 @@ -86,8 +84,7 @@ print("Media library contains \(movieCount) movies and \(songCount) songs") 若当前 `MediaItem` 是一个 `Movie` 类型的实例,`item is Movie` 返回 `true`,否则返回 `false`。同样的,`item is Song` 检查 `item` 是否为 `Song` 类型的实例。在循环结束后,`movieCount` 和 `songCount` 的值就是被找到的属于各自类型的实例的数量。 - -## 向下转型 +## 向下转型 {#downcasting} 某类型的一个常量或变量可能在幕后实际上属于一个子类。当确定是这种情况时,你可以尝试用*类型转换操作符*(`as?` 或 `as!`)向下转到它的子类型。 @@ -132,8 +129,7 @@ for item in library { > > 转换没有真的改变实例或它的值。根本的实例保持不变;只是简单地把它作为它被转换成的类型来使用。 - -## `Any` 和 `AnyObject` 的类型转换 +## `Any` 和 `AnyObject` 的类型转换 {#type_casting_for_any_and_anyobject} Swift 为不确定类型提供了两种特殊的类型别名: diff --git a/source/chapter2/19_Nested_Types.md b/source/chapter2/19_Nested_Types.md index 812ab678..78bea31a 100755 --- a/source/chapter2/19_Nested_Types.md +++ b/source/chapter2/19_Nested_Types.md @@ -4,8 +4,7 @@ 要在一个类型中嵌套另一个类型,将嵌套类型的定义写在其外部类型的 `{}` 内,而且可以根据需要定义多级嵌套。 - -## 嵌套类型实践 +## 嵌套类型实践 {#nested_types_in_action} 下面这个例子定义了一个结构体 `BlackjackCard`(二十一点),用来模拟 `BlackjackCard` 中的扑克牌点数。`BlackjackCard` 结构体包含两个嵌套定义的枚举类型 `Suit` 和 `Rank`。 @@ -74,8 +73,7 @@ print("theAceOfSpades: \(theAceOfSpades.description)") 尽管 `Rank` 和 `Suit` 嵌套在 `BlackjackCard` 中,但它们的类型仍可从上下文中推断出来,所以在初始化实例时能够单独通过成员名称(`.ace` 和 `.spades`)引用枚举实例。在上面的例子中,`description` 属性正确地反映了黑桃 A 牌具有 `1` 和 `11` 两个值。 - -## 引用嵌套类型 +## 引用嵌套类型 {#referring_to_nested_types} 在外部引用嵌套类型时,在嵌套类型的类型名前加上其外部类型的类型名作为前缀: diff --git a/source/chapter2/21_Protocols.md b/source/chapter2/21_Protocols.md index 8646fb14..c137d6b6 100644 --- a/source/chapter2/21_Protocols.md +++ b/source/chapter2/21_Protocols.md @@ -4,8 +4,7 @@ 除了遵循协议的类型必须实现的要求外,还可以对协议进行扩展,通过扩展来实现一部分要求或者实现一些附加功能,这样遵循协议的类型就能够使用这些功能。 - -## 协议语法 +## 协议语法 {#protocol_syntax} 协议的定义方式与类、结构体和枚举的定义非常相似: @@ -31,8 +30,7 @@ class SomeClass: SomeSuperClass, FirstProtocol, AnotherProtocol { } ``` - -## 属性要求 +## 属性要求 {#property_requirements} 协议可以要求遵循协议的类型提供特定名称和类型的实例属性或类型属性。协议不指定属性是存储属性还是计算属性,它只指定属性的名称和类型。此外,协议还指定属性是*可读*的还是*可读可写的*。 @@ -99,9 +97,7 @@ var ncc1701 = Starship(name: "Enterprise", prefix: "USS") `Starship` 类只能把 `fullName` 作为只读的计算属性来实现。每一个 `Starship` 类的实例都有一个名为 `name` 的非可选属性和一个名为 `prefix` 的可选属性。 当 `prefix` 存在时,计算属性 `fullName` 会将 `prefix` 插入到 `name` 之前,从而得到一个带有 `prefix` 的 `fullName`。 - - -## 方法要求 +## 方法要求 {#method_requirements} 协议可以要求遵循协议的类型实现某些指定的实例方法或类方法。这些方法作为协议的一部分,像普通方法一样放在协议的定义中,但是不需要大括号和方法体。可以在协议中定义具有可变参数的方法,和普通方法的定义方式相同。但是,不支持为协议中的方法提供默认参数。 @@ -145,8 +141,7 @@ print("And another one: \(generator.random())") // 打印 “And another one: 0.729023776863283” ``` - -## 异变方法要求 +## 异变方法要求 {#mutating_method_requirements} 有时需要在方法中改变(或*异变*)方法所属的实例。例如,在值类型(即结构体和枚举)的实例方法中,将 `mutating` 关键字作为方法的前缀,写在 `func` 关键字之前,表示可以在该方法中修改它所属的实例以及实例的任意属性的值。这一过程在 [在实例方法中修改值类型](./11_Methods.md#modifying_value_types_from_within_instance_methods) 章节中有详细描述。 @@ -187,8 +182,7 @@ lightSwitch.toggle() // lightSwitch 现在的值为 .on ``` - -## 构造器要求 +## 构造器要求 {#initializer_requirements} 协议可以要求遵循协议的类型实现指定的构造器。你可以像编写普通构造器那样,在协议的定义里写下构造器的声明,但不需要写花括号和构造器的实体: @@ -246,8 +240,7 @@ class SomeSubClass: SomeSuperClass, SomeProtocol { 遵循协议的类型可以通过可失败构造器(`init?`)或非可失败构造器(`init`)来满足协议中定义的可失败构造器要求。协议中定义的非可失败构造器要求可以通过非可失败构造器(`init`)或隐式解包可失败构造器(`init!`)来满足。 - -## 协议作为类型 +## 协议作为类型 {#protocols_as_types} 尽管协议本身并未实现任何功能,但是协议可以被当做一个功能完备的类型来使用。 @@ -299,8 +292,7 @@ for _ in 1...5 { // Random dice roll is 4 ``` - -## 委托 +## 委托 {#delegation} *委托*是一种设计模式,它允许类或结构体将一些需要它们负责的功能委托给其他类型的实例。委托模式的实现很简单:定义协议来封装那些需要被委托的功能,这样就能确保遵循协议的类型能提供这些功能。委托模式可以用来响应特定的动作,或者接收外部数据源提供的数据,而无需关心外部数据源的类型。 @@ -413,8 +405,7 @@ game.play() // The game lasted for 4 turns ``` - -## 在扩展里添加协议遵循 +## 在扩展里添加协议遵循 {#adding_protocol_conformance_with_an_extension} 即便无法修改源代码,依然可以通过扩展令已有类型遵循并符合协议。扩展可以为已有类型添加属性、方法、下标以及构造器,因此可以符合协议中的相应要求。详情请在 [扩展](./20_Extensions.md) 章节中查看。 @@ -462,8 +453,7 @@ print(game.textualDescription) // 打印 “A game of Snakes and Ladders with 25 squares” ``` - -## 有条件地遵循协议 +## 有条件地遵循协议 {#Conditionally_Conforming_to_a_Protocol} 泛型类型可能只在某些情况下满足一个协议的要求,比如当类型的泛型形式参数遵循对应协议时。你可以通过在扩展类型时列出限制让泛型类型有条件地遵循某协议。在你采纳协议的名字后面写泛型 `where` 分句。更多关于泛型 `where` 分句,见 [泛型 Where 分句](./22_Generics.md##where_clauses)。 @@ -481,8 +471,7 @@ print(myDice.textualDescription) // 打印 "[A 6-sided dice, A 12-sided dice]" ``` - -## 在扩展里声明采纳协议 +## 在扩展里声明采纳协议 {#declaring_protocol_adoption_with_an_extension} 当一个类型已经符合了某个协议中的所有要求,却还没有声明采纳该协议时,可以通过空的扩展来让它采纳该协议: @@ -509,8 +498,7 @@ print(somethingTextRepresentable.textualDescription) > > 即使满足了协议的所有要求,类型也不会自动遵循协议,必须显式地遵循协议。 - -## 协议类型的集合 +## 协议类型的集合 {#collections_of_protocol_types} 协议类型可以在数组或者字典这样的集合中使用,在 [协议类型](./21_Protocols.md##protocols_as_types) 提到了这样的用法。下面的例子创建了一个元素类型为 `TextRepresentable` 的数组: @@ -531,8 +519,7 @@ for thing in things { 注意 `thing` 常量是 `TextRepresentable` 类型而不是 `Dice`,`DiceGame`,`Hamster` 等类型,即使实例在幕后确实是这些类型中的一种。由于 `thing` 是 `TextRepresentable` 类型,任何 `TextRepresentable` 的实例都有一个 `textualDescription` 属性,所以在每次循环中可以安全地访问 `thing.textualDescription`。 - -## 协议的继承 +## 协议的继承 {#protocol_inheritance} 协议能够*继承*一个或多个其他协议,可以在继承的协议的基础上增加新的要求。协议的继承语法与类的继承相似,多个被继承的协议间用逗号分隔: @@ -587,9 +574,7 @@ print(game.prettyTextualDescription) // ○ ○ ▲ ○ ○ ▲ ○ ○ ▲ ▲ ○ ○ ○ ▼ ○ ○ ○ ○ ▼ ○ ○ ▼ ○ ▼ ○ ``` - - -## 类专属的协议 +## 类专属的协议 {#class_only_protocol} 你通过添加 `AnyObject` 关键字到协议的继承列表,就可以限制协议只能被类类型采纳(以及非结构体或者非枚举的类型)。 @@ -605,8 +590,7 @@ protocol SomeClassOnlyProtocol: AnyObject, SomeInheritedProtocol { > > 当协议定义的要求需要遵循协议的类型必须是引用语义而非值语义时,应该采用类类型专属协议。关于引用语义和值语义的更多内容,请查看 [结构体和枚举是值类型](./09_Classes_and_Structures.md#structures_and_enumerations_are_value_types) 和 [类是引用类型](./09_Classes_and_Structures.md#classes_are_reference_types)。 - -## 协议合成 +## 协议合成 {#protocol_composition} 要求一个类型同时遵循多个协议是很有用的。你可以使用*协议组合*来复合多个协议到一个要求里。协议组合行为就和你定义的临时局部协议一样拥有构成中所有协议的需求。协议组合不定义任何新的协议类型。 @@ -670,8 +654,7 @@ beginConcert(in: seattle) 将 birthdayPerson 传入 `beginConcert(in:)` 函数是不合法的,因为 Person 不是 Location 的子类。同理,如果你新建一个类继承于 Location,但是没有遵循 Named 协议,而用这个类的实例去调用 `beginConcert(in:)` 函数也是非法的。 - -## 检查协议一致性 +## 检查协议一致性 {#checking_for_protocol_conformance} 你可以使用[类型转换](./18_Type_Casting.md)中描述的 `is` 和 `as` 操作符来检查协议一致性,即是否符合某协议,并且可以转换到指定的协议类型。检查和转换协议的语法与检查和转换类型是完全一样的: @@ -744,8 +727,7 @@ for object in objects { `objects` 数组中的元素的类型并不会因为强转而丢失类型信息,它们仍然是 `Circle`,`Country`,`Animal` 类型。然而,当它们被赋值给 `objectWithArea` 常量时,只被视为 `HasArea` 类型,因此只有 `area` 属性能够被访问。 - -## 可选的协议要求 +## 可选的协议要求 {#optional_protocol_requirements} 协议可以定义*可选要求*,遵循协议的类型可以选择是否实现这些要求。在协议中使用 `optional` 关键字作为前缀来定义可选要求。可选要求用在你需要和 Objective-C 打交道的代码中。协议和可选要求都必须带上 `@objc` 属性。标记 `@objc` 特性的协议只能被继承自 Objective-C 类的类或者 `@objc` 类遵循,其他类以及结构体和枚举均不能遵循这种协议。 @@ -855,8 +837,7 @@ for _ in 1...5 { // 0 ``` - -## 协议扩展 +## 协议扩展 {#protocol_extensions} 协议可以通过扩展来为遵循协议的类型提供属性、方法以及下标的实现。通过这种方式,你可以基于协议本身来实现这些功能,而无需在每个遵循协议的类型中都重复同样的实现,也无需使用全局函数。 @@ -880,8 +861,7 @@ print("And here's a random Boolean: \(generator.randomBool())") // 打印 “And here's a random Boolean: true” ``` - -### 提供默认实现 +### 提供默认实现 {#providing_default_implementations} 可以通过协议扩展来为协议要求的属性、方法以及下标提供默认的实现。如果遵循协议的类型为这些要求提供了自己的实现,那么这些自定义实现将会替代扩展中的默认实现被使用。 @@ -899,8 +879,7 @@ extension PrettyTextRepresentable { } ``` - -### 为协议扩展添加限制条件 +### 为协议扩展添加限制条件 {#adding_constraints_to_protocol_extensions} 在扩展协议的时候,可以指定一些限制条件,只有遵循协议的类型满足这些限制条件时,才能获得协议扩展提供的默认实现。这些限制条件写在协议名之后,使用 `where` 子句来描述,正如[泛型 Where 子句](./22_Generics.md#where_clauses)中所描述的。 diff --git a/source/chapter2/22_Generics.md b/source/chapter2/22_Generics.md index bc70d0da..727adf5c 100644 --- a/source/chapter2/22_Generics.md +++ b/source/chapter2/22_Generics.md @@ -4,8 +4,7 @@ 泛型是 Swift 最强大的特性之一,很多 Swift 标准库是基于泛型代码构建的。实际上,即使你没有意识到,你也一直在*语言指南*中使用泛型。例如,Swift 的 `Array` 和 `Dictionary` 都是泛型集合。你可以创建一个 `Int` 类型数组,也可创建一个 `String` 类型数组,甚至可以是任意其他 Swift 类型的数组。同样,你也可以创建一个存储任意指定类型的字典,并对该类型没有限制。 - -## 泛型解决的问题 +## 泛型解决的问题 {#the_problem_that_generics_solve} 下面是一个标准的非泛型函数 `swapTwoInts(_:_:)`,用来交换两个 `Int` 值: @@ -53,8 +52,7 @@ func swapTwoDoubles(_ a: inout Double, _ b: inout Double) { > > 在上面三个函数中,`a` 和 `b` 类型必须相同。如果 `a` 和 `b` 类型不同,那它们俩就不能互换值。Swift 是类型安全的语言,所以它不允许一个 `String` 类型的变量和一个 `Double` 类型的变量互换值。试图这样做将导致编译错误。 - -## 泛型函数 +## 泛型函数 {#generic_functions} 泛型函数可适用于任意类型,下面是函数 `swapTwoInts(_:_:)` 的泛型版本,命名为 `swapTwoValues(_:_:)`: @@ -97,8 +95,7 @@ swapTwoValues(&someString, &anotherString) > > 上面定义的 `swapTwoValues(_:_:)` 函数是受 `swap(_:_:)` 函数启发而实现的。后者存在于 Swift 标准库,你可以在你的应用程序中使用它。如果你在代码中需要类似 `swapTwoValues(_:_:)` 函数的功能,你可以使用已存在的 `swap(_:_:)` 函数。 - -## 类型参数 +## 类型参数 {#type_parameters} 上面 `swapTwoValues(_:_:)` 例子中,占位类型 `T` 是一个类型参数的例子,类型参数指定并命名一个占位类型,并且紧随在函数名后面,使用一对尖括号括起来(例如 ``)。 @@ -106,8 +103,7 @@ swapTwoValues(&someString, &anotherString) 你可提供多个类型参数,将它们都写在尖括号中,用逗号分开。 - -## 命名类型参数 +## 命名类型参数 {#naming_type_parameters} 大多情况下,类型参数具有描述下的名称,例如字典 `Dictionary` 中的 `Key` 和 `Value` 及数组 `Array` 中的 `Element`,这能告诉阅读代码的人这些参数类型与泛型类型或函数之间的关系。然而,当它们之间没有有意义的关系时,通常使用单个字符来表示,例如 `T`、`U`、`V`,例如上面演示函数 `swapTwoValues(_:_:)` 中的 `T`。 @@ -115,8 +111,7 @@ swapTwoValues(&someString, &anotherString) > > 请始终使用大写字母开头的驼峰命名法(例如 `T` 和 `MyTypeParameter`)来为类型参数命名,以表明它们是占位类型,而不是一个值。 - -## 泛型类型 +## 泛型类型 {#generic_types} 除了泛型函数,Swift 还允许自定义*泛型类型*。这些自定义类、结构体和枚举可以适用于*任意类型*,类似于 `Array` 和 `Dictionary`。 @@ -204,8 +199,7 @@ let fromTheTop = stackOfStrings.pop() ![](https://docs.swift.org/swift-book/_images/stackPoppedOneString_2x.png) - -## 泛型扩展 +## 泛型扩展 {#extending_a_generic_type} 当对泛型类型进行扩展时,你并不需要提供类型参数列表作为定义的一部分。原始类型定义中声明的类型参数列表在扩展中可以直接使用,并且这些来自原始类型中的参数名称会被用作原始定义中类型参数的引用。 @@ -232,8 +226,7 @@ if let topItem = stackOfStrings.topItem { // 打印“The top item on the stack is tres.” ``` - -## 类型约束 +## 类型约束 {#type_constraints} `swapTwoValues(_:_:)` 函数和 `Stack` 适用于任意类型。不过,如果能对泛型函数或泛型类型中添加特定的*类型约束*,这将在某些情况下非常有用。类型约束指定类型参数必须继承自指定类、遵循特定的协议或协议组合。 @@ -243,8 +236,7 @@ if let topItem = stackOfStrings.topItem { 当自定义泛型类型时,你可以定义你自己的类型约束,这些约束将提供更为强大的泛型编程能力。像 `可哈希(hashable)` 这种抽象概念根据它们的概念特征来描述类型,而不是它们的具体类型。 -> -### 类型约束语法 +### 类型约束语法 {#type_constraint_syntax} 在一个类型参数名后面放置一个类名或者协议名,并用冒号进行分隔,来定义类型约束。下面将展示泛型函数约束的基本语法(与泛型类型的语法相同): @@ -256,8 +248,7 @@ func someFunction(someT: T, someU: U) { 上面这个函数有两个类型参数。第一个类型参数 `T` 必须是 `SomeClass` 子类;第二个类型参数 `U` 必须符合 `SomeProtocol` 协议。 - -### 类型约束实践 +### 类型约束实践 {#type_constraints_in_action} 这里有个名为 `findIndex(ofString:in:)` 的非泛型函数,该函数的功能是在一个 `String` 数组中查找给定 `String` 值的索引。若查找到匹配的字符串,`findIndex(ofString:in:)` 函数返回该字符串在数组中的索引值,否则返回 `nil`: @@ -325,13 +316,11 @@ let stringIndex = findIndex(of: "Andrea", in: ["Mike", "Malcolm", "Andrea"]) // stringIndex 类型为 Int?,其值为 2 ``` - -## 关联类型 +## 关联类型 {#associated_types} 定义一个协议时,声明一个或多个关联类型作为协议定义的一部分将会非常有用。关联类型为协议中的某个类型提供了一个占位符名称,其代表的实际类型在协议被遵循时才会被指定。关联类型通过 `associatedtype` 关键字来指定。 - -### 关联类型实践 +### 关联类型实践 {#associated_types_in_action} 下面例子定义了一个 `Container` 协议,该协议定义了一个关联类型 `Item`: @@ -417,8 +406,7 @@ struct Stack: Container { 这一次,占位类型参数 `Element` 被用作 `append(_:)` 方法的 `item` 参数和下标的返回类型。Swift 可以据此推断出 `Element` 的类型即是 `Item` 的类型。 - -### 扩展现有类型来指定关联类型 +### 扩展现有类型来指定关联类型 {#extending_an_existing_type_to_specify_an_associated_type} [在扩展添加协议一致性](./21_Protocols.md#adding_protocol_conformance_with_an_extension)中描述了如何利用扩展让一个已存在的类型符合一个协议,这包括使用了关联类型协议。 @@ -430,8 +418,7 @@ extension Array: Container {} `Array` 的 `append(_:)` 方法和下标确保了 Swift 可以推断出 `Item` 具体类型。定义了这个扩展后,你可以将任意 `Array` 当作 Container 来使用。 - -### 给关联类型添加约束 +### 给关联类型添加约束 {#adding_constraints_to_an_associated_type} 你可以在协议里给关联类型添加约束来要求遵循的类型满足约束。例如,下面的代码定义了 `Container` 协议, 要求关联类型 `Item` 必须遵循 `Equatable` 协议: @@ -446,8 +433,7 @@ protocol Container { 要遵守 `Container` 协议,`Item` 类型也必须遵守 `Equatable` 协议。 - -### 在关联类型约束里使用协议 +### 在关联类型约束里使用协议 {#using_a_protocol_in_its_associated_type’s_constraints} 协议可以作为它自身的要求出现。例如,有一个协议细化了 `Container` 协议,添加了一个` suffix(_:)` 方法。`suffix(_:)` 方法返回容器中从后往前给定数量的元素,并把它们存储在一个 `Suffix` 类型的实例里。 @@ -496,8 +482,7 @@ extension IntStack: SuffixableContainer { } ``` - -## 泛型 Where 语句 +## 泛型 Where 语句 {#where_clauses} [类型约束](#type_constraints)让你能够为泛型函数、下标、类型的类型参数定义一些强制要求。 @@ -577,8 +562,7 @@ if allItemsMatch(stackOfStrings, arrayOfStrings) { 上面的例子创建 `Stack` 实例来存储 `String` 值,然后将三个字符串压栈。这个例子还通过数组字面量创建了一个 `Array` 实例,数组中包含同栈中一样的三个字符串。即使栈和数组是不同的类型,但它们都遵从 `Container` 协议,而且它们都包含相同类型的值。因此你可以用这两个容器作为参数来调用 `allItemsMatch(_:_:)` 函数。在上面的例子中,`allItemsMatch(_:_:)` 函数正确地显示了这两个容器中的所有元素都是相互匹配的。 - -## 具有泛型 Where 子句的扩展 +## 具有泛型 Where 子句的扩展 {#extensions_with_a_generic_where_clause} 你也可以使用泛型 `where` 子句作为扩展的一部分。基于以前的例子,下面的示例扩展了泛型 `Stack` 结构体,添加一个 `isTop(_:)` 方法。 @@ -657,8 +641,7 @@ print([1260.0, 1200.0, 98.6, 37.0].average()) 就像可以在其他地方写泛型 `where` 子句一样,你可以在一个泛型 `where` 子句中包含多个条件作为扩展的一部分。用逗号分隔列表中的每个条件。 - -## 具有泛型 Where 子句的关联类型 +## 具有泛型 Where 子句的关联类型 {#associated_types_with_a_generic_where_clause} 你可以在关联类型后面加上具有泛型 `where` 的字句。例如,建立一个包含迭代器(`Iterator`)的容器,就像是标准库中使用的 `Sequence` 协议那样。你应该这么写: @@ -682,8 +665,7 @@ protocol Container { protocol ComparableContainer: Container where Item: Comparable { } ``` - -## 泛型下标 +## 泛型下标 {#generic_subscripts} 下标可以是泛型,它们能够包含泛型 `where` 子句。你可以在 `subscript` 后用尖括号来写占位符类型,你还可以在下标代码块花括号前写 `where` 子句。例如: diff --git a/source/chapter2/23_Automatic_Reference_Counting.md b/source/chapter2/23_Automatic_Reference_Counting.md index f9f4ed45..6511f575 100755 --- a/source/chapter2/23_Automatic_Reference_Counting.md +++ b/source/chapter2/23_Automatic_Reference_Counting.md @@ -8,9 +8,7 @@ Swift 使用*自动引用计数(ARC)*机制来跟踪和管理你的应用程 > > 引用计数仅仅应用于类的实例。结构体和枚举类型是值类型,不是引用类型,也不是通过引用的方式存储和传递。 - - -## 自动引用计数的工作机制 +## 自动引用计数的工作机制 {#how_arc_works} 当你每次创建一个类的新的实例的时候,ARC 会分配一块内存来储存该实例信息。内存中会包含实例的类型信息,以及这个实例所有相关的存储型属性的值。 @@ -22,8 +20,7 @@ Swift 使用*自动引用计数(ARC)*机制来跟踪和管理你的应用程 为了使上述成为可能,无论你将实例赋值给属性、常量或变量,它们都会创建此实例的强引用。之所以称之为“强”引用,是因为它会将实例牢牢地保持住,只要强引用还在,实例是不允许被销毁的。 - -## 自动引用计数实践 +## 自动引用计数实践 {#arc_in_action} 下面的例子展示了自动引用计数的工作机制。例子以一个简单的 `Person` 类开始,并定义了一个叫 `name` 的常量属性: @@ -84,8 +81,7 @@ reference3 = nil // 打印“John Appleseed is being deinitialized” ``` - -## 类实例之间的循环强引用 +## 类实例之间的循环强引用 {#strong_reference_cycles_between_class_instances} 在上面的例子中,ARC 会跟踪你所新创建的 `Person` 实例的引用数量,并且会在 `Person` 实例不再被需要时销毁它。 @@ -161,9 +157,7 @@ unit4A = nil `Person` 和 `Apartment` 实例之间的强引用关系保留了下来并且不会被断开。 - - -## 解决实例之间的循环强引用 +## 解决实例之间的循环强引用 {#resolving_strong_reference_cycles_between_class_instances} Swift 提供了两种办法用来解决你在使用类的属性时所遇到的循环强引用问题:弱引用(weak reference)和无主引用(unowned reference)。 @@ -171,8 +165,7 @@ Swift 提供了两种办法用来解决你在使用类的属性时所遇到的 当其他的实例有更短的生命周期时,使用弱引用,也就是说,当其他实例析构在先时。在上面公寓的例子中,很显然一个公寓在它的生命周期内会在某个时间段没有它的主人,所以一个弱引用就加在公寓类里面,避免循环引用。相比之下,当其他实例有相同的或者更长生命周期时,请使用无主引用。 - -### 弱引用 +### 弱引用 {#weak_references} *弱引用*不会对其引用的实例保持强引用,因而不会阻止 ARC 销毁被引用的实例。这个特性阻止了引用变为循环强引用。声明属性或者变量时,在前面加上 `weak` 关键字表明这是一个弱引用。 @@ -245,8 +238,7 @@ unit4A = nil > > 在使用垃圾收集的系统里,弱指针有时用来实现简单的缓冲机制,因为没有强引用的对象只会在内存压力触发垃圾收集时才被销毁。但是在 ARC 中,一旦值的最后一个强引用被移除,就会被立即销毁,这导致弱引用并不适合上面的用途。 - -### 无主引用 +### 无主引用 {#unowned_references} 和弱引用类似,*无主引用*不会牢牢保持住引用的实例。和弱引用不同的是,无主引用在其他实例有相同或者更长的生命周期时使用。你可以在声明属性或者变量时,在前面加上关键字 `unowned` 表示这是一个无主引用。 @@ -329,8 +321,7 @@ john = nil > 上面的例子展示了如何使用安全的无主引用。对于需要禁用运行时的安全检查的情况(例如,出于性能方面的原因),Swift 还提供了不安全的无主引用。与所有不安全的操作一样,你需要负责检查代码以确保其安全性。 > 你可以通过 `unowned(unsafe)` 来声明不安全无主引用。如果你试图在实例被销毁后,访问该实例的不安全无主引用,你的程序会尝试访问该实例之前所在的内存地址,这是一个不安全的操作。 - -### 无主引用和隐式解包可选值属性 +### 无主引用和隐式解包可选值属性 {#unowned_references_and_implicitly_unwrapped_optional_properties} 上面弱引用和无主引用的例子涵盖了两种常用的需要打破循环强引用的场景。 @@ -382,8 +373,7 @@ print("\(country.name)'s capital city is called \(country.capitalCity.name)") 在上面的例子中,使用隐式解包可选值值意味着满足了类的构造器的两个构造阶段的要求。`capitalCity` 属性在初始化完成后,能像非可选值一样使用和存取,同时还避免了循环强引用。 - -## 闭包的循环强引用 +## 闭包的循环强引用 {#strong_reference_cycles_for_closures} 前面我们看到了循环强引用是在两个类实例属性互相保持对方的强引用时产生的,还知道了如何用弱引用和无主引用来打破这些循环强引用。 @@ -477,8 +467,7 @@ paragraph = nil 注意,`HTMLElement` 的析构器中的消息并没有被打印,证明了 `HTMLElement` 实例并没有被销毁。 - -## 解决闭包的循环强引用 +## 解决闭包的循环强引用 {#resolving_strong_reference_cycles_for_closures} 在定义闭包时同时定义捕获列表作为闭包的一部分,通过这种方式可以解决闭包和类实例之间的循环强引用。捕获列表定义了闭包体内捕获一个或者多个引用类型的规则。跟解决两个类实例间的循环强引用一样,声明每个捕获的引用为弱引用或无主引用,而不是强引用。应当根据代码关系来决定使用弱引用还是无主引用。 @@ -486,8 +475,7 @@ paragraph = nil > > Swift 有如下要求:只要在闭包内使用 `self` 的成员,就要用 `self.someProperty` 或者 `self.someMethod()`(而不只是 `someProperty` 或 `someMethod()`)。这提醒你可能会一不小心就捕获了 `self`。 - -### 定义捕获列表 +### 定义捕获列表 {#defining_a_capture_list} 捕获列表中的每一项都由一对元素组成,一个元素是 `weak` 或 `unowned` 关键字,另一个元素是类实例的引用(例如 `self`)或初始化过的变量(如 `delegate = self.delegate!`)。这些项在方括号中用逗号分开。 @@ -509,8 +497,7 @@ lazy var someClosure: () -> String = { } ``` - -### 弱引用和无主引用 +### 弱引用和无主引用 {#weak_and_unowned_references} 在闭包和捕获的实例总是互相引用并且总是同时销毁时,将闭包内的捕获定义为 `无主引用`。 diff --git a/source/chapter2/24_Memory_Safety.md b/source/chapter2/24_Memory_Safety.md index aa8f36f5..03ae1529 100644 --- a/source/chapter2/24_Memory_Safety.md +++ b/source/chapter2/24_Memory_Safety.md @@ -4,8 +4,7 @@ Swift 也保证同时访问同一块内存时不会冲突,通过约束代码里对于存储地址的写操作,去获取那一块内存的访问独占权。因为 Swift 自动管理内存,所以大部分时候你完全不需要考虑内存访问的事情。然而,理解潜在的冲突也是很重要的,可以避免你写出访问冲突的代码。而如果你的代码确实存在冲突,那在编译时或者运行时就会得到错误。 - -## 理解内存访问冲突 +## 理解内存访问冲突 {#understanding_conflicting_access_to_memory} 内存的访问,会发生在你给变量赋值,或者传递参数给函数时。例如,下面的代码就包含了读和写的访问: @@ -33,8 +32,7 @@ print("We're number \(one)!") > > 如果你曾经在单线程代码里有访问冲突,Swift 可以保证你在编译或者运行时会得到错误。对于多线程的代码,可以使用 [Thread Sanitizer](https://developer.apple.com/documentation/code_diagnostics/thread_sanitizer) 去帮助检测多线程的冲突。 - -### 内存访问性质 +### 内存访问性质 {#characteristics_of_memory_access} 内存访问冲突时,要考虑内存访问上下文中的这三个性质:访问是读还是写,访问的时长,以及被访问的存储地址。特别是,冲突会发生在当你有两个访问符合下列的情况: @@ -61,8 +59,7 @@ print(myNumber) 重叠的访问主要出现在使用 in-out 参数的函数和方法或者结构体的 mutating 方法里。Swift 代码里典型的长期访问会在后面进行讨论。 - -## In-Out 参数的访问冲突 +## In-Out 参数的访问冲突 {#conflicting_access_to_in-out_parameters} 一个函数会对它所有的 in-out 参数进行长期写访问。in-out 参数的写访问会在所有非 in-out 参数处理完之后开始,直到函数执行完毕为止。如果有多个 in-out 参数,则写访问开始的顺序与参数的顺序一致。 @@ -118,8 +115,7 @@ balance(&playerOneScore, &playerOneScore) > > 因为操作符也是函数,它们也会对 in-out 参数进行长期访问。例如,假设 `balance(_:_:)` 是一个名为 `<^>` 的操作符函数,那么 `playerOneScore <^> playerOneScore` 也会造成像 `balance(&playerOneScore, &playerOneScore)` 一样的冲突。 - -## 方法里 self 的访问冲突 +## 方法里 self 的访问冲突 {#conflicting_access_to_self_in_methods} 一个结构体的 mutating 方法会在调用期间对 `self` 进行写访问。例如,想象一下这么一个游戏,每一个玩家都有血量,受攻击时血量会下降,并且有敌人的数量,使用特殊技能时会减少敌人数量。 @@ -165,8 +161,7 @@ mutating 方法在调用期间需要对 `self` 发起写访问,而同时 in-ou ![](https://docs.swift.org/swift-book/_images/memory_share_health_oscar_2x.png) - -## 属性的访问冲突 +## 属性的访问冲突 {#conflicting_access_to_properties} 如结构体,元组和枚举的类型都是由多个独立的值组成的,例如结构体的属性或元组的元素。因为它们都是值类型,修改值的任何一部分都是对于整个值的修改,意味着其中一个属性的读或写访问都需要访问整一个值。例如,元组元素的写访问重叠会产生冲突: diff --git a/source/chapter2/25_Access_Control.md b/source/chapter2/25_Access_Control.md index 782f9672..7e90adce 100644 --- a/source/chapter2/25_Access_Control.md +++ b/source/chapter2/25_Access_Control.md @@ -10,8 +10,7 @@ Swift 不仅提供了多种不同的访问级别,还为某些典型场景提 > > 为了简单起见,对于代码中可以设置访问级别的特性(属性、基本类型、函数等),在下面的章节中我们会称之为“实体”。 - -## 模块和源文件 +## 模块和源文件 {#modules_and_source_files} Swift 中的访问控制模型基于模块和源文件这两个概念。 @@ -21,8 +20,7 @@ Swift 中的访问控制模型基于模块和源文件这两个概念。 *源文件*就是 Swift 中的源代码文件,它通常属于一个模块,即一个应用程序或者框架。尽管我们一般会将不同的类型分别定义在不同的源文件中,但是同一个源文件也可以包含多个类型、函数之类的定义。 - -## 访问级别 +## 访问级别 {#access_levels} Swift 为代码中的实体提供了五种不同的*访问级别*。这些访问级别不仅与源文件中定义的实体相关,同时也与源文件所属的模块相关。 @@ -42,8 +40,7 @@ Open 只能作用于类和类的成员,它和 Public 的区别如下: 把一个类标记为 `open`,明确的表示你已经充分考虑过外部模块使用此类作为父类的影响,并且设计好了你的类的代码了。 - -### 访问级别基本原则 +### 访问级别基本原则 {#guiding_principle_of_access_levels} Swift 中的访问级别遵循一个基本原则:*不可以在某个实体中定义访问级别更低(更严格)的实体*。 @@ -54,18 +51,15 @@ Swift 中的访问级别遵循一个基本原则:*不可以在某个实体中 关于此原则在各种情况下的具体表现,将在下文有所体现。 - -### 默认访问级别 +### 默认访问级别 {#default_access_levels} 如果你没有为代码中的实体显式指定访问级别,那么它们默认为 `internal` 级别(有一些例外情况,稍后会进行说明)。因此,在大多数情况下,我们不需要显式指定实体的访问级别。 - -### 单 target 应用程序的访问级别 +### 单 target 应用程序的访问级别 {#access_levels_for_single-target_apps} 当你编写一个单目标应用程序时,应用的所有功能都是为该应用服务,而不需要提供给其他应用或者模块使用,所以我们不需要明确设置访问级别,使用默认的访问级别 Internal 即可。但是,你也可以使用 `fileprivate` 访问或 `private` 访问级别,用于隐藏一些功能的实现细节。 - -### 框架的访问级别 +### 框架的访问级别 {#access_levels_for_frameworks} 当你开发框架时,就需要把一些对外的接口定义为 Open 或 Public,以便使用者导入该框架后可以正常使用其功能。这些被你定义为对外的接口,就是这个框架的 API。 @@ -73,13 +67,11 @@ Swift 中的访问级别遵循一个基本原则:*不可以在某个实体中 > > 框架依然会使用默认的 `internal` ,也可以指定为 `fileprivate` 访问或者 `private` 访问级别。当你想把某个实体作为框架的 API 的时候,需显式为其指定开放访问或公开访问级别。 - -### 单元测试 target 的访问级别 +### 单元测试 target 的访问级别 {#access_levels_for_unit_test_targets} 当你的应用程序包含单元测试 target 时,为了测试,测试模块需要访问应用程序模块中的代码。默认情况下只有 `open` 或 `public` 级别的实体才可以被其他模块访问。然而,如果在导入应用程序模块的语句前使用 `@testable` 特性,然后在允许测试的编译设置(`Build Options -> Enable Testability`)下编译这个应用程序模块,单元测试目标就可以访问应用程序模块中所有内部级别的实体。 - -## 访问控制语法 +## 访问控制语法 {#access_control_syntax} 通过修饰符 `open`、`public`、`internal`、`fileprivate`、`private` 来声明实体的访问级别: @@ -102,8 +94,7 @@ class SomeInternalClass {} // 隐式 internal var someInternalConstant = 0 // 隐式 internal ``` - -## 自定义类型 +## 自定义类型 {#custom_types} 如果想为一个自定义类型指定访问级别,在定义类型时进行指定即可。新类型只能在它的访问级别限制范围内使用。例如,你定义了一个 `fileprivate` 级别的类,那这个类就只能在定义它的源文件中使用,可以作为属性类型、函数参数类型或者返回类型,等等。 @@ -136,8 +127,7 @@ private class SomePrivateClass { // 显式 private 类 func somePrivateMethod() {} // 隐式 private 类成员 } ``` - -### 元组类型 +### 元组类型 {#tuple_types} 元组的访问级别将由元组中访问级别最严格的类型来决定。例如,如果你构建了一个包含两种不同类型的元组,其中一个类型为 `internal`,另一个类型为 `private`,那么这个元组的访问级别为 `private`。 @@ -145,8 +135,7 @@ private class SomePrivateClass { // 显式 private 类 > > 元组不同于类、结构体、枚举、函数那样有单独的定义。元组的访问级别是在它被使用时自动推断出的,而无法明确指定。 - -### 函数类型 +### 函数类型 {#function_types} 函数的访问级别根据访问级别最严格的参数类型或返回类型的访问级别来决定。但是,如果这种访问级别不符合函数定义所在环境的默认访问级别,那么就需要明确地指定该函数的访问级别。 @@ -170,8 +159,7 @@ private func someFunction() -> (SomeInternalClass, SomePrivateClass) { 将该函数指定为 `public` 或 `internal`,或者使用默认的访问级别 `internal` 都是错误的,因为如果把该函数当做 `public` 或 `internal` 级别来使用的话,可能会无法访问 `private` 级别的返回值。 - -### 枚举类型 +### 枚举类型 {#enumeration_types} 枚举成员的访问级别和该枚举类型相同,你不能为枚举成员单独指定不同的访问级别。 @@ -186,18 +174,15 @@ public enum CompassPoint { } ``` - -#### 原始值和关联值 +#### 原始值和关联值 {#raw_values_and_associated_values} 枚举定义中的任何原始值或关联值的类型的访问级别至少不能低于枚举类型的访问级别。例如,你不能在一个 `internal` 的枚举中定义 `private` 的原始值类型。 - -### 嵌套类型 +### 嵌套类型 {#nested_types} 如果在 `private` 的类型中定义嵌套类型,那么该嵌套类型就自动拥有 `private` 访问级别。如果在 `public` 或者 `internal` 级别的类型中定义嵌套类型,那么该嵌套类型自动拥有 `internal` 访问级别。如果想让嵌套类型拥有 `public` 访问级别,那么需要明确指定该嵌套类型的访问级别。 - -## 子类 +## 子类 {#subclassing} 子类的访问级别不得高于父类的访问级别。例如,父类的访问级别是 `internal`,子类的访问级别就不能是 `public`。 @@ -231,8 +216,7 @@ internal class B: A { 因为父类 `A` 和子类 `B` 定义在同一个源文件中,所以在子类 `B` 可以在重写的 `someMethod()` 方法中调用 `super.someMethod()`。 - -## 常量、变量、属性、下标 +## 常量、变量、属性、下标 {#constants_variables_properties_subscripts} 常量、变量、属性不能拥有比它们的类型更高的访问级别。例如,你不能定义一个 `public` 级别的属性,但是它的类型却是 `private` 级别的。同样,下标也不能拥有比索引类型或返回类型更高的访问级别。 @@ -242,8 +226,7 @@ internal class B: A { private var privateInstance = SomePrivateClass() ``` - -### Getter 和 Setter +### Getter 和 Setter {#getters_and_setters} 常量、变量、属性、下标的 `Getters` 和 `Setters` 的访问级别和它们所属类型的访问级别相同。 @@ -297,29 +280,25 @@ public struct TrackedString { } ``` - -## 构造器 +## 构造器 {#initializers} 自定义构造器的访问级别可以低于或等于其所属类型的访问级别。唯一的例外是[必要构造器](./14_Initialization.md#required_initializers),它的访问级别必须和所属类型的访问级别相同。 如同函数或方法的参数,构造器参数的访问级别也不能低于构造器本身的访问级别。 - -### 默认构造器 +### 默认构造器 {#default_initializers} 如[默认构造器](./14_Initialization.md#default_initializers)所述,Swift 会为结构体和类提供一个默认的无参数的构造器,只要它们为所有存储型属性设置了默认初始值,并且未提供自定义的构造器。 默认构造器的访问级别与所属类型的访问级别相同,除非类型的访问级别是 `public`。如果一个类型被指定为 `public` 级别,那么默认构造器的访问级别将为 `internal`。如果你希望一个 `public` 级别的类型也能在其他模块中使用这种无参数的默认构造器,你只能自己提供一个 `public` 访问级别的无参数构造器。 - -### 结构体默认的成员逐一构造器 +### 结构体默认的成员逐一构造器 {#default_memberwise_initializers_for_structure_types} 如果结构体中任意存储型属性的访问级别为 `private`,那么该结构体默认的成员逐一构造器的访问级别就是 `private`。否则,这种构造器的访问级别依然是 `internal`。 如同前面提到的默认构造器,如果你希望一个 `public` 级别的结构体也能在其他模块中使用其默认的成员逐一构造器,你依然只能自己提供一个 `public` 访问级别的成员逐一构造器。 - -## 协议 +## 协议 {#protocols} 如果想为一个协议类型明确地指定访问级别,在定义协议时指定即可。这将限制该协议只能在适当的访问级别范围内被遵循。 @@ -329,13 +308,11 @@ public struct TrackedString { > > 如果你定义了一个 `public` 访问级别的协议,那么该协议的所有实现也会是 `public` 访问级别。这一点不同于其他类型,例如,当类型是 `public` 访问级别时,其成员的访问级别却只是 `internal`。 - -### 协议继承 +### 协议继承 {#protocol_inheritance} 如果定义了一个继承自其他协议的新协议,那么新协议拥有的访问级别最高也只能和被继承协议的访问级别相同。例如,你不能将继承自 `internal` 协议的新协议定义为 `public` 协议。 - -### 协议遵循 +### 协议遵循 {#protocol_conformance} 一个类型可以遵循比它级别更低的协议。例如,你可以定义一个 `public` 级别类型,它能在别的模块中使用,但是如果它遵循一个 `internal` 协议,这个遵循的部分就只能在这个 `internal` 协议所在的模块中使用。 @@ -347,8 +324,7 @@ public struct TrackedString { > > Swift 和 Objective-C 一样,协议遵循是全局的,也就是说,在同一程序中,一个类型不可能用两种不同的方式实现同一个协议。 - -## Extension +## Extension {#extensions} Extension 可以在访问级别允许的情况下对类、结构体、枚举进行扩展。Extension 的成员具有和原始类型成员一致的访问级别。例如,你使用 extension 扩展了一个 `public` 或者 `internal` 类型,extension 中的成员就默认使用 `internal` 访问级别,和原始类型中的成员一致。如果你使用 extension 扩展了一个 `private` 类型,则 extension 的成员默认使用 `private` 访问级别。 @@ -356,8 +332,7 @@ Extension 可以在访问级别允许的情况下对类、结构体、枚举进 如果你使用 extension 来遵循协议的话,就不能显式地声明 extension 的访问级别。extension 每个 protocol 要求的实现都默认使用 protocol 的访问级别。 - -### Extension 的私有成员 +### Extension 的私有成员 {#Private Members in Extensions} 扩展同一文件内的类,结构体或者枚举,extension 里的代码会表现得跟声明在原类型里的一模一样。也就是说你可以这样: @@ -387,13 +362,11 @@ extension SomeStruct: SomeProtocol { } ``` - -## 泛型 +## 泛型 {#generics} 泛型类型或泛型函数的访问级别取决于泛型类型或泛型函数本身的访问级别,还需结合类型参数的类型约束的访问级别,根据这些访问级别中的最低访问级别来确定。 - -## 类型别名 +## 类型别名 {#type_aliases} 你定义的任何类型别名都会被当作不同的类型,以便于进行访问控制。类型别名的访问级别不可高于其表示的类型的访问级别。例如,`private` 级别的类型别名可以作为 `private`、`file-private`、`internal`、`public` 或者 `open` 类型的别名,但是 `public` 级别的类型别名只能作为 `public` 类型的别名,不能作为 `internal`、`file-private` 或 `private` 类型的别名。 diff --git a/source/chapter2/26_Advanced_Operators.md b/source/chapter2/26_Advanced_Operators.md index 88b48272..21dd7ad2 100644 --- a/source/chapter2/26_Advanced_Operators.md +++ b/source/chapter2/26_Advanced_Operators.md @@ -8,15 +8,13 @@ 我们不用被预定义的运算符所限制。在 Swift 中可以自由地定义中缀、前缀、后缀和赋值运算符,它们具有自定义的优先级与关联值。这些运算符在代码中可以像预定义的运算符一样使用,你甚至可以扩展已有的类型以支持自定义运算符。 - -## 位运算符 +## 位运算符 {#bitwise_operators} *位运算符*可以操作数据结构中每个独立的比特位。它们通常被用在底层开发中,比如图形编程和创建设备驱动。位运算符在处理外部资源的原始数据时也十分有用,比如对自定义通信协议传输的数据进行编码和解码。 Swift 支持 C 语言中的全部位运算符,接下来会一一介绍。 - -### Bitwise NOT Operator(按位取反运算符) +### Bitwise NOT Operator(按位取反运算符) {#bitwise_not_operator} *按位取反运算符(`~`)*对一个数值的全部比特位进行取反: @@ -33,8 +31,7 @@ let invertedBits = ~initialBits // 等于 0b11110000 接着使用按位取反运算符创建了一个名为 `invertedBits` 的常量,这个常量的值与全部位取反后的 `initialBits` 相等。即所有的 `0` 都变成了 `1`,同时所有的 `1` 都变成 `0`。`invertedBits` 的二进制值为 `11110000`,等价于无符号十进制数的 `240`。 - -### Bitwise AND Operator(按位与运算符) +### Bitwise AND Operator(按位与运算符) {#bitwise_and_operator} *按位与运算符(`&`)* 对两个数的比特位进行合并。它返回一个新的数,只有当两个数的对应位*都*为 `1` 的时候,新数的对应位才为 `1`: @@ -48,8 +45,7 @@ let lastSixBits: UInt8 = 0b00111111 let middleFourBits = firstSixBits & lastSixBits // 等于 00111100 ``` - -### Bitwise OR Operator(按位或运算符) +### Bitwise OR Operator(按位或运算符) {#bitwise_or_operator} *按位或运算符(`|`)* 可以对两个数的比特位进行比较。它返回一个新的数,只要两个数的对应位中有*任意一个*为 `1` 时,新数的对应位就为 `1`: @@ -63,8 +59,7 @@ let moreBits: UInt8 = 0b01011110 let combinedbits = someBits | moreBits // 等于 11111110 ``` - -### Bitwise XOR Operator(按位异或运算符) +### Bitwise XOR Operator(按位异或运算符) {#bitwise_xor_operator} *按位异或运算符*,或称“排外的或运算符”(`^`),可以对两个数的比特位进行比较。它返回一个新的数,当两个数的对应位不相同时,新数的对应位就为 `1`,并且对应位相同时则为 `0`: @@ -78,15 +73,13 @@ let otherBits: UInt8 = 0b00000101 let outputBits = firstBits ^ otherBits // 等于 00010001 ``` - -### Bitwise Left and Right Shift Operators(按位左移、右移运算符) +### Bitwise Left and Right Shift Operators(按位左移、右移运算符) {#bitwise_left_and_right_shift_operators} *按位左移运算符(`<<`)* 和 *按位右移运算符(`>>`)*可以对一个数的所有位进行指定位数的左移和右移,但是需要遵守下面定义的规则。 对一个数进行按位左移或按位右移,相当于对这个数进行乘以 2 或除以 2 的运算。将一个整数左移一位,等价于将这个数乘以 2,同样地,将一个整数右移一位,等价于将这个数除以 2。 - -#### 无符号整数的移位运算 +#### 无符号整数的移位运算 {#shifting_behavior_for_unsigned_integers} 对无符号整数进行移位的规则如下: @@ -130,8 +123,7 @@ let blueComponent = pink & 0x0000FF // blueComponent 是 0x99,即 153 最后,蓝色部分通过对 `0xCC6699` 和 `0x0000FF` 进行按位与运算得到 `0x000099`。这里不需要再向右移位,而 `0x000099` 也就是 `0x99` ,也就是十进制数值的 `153`。 - -#### 有符号整数的移位运算 +#### 有符号整数的移位运算 {#shifting_behavior_for_signed_integers} 对比无符号整数,有符号整数的移位运算相对复杂得多,这种复杂性源于有符号整数的二进制表现形式。(为了简单起见,以下的示例都是基于 8 比特的有符号整数,但是其中的原理对任何位数的有符号整数都是通用的。) @@ -167,8 +159,7 @@ let blueComponent = pink & 0x0000FF // blueComponent 是 0x99,即 153 由于正数和负数的特殊存储方式,在对它们进行右移的时候,会使它们越来越接近 `0`。在移位的过程中保持符号位不变,意味着负整数在接近 `0` 的过程中会一直保持为负。 - -## 溢出运算符 +## 溢出运算符 {#overflow_operators} 当向一个整数类型的常量或者变量赋予超过它容量的值时,Swift 默认会报错,而不是允许生成一个无效的数。这个行为为我们在运算过大或者过小的数时提供了额外的安全性。 @@ -189,8 +180,7 @@ potentialOverflow += 1 * 溢出减法 `&-` * 溢出乘法 `&*` - -### 数值溢出 +### 数值溢出 {#value_overflow} 数值有可能出现上溢或者下溢。 @@ -235,8 +225,7 @@ signedOverflow = signedOverflow &- 1 对于无符号与有符号整型数值来说,当出现上溢时,它们会从数值所能容纳的最大数变成最小数。同样地,当发生下溢时,它们会从所能容纳的最小数变成最大数。 - -## 优先级和结合性 +## 优先级和结合性 {#precedence_and_associativity} 运算符的*优先级*使得一些运算符优先于其他运算符;它们会先被执行。 @@ -283,8 +272,7 @@ signedOverflow = signedOverflow &- 1 > > 相对 C 语言和 Objective-C 来说,Swift 的运算符优先级和结合性规则更加简洁和可预测。但是,这也意味着它们相较于 C 语言及其衍生语言并不是完全一致。在对现有的代码进行移植的时候,要注意确保运算符的行为仍然符合你的预期。 - -## 运算符函数 +## 运算符函数 {#operator_functions} 类和结构体可以为现有的运算符提供自定义的实现。这通常被称为运算符*重载*。 @@ -321,8 +309,7 @@ let combinedVector = vector + anotherVector ![Art/vectorAddition_2x.png](https://docs.swift.org/swift-book/_images/vectorAddition_2x.png) - -### 前缀和后缀运算符 +### 前缀和后缀运算符 {#prefix_and_postfix_operators} 上个例子演示了一个二元中缀运算符的自定义实现。类与结构体也能提供标准*一元运算符*的实现。一元运算符只运算一个值。当运算符出现在值之前时,它就是*前缀*的(例如 `-a`),而当它出现在值之后时,它就是*后缀*的(例如 `b!`)。 @@ -348,8 +335,7 @@ let alsoPositive = -negative // alsoPositive 是一个值为 (3.0, 4.0) 的 Vector2D 实例 ``` - -### 复合赋值运算符 +### 复合赋值运算符 {#compound_assignment_operators} *复合赋值运算符*将赋值运算符(`=`)与其它运算符进行结合。例如,将加法与赋值结合成加法赋值运算符(`+=`)。在实现的时候,需要把运算符的左参数设置成 `inout` 类型,因为这个参数的值会在运算符函数内直接被修改。 @@ -376,8 +362,7 @@ original += vectorToAdd > > 不能对默认的赋值运算符(`=`)进行重载。只有复合赋值运算符可以被重载。同样地,也无法对三元条件运算符 (`a ? b : c`) 进行重载。 - -### 等价运算符 +### 等价运算符 {#equivalence_operators} 通常情况下,自定义的类和结构体没有对*等价运算符*进行默认实现,等价运算符通常被称为*相等*运算符(`==`)与*不等*运算符(`!=`)。 @@ -427,8 +412,7 @@ if twoThreeFour == anotherTwoThreeFour { // 打印“These two vectors are also equivalent.” ``` - -## 自定义运算符 +## 自定义运算符 {#custom_operators} 除了实现标准运算符,在 Swift 中还可以声明和实现*自定义运算符*。可以用来自定义运算符的字符列表请参考[运算符](../chapter3/02_Lexical_Structure.html#operators)。 @@ -454,8 +438,7 @@ let afterDoubling = +++toBeDoubled // afterDoubling 现在的值也为 (2.0, 8.0) ``` - -### 自定义中缀运算符的优先级 +### 自定义中缀运算符的优先级 {#precedence_and_associativity_for_custom_infix_operators} 每个自定义中缀运算符都属于某个优先级组。优先级组指定了这个运算符相对于其他中缀运算符的优先级和结合性。[优先级和结合性](#precedence_and_associativity)中详细阐述了这两个特性是如何对中缀运算符的运算产生影响的。 diff --git a/source/chapter3/01_About_the_Language_Reference.md b/source/chapter3/01_About_the_Language_Reference.md index fa2d96f2..2c6f5aee 100755 --- a/source/chapter3/01_About_the_Language_Reference.md +++ b/source/chapter3/01_About_the_Language_Reference.md @@ -4,8 +4,7 @@ Swift 语言相对较小,这是由于 Swift 代码中常用的类型、函数以及运算符都已经在 Swift 标准库中定义了。虽然这些类型、函数和运算符并不是 Swift 语言自身的一部分,但是它们被广泛应用于本书的讨论和代码范例中。 - -## 如何阅读语法 +## 如何阅读语法 {#how_to_read_the_grammar} 用来描述 Swift 编程语言形式语法的符号遵循下面几个约定: diff --git a/source/chapter3/02_Lexical_Structure.md b/source/chapter3/02_Lexical_Structure.md index 5a0a412c..c04c0ce7 100755 --- a/source/chapter3/02_Lexical_Structure.md +++ b/source/chapter3/02_Lexical_Structure.md @@ -4,8 +4,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 通常情况下,通过考虑输入文本当中可能的最长子串,并且在随后将介绍的语法约束之下,根据随后将介绍的语法约束生成的,根据 Swift 源文件当中的字符来生成相应的“符号”。这种方法称为*“最长匹配(longest match)”*,或者*“最大适合(maximal munch)”*。 - -## 空白与注释 +## 空白与注释 {#whitespace_and_comments} 空白(whitespace)有两个用途:分隔源文件中的符号以及帮助区分运算符属于前缀还是后缀(参见 [运算符](#operators)),在其他情况下空白则会被忽略。以下的字符会被当作空白:空格(U+0020)、换行符(U+000A)、回车符(U+000D)、水平制表符(U+0009)、垂直制表符(U+000B)、换页符(U+000C)以及空字符(U+0000)。 @@ -14,7 +13,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > 空白语法 > - +whitespace {#whitespace} > *空白* → [*空白项*](#whitespace-item) [*空白*](#whitespace)可选 > > *空白项* → [*断行符*](#line-break) @@ -26,7 +25,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > *空白项* → U+0000,U+0009,U+000B,U+000C 或者 U+0020 > - +line-break {#line-break} > *断行符* → U+000A > > *断行符* → U+000D @@ -34,7 +33,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > *断行符* → U+000D 接着是 U+000A > - +comment {#comment} > *注释* → // [*注释内容 断行*](#comment-text line-break) > > *多行注释* → `/*` [*多行注释内容*](#multiline-commnet-text) `*/` @@ -54,8 +53,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 注释可以包含额外的格式和标记,正如 [*Markup Formatting Reference*](https://developer.apple.com/library/archive/documentation/Xcode/Reference/xcode_markup_formatting_ref/index.html) 所述。 - -## 标识符 +## 标识符 {#identifiers} *标识符(identifier)* 可以由以下的字符开始:大写或小写的字母 `A` 到 `Z`、下划线(`_`)、基本多文种平面(Basic Multilingual Plane)中非字符数字组合的 Unicode 字符以及基本多文种平面以外的非个人专用区字符。在首字符之后,允许使用数字和组合 Unicode 字符。 @@ -66,7 +64,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > 标识符语法 > - +identifier {#identifier} > *标识符* → [*头部标识符*](#identifier-head) [*标识符字符组*](#identifier-characters)可选 > > *标识符* → \`[*头部标识符*](#identifier-head) [*标识符字符组*](#identifier-characters)可选\` @@ -74,11 +72,11 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > *标识符* → [*隐式参数名*](#implicit-parameter-name) > - +identifier-list {#identifier-list} > *标识符列表* → [*标识符*](#identifier) | [*标识符*](#identifier) **,** [*标识符列表*](#identifier-list) > - +identifier-head {#identifier-head} > *头部标识符* → 大写或小写字母 A - Z > > *头部标识符* → _ @@ -112,24 +110,23 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > *头部标识符* → U+D0000–U+DFFFD 或者 U+E0000–U+EFFFD > - +identifier-character {#identifier-character} > *标识符字符* → 数值 0 - 9 > > *标识符字符* → U+0300–U+036F,U+1DC0–U+1DFF,U+20D0–U+20FF,或者 U+FE20–U+FE2F > > *标识符字符* → [*头部标识符*](#identifier-head) > -> +> identifier-characters {#identifier-characters} > > *标识符字符组* → [*标识符字符*](#identifier-character) [*标识符字符组*](#identifier-characters)可选 > - +implicit-parameter-name {#implicit-parameter-name} > *隐式参数名* → **$** [*十进制数字列表*](#decimal-digits) > - -## 关键字和标点符号 +## 关键字和标点符号 {#keywords} 下面这些被保留的关键字不允许用作标识符,除非使用反引号转义,具体描述请参考 [标识符](#identifiers)。除了 `inout`、`var` 以及 `let` 之外的关键字可以用作某个函数声明或者函数调用当中的外部参数名,不用添加反引号转义。 @@ -142,8 +139,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 以下符号被当作保留符号,不能用于自定义运算符: `(`、`)`、`{`、`}`、`[`、`]`、`.`、`,`、`:`、`;`、`=`、`@`、`#`、`&`(作为前缀运算符)、`->`、`` ` ``、`?`、`!`(作为后缀运算符)。 - -## 字面量 +## 字面量 {#literals} *字面量(literal)* 用来表示源码中某种特定类型的值,比如一个数字或字符串。 @@ -165,20 +161,19 @@ true // 布尔值字面量 > *字面量* → [*数值字面量*](#numeric-literal) | [*字符串字面量*](#string-literal) | [*布尔值字面量*](#boolean-literal) | [*nil 字面量*](#nil-literal) > - +numeric-literal {#numeric-literal} > *数值字面量* → **-**可选 [*整数字面量*](#integer-literal) | **-**可选 [*浮点数字面量*](#floating-point-literal) > -> +> boolean-literal {#boolean-literal} > > *布尔值字面量* → **true** | **false** > -> +> nil-literal {#nil-literal} > > *nil 字面量* → **nil** > - -### 整数字面量 +### 整数字面量 {#integer_literals} *整数字面量(Integer Literals)* 表示未指定精度整数的值。整数字面量默认用十进制表示,可以加前缀来指定其他的进制。二进制字面量加 `0b`,八进制字面量加 `0o`,十六进制字面量加 `0x`。 @@ -192,7 +187,7 @@ true // 布尔值字面量 > 整数字面量语法 > - +integer-literal {#integer-literal} > *整数字面量* → [*二进制字面量*](#binary-literal) > > *整数字面量* → [*八进制字面量*](#octal-literal) @@ -202,76 +197,75 @@ true // 布尔值字面量 > *整数字面量* → [*十六进制字面量*](#hexadecimal-literal) > - +binary-literal {#binary-literal} > *二进制字面量* → **0b** [*二进制数字*](#binary-digit) [*二进制字面量字符组*](#binary-literal-characters)可选 > -> +> binary-digit {#binary-digit} > > *二进制数字* → 数值 0 到 1 > -> +> binary-literal-character {#binary-literal-character} > > *二进制字面量字符* → [*二进制数字*](#binary-digit) | _ > -> +> binary-literal-characters {#binary-literal-characters} > > *二进制字面量字符组* → [*二进制字面量字符*](#binary-literal-character) [*二进制字面量字符组*](#binary-literal-characters)可选 > - +octal-literal {#octal-literal} > *八进制字面量* → **0o** [*八进字数字*](#octal-digit) [*八进制字符组*](#octal-literal-characters)可选 > -> +> octal-digit {#octal-digit} > > *八进字数字* → 数值 0 到 7 > -> +> octal-literal-character {#octal-literal-character} > > *八进制字符* → [*八进字数字*](#octal-digit) | _ > -> +> octal-literal-characters {#octal-literal-characters} > > *八进制字符组* → [*八进制字符*](#octal-literal-character) [*八进制字符组*](#octal-literal-characters)可选 > - +decimal-literal {#decimal-literal} > *十进制字面量* → [*十进制数字*](#decimal-digit) [*十进制字符组*](#decimal-literal-characters)可选 > -> +> decimal-digit {#decimal-digit} > > *十进制数字* → 数值 0 到 9 > -> +> decimal-digits {#decimal-digits} > > *十进制数字组* → [*十进制数字*](#decimal-digit) [*十进制数字组*](#decimal-digits)可选 > -> +> decimal-literal-character {#decimal-literal-character} > > *十进制字符* → [*十进制数字*](#decimal-digit) | _ > -> +> decimal-literal-characters {#decimal-literal-characters} > > *十进制字符组* → [*十进制字符*](#decimal-literal-character) [*十进制字符组*](#decimal-literal-characters)可选 > - +hexadecimal-literal {#hexadecimal-literal} > *十六进制字面量* → **0x** [*十六进制数字*](#hexadecimal-digit) [*十六进制字面量字符组*](#hexadecimal-literal-characters)可选 > -> +> hexadecimal-digit {#hexadecimal-digit} > > *十六进制数字* → 数值 0 到 9, 字母 a 到 f, 或 A 到 F > -> +> hexadecimal-literal-character {#hexadecimal-literal-character} > > *十六进制字符* → [*十六进制数字*](#hexadecimal-digit) | _ > -> +> hexadecimal-literal-characters {#hexadecimal-literal-characters} > > *十六进制字面量字符组* → [*十六进制字符*](#hexadecimal-literal-character) [*十六进制字面量字符组*](#hexadecimal-literal-characters)可选 > - -### 浮点数字面量 +### 浮点数字面量 {#floating_point_literals} *浮点数字面量(Floating-point literals)* 表示未指定精度浮点数的值。 @@ -289,42 +283,41 @@ true // 布尔值字面量 > 浮点数字面量语法 > - +floating-point-literal {#floating-point-literal} > *浮点数字面量* → [*十进制字面量*](#decimal-literal) [*十进制分数*](#decimal-fraction)可选 [*十进制指数*](#decimal-exponent)可选 > > *浮点数字面量* → [*十六进制字面量*](#hexadecimal-literal) [*十六进制分数*](#hexadecimal-fraction)可选 [*十六进制指数*](#hexadecimal-exponent) > - +decimal-fraction {#decimal-fraction} > *十进制分数* → **.** [*十进制字面量*](#decimal-literal) > -> +> decimal-exponent {#decimal-exponent} > > *十进制指数* → [*十进制指数 e*](#floating-point-e) [*正负号*](#sign)可选 [*十进制字面量*](#decimal-literal) > - +hexadecimal-fraction {#hexadecimal-fraction} > *十六进制分数* → **.** [*十六进制数字*](#hexadecimal-digit) [*十六进制字面量字符组*](#hexadecimal-literal-characters)可选 > -> +> hexadecimal-exponent {#hexadecimal-exponent} > > *十六进制指数* → [*十六进制指数 p*](#floating-point-p) [*正负号*](#sign)可选 [*十进制字面量*](#decimal-literal) > - +floating-point-e {#floating-point-e} > *十进制指数 e* → **e** | **E** > -> +> floating-point-p {#floating-point-p} > > *十六进制指数 p* → **p** | **P** > -> +> sign {#sign} > > *正负号* → **+** | **-** > - -### 字符串字面量 +### 字符串字面量 {#string_literals} 字符串字面量是被引号包括的一串字符组成。 单行字符串字面量被包在双引号中的一串字符组成,形式如下: @@ -385,48 +378,47 @@ let textB = "Hello world" > 字符串字面量语法 > - +string-literal {#string-literal} > *字符串字面量* → [*静态字符串字面量*](#static-string-literal) | [*插值字符串字面量*](#interpolated-string-literal) > - +static-string-literal {#static-string-literal} > *静态字符串字面量* → **"**[*引用文本*](#quoted-text)可选**"** > -> +> quoted-text {#quoted-text} > > *引用文本* → [*引用文本项*](#quoted-text-item) [*引用文本*](#quoted-text)可选 > -> +> quoted-text-item {#quoted-text-item} > > *引用文本项* → [*转义字符*](#escaped-character) > > *引用文本项* → 除了 **"**、**\\**、U+000A、U+000D 以外的所有 Unicode 字符 > - +interpolated-string-literal {#interpolated-string-literal} > *插值字符串字面量* → **"**[*插值文本*](#interpolated-text)可选**"** > -> +> interpolated-text {#interpolated-text} > > *插值文本* → [*插值文本项*](#interpolated-text-item) [*插值文本*](#interpolated-text)可选 > -> +> interpolated-text-item {#interpolated-text-item} > > *插值文本项* → **\\****(**[*表达式*](./04_Expressions.md)**)** | [*引用文本项*](#quoted-text-item) > - +escaped-character {#escaped-character} > *转义字符* → **\\****0** | **\\****\\** | **\t** | **\n** | **\r** | **\\"** | **\\'** > > *转义字符* → **\u {** [*unicode 标量数字*](#unicode-scalar-digits) **}** > -> +> unicode-scalar-digits {#unicode-scalar-digits} > > *unicode 标量数字* → 一到八位的十六进制数字 > - -## 运算符 +## 运算符 {#operators} Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基础运算符](../chapter2/02_Basic_Operators.md) 和 [高级运算符](../chapter2/26_Advanced_Operators.md) 中进行了阐述。这一小节将描述哪些字符能用于自定义运算符。 @@ -458,13 +450,13 @@ Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基 > 运算符语法 > - +operator {#operator} > *运算符* → [*头部运算符*](#operator-head) [*运算符字符组*](#operator-characters)可选 > > *运算符* → [*头部点运算符*](#dot-operator-head) [*点运算符字符组*](#dot-operator-characters)可选 > - +operator-head {#operator-head} > *头部运算符* → **/** | **=** | **-** | **+** | **!** | __*__ | **%** | **<** | **>** | **&** | **|** | **^** | **~** | **?** > > *头部运算符* → U+00A1–U+00A7 @@ -496,7 +488,7 @@ Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基 > *头部运算符* → U+3008–U+3030 > - +operator-character {#operator-character} > *运算符字符* → [*头部运算符*](#operator-head) > > *运算符字符* → U+0300–U+036F @@ -511,31 +503,31 @@ Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基 > > *运算符字符* → U+E0100–U+E01EF > -> +> operator-characters {#operator-characters} > > *运算符字符组* → [*运算符字符*](#operator-character) [*运算符字符组*](#operator-characters)可选 > - +dot-operator-head {#dot-operator-head} > *头部点运算符* → **..** > -> +> dot-operator-character {#dot-operator-character} > > *点运算符字符* → **.** | [*运算符字符*](#operator-character) > -> +> dot-operator-characters {#dot-operator-characters} > > *点运算符字符组* → [*点运算符字符*](#dot-operator-character) [*点运算符字符组*](#dot-operator-characters)可选 > - +binary-operator {#binary-operator} > *二元运算符* → [*运算符*](#operator) > -> +> prefix-operator {#prefix-operator} > > *前缀运算符* → [*运算符*](#operator) > -> +> postfix-operator {#postfix-operator} > > *后缀运算符* → [*运算符*](#operator) > diff --git a/source/chapter3/03_Types.md b/source/chapter3/03_Types.md index b5a139d9..0d96571f 100644 --- a/source/chapter3/03_Types.md +++ b/source/chapter3/03_Types.md @@ -27,7 +27,7 @@ Swift 语言存在两种类型:命名型类型和复合型类型。命名型 > 类型语法 > - +type {#type} > *类型* → [*数组类型*](#array-type) > > *类型* → [*字典类型*](#dictionary-type) @@ -53,7 +53,7 @@ Swift 语言存在两种类型:命名型类型和复合型类型。命名型 > *类型* → [*(类型)*](#type) > - +type_annotation {#type_annotation} ## 类型注解 类型注解显式地指定一个变量或表达式的值。类型注解始于冒号 `:` 终于类型,比如下面两个例子: @@ -69,11 +69,11 @@ func someFunction(a: Int) { /* ... */ } > 类型注解语法 > - +type-annotation {#type-annotation} > *类型注解* → **:** [*特性列表*](./07_Attributes.md#attributes)可选 **输入输出参数**可选 [*类型*](#type) > - +type_identifier {#type_identifier} ## 类型标识符 类型标识符引用命名型类型,还可引用命名型或复合型类型的别名。 @@ -95,14 +95,14 @@ var someValue: ExampleModule.MyType > 类型标识符语法 > - +type-identifier {#type-identifier} > *类型标识符* → [*类型名称*](#type-name) [*泛型参数子句*](08_Generic_Parameters_and_Arguments.md#generic_argument_clause)可选 | [*类型名称*](#type-name) [*泛型参数子句*](08_Generic_Parameters_and_Arguments.md#generic_argument_clause)可选 **.** [*类型标识符*](#type-identifier) > - +type-name {#type-name} > *类型名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > - +tuple_type {#tuple_type} ## 元组类型 元组类型是使用括号括起来的零个或多个类型,类型间用逗号隔开。 @@ -122,20 +122,20 @@ someTuple = (left: 5, right: 5) // 错误:命名类型不匹配 > 元组类型语法 > - +tuple-type {#tuple-type} > *元组类型* → **(** [*元组类型元素列表*](#tuple-type-element-list) 可选 **)** > - +tuple-type-element-list {#tuple-type-element-list} > *元组类型元素列表* → [*元组类型元素*](#tuple-type-element) | [*元组类型元素*](#tuple-type-element) **,** [*元组类型元素列表*](#tuple-type-element-list) > - +tuple-type-element {#tuple-type-element} > *元组类型元素* → [*元素名*](#element-name) [*类型注解*](#type-annotation) | [*类型*](#type) > - +element-name {#element-name} > *元素名* → [*标识符*](./02_Lexical_Structure.md#identifier) > - +function_type {#function_type} ## 函数类型 函数类型表示一个函数、方法或闭包的类型,它由参数类型和返回值类型组成,中间用箭头(`->`)隔开: @@ -190,7 +190,7 @@ var operation: (Int, Int) -> Int // 正确 函数类型若要抛出错误就必须使用 `throws` 关键字来标记,若要重抛错误则必须使用 `rethrows` 关键字来标记。`throws` 关键字是函数类型的一部分,非抛出函数是抛出函数函数的一个子类型。因此,在使用抛出函数的地方也可以使用不抛出函数。抛出和重抛函数的相关描述见章节 [抛出函数与方法](./06_Declarations.md#throwing_functions_and_methods) 和 [重抛函数与方法](./06_Declarations.md#rethrowing_functions_and_methods)。 - +Restrictions for Nonescaping Closures {#Restrictions for Nonescaping Closures} ### 对非逃逸闭包的限制 非逃逸闭包函数不能作为参数传递到另一个非逃逸闭包函数的参数。这样的限制可以让 Swift 在编译时就完成更多的内存访问冲突检查, 而不是在运行时。举个例子: @@ -219,27 +219,27 @@ func takesTwoFunctions(first: (Any) -> Void, second: (Any) -> Void) { > 函数类型语法 > - +function-type {#function-type} > *函数类型* → [*特性列表*](./07_Attributes.md#attributes)可选 [*函数类型子句*](#function-type-argument-clause) **throws**可选 **->** [*类型*](#type) > > *函数类型* → [*特性列表*](./07_Attributes.md#attributes)可选 [*函数类型子句*](#function-type-argument-clause) **rethrows­** **->** [*类型*](#type) > - +function-type-argument-clause {#function-type-argument-clause} > *函数类型子句* → (­)­ > > *函数类型子句* → ([*函数类型参数列表*](#function-type-argument-list)*...*­可选)­ > - +function-type-argument-list {#function-type-argument-list} > *函数类型参数列表* → [*函数类型参数*](function-type-argument) | [*函数类型参数*](function-type-argument), [*函数类型参数列表*](#function-type-argument-list) > - +function-type-argument {#function-type-argument} > *函数类型参数* → [*特性列表*](./07_Attributes.md#attributes)可选 **输入输出参数**可选 [*类型*](#type) | [*参数标签*](#argument-label) [*类型注解*](#type-annotation) > - +argument-label {#argument-label} > *参数标签* → [*标识符*](./02_Lexical_Structure.md#identifier) > - +array_type {#array_type} ## 数组类型 Swift 语言为标准库中定义的 `Array` 类型提供了如下语法糖: @@ -269,11 +269,11 @@ var array3D: [[[Int]]] = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]] > 数组类型语法 > - +array-type {#array-type} > *数组类型* → **[** [*类型*](#type) **]** > - +dictionary_type {#dictionary_type} ## 字典类型 Swift 语言为标准库中定义的 `Dictionary` 类型提供了如下语法糖: @@ -299,11 +299,11 @@ let someDictionary: Dictionary = ["Alex": 31, "Paul": 39] > 字典类型语法 > - +dictionary-type {#dictionary-type} > *字典类型* → **[** [*类型*](#type) **:** [*类型*](#type) **]** > - +optional_type {#optional_type} ## 可选类型 Swift 定义后缀 `?` 来作为标准库中的定义的命名型类型 `Optional` 的语法糖。换句话说,下面两个声明是等价的: @@ -332,11 +332,11 @@ optionalInteger! // 42 > 可选类型语法 > - +optional-type {#optional-type} > *可选类型* → [*类型*](#type) **?** > - +implicitly_unwrapped_optional_type {#implicitly_unwrapped_optional_type} ## 隐式解析可选类型 当可以被访问时,Swift 语言定义后缀 `!` 作为标准库中命名类型 `Optional` 的语法糖,来实现自动解包的功能。换句话说,下面两个声明等价: @@ -368,11 +368,11 @@ let implicitlyUnwrappedArray: [Int]! // 正确 > 隐式解析可选类型语法 > - +implicitly-unwrapped-optional-type {#implicitly-unwrapped-optional-type} > *隐式解析可选类型* → [*类型*](#type) **!** > - +protocol_composition_type {#protocol_composition_type} ## 协议合成类型 协议合成类型是一种符合协议列表中每个指定协议的类型。协议合成类型可能会用在类型注解和泛型参数中。 @@ -388,17 +388,17 @@ let implicitlyUnwrappedArray: [Int]! // 正确 > 协议合成类型语法 > - +protocol-composition-type {#protocol-composition-type} > *协议合成类型* → [*协议标识符*](#protocol-identifier) & [*协议合成延续*](#protocol-composition-continuation) > - +protocol-composition-continuation {#protocol-composition-continuation} > *协议合成延续* → [*协议标识符*](#protocol-identifier) | [*协议合成类型*](#protocol-composition-type) > - +protocol-identifier {#protocol-identifier} > *协议标识符* → [*类型标识符*](#type-identifier) > - +metatype_type {#metatype_type} ## 元类型 元类型是指类型的类型,包括类类型、结构体类型、枚举类型和协议类型。 @@ -445,11 +445,11 @@ let anotherInstance = metatype.init(string: "some string") > 元类型语法 > - +metatype-type {#metatype-type} > *元类型* → [*类型*](#type) **.** **Type** | [*类型*](#type) **.** **Protocol** > - +type_inheritance_clause {#type_inheritance_clause} ## 类型继承子句 类型继承子句被用来指定一个命名型类型继承自哪个类、采纳哪些协议。类型继承子句也用来指定一个类类型专属协议。类型继承子句开始于冒号 `:`,其后是所需要的类、类型标识符列表或两者都有。 @@ -462,16 +462,16 @@ let anotherInstance = metatype.init(string: "some string") > 类型继承子句语法 > - +type_inheritance_clause {#type_inheritance_clause} > *类型继承子句* → **:** [*类型继承列表*](#type-inheritance-list) > - +type-inheritance-list {#type-inheritance-list} > *类型继承列表* → [*类型标识符*](#type-identifier) | [*类型标识符*](#type-identifier) **,** [*类型继承列表*](#type-inheritance-list) > - +class-requirement {#class-requirement} - +type_inference {#type_inference} ## 类型推断 Swift 广泛使用类型推断,从而允许你省略代码中很多变量和表达式的类型或部分类型。比如,对于 `var x: Int = 0`,你可以完全省略类型而简写成 `var x = 0`,编译器会正确推断出 `x` 的类型 `Int`。类似的,当完整的类型可以从上下文推断出来时,你也可以省略类型的一部分。比如,如果你写了 `let dict: Dictionary = ["A" : 1]`,编译器能推断出 `dict` 的类型是 `Dictionary`。 diff --git a/source/chapter3/04_Expressions.md b/source/chapter3/04_Expressions.md index 35c3c58b..e80943a3 100644 --- a/source/chapter3/04_Expressions.md +++ b/source/chapter3/04_Expressions.md @@ -6,16 +6,14 @@ Swift 中存在四种表达式:前缀表达式,二元表达式,基本表 > 表达式语法 > - +expression {#expression} > *表达式* → [*try 运算符*](#try-operator)可选 [*前缀表达式*](#prefix-expression) [*二元表达式列表*](#binary-expressions)可选 > - +expression-list {#expression-list} > *表达式列表* → [*表达式*](#expression) | [*表达式*](#expression) **,** [*表达式列表*](#expression-list) > - -## 前缀表达式 - +## 前缀表达式 {#prefix_expressions} 前缀表达式由可选的前缀运算符和表达式组成。前缀运算符只接收一个参数,表达式则紧随其后。 关于这些运算符的更多信息,请参阅 [基本运算符](../chapter2/02_Basic_Operators.md) 和 [高级运算符](../chapter2/26_Advanced_Operators.md)。 @@ -26,18 +24,16 @@ Swift 中存在四种表达式:前缀表达式,二元表达式,基本表 > 前缀表达式语法 > - +prefix-expression {#prefix-expression} > *前缀表达式* → [*前缀运算符*](./02_Lexical_Structure.md#prefix-operator)可选 [*后缀表达式*](#postfix-expression) > > *前缀表达式* → [*输入输出表达式*](#in-out-expression) > - +in-out-expression {#in-out-expression} > *输入输出表达式* → **&** [*标识符*](./02_Lexical_Structure.md#identifier) > - -### Try 运算符 - +### Try 运算符 {#try_operator} try 表达式由 `try` 运算符加上紧随其后的可抛出错误的表达式组成,形式如下: > try `可抛出错误的表达式` @@ -70,13 +66,11 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try 关于 `try`、`try?` 和 `try!` 的更多信息,以及该如何使用的例子,请参阅 [错误处理](../chapter2/17_Error_Handling.md)。 > Try 表达式语法 > - +try-operator {#try-operator} > *try 运算符* → **try** | **try?** | **try!** > - -## 二元表达式 - +## 二元表达式 {#binary_expressions} *二元表达式*由中缀运算符和左右参数表达式组成。形式如下: > `左侧参数` `二元运算符` `右侧参数` @@ -91,7 +85,7 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try > 在解析时,一个二元表达式将作为一个扁平列表表示,然后根据运算符的优先级,再进一步进行组合。例如,`2 + 3 * 5` 首先被看作具有五个元素的列表,即 `2`、`+`、`3`、`*`、`5`,随后根据运算符优先级组合为 `(2 + (3 * 5))`。 > - +binary-expression {#binary-expression} > 二元表达式语法 > > *二元表达式* → [*二元运算符*](./02_Lexical_Structure.md#binary-operator) [*前缀表达式*](#prefix-expression) @@ -102,13 +96,11 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try > > *二元表达式* → [*类型转换运算符*](#type-casting-operator) > - +binary-expressions {#binary-expressions} > *二元表达式列表* → [*二元表达式*](#binary-expression) [*二元表达式列表*](#binary-expressions)可选 > - -### 赋值表达式 - +### 赋值表达式 {#assignment_operator} 赋值表达式会为某个给定的表达式赋值,形式如下; > `表达式` = `值` @@ -125,13 +117,11 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try > 赋值运算符语法 > - +assignment-operator {#assignment-operator} > *赋值运算符* → **=** > - -### 三元条件运算符 - +### 三元条件运算符 {#ternary_conditional_operator} *三元条件运算符*会根据条件来对两个给定表达式中的一个进行求值,形式如下: > `条件` ? `表达式(条件为真则使用)` : `表达式(条件为假则使用)` @@ -143,13 +133,11 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try > 三元条件运算符语法 > - +conditional-operator {#conditional-operator} > *三元条件运算符* → **?** [*表达式*](#expression) **:** > - -### 类型转换运算符 - +### 类型转换运算符 {#type-casting_operators} 有 4 种类型转换运算符:`is`、`as`、`as? ` 和 `as!`。它们有如下的形式: > `表达式` is `类型` @@ -188,7 +176,7 @@ f(x as Any) 关于类型转换的更多内容和例子,请参阅 [类型转换](../chapter2/18_Type_Casting.md)。 - +type-casting-operator {#type-casting-operator} > 类型转换运算符语法 > > *类型转换运算符* → **is** [*类型*](./03_Types.md#type) @@ -200,14 +188,12 @@ f(x as Any) > *类型转换运算符* → **as** **!** [*类型*](./03_Types.md#type) > - -## 基本表达式 - +## 基本表达式 {#primary_expressions} *基本表达式*是最基本的表达式。它们可以单独使用,也可以跟前缀表达式、二元表达式、后缀表达式组合使用。 > 基本表达式语法 > - +primary-expression {#primary-expression} > *基本表达式* → [*标识符*](./02_Lexical_Structure.md#identifier) [*泛型实参子句*](./09_Generic_Parameters_and_Arguments.md#generic-argument-clause)可选 > > *基本表达式* → [*字面量表达式*](#literal-expression) @@ -229,9 +215,7 @@ f(x as Any) > *基本表达式* → [*key-path字符串表达式*](#key-patch-string-expression) > - -### 字面量表达式 - +### 字面量表达式 {#literal_expression} *字面量表达式*可由普通字面量(例如字符串或者数字),字典或者数组字面量,或者下面列表中的特殊字面量组成: 字面量 | 类型 | 值 @@ -285,7 +269,7 @@ Xcode 使用 playground 字面量对程序编辑器中的颜色、文件或者 > 字面量表达式语法 > > -> +> literal-expression {#literal-expression} > > *字面量表达式* → [*字面量*](./02_Lexical_Structure.md#literal) > @@ -295,38 +279,38 @@ Xcode 使用 playground 字面量对程序编辑器中的颜色、文件或者 > -> +> array-literal {#array-literal} > > *数组字面量* → [[*数组字面量项列表*](#array-literal-items)可选 **]** > -> +> array-literal-items {#array-literal-items} > > *数组字面量项列表* → [*数组字面量项*](#array-literal-item) **,**可选 | [*数组字面量项*](#array-literal-item) **,** [*数组字面量项列表*](#array-literal-items) > -> +> array-literal-item {#array-literal-item} > > *数组字面量项* → [*表达式*](#expression) > > -> +> dictionary-literal {#dictionary-literal} > > *字典字面量* → [[*字典字面量项列表*](#dictionary-literal-items) **]** | **[** **:** **]** > -> +> dictionary-literal-items {#dictionary-literal-items} > > *字典字面量项列表* → [*字典字面量项*](#dictionary-literal-item) **,**可选 | [*字典字面量项*](#dictionary-literal-item) **,** [*字典字面量项列表*](#dictionary-literal-items) > -> +> dictionary-literal-item {#dictionary-literal-item} > > *字典字面量项* → [*表达式*](#expression) **:** [*表达式*](#expression)。 > -> +> playground-literal {#playground-literal} > > *playground 字面量* → **#colorLiteral ( red : [*表达式*](#expression) , green :[*表达式*](#expression) [*表达式*](#e[*表达式*](#expression) xpression) , blue :[*表达式*](#expression) , alpha : [*表达式*](#expression) )** > > *playground 字面量* → **#fileLiteral ( resourceName : [*表达式*](#expression) )** > -> playground 字面量* → **#imageLiteral ( resourceName : [*表达式*](#expression) )** +> playground 字面量* → **#imageLiteral ( resourceName : [*表达式*](#expression) )**self_expression {#self_expression} > ### Self 表达式 @@ -370,23 +354,21 @@ struct Point { > Self 表达式语法 > - +self-expression {#self-expression} > *self 表达式* → **self** | [*self 方法表达式*](#self-method-expression) | [*self 下标表达式*](#self-subscript-expression) | [*self 构造器表达式*](#self-initializer-expression) > > - +self-method-expression {#self-method-expression} > *self 方法表达式* → **self** **.** [*标识符*](./02_Lexical_Structure.md#identifier) > - +self-subscript-expression {#self-subscript-expression} > *self 下标表达式* → **self** **[** [*函数调用参数表*](#function-call-argument-list­) **]** > - +self-initializer-expression {#self-initializer-expression} > *self 构造器表达式* → **self** **.** **init** > - -### 父类表达式 - +### 父类表达式 {#superclass_expression} *父类*表达式可以使我们在某个类中访问它的父类,它有如下形式: > super.`成员名称` @@ -402,22 +384,20 @@ struct Point { > 父类表达式语法 > - +superclass-expression {#superclass-expression} > *父类表达式* → [*父类方法表达式*](#superclass-method-expression) | [*父类下标表达式*](#superclass-subscript-expression) | [*父类构造器表达式*](#superclass-initializer-expression) > - +superclass-method-expression {#superclass-method-expression} > *父类方法表达式* → **super** **.** [*标识符*](./02_Lexical_Structure.md#identifier) > - +superclass-subscript-expression {#superclass-subscript-expression} > *父类下标表达式* → **super** [[*函数调用参数表*](#function-call-argument-list­) **]** > - +superclass-initializer-expression {#superclass-initializer-expression} > *父类构造器表达式* → **super** **.** **init** > - -### 闭包表达式 - +### 闭包表达式 {#closure_expression} *闭包表达式*会创建一个闭包,在其他语言中也叫 *lambda* 或*匿名*函数。跟函数一样,闭包包含了待执行的代码,不同的是闭包还会捕获所在环境中的常量和变量。它的形式如下: ```swift @@ -460,10 +440,7 @@ myFunction { $0 + $1 } 关于逃逸闭包的内容,请参阅[逃逸闭包](./chapter2/07_Closures.md#escaping_closures) - - -## 捕获列表 - +## 捕获列表 {#capture-lists} 默认情况下,闭包会捕获附近作用域中的常量和变量,并使用强引用指向它们。你可以通过一个*捕获列表*来显式指定它的捕获行为。 捕获列表在参数列表之前,由中括号括起来,里面是由逗号分隔的一系列表达式。一旦使用了捕获列表,就必须使用 `in` 关键字,即使省略了参数名、参数类型和返回类型。 @@ -524,12 +501,12 @@ myFunction { [weak parent = self.parent] in print(parent!.title) } > 闭包表达式语法 > > -> +> closure-expression {#closure-expression} > > *闭包表达式* → **{** [*闭包签名*](#closure-signature)可选 [*语句*](#statements) **}** > > -> +> closure-signature {#closure-signature} > > > 闭包签名* → [*参数子句*](#parameter-clause) [*函数结果*](05_Declarations.md#function-result)可选 **in** @@ -543,27 +520,25 @@ myFunction { [weak parent = self.parent] in print(parent!.title) } > *闭包签名* → [*捕获列表*](#capture-list) **in** > > -> +> capture-list {#capture-list} > > > 捕获列表* → [ [*捕获列表项列表*](#capture-list-items) **]** > -> +> capture-list-items {#capture-list-items} > > *捕获列表项列表* → [*捕获列表项*](#capture-list-item) | [*捕获列表项*](#capture-list-item) **,** [*捕获列表项列表*](#capture-list-items) > -> +> capture-list-item {#capture-list-item} > > *捕获列表项* → [*捕获说明符*](#capture-specifier)可选 [*表达式*](#expression) > -> +> capture-specifier {#capture-specifier} > > *捕获说明符* → **weak** | **unowned** | **unowned(safe)** | **unowned(unsafe)** > - -### 隐式成员表达式 - +### 隐式成员表达式 {#implicit_member_expression} 若类型可被推断出来,可以使用*隐式成员表达式*来访问某个类型的成员(例如某个枚举成员或某个类型方法),形式如下: > .`成员名称` @@ -578,24 +553,20 @@ x = .AnotherValue > 隐式成员表达式语法 > - +implicit-member-expression {#implicit-member-expression} > *隐式成员表达式* → **.** [*标识符*](./02_Lexical_Structure.md#identifier) > - -### 圆括号表达式 - +### 圆括号表达式 {#parenthesized_expression} *圆括号表达式*是由圆括号包围的表达式。你可以用圆括号说明成组的表达式的先后操作。成组的圆括号不会改变表达式的类型 - 例如 `(1)` 的类型就是简单的 `Int`。 > 圆括号表达式语法 > - +parenthesized-expression {#parenthesized-expression} > *圆括号表达式* → **( [*表达式*](#expression) )** > - -### 元组表达式 - +### 元组表达式 {#Tuple_Expression} *元组表达式*由圆括号和其中多个逗号分隔的子表达式组成。每个子表达式前面可以有一个标识符,用冒号隔开。元组表达式形式如下: > (`标识符 1` : `表达式 1`, `标识符 2` : `表达式 2`, `...`) @@ -612,20 +583,17 @@ x = .AnotherValue > 元组表达式语法 > - +tuple-expression {#tuple-expression} > *元组表达式* → **( )** | **(**[*元组元素*](#tuple-element), [*元组元素列表*](#tuple-element-list) **)** > - +tuple-element-list {#tuple-element-list} > *元组元素列表* → [*元组元素*](#tuple-element) | [*元组元素*](#tuple-element) **,** [*元组元素列表*](#tuple-element-list) > - +tuple-element {#tuple-element} > *元组元素* → [*表达式*](#expression) | [*标识符*](identifier) **:** [*表达式*](#expression) > - - -### 通配符表达式 - +### 通配符表达式 {#wildcard_expression} *通配符表达式*可以在赋值过程中显式忽略某个值。例如下面的代码中,`10` 被赋值给 `x`,而 `20` 则被忽略: ```swift @@ -635,14 +603,12 @@ x = .AnotherValue > 通配符表达式语法 > - +wildcard-expression {#wildcard-expression} > *通配符表达式* → **_** > - -### Key-path 表达式 - +### Key-path 表达式 {#key-path_expression} Key-path 表达式引用一个类型的属性或下标。在动态语言中使场景可以使用 Key-path 表达式,例如观察键值对。格式为: > **\类型名.路径** @@ -774,31 +740,28 @@ print(interestingNumbers[keyPath: \[String: [Int]].["hexagonal"]!.count.bitWidth > key-path 表达式语法 > > -> +> key-path-expression {#key-path-expression} > > *key-path 表达式* → **\\** [类型](./03_Types.md#type)可选 **.** [多个 key-path 组件](#key-path-components) > -> +> key-path-components {#key-path-components} > > *多个 key-path 组件* → [key-path 组件](#key-path-component) | [key-path 组件](#key-path-component) **.** [多个 key-path 组件](#key-path-components) > -> +> key-path-component {#key-path-component} > > *key-path 组件* → [标识符](./02_Lexical_Structure.md#identifier) [多个 key-path 后缀](#key-path-postfixes)可选 | [多个 key-path 后缀](#key-path-postfixes) > -> +> key-path-postfixes {#key-path-postfixes} > -> *多个 key-path 后缀* → [key-path 后缀](#key-path-postfix) [多个 key-path 后缀](#key-path-postfixes)可选 +> *多个 key-path 后缀* → [key-path 后缀](#key-path-postfix) [多个 key-path 后缀](#key-path-postfixes)可选 key-path-postfixes {#key-path-postfixes} > > *key-path 后缀* → **?** | **!** | **self** | **\[** [函数调用参数表](#function-call-argument-list) **\]** > - - -### 选择器表达式 - +### 选择器表达式 {#selector_expression} *选择器表达式*可以让你通过选择器来引用在 Objective-C 中方法(method)和属性(property)的 setter 和 getter 方法。 > \#selector(方法名) @@ -846,7 +809,7 @@ let anotherSelector = #selector(SomeClass.doSomething(_:) as (SomeClass) -> (Str > 选择器表达式语法 > - +selector-expression {#selector-expression} > *选择器表达式* → __#selector__ **(** [*表达式*](#expression) **)** > > *选择器表达式* → __#selector__ **(** [*getter:表达式*](#expression) **)** @@ -854,10 +817,7 @@ let anotherSelector = #selector(SomeClass.doSomething(_:) as (SomeClass) -> (Str > *选择器表达式* → __#selector__ **(** [*setter:表达式*](#expression) **)** > - - -## Key-path 字符串表达式 - +## Key-path 字符串表达式 {#key-path_string_expressions} key-path 字符串表达式可以访问一个引用 Objective-C 属性的字符串,通常在 key-value 编程和 key-value 观察 APIs 中使用。其格式如下: > `#keyPath` ( `属性名` ) @@ -907,15 +867,12 @@ print(keyPath == c.getSomeKeyPath()) > key-path 字符串表达式语法 > -> +> key-path-string-expression {#key-path-string-expression} > > *key-path 字符串表达式* → **#keyPath (** [表达式](#expression) **)** > - - -## 后缀表达式 - +## 后缀表达式 {#postfix_expressions} *后缀表达式*就是在某个表达式的后面运用后缀运算符或其他后缀语法。从语法构成上来看,基本表达式也是后缀表达式。 关于这些运算符的更多信息,请参阅 [基本运算符](../chapter2/02_Basic_Operators.md) 和 [高级运算符](../chapter2/26_Advanced_Operators.md)。 @@ -924,7 +881,7 @@ print(keyPath == c.getSomeKeyPath()) > 后缀表达式语法 > - +postfix-expression {#postfix-expression} > *后缀表达式* → [*基本表达式*](#primary-expression) > > *后缀表达式* → [*后缀表达式*](#postfix-expression) [*后缀运算符*](02_Lexical_Structure.md#postfix-operator) @@ -946,9 +903,7 @@ print(keyPath == c.getSomeKeyPath()) > *后缀表达式* → [*可选链表达式*](#optional-chaining-expression) > - -### 函数调用表达式 - +### 函数调用表达式 {#function_call_expression} *函数调用表达式*由函数名和参数列表组成,形式如下: > `函数名`(`参数 1`, `参数 2`) @@ -979,36 +934,34 @@ myData.someMethod {$0 == 13} > 函数调用表达式语法 > -> +> function-call-expression {#function-call-expression} > > *函数调用表达式* → [*后缀表达式*](#postfix-expression) [*函数调用参数子句*](#function-call-argument-clause) > > *函数调用表达式* → [*后缀表达式*](#postfix-expression) [*函数调用参数子句*](#function-call-argument-clause)可选 [*尾随闭包*](#trailing-closure) > > -> +> function-call-argument-clause {#function-call-argument-clause} > > *函数调用参数子句* → **(** **)** | **(** [*函数调用参数表*](#function-call-argument-list) **)** > -> +> function-call-argument-list {#function-call-argument-list} > > *函数调用参数表* → [函数调用参数](#function-call-argument) | [函数调用参数](#function-call-argument) **,** [*函数调用参数表*](#function-call-argument-list) > -> +> function-call-argument {#function-call-argument} > > *函数调用参数* → [表达式](#expression) | [标识符](02_Lexical_Structure.md#identifier) **:** [*表达式*](#expression) > > *函数调用参数* → [运算符](./02_Lexical_Structure.md#operator) | [标识符](./02_Lexical_Structure.md#identifier) **:** [*运算符*](./02_Lexical_Structure.md#operator) > > -> +> trailing-closure {#trailing-closure} > > *尾随闭包* → [*闭包表达式*](#closure-expression) > - -### 构造器表达式 - +### 构造器表达式 {#initializer_expression} *构造器表达式*用于访问某个类型的构造器,形式如下: > `表达式`.init(`构造器参数`) @@ -1048,15 +1001,13 @@ let s3 = someValue.dynamicType.init(data: 7) // 有效 > 构造器表达式语法 > - +initializer-expression {#initializer-expression} > *构造器表达式* → [*后缀表达式*](#postfix-expression) **.** **init** > > *构造器表达式* → [*后缀表达式*](#postfix-expression) **.** **init** **(** [*参数名称*](#argument-names) **)** > - -### 显式成员表达式 - +### 显式成员表达式 {#explicit_member_expression} *显式成员表达式*允许我们访问命名类型、元组或者模块的成员,其形式如下: > `表达式`.`成员名` @@ -1116,23 +1067,21 @@ let x = [10, 3, 20, 15, 4] > 显式成员表达式语法 > - +explicit-member-expression {#explicit-member-expression} > *显式成员表达式* → [*后缀表达式*](#postfix-expression) **.** [*十进制数字*] (02_Lexical_Structure.md#decimal-digit) > > *显式成员表达式* → [*后缀表达式*](#postfix-expression) **.** [*标识符*](02_Lexical_Structure.md#identifier) [*泛型实参子句*](./09_Generic_Parameters_and_Arguments.md#generic-argument-clause)可选
> > *显式成员表达式* → [*后缀表达式*](#postfix-expression) **.** [*标识符*] (02_Lexical_Structure.md#identifier) **(** [*参数名称*](#argument-names) **)** > - +argument-names {#argument-names} > *参数名称* → [*参数名*](#argument-name) [*参数名称*](#argument-names)可选
> - +argument-name {#argument-name} > *参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) **:** > - -### 后缀 self 表达式 - +### 后缀 self 表达式 {#postfix_self_expression} 后缀 `self` 表达式由某个表达式或类型名紧跟 `.self` 组成,其形式如下: > `表达式`.self @@ -1146,14 +1095,12 @@ let x = [10, 3, 20, 15, 4] > 后缀 self 表达式语法 > - +postfix-self-expression {#postfix-self-expression} > *后缀 self 表达式* → [*后缀表达式*](#postfix-expression) **.** **self** > - -### 下标表达式 - +### 下标表达式 {#subscript_expression} 可通过*下标表达式*访问相应的下标,形式如下: > `表达式`[`索引表达式`] @@ -1165,13 +1112,11 @@ let x = [10, 3, 20, 15, 4] > 下标表达式语法 > - +subscript-expression {#subscript-expression} > *下标表达式* → [*后缀表达式*](#postfix-expression) **[** [*表达式列表*](#expression-list) **]** > - -### 强制取值表达式 - +### 强制取值表达式 {#forced-Value_expression} 当你确定可选值不是 `nil` 时,可以使用*强制取值表达式*来强制解包,形式如下: > `表达式`! @@ -1193,13 +1138,11 @@ someDictionary["a"]![0] = 100 > 强制取值语法 > - +forced-value-expression {#forced-value-expression} > *强制取值表达式* → [*后缀表达式*](#postfix-expression) **!** > - -### 可选链表达式 - +### 可选链表达式 {#optional-chaining_expression} *可选链表达式*提供了一种使用可选值的便捷方法,形式如下: > `表达式`? @@ -1247,6 +1190,6 @@ someDictionary["a"]?[0] = someFunctionWithSideEffects() > 可选链表达式语法 > - +optional-chaining-expression {#optional-chaining-expression} > *可选链表达式* → [*后缀表达式*](#postfix-expression) **?** > diff --git a/source/chapter3/05_Statements.md b/source/chapter3/05_Statements.md index 97d91deb..59b0b262 100755 --- a/source/chapter3/05_Statements.md +++ b/source/chapter3/05_Statements.md @@ -1,6 +1,4 @@ - -# 语句(Statements) - +# 语句(Statements) {#statement_statements} 在 Swift 中,有三种类型的语句:简单语句、编译器控制语句和控制流语句。简单语句是最常见的,用于构造表达式或者声明。编译器控制语句允许程序改变编译器的行为,包含编译配置语句和行控制语句。 控制流语句则用于控制程序执行的流程,Swift 中有多种类型的控制流语句:循环语句、分支语句和控制转移语句。循环语句用于重复执行代码块;分支语句用于执行满足特定条件的代码块;控制转移语句则用于改变代码的执行顺序。另外,Swift 提供了 `do` 语句,用于构建局部作用域,还用于错误的捕获和处理;还提供了 `defer` 语句,用于退出当前作用域之前执行清理操作。 @@ -9,7 +7,7 @@ > 语句语法 > - +statement {#statement} > *语句* → [*表达式*](./04_Expressions.md#expression) **;**可选 > > *语句* → [*声明*](./06_Declarations.md#declaration) **;**可选 @@ -28,13 +26,11 @@ > > *语句* → [*编译器控制语句*](#compiler-control-statement) > - +statements {#statements} > *多条语句* → [*语句*](#statement) [*多条语句*](#statements)可选 > - -## 循环语句 - +## 循环语句 {#loop_statements} 循环语句会根据特定的循环条件来重复执行代码块。Swift 提供三种类型的循环语句:`for-in` 语句、`while` 语句和 `repeat-while` 语句。 通过 `break` 语句和 `continue` 语句可以改变循环语句的控制流。有关这两条语句,详情参见 [Break 语句](#break_statement) 和 [Continue 语句](#continue_statement)。 @@ -42,7 +38,7 @@ > 循环语句语法 > > - +loop-statement {#loop-statement} > *循环语句* → [*for-in 语句*](#for-in-statement) > > *循环语句* → [*while 语句*](#while-statement) @@ -50,9 +46,7 @@ > *循环语句* → [*repeat-while 语句*](#repeat-while-statement) > - -### For-In 语句 - +### For-In 语句 {#for-in_statements} `for-in` 语句会为集合(或实现了 `SequenceType` 协议的任意类型)中的每一项执行一次代码块。 `for-in` 语句的形式如下: @@ -68,13 +62,11 @@ for item in collection { > for-in 语句语法 > > - +for-in-statement {#for-in-statement} > *for-in 语句* → **for** **case**可选 [*模式*](./08_Patterns.md#pattern) **in** [*表达式*](./04_Expressions.md#expression) [*where 子句*](#where-clause)可选 [*代码块*](05_Declarations.md#code-block) > - -### While 语句 - +### While 语句 {#while_statements} 只要循环条件为真,`while` 语句就会重复执行代码块。 `while` 语句的形式如下: @@ -97,27 +89,25 @@ while condition { > while 语句语法 > > - +while-statement {#while-statement} > *while 语句* → **while** [*条件子句*](#condition-clause) [*代码块*](05_Declarations.md#code-block) > - +condition-clause {#condition-clause} > *条件子句* → [*表达式*](./04_Expressions.md#expression) | [*表达式*](./04_Expressions.md#expression) **,** [*条件列表*](#condition-list) > - +condition {#condition} > *条件* → [*表达式*](./04_Expressions.md#expression) |[*可用性条件*](#availability-condition) | [*case 条件*](#case-condition) | [*可选绑定条件*](#optional-binding-condition) > > - +case-condition {#case-condition} > *case 条件* → **case** [*模式*](./08_Patterns.md#pattern) [*构造器*](./06_Declarations.md#initializer) > - +optional-binding-condition {#optional-binding-condition} > *可选绑定条件* → **let** [*模式*](./08_Patterns.md#pattern) [*构造器*](./06_Declarations.md#initializer) | **var** [*模式*](./08_Patterns.md#pattern) [*构造器*](./06_Declarations.md#initializer) > - -### Repeat-While 语句 - +### Repeat-While 语句 {#repeat-while_statements} `repeat-while` 语句至少执行一次代码块,之后只要循环条件为真,就会重复执行代码块。 `repeat-while` 语句的形式如下: @@ -140,13 +130,11 @@ repeat { > repeat-while 语句语法 > > - +repeat-while-statement {#repeat-while-statement} > *repeat-while 语句* → **repeat** [*代码块*](./06_Declarations.md#code-block) **while** [*表达式*](./04_Expressions.md#expression) > - -## 分支语句 - +## 分支语句 {#branch_statements} 分支语句会根据一个或者多个条件来执行指定部分的代码。分支语句中的条件将会决定程序如何分支以及执行哪部分代码。Swift 提供三种类型的分支语句:`if` 语句、 `guard` 语句和 `switch` 语句。 `if` 语句和 `switch` 语句中的控制流可以用 `break` 语句改变,请参阅 [Break 语句](#break_statement)。 @@ -154,7 +142,7 @@ repeat { > 分支语句语法 > > - +branch-statement {#branch-statement} > *分支语句* → [*if 语句*](#if-statement) > > *分支语句* → [*guard 语句*](#guard-statement) @@ -162,9 +150,7 @@ repeat { > *分支语句* → [*switch 语句*](#switch-statement) > - -### If 语句 - +### If 语句 {#if_statements} `if` 语句会根据一个或多个条件来决定执行哪一块代码。 `if` 语句有两种基本形式,无论哪种形式,都必须有花括号。 @@ -204,16 +190,14 @@ if condition 1 { > if 语句语法 > > - +if-statement {#if-statement} > *if 语句* → **if** [*条件子句*](#condition-clause) [*代码块*](05_Declarations.md#code-block) [*else 子句*](#else-clause)可选 > - +else-clause {#else-clause} > *else 子句* → **else** [*代码块*](./06_Declarations.md#code-block) | **else** [*if 语句*](#if-statement) > - -### Guard 语句 - +### Guard 语句 {#guard_statements} 如果一个或者多个条件不成立,可用 `guard` 语句来退出当前作用域。 `guard` 语句的格式如下: @@ -240,13 +224,11 @@ guard condition else { > guard 语句语法 > > - +guard-statement {#guard-statement} > *guard 语句* → **guard** [*条件子句*](#condition-clause) **else** [*代码块*] (05_Declarations.md#code-block) > - -### Switch 语句 - +### Switch 语句 {#switch_statements} `switch` 语句会根据控制表达式的值来决定执行哪部分代码。 `switch` 语句的形式如下: @@ -285,9 +267,7 @@ case let (x, y) where x == y: 在 Swift 中,`switch` 语句中控制表达式的每一个可能的值都必须至少有一个 `case` 与之对应。在某些无法面面俱到的情况下(例如,表达式的类型是 `Int`),你可以使用 `default` 分支满足该要求。 - -#### 对未来枚举的 `case` 进行 `switch` - +#### 对未来枚举的 `case` 进行 `switch` {#future-case} 非冻结枚举(`nonfronzen enumeration`)是一种特殊的枚举类型,它可能在未来会增加新的枚举 `case`,即使这时候你已经编译并且发布了你的应用,所以在 switch 非冻结枚举前需要深思熟虑。当一个库的作者们把一个枚举标记为非冻结的,这意味着他们保留了增加新的枚举 `case` 的权利,并且任何和这个枚举交互的代码都要在不需要重新编译的条件下能够处理那些未来可能新加入的 `case` 。只有那些标准库,比如用 Swift 实现的苹果的一些框架,C 以及 Objective-C 代码才能够声明非冻结枚举。你在 Swift 中声明的枚举不能是非冻结的。 当你对未来枚举进行 switch 时,你总是需要有一个 `default case`,即使每种枚举类型都已经有对应的 `case` 了。你可以在 default 前标注 `@unknown` ,意思是这个 `case` 应该只匹配未来加入的枚举 `case` 。如果你的 `default case` 中匹配了任何在编译时就能确定的枚举 `case` ,Swift 会抛出一个警告。这可以很好地提醒你库的作者已经新增了一种 `case` ,并且你还没有去处理。 @@ -316,52 +296,50 @@ case .suppressed: > switch 语句语法 > > - +switch-statement {#switch-statement} > *switch 语句* → **switch** [*表达式*](./04_Expressions.md#expression) **{** [*switch-case 列表*](#switch-cases)可选 **}** > - +switch-cases {#switch-cases} > *switch case 列表* → [*switch-case*](#switch-case) [*switch-case 列表*](#switch-cases)可选 > - +switch-case {#switch-case} > *switch case* → [*case 标签*](#case-label) [*多条语句*](#statements) | [*default 标签*](#default-label) [*多条语句*](#statements) | [*conditional-switch-case*](#conditional-switch-case-label) > - +case-label {#case-label} > *case 标签* → [*属性*](#switch-case-attributes-label)可选 **case** [*case 项列表*](#case-item-list) **:** > - +case-item-list {#case-item-list} > *case 项列表* → [*模式*](./08_Patterns.md#pattern) [*where 子句*](#where-clause)可选 | [*模式*](07_Patterns.md#pattern) [*where 子句*](#where-clause)可选 **,** [*case 项列表*](#case-item-list) > - +default-label {#default-label} > *default 标签* → [*属性*](#switch-case-attributes-label)可选 **default** **:** > > - +where-clause {#where-clause} > *where-clause* → **where** [*where 表达式*](#where-expression) > - +where-expression {#where-expression} > *where-expression* → [*表达式*](./04_Expressions.md#expression) > > - +grammar_conditional-switch-case {#grammar_conditional-switch-case} > *conditional-switch-case* → [*switch-if-directive-clause*](#switch-case-attributes-label) [*switch-elseif-directive-clauses*](#switch-case-attributes-label) 可选 [*switch-else-directive-clause*](#switch-case-attributes-label) 可选 [*endif-directive*](#switch-case-attributes-label) > - +grammar_switch-if-directive-clause {#grammar_switch-if-directive-clause} > *switch-if-directive 语句* → [*if-directive*](#switch-case-attributes-label) [*compilation-condition*](#switch-case-attributes-label) [*switch-cases*](#switch-case-attributes-label) 可选 > - +grammar_switch-elseif-directive-clauses {#grammar_switch-elseif-directive-clauses} > *switch-elseif-directive 语句(复数)* → [*elseif-directive-clause*](#switch-case-attributes-label) [*switch-elseif-directive-clauses*](#switch-case-attributes-label)可选 > - +grammar_switch-elseif-directive-clause {#grammar_switch-elseif-directive-clause} > *switch-elseif-directive 语句* → [*elseif-directive*](#switch-case-attributes-label) [*compilation-condition*](#switch-case-attributes-label) [*switch-cases*](#switch-case-attributes-label)可选 > - +grammar_switch-else-directive-clause {#grammar_switch-else-directive-clause} > *switch-else-directive 语句* → [*else-directive*](#switch-case-attributes-label) [*switch-cases*](#switch-case-attributes-label) 可选 > - -## 带标签的语句 - +## 带标签的语句 {#labeled_statements} 你可以在循环语句或 `switch` 语句前面加上标签,它由标签名和紧随其后的冒号(`:`)组成。在 `break` 和 `continue` 后面跟上标签名可以显式地在循环语句或 `switch` 语句中改变相应的控制流。关于这两条语句用法,请参阅 [Break 语句](#break_statement) 和 [Continue 语句](#continue_statement)。 标签的作用域在该标签所标记的语句内。可以嵌套使用带标签的语句,但标签名必须唯一。 @@ -371,7 +349,7 @@ case .suppressed: > 带标签的语句语法 > > - +labeled-statement {#labeled-statement} > *带标签的语句* → [*语句标签*](#statement-label) [*循环语句*](#grammar_loop-statement) > > *带标签的语句* → [*语句标签*](#statement-label) [*if 语句*](#if-statement) @@ -380,22 +358,20 @@ case .suppressed: > > > *带标签的语句* → [*语句标签*](#statement-label) [*do 语句*](#sdo-statement) > - +statement-label {#statement-label} > *语句标签* → [*标签名称*](#label-name) **:** > - +label-name {#label-name} > *标签名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > - -## 控制转移语句 - +## 控制转移语句 {#control_transfer_statements} 控制转移语句能够无条件地把控制权从一片代码转移到另一片代码,从而改变代码执行的顺序。Swift 提供五种类型的控制转移语句:`break` 语句、`continue` 语句、`fallthrough` 语句、`return` 语句和 `throw` 语句。 > 控制转移语句语法 > > - +control-transfer-statement {#control-transfer-statement} > *控制转移语句* → [*break 语句*](#break-statement) > > *控制转移语句* → [*continue 语句*](#continue-statement) @@ -407,9 +383,7 @@ case .suppressed: > *控制转移语句* → [*throw 语句*](#throw-statement) > - -### Break 语句 - +### Break 语句 {#break_statement} `break` 语句用于终止循环语句、`if` 语句或 `switch` 语句的执行。使用 `break` 语句时,可以只写 `break` 这个关键词,也可以在 `break` 后面跟上标签名,像下面这样: > break @@ -428,13 +402,11 @@ case .suppressed: > break 语句语法 > > - +break-statement {#break-statement} > *break 语句* → **break** [*标签名称*](#label-name)可选 > - -### Continue 语句 - +### Continue 语句 {#continue_statement} `continue` 语句用于终止循环中当前迭代的执行,但不会终止该循环的执行。使用 `continue` 语句时,可以只写 `continue` 这个关键词,也可以在 `continue` 后面跟上标签名,像下面这样: > continue @@ -455,13 +427,11 @@ case .suppressed: > continue 语句语法 > > - +continue-statement {#continue-statement} > *continue 语句* → **continue** [*标签名称*](#label-name)可选 > - -### Fallthrough 语句 - +### Fallthrough 语句 {#fallthrough_statements} `fallthrough` 语句用于在 `switch` 语句中转移控制权。`fallthrough` 语句会把控制权从 `switch` 语句中的一个 `case` 转移到下一个 `case`。这种控制权转移是无条件的,即使下一个 `case` 的模式与 `switch` 语句的控制表达式的值不匹配。 `fallthrough` 语句可出现在 `switch` 语句中的任意 `case` 中,但不能出现在最后一个 `case` 中。同时,`fallthrough` 语句也不能把控制权转移到使用了值绑定的 `case`。 @@ -471,13 +441,11 @@ case .suppressed: > fallthrough 语句语法 > > - +fallthrough-statement {#fallthrough-statement} > *fallthrough 语句* → **fallthrough** > - -### Return 语句 - +### Return 语句 {#return_statements} `return` 语句用于在函数或方法的实现中将控制权转移到调用函数或方法,接着程序将会从调用位置继续向下执行。 使用 `return` 语句时,可以只写 `return` 这个关键词,也可以在 `return` 后面跟上表达式,像下面这样: @@ -500,13 +468,11 @@ case .suppressed: > return 语句语法 > > - +return-statement {#return-statement} > *return 语句* → **return** [*表达式*](./04_Expressions.md#expression)可选 > - -### Throw 语句 - +### Throw 语句 {#throw_statements} `throw` 语句出现在抛出函数或者抛出方法体内,或者类型被 `throws` 关键字标记的闭包表达式体内。 `throw` 语句使程序在当前作用域结束执行,并向外围作用域传播错误。抛出的错误会一直传递,直到被 `do` 语句的 `catch` 子句处理掉。 @@ -523,13 +489,11 @@ case .suppressed: > throw 语句语法 > > - +throw-statement {#throw-statement} > *throw 语句* → **throw** [*表达式*](./04_Expressions.md#expression) > - -## Defer 语句 - +## Defer 语句 {#defer_statements} `defer` 语句用于在退出当前作用域之前执行代码。 `defer` 语句形式如下: @@ -561,13 +525,11 @@ f() > defer 语句语法 > > - +defer-statement {#defer-statement} > *延迟语句* → **defer** [*代码块*](./06_Declarations.md#code-block) > - -## Do 语句 - +## Do 语句 {#do_statements} `do` 语句用于引入一个新的作用域,该作用域中可以含有一个或多个 `catch` 子句,`catch` 子句中定义了一些匹配错误条件的模式。`do` 语句作用域内定义的常量和变量只能在 `do` 语句作用域内使用。 Swift 中的 `do` 语句与 C 中限定代码块界限的大括号(`{}`)很相似,也并不会降低程序运行时的性能。 @@ -594,25 +556,23 @@ do { > do 语句语法 > > - +do-statement {#do-statement} > *do 语句* → **do** [*代码块*](./06_Declarations.md#code-block) [*多条 catch 子句*](#catch-clauses)可选 > - +catch-clauses {#catch-clauses} > *多条 catch 子句* → [*catch 子句*](#catch-clause) [*多条 catch 子句*](#catch-clauses)可选 > - +catch-clause {#catch-clause} > *catch 子句* → **catch** [*模式*](./08_Patterns.md#pattern)可选 [*where 子句*](#where-clause)可选 [*代码块*](05_Declarations.md#code-block) > - -## 编译器控制语句 - +## 编译器控制语句 {#compiler_control_statements} 编译器控制语句允许程序改变编译器的行为。Swift 有三种编译器控制语句:条件编译语句、线路控制语句和编译时诊断语句。 > 编译器控制语句语法 > > - +compiler-control-statement {#compiler-control-statement} > *编译器控制语句* → [*条件编译语句*](#grammar_conditional-compilation-block) > > *编译器控制语句* → [*线路控制语句*](#line-control-statement) @@ -620,9 +580,7 @@ do { > *编译器控制语句* → [*诊断语句*](#grammar_diagnostic-statement) > - -### 条件编译代码块 - +### 条件编译代码块 {#Conditional_Compilation_Block} 条件编译代码块可以根据一个或多个配置来有条件地编译代码。 每一个条件编译代码块都以 `#if` 开始,`#endif` 结束。如下: @@ -693,23 +651,23 @@ statements to compile if both compilation conditions are false > 即使没有被编译,编译配置中的语句仍然会被解析。然而,唯一的例外是编译配置语句中包含语言版本检测函数:仅当 `Swift` 编译器版本和语言版本检测函数中指定的版本号匹配时,语句才会被解析。这种设定能确保旧的编译器不会尝试去解析新 Swift 版本的语法。 > - +build-config-statement {#build-config-statement} > 条件编译代码块语法 > > - +grammar_conditional-compilation-block {#grammar_conditional-compilation-block} > *条件编译代码块* → [*if-directive 语句*](#grammar_if-directive-clause) [*elseif-directive 语句(复数)*](#grammar_elseif-directive-clauses)可选 [*else-directive 语句*](#grammar_else-directive-clause)可选 [*endif-directive*](#grammar_endif-directive) > - +grammar_if-directive-clause {#grammar_if-directive-clause} > *if-directive 语句* → [*if-directive*](#grammar_if-directive) [*编译条件*](#compilation-condition) [*语句(复数)*](#statements)可选 > - +grammar_elseif-directive-clauses {#grammar_elseif-directive-clauses} > *elseif-directive 语句(复数)* → [*elseif-directive 语句*](#grammar_elseif-directive-clause) [*elseif-directive 语句(复数)*](#grammar_elseif-directive-clauses) > - +grammar_elseif-directive-clauses {#grammar_elseif-directive-clauses} > *elseif-directive 语句* → [*elseif-directive*](#grammar_elseif-directive) [*编译条件*](#compilation-condition) [*语句(复数)*](#statements)可选 > - +grammar_else-directive-clause {#grammar_else-directive-clause} > *else-directive 语句* → [*else-directive*](#grammar_else-directive) [*语句(复数)*](#statements)可选 > @@ -723,7 +681,7 @@ statements to compile if both compilation conditions are false > *endif-directive* → **#endif** > - +compilation-condition {#compilation-condition} > *编译条件* → [*平台条件*](#grammar_platform-condition) > > *编译条件* → [*标识符*](./02_Lexical_Structure.md#identifier) @@ -739,47 +697,45 @@ statements to compile if both compilation conditions are false > *编译条件* → [*编译条件*](#compilation-condition) **||** [*编译条件*](#compilation-condition) > - - +grammar_platform-condition {#grammar_platform-condition} +grammar_platform-condition-os {#grammar_platform-condition-os} > *平台条件* → **os ( [*操作系统*](#operating-system) )** > - +grammar_platform-condition-arch {#grammar_platform-condition-arch} > *平台条件* → **arch ( [*架构*](#architecture) )** > - +grammar_platform-condition-swift {#grammar_platform-condition-swift} > *平台条件* → **swift ( >= [*swift 版本*](#swift-version) )** | **swift ( < [*swift 版本*](#swift-version) )** > - +grammar_platform-condition-compiler {#grammar_platform-condition-compiler} > *平台条件* → **compiler ( >= [*swift 版本*](#swift-version) )** | **compiler ( < [*swift 版本*](#swift-version) )** > - +grammar_platform-condition-canImport {#grammar_platform-condition-canImport} > *平台条件* → **canImport ( [*模块名*](#grammar_module-name) )** > - +grammar_platform-condition-targetEnvironment {#grammar_platform-condition-targetEnvironment} > *平台条件* → **targetEnvironment ( [*环境*](#grammar_environment) )** > - +operating-system {#operating-system} > *操作系统* → **macOS** | **iOS** | **watchOS** | **tvOS** > - +architecture {#architecture} > *架构* → **i386** | **x86_64** | **arm** | **arm64** > - +swift-version {#swift-version} > *swift 版本* → [*十进制数字*](./02_Lexical_Structure.md#decimal-digit) ­**.** ­[*swift 版本延续*](#grammar_swift-version-continuation) 可选 > - +grammar_swift-version-continuation {#grammar_swift-version-continuation} > *swift 版本延续* → **.** [*十进制数字*](./02_Lexical_Structure.md#decimal-digit) [*swift 版本延续*](#grammar_swift-version-continuation) 可选 > - +grammar_module-name {#grammar_module-name} > *模块名* → [*identifier*](./02_Lexical_Structure.md#identifier) > - +grammar_environment {#grammar_environment} > *环境* → **模拟器** > - -### 行控制语句 - +### 行控制语句 {#line_control_statements} 行控制语句可以为被编译的源代码指定行号和文件名,从而改变源代码的定位信息,以便进行分析和调试。 行控制语句形式如下: @@ -794,7 +750,7 @@ statements to compile if both compilation conditions are false 第二种的行控制语句,`#sourceLocation()`,会将源代码的定位信息重置回默认的行号和文件名。 - +line-control-statement {#line-control-statement} > 行控制语句语法 > > @@ -802,10 +758,10 @@ statements to compile if both compilation conditions are false > > *行控制语句* → **#sourceLocation()** > - +line-number {#line-number} > *行号* → 大于 0 的十进制整数 > - +file-name {#file-name} > *文件名* → [*静态字符串字面量*](./02_Lexical_Structure.md#static-string-literal) > @@ -823,18 +779,16 @@ statements to compile if both compilation conditions are false > 编译时诊断语句语法 > > - +grammar_compile-time-diagnostic-statement {#grammar_compile-time-diagnostic-statement} > *诊断语句* → **#error** **(** [*diagnostic-message*](#grammar_diagnostic-message) **)** > > *诊断语句* → **#warning** **(** [*diagnostic-message*](#grammar_diagnostic-message) **)** > - +grammar_diagnostic-message {#grammar_diagnostic-message} > *诊断语句* → [*静态字符串字面量*](./02_Lexical_Structure.md#static-string-literal) > - -## 可用性条件 - +## 可用性条件 {#availability_condition} 可用性条件可作为 `if`,`while`,`guard` 语句的条件,可以在运行时基于特定的平台参数来查询 API 的可用性。 可用性条件的形式如下: @@ -856,19 +810,19 @@ if #available(platform name version, ..., *) { > 可用性条件语法 > > - +availability-condition {#availability-condition} > *可用性条件* → **#available** **(** [*可用性参数列表*](#availability-arguments) **)** > - +availability-arguments {#availability-arguments} > *可用性参数列表* → [*可用性参数*](#availability-argument) | [*可用性参数*](#availability-argument) **,** [*可用性参数列表*](#availability-arguments) > - +availability-argument {#availability-argument} > *可用性参数* → [平台名称](#platform-name) [平台版本](#platform-version) > > *可用性条件* → __*__ > > - +platform-name {#platform-name} > *平台名称* → **iOS** | **iOSApplicationExtension** > > *平台名称* → **OSX** | **macOSApplicationExtension** @@ -877,7 +831,7 @@ if #available(platform name version, ..., *) { > > *平台名称* → **tvOS** > - +platform-version {#platform-version} > *平台版本* → [十进制数字](./02_Lexical_Structure.md#decimal-digits) > > *平台版本* → [十进制数字](./02_Lexical_Structure.md#decimal-digits) **.** [十进制数字](./02_Lexical_Structure.md#decimal-digits) diff --git a/source/chapter3/06_Declarations.md b/source/chapter3/06_Declarations.md index 88e14806..0950d826 100755 --- a/source/chapter3/06_Declarations.md +++ b/source/chapter3/06_Declarations.md @@ -1,14 +1,11 @@ - - -# 声明(Declarations) - +# 声明(Declarations) {#declarations} *声明(declaration)* 用以向程序里引入新的名字或者结构。举例来说,可以使用声明来引入函数和方法,变量和常量,或者定义新的具有命名的枚举、结构体、类和协议类型。还可以使用声明来扩展一个既有的具有命名的类型的行为,或者在程序里引入在其它地方声明的符号。 在 Swift 中,大多数声明在某种意义上讲也是定义,因为它们在声明时往往伴随着实现或初始化。由于协议并不提供实现,大多数协议成员仅仅只是声明而已。为了方便起见,也是因为这些区别在 Swift 中并不是很重要,“声明”这个术语同时包含了声明和定义两种含义。 > 声明语法 > -> +> declaration {#declaration} > > *声明* → [*导入声明*](#import-declaration) > @@ -38,14 +35,12 @@ > > *声明* → [*运算符声明*](#operator-declaration) > -> +> declarations {#declarations} > > *多条声明* → [*声明*](#declaration) [*多条声明*](#declarations)可选 > - -## 顶级代码 - +## 顶级代码 {#top-level_code} Swift 的源文件中的顶级代码(top-level code)由零个或多个语句、声明和表达式组成。默认情况下,在一个源文件的顶层声明的变量,常量和其他具有命名的声明可以被同模块中的每一个源文件中的代码访问。可以使用一个访问级别修饰符来标记声明来覆盖这种默认行为,请参阅 [访问控制级别](#access_control_levels)。 > 顶级声明语法 @@ -53,9 +48,7 @@ Swift 的源文件中的顶级代码(top-level code)由零个或多个语句 > *顶级声明* → [*多条语句*](./05_Statements.md#statements)可选 > - -## 代码块 - +## 代码块 {#code_blocks} *代码块(code block)* 可以将一些声明和控制结构体组织在一起。它有如下的形式: ```swift @@ -68,14 +61,12 @@ Swift 的源文件中的顶级代码(top-level code)由零个或多个语句 > 代码块语法 > -> +> code-block {#code-block} > > *代码块* → **{** [*多条语句*](./05_Statements.md#statements)可选 **}** > - -## 导入声明 - +## 导入声明 {#import_declaration} *导入声明(import declaration)* 让你可以使用在其他文件中声明的内容。导入语句的基本形式是导入整个模块,它由 `import` 关键字和紧随其后的模块名组成: ```swift @@ -89,29 +80,27 @@ import 导入类型 模块.符号名 import 模块.子模块 ``` - +grammer_of_an_import_declaration {#grammer_of_an_import_declaration} > 导入声明语法 > -> +> import-declaration {#import-declaration} > > *导入声明* → [*特性列表*](./07_Attributes.md#attributes)可选 **import** [*导入类型*](#import-kind)可选 [*导入路径*](#import-path) > -> +> import-kind {#import-kind} > > *导入类型* → **typealias** | **struct** | **class** | **enum** | **protocol** | **let** | **var** | **func** > -> +> import-path {#import-path} > > *导入路径* → [*导入路径标识符*](#import-path-identifier) | [*导入路径标识符*](#import-path-identifier) **.** [*导入路径*](#import-path) > -> +> import-path-identifier {#import-path-identifier} > > *导入路径标识符* → [*标识符*](./02_Lexical_Structure.md#identifier) | [*运算符*](./02_Lexical_Structure.md#operator) > - -## 常量声明 - +## 常量声明 {#constant_declaration} *常量声明(constant declaration)* 可以在程序中引入一个具有命名的常量。常量以关键字 `let` 来声明,遵循如下格式: ```swift @@ -143,30 +132,27 @@ print("The second number is \(secondNumber).") 如果还想获得更多关于常量的信息或者想在使用中获得帮助,请参阅 [常量和变量](../chapter2/01_The_Basics.md#constants_and_variables) 和 [存储属性](../chapter2/10_Properties.md#stored_properties)。 - +grammer_of_a_constant_declaration {#grammer_of_a_constant_declaration} > 常量声明语法 > -> +> constant-declaration {#constant-declaration} > > *常量声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **let** [*模式构造器列表*](pattern-initializer-list) > -> +> pattern-initializer-list {#pattern-initializer-list} > > *模式构造器列表* → [*模式构造器*](#pattern-initializer) | [*模式构造器*](#pattern-initializer) **,** [*模式构造器列表*](#pattern-initializer-list) > -> +> pattern-initializer {#pattern-initializer} > > *模式构造器* → [*模式*](./08_Patterns.md#pattern) [*构造器*](#initializer)可选 > -> +> initializer {#initializer} > > *构造器* → **=** [*表达式*](./04_Expressions.md#expression) > - - -## 变量声明 - +## 变量声明 {#variable_declaration} *变量声明(variable declaration)* 可以在程序中引入一个具有命名的变量,它以关键字 `var` 来声明。 变量声明有几种不同的形式,可以声明不同种类的命名值和可变值,如存储型和计算型变量和属性,属性观察器,以及静态变量属性。所使用的声明形式取决于变量声明的适用范围和打算声明的变量类型。 @@ -178,9 +164,7 @@ print("The second number is \(secondNumber).") 可以在子类中重写继承来的变量属性,使用 `override` 声明修饰符标记属性的声明即可,详情请参阅 [重写](../chapter2/13_Inheritance.md#overriding)。 - -### 存储型变量和存储型变量属性 - +### 存储型变量和存储型变量属性 {#stored_variables_and_stored_variable_properties} 使用如下形式声明一个存储型变量或存储型变量属性: ```swift @@ -195,9 +179,7 @@ var 变量名称: 类型 = 表达式 正如名字所示,存储型变量和存储型变量属性的值会存储在内存中。 - -### 计算型变量和计算型属性 - +### 计算型变量和计算型属性 {#computed_variables_and_computed_properties} 使用如下形式声明一个计算型变量或计算型属性: ```swift @@ -221,9 +203,7 @@ setter 的圆括号以及 setter 名称是可选的。如果提供了 setter 名 要获得更多关于计算型属性的信息和例子,请参阅 [计算型属性](../chapter2/10_Properties.md#computed_properties)。 - -### 存储型变量和属性的观察器 - +### 存储型变量和属性的观察器 {#stored_variable_observers_and_property_observers} 可以在声明存储型变量或属性时提供 `willSet` 和 `didSet` 观察器。一个包含观察器的存储型变量或属性以如下形式声明: ```swift @@ -254,9 +234,7 @@ var 变量名称: 类型 = 表达式 { 要获得更多信息以及查看如何使用属性观察器的例子,请参阅 [属性观察器](../chapter2/10_Properties.md#property_observers)。 - -### 类型变量属性 - +### 类型变量属性 {#type_variable_properties} 要声明一个类型变量属性,用 `static` 声明修饰符标记该声明。类可以改用 `class` 声明修饰符标记类的类型计算型属性从而允许子类重写超类的实现。类型属性在 [类型属性](../chapter2/10_Properties.md#type_properties) 章节有详细讨论。 > 注意 @@ -264,10 +242,10 @@ var 变量名称: 类型 = 表达式 { > 在一个类声明中,使用关键字 `static` 与同时使用 `class` 和 `final` 去标记一个声明的效果相同。 > - +grammer_of_a_variable_declaration {#grammer_of_a_variable_declaration} > 变量声明语法 > - +variable-declaration {#variable-declaration} > *变量声明* → [*变量声明头*](#variable-declaration-head) [*模式构造器列表*](#pattern-initializer-list) > > *变量声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*代码块*](#code-block) @@ -281,65 +259,63 @@ var 变量名称: 类型 = 表达式 { > *变量声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*构造器*](#initializer)可选 [*willSet-didSet 代码块*](#willSet-didSet-block) > - +variable-declaration-head {#variable-declaration-head} > *变量声明头* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **var** > -> +> variable-name {#variable-name} > > *变量名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > - +getter-setter-block {#getter-setter-block} > *getter-setter 代码块* → [*代码块*](#code-block) > > *getter-setter 代码块* → **{** [*getter 子句*](#getter-clause) [*setter 子句*](#setter-clause)可选 **}** > > *getter-setter 代码块* → **{** [*setter 子句*](#setter-clause) [*getter 子句*](#getter-clause) **}** > -> +> getter-clause {#getter-clause} > > *getter 子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **get** [*代码块*](#code-block) > -> +> setter-clause {#setter-clause} > > *setter 子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **set** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) > -> +> setter-name {#setter-name} > > *setter 名称* → **(** [*标识符*](./02_Lexical_Structure.md#identifier) **)** > - +getter-setter-keyword-block {#getter-setter-keyword-block} > *getter-setter 关键字代码块* → **{** [*getter 关键字子句*](#getter-keyword-clause) [*setter 关键字子句*](#setter-keyword-clause)可选 **}** > > *getter-setter 关键字代码块* → **{** [*setter 关键字子句*](#setter-keyword-clause) [*getter 关键字子句*](#getter-keyword-clause) **}** > -> +> getter-keyword-clause {#getter-keyword-clause} > > *getter 关键字子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **get** > -> +> setter-keyword-clause {#setter-keyword-clause} > > *setter 关键字子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **set** > - +willSet-didSet-block {#willSet-didSet-block} > *willSet-didSet 代码块* → **{** [*willSet 子句*](#willSet-clause) [*didSet 子句*](#didSet-clause)可选 **}** > > *willSet-didSet 代码块* → **{** [*didSet 子句*](#didSet-clause) [*willSet 子句*](#willSet-clause)可选 **}** > -> +> willSet-clause {#willSet-clause} > > *willSet 子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **willSet** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) > -> +> didSet-clause {#didSet-clause} > > *didSet 子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **didSet** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) > - -## 类型别名声明 - +## 类型别名声明 {#type_alias_declaration} *类型别名(type alias)* 声明可以在程序中为一个既有类型声明一个别名。类型别名声明语句使用关键字 `typealias` 声明,遵循如下的形式: ```swift @@ -394,26 +370,24 @@ func sum(_ sequence: T) -> Int where T.Element == Int { 另请参阅 [协议关联类型声明](#protocol_associated_type_declaration)。 - +grammer_of_a_type_alias_declaration {#grammer_of_a_type_alias_declaration} > 类型别名声明语法 > > -> +> typealias-declaration {#typealias-declaration} > > *类型别名声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **typealias** [*类型别名名称*](#typealias-name) [*类型别子句*](#typealias-clause) [*类型别名赋值*](#typealias-assignment) > -> +> typealias-name {#typealias-name} > > *类型别名名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> +> typealias-assignment {#typealias-assignment} > > *类型别名赋值* → **=** [*类型*](./03_Types.md#type) > - -## 函数声明 - +## 函数声明 {#function_declaration} 使用*函数声明(function declaration)* 在程序中引入新的函数或者方法。在类、结构体、枚举,或者协议中声明的函数会作为方法。函数声明使用关键字 `func`,遵循如下的形式: ```swift @@ -441,9 +415,7 @@ func 函数名称(参数列表) { 更多关于嵌套函数的讨论,请参阅 [嵌套函数](../chapter2/06_Functions.md#Nested_Functions)。 - -### 参数名 - +### 参数名 {#parameter_names} 函数的参数列表由一个或多个函数参数组成,参数间以逗号分隔。函数调用时的参数顺序必须和函数声明时的参数顺序一致。最简单的参数列表有着如下的形式: `参数名称`: `参数类型` @@ -470,9 +442,7 @@ func repeatGreeting(_ greeting: String, count n: Int) { /* Greet n times */ } repeatGreeting("Hello, world!", count: 2) // count 有标签, greeting 没有 ``` - -### 输入输出参数 - +### 输入输出参数 {#in-out_parameters} 输入输出参数被传递时遵循如下规则: 1. 函数调用时,参数的值被拷贝。 @@ -516,10 +486,7 @@ func multithreadedFunction(queue: DispatchQueue, x: inout Int) { 关于输入输出参数的详细讨论,请参阅 [输入输出参数](../chapter2/06_Functions.md#in_out_parameters)。 - - -### 特殊参数 - +### 特殊参数 {#special_kinds_of_parameters} 参数可以被忽略,数量可以不固定,还可以为其提供默认值,使用形式如下: ```swift @@ -542,18 +509,14 @@ f(7) // 有效,提供了值 f(x: 7) // 无效,该参数没有外部名称 ``` - -### 特殊方法 - +### 特殊方法 {#special_kinds_of_methods} 枚举或结构体的方法如果会修改 `self`,则必须以 `mutating` 声明修饰符标记。 子类重写超类中的方法必须以 `override` 声明修饰符标记。重写方法时不使用 `override` 修饰符,或者被 `override` 修饰符修饰的方法并未对超类方法构成重写,都会导致编译错误。 枚举或者结构体中的类型方法,要以 `static` 声明修饰符标记,而对于类中的类型方法,除了使用 `static`,还可使用 `class` 声明修饰符标记。类中使用 `class` 声明修饰的方法可以被子类实现重写;类中使用 `static` 声明修饰的方法不可被重写。 - -### 抛出错误的函数和方法 - +### 抛出错误的函数和方法 {#throwing_functions_and_methods} 可以抛出错误的函数或方法必须使用 `throws` 关键字标记。这类函数和方法被称为抛出函数和抛出方法。它们有着下面的形式: ```swift @@ -571,9 +534,7 @@ func 函数名称(参数列表) throws -> 返回类型 { 抛出方法不能重写非抛出方法,而且抛出方法不能满足协议对于非抛出方法的要求。也就是说,非抛出方法可以重写抛出方法,而且非抛出方法可以满足协议对于抛出方法的要求。 - -### 重抛错误的函数和方法 - +### 重抛错误的函数和方法 {#rethrowing_functions_and_methods} 函数或方法可以使用 `rethrows` 关键字来声明,从而表明仅当该函数或方法的一个函数类型的参数抛出错误时,该函数或方法才抛出错误。这类函数和方法被称为重抛函数和重抛方法。重新抛出错误的函数或方法必须至少有一个参数的类型为抛出函数。 ```swift @@ -602,55 +563,53 @@ func someFunction(callback: () throws -> Void) rethrows { 抛出方法不能重写重抛方法,而且抛出方法不能满足协议对于重抛方法的要求。也就是说,重抛方法可以重写抛出方法,而且重抛方法可以满足协议对于抛出方法的要求。 - -### 永不返回的函数 - +### 永不返回的函数 {#functions_that_never_return} Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它的调用者。`Never` 返回类型的函数或方法可以称为不归,不归函数、方法要么引发不可恢复的错误,要么永远不停地运作,这会使调用后本应执行得代码就不再执行了。但即使是不归函数、方法,抛错函数和重抛出函数也可以将程序控制转移到合适的 `catch` 代码块。 不归函数、方法可以在 guard 语句的 else 字句中调用,具体讨论在[*Guard 语句*](./05_Statements.md#guard_statements)。 你可以重写一个不归方法,但是新的方法必须保持原有的返回类型和没有返回的行为。 - +grammer_of_a_function_declaration {#grammer_of_a_function_declaration} > 函数声明语法 > - +function-declaration {#function-declaration} > *函数声明* → [*函数头*](#function-head) [*函数名*](#function-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*函数签名*](#function-signature) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause) [*函数体*](#function-body)可选 > - +function-head {#function-head} > *函数头* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **func** > -> +> function-name {#function-name} > > *函数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | [*运算符*](./02_Lexical_Structure.md#operator) > > -> +> function-signature {#function-signature} > > > *函数签名* → [*参数子句列表*](#parameter-clauses) **throws**可选 [*函数结果*](#function-result)可选 > > *函数签名* → [*参数子句列表*](#parameter-clauses) **rethrows** [*函数结果*](#function-result)可选 > -> +> function-result {#function-result} > > *函数结果* → **->** [*特性列表*](./07_Attributes.md#attributes)可选 [*类型*](./03_Types.md#type) > -> +> function-body {#function-body} > > *函数体* → [*代码块*](#code-block) > -> +> parameter-clause {#parameter-clause} > > *参数子句* → **(** **)** | **(** [*参数列表*](#parameter-list) **)** > -> +> parameter-list {#parameter-list} > > *参数列表* → [*参数*](#parameter) | [*参数*](#parameter) **,** [*参数列表*](#parameter-list) > -> +> parameter {#parameter} > > *参数* → [*外部参数名*](#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.md#type-annotation) [*默认参数子句*](#default-argument-clause)可选 > @@ -658,23 +617,20 @@ Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它 > > *参数* → [*外部参数名*](#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.md#type-annotation) **...** > -> +> external-parameter-name {#external-parameter-name} > > *外部参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | **_** > -> +> local-parameter-name {#local-parameter-name} > > *内部参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | **_** > -> +> default-argument-clause {#default-argument-clause} > > *默认参数子句* → **=** [*表达式*](./04_Expressions.md#expression) > - - -## 枚举声明 - +## 枚举声明 {#enumeration_declaration} 在程序中使用*枚举声明(enumeration declaration)* 来引入一个枚举类型。 枚举声明有两种基本形式,使用关键字 `enum` 来声明。枚举声明体包含零个或多个值,称为枚举用例,还可包含任意数量的声明,包括计算型属性、实例方法、类型方法、构造器、类型别名,甚至其他枚举、结构体和类。枚举声明不能包含析构器或者协议声明。 @@ -687,9 +643,7 @@ Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它 可以扩展枚举类型,正如在 [扩展声明](#extension_declaration) 中讨论的一样。 - -### 任意类型的枚举用例 - +### 任意类型的枚举用例 {#enumerations_with_cases_of_any_type} 如下的形式声明了一个包含任意类型枚举用例的枚举变量: ```swift @@ -721,9 +675,7 @@ let evenInts: [Number] = [0, 2, 4, 6].map(f) 要获得更多关于具有关联值的枚举用例的信息和例子,请参阅 [关联值](../chapter2/08_Enumerations.md#associated_values)。 - -#### 递归枚举 - +#### 递归枚举 {#enumerations_with_indirection} 枚举类型可以具有递归结构,就是说,枚举用例的关联值类型可以是枚举类型自身。然而,枚举类型的实例具有值语义,这意味着它们在内存中有固定布局。为了支持递归,编译器必须插入一个间接层。 要让某个枚举用例支持递归,使用 `indirect` 声明修饰符标记该用例。 @@ -740,9 +692,7 @@ enum Tree { 被 `indirect` 修饰符标记的枚举用例必须有一个关联值。使用 `indirect` 修饰符标记的枚举类型可以既包含有关联值的用例,同时还可包含没有关联值的用例。但是,它不能再单独使用 `indirect` 修饰符来标记某个用例。 - -### 拥有原始值的枚举用例 - +### 拥有原始值的枚举用例 {#enumerations_with_cases_of_a_raw-value_type} 以下形式声明了一种枚举类型,其中各个枚举用例的类型均为同一种基本类型: ```swift @@ -776,18 +726,16 @@ enum GamePlayMode: String { 枚举用例具有原始值的枚举类型隐式地符合定义在 Swift 标准库中的 `RawRepresentable` 协议。所以,它们拥有一个 `rawValue` 属性和一个可失败构造器 `init?(rawValue: RawValue)`。可以使用 `rawValue` 属性去获取枚举用例的原始值,例如 `ExampleEnum.b.rawValue`。还可以根据原始值来创建一个相对应的枚举用例,只需调用枚举的可失败构造器,例如 `ExampleEnum(rawValue: 5)`,这个可失败构造器返回一个可选类型的用例。要获得更多关于具有原始值的枚举用例的信息和例子,请参阅 [原始值](../chapter2/08_Enumerations.md#raw_values)。 - -### 访问枚举用例 - +### 访问枚举用例 {#accessing_enumeration_cases} 使用点语法(`.`)来引用枚举类型的枚举用例,例如 `EnumerationType.enumerationCase`。当枚举类型可以由上下文推断而出时,可以省略它(但是 `.` 仍然需要),正如 [枚举语法](../chapter2/08_Enumerations.md#enumeration_syntax) 和 [显式成员表达式](./04_Expressions.md#explicit_member_expression) 所述。 可以使用 `switch` 语句来检验枚举用例的值,正如 [使用 switch 语句匹配枚举值](../chapter2/08_Enumerations.md#matching_enumeration_values_with_a_switch_statement) 所述。枚举类型是模式匹配的,依靠 `switch` 语句 `case` 块中的枚举用例模式,正如 [枚举用例模式](./08_Patterns.md#enumeration_case_pattern) 所述。 - +grammer_of_an_enumeration_declaration {#grammer_of_an_enumeration_declaration} > 枚举声明语法 > > -> +> enum-declaration {#enum-declaration} > > *枚举声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 [*联合风格枚举*](#union-style-enum) > @@ -796,72 +744,70 @@ enum GamePlayMode: String { > > *联合风格枚举* → **indirect**可选 **enum** [*枚举名称*](#enum-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [类型继承子句](./03_Types.md#type-inheritance-clause)可选 **{** [*多个联合风格枚举成员*](#union-style-enum-members)可选 **}** > -> +> union-style-enum-members {#union-style-enum-members} > > *多个联合风格枚举成员* → [*联合风格枚举成员*](#union-style-enum-member) [*多个联合风格枚举成员*](#union-style-enum-members)可选 > -> +> union-style-enum-member {#union-style-enum-member} > > *联合风格枚举成员* → [*声明*](#declaration) | [*联合风格枚举用例子句*](#union-style-enum-case-clause) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > -> +> union-style-enum-case-clause {#union-style-enum-case-clause} > > *联合风格枚举用例子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **indirect**可选 **case** [*联合风格枚举用例列表*](#union-style-enum-case-list) > -> +> union-style-enum-case-list {#union-style-enum-case-list} > > *联合风格枚举用例列表* → [*联合风格枚举用例*](#union-style-enum-case) | [*联合风格枚举用例*](#union-style-enum-case) **,** [*联合风格枚举用例列表*](#union-style-enum-case-list) > -> +> union-style-enum-case {#union-style-enum-case} > > *联合风格枚举用例* → [*枚举用例名称*](#enum-case-name) [*元组类型*](03_Types.md#tuple-type)可选 > -> +> enum-name {#enum-name} > > *枚举名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> +> enum-case-name {#enum-case-name} > > *枚举用例名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > > -> +> raw-value-style-enum {#raw-value-style-enum} > > > *原始值风格枚举* → **enum** [*枚举名称*](#enum-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause) **{** [*多个原始值风格枚举成员*](#raw-value-style-enum-members) **}** > -> +> raw-value-style-enum-members {#raw-value-style-enum-members} > > *多个原始值风格枚举成员* → [*原始值风格枚举成员*](#raw-value-style-enum-member) [*多个原始值风格枚举成员*](#raw-value-style-enum-members)可选 > -> +> raw-value-style-enum-member {#raw-value-style-enum-member} > > *原始值风格枚举成员* → [*声明*](#declaration) | [*原始值风格枚举用例子句*](#raw-value-style-enum-case-clause) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > -> +> raw-value-style-enum-case-clause {#raw-value-style-enum-case-clause} > > *原始值风格枚举用例子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **case** [*原始值风格枚举用例列表*](#raw-value-style-enum-case-list) > -> +> raw-value-style-enum-case-list {#raw-value-style-enum-case-list} > > *原始值风格枚举用例列表* → [*原始值风格枚举用例*](#raw-value-style-enum-case) | [*原始值风格枚举用例*](#raw-value-style-enum-case) **,** [*原始值风格枚举用例列表*](#raw-value-style-enum-case-list) > -> +> raw-value-style-enum-case {#raw-value-style-enum-case} > > *原始值风格枚举用例* → [*枚举用例名称*](#enum-case-name) [*原始值赋值*](#raw-value-assignment)可选 > -> +> raw-value-assignment {#raw-value-assignment} > > *原始值赋值* → **=** [*原始值字面量*](#raw-value-literal) > -> +> raw-value-literal {#raw-value-literal} > > *原始值字面量* → [数字型字面量](./02_Lexical_Structure.md#numeric-literal) | [字符串型字面量](./02_Lexical_Structure.md#static-string-literal) | [布尔型字面量](./02_Lexical_Structure.md#boolean-literal) > - -## 结构体声明 - +## 结构体声明 {#structure_declaration} 使用*结构体声明(structure declaration)* 可以在程序中引入一个结构体类型。结构体声明使用 `struct` 关键字,遵循如下的形式: ```swift @@ -891,36 +837,33 @@ struct 结构体名称: 采纳的协议 { 可以使用扩展声明来扩展结构体类型的行为,请参阅 [扩展声明](#extension_declaration)。 - +grammer_of_a_structure_declaration {#grammer_of_a_structure_declaration} > 结构体声明语法 > > -> +> struct-declaration {#struct-declaration} > > *结构体声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier) 可选 **struct** [*结构体名称*](#struct-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*结构体主体*](#struct-body) > -> +> struct-name {#struct-name} > > *结构体名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> +> struct-body {#struct-body} > > *结构体主体* → **{** [*多条声明*](#declarations)可选 **}** > -> +> struct-name {#struct-name} > > > *结构体多个成员* → [*结构体成员*](#struct-member) [*结构体多个成员*](#struct-members)可选 > -> +> struct-member {#struct-member} > > *结构体成员* → [*声明*](#declaration) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > - - -## 类声明 - +## 类声明 {#class_declaration} 可以在程序中使用*类声明(class declaration)* 来引入一个类。类声明使用关键字 `class`,遵循如下的形式: ```swift @@ -953,35 +896,33 @@ class 类名: 超类, 采纳的协议 { 可以使用扩展声明来扩展类的行为,请参阅 [扩展声明](#extension_declaration)。 - +grammer_of_a_class_declaration {#grammer_of_a_class_declaration} > 类声明语法 > > -> +> class-declaration {#class-declaration} > > *类声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [访问级别修饰符](#access-level-modifier)可选 **final**可选 **class** [*类名*](#class-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*类主体*](#class-body) > > *类声明* → [*特性列表*](./07_Attributes.md#attributes)可选 **final** [访问级别修饰符](#access-level-modifier)可选 **class** [*类名*](#class-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*类主体*](#class-body) > -> +> class-name {#class-name} > > *类名* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> +> class-body {#class-body} > > *类主体* → **{** [*多条声明*](#declarations)可选 **}** > > > *类多个成员* → [*类成员*](#class-member) [*类多个成员*](#class-members)可选 > -> +> class-member {#class-member} > > *类成员* → [*声明*](#declaration) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > - -## 协议声明 - +## 协议声明 {#protocol_declaration} *协议声明(protocol declaration)* 可以为程序引入一个命名的协议类型。协议声明只能在全局区域使用 `protocol` 关键字来进行声明,并遵循如下形式: ```swift @@ -1022,31 +963,31 @@ protocol SomeProtocol: AnyObject { 可以使用协议来声明作为代理的类或者结构体应该实现的方法,正如 [委托(代理)模式](../chapter2/21_Protocols.md#delegation) 中所述。 - +grammer_of_a_protocol_declaration {#grammer_of_a_protocol_declaration} > 协议声明语法 > > -> +> protocol-declaration {#protocol-declaration} > > *协议声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **protocol** [*协议名称*](#protocol-name) [*类型继承子句*](03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*协议主体*](#protocol-body) > -> +> protocol-name {#protocol-name} > > *协议名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> +> protocol-body {#protocol-body} > > *协议主体* → **{** [*协议成员声明列表*](#protocol-member-declarations)可选 **}** > > > *协议多个成员* → [*协议成员*](#protocol-member) [*协议多个成员*](#protocol-members)可选 > -> +> protocol-member {#protocol-member} > > *协议成员* → [*协议成员声明*](#protocol-member-declaration) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > > -> +> protocol-member-declaration {#protocol-member-declaration} > > *协议成员声明* → [*协议属性声明*](#protocol-property-declaration) > @@ -1058,14 +999,12 @@ protocol SomeProtocol: AnyObject { > > *协议成员声明* → [*协议关联类型声明*](#protocol-associated-type-declaration) > -> +> protocol-member-declarations {#protocol-member-declarations} > > *协议成员声明列表* → [*协议成员声明*](#protocol-member-declaration) [*协议成员声明列表*](#protocol-member-declarations)可选 > - -### 协议属性声明 - +### 协议属性声明 {#protocol_property_declaration} 协议可以通过在协议声明主体中引入一个协议属性声明,来声明符合的类型必须实现的属性。协议属性声明有一种特殊的变量声明形式: ```swift @@ -1078,35 +1017,30 @@ var 属性名: 类型 { get set } 另请参阅 [变量声明](#variable_declaration)。 - +grammer_of_an_import_declaration {#grammer_of_an_import_declaration} > 协议属性声明语法 > -> +> protocol-property-declaration {#protocol-property-declaration} > > *协议属性声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*getter-setter 关键字代码块*](#getter-setter-keyword-block) > - -### 协议方法声明 - +### 协议方法声明 {#protocol_method_declaration} 协议可以通过在协议声明主体中引入一个协议方法声明,来声明符合的类型必须实现的方法。协议方法声明和函数方法声明有着相同的形式,但有两项例外:它们不包括函数体,也不能包含默认参数。关于如何实现协议中的方法要求的例子,请参阅 [方法要求](../chapter2/21_Protocols.md#method_requirements)。 使用 `static` 声明修饰符可以在协议声明中声明一个类型方法。类在实现这些方法时使用 `class` 声明修饰符。结构体实现这些方法时必须使用 `static` 声明修饰符。通过扩展实现时亦是如此(类的扩展中使用 `class` 声明修饰符,结构体的扩展中使用 `static` 声明修饰符)。 另请参阅 [函数声明](#function_declaration)。 - +grammer_of_a_protocol_declaration {#grammer_of_a_protocol_declaration} > 协议方法声明语法 > -> +> protocol-method-declaration {#protocol-method-declaration} > > *协议方法声明* → [*函数头*](#function-head) [*函数名*](#function-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*函数签名*](#function-signature) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 > - - -### 协议构造器声明 - +### 协议构造器声明 {#protocol_initializer_declaration} 协议可以通过在协议声明主体中引入一个协议构造器声明,来声明符合的类型必须实现的构造器。协议构造器声明 除了不包含实现主体外,和构造器声明有着相同的形式。 @@ -1116,19 +1050,17 @@ var 属性名: 类型 { get set } 另请参阅 [构造器声明](#initializer_declaration)。 - +grammer_of_a_protocol_initializer_declaration {#grammer_of_a_protocol_initializer_declaration} > 协议构造器声明语法 > -> +> protocol-initializer-declaration {#protocol-initializer-declaration} > > *协议构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **throws**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 > > *协议构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **rethrows** [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 > - -### 协议下标声明 - +### 协议下标声明 {#protocol_subscript_declaration} 协议可以通过在协议声明主体中引入一个协议下标声明,来声明符合的类型必须实现的下标。协议下标声明有一个特殊的下标声明形式: ```swift @@ -1140,18 +1072,15 @@ subscript (参数列表) -> 返回类型 { get set } 另请参阅 [下标声明](#subscript_declaration)。 - +grammer_of_a_protocol_subscript_declaration {#grammer_of_a_protocol_subscript_declaration} > 协议下标声明语法 > -> +> protocol-subscript-declaration {#protocol-subscript-declaration} > > *协议下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*getter-setter 关键字代码块*](#getter-setter-keyword-block) > - - -### 协议关联类型声明 - +### 协议关联类型声明 {#protocol_associated_type_declaration} 使用关键字 `associatedtype` 来声明协议关联类型。关联类型为作为协议声明的一部分,为某种类型提供了一个别名。关联类型和泛型参数子句中的类型参数很相似,但是它们和 `Self` 一样,用于协议中。`Self` 指代采纳协议的类型。要获得更多信息和例子,请参阅 [关联类型](../chapter2/22_Generics.md#associated_types)。 在协议声明中使用泛型 `where` 子句来为继承的协议关联类型添加约束,且不需要重新声明关联类型。例如下面代码中的 `SubProtocol` 声明。 @@ -1174,17 +1103,15 @@ protocol SubProtocolB: SomeProtocol where SomeType: Equatable { } 另请参阅 [类型别名声明](#type_alias_declaration)。 - +grammer_of_a_protocol_associated_type_declaration {#grammer_of_a_protocol_associated_type_declaration} > 协议关联类型声明语法 > -> +> protocol-associated-type-declaration {#protocol-associated-type-declaration} > > *协议关联类型声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **associatedtype** [*类型别名头*](#typealias-head) [*类型继承子句*](03_Types.md#type-inheritance-clause)可选 [*类型别名赋值*](#typealias-assignment)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 > - -## 构造器声明 - +## 构造器声明 {#initializer_declaration} 构造器声明会为程序中的类、结构体或枚举引入构造器。构造器使用关键字 `init` 来声明,有两种基本形式。 结构体、枚举、类可以有任意数量的构造器,但是类的构造器具有不同的规则和行为。不同于结构体和枚举,类有两种构造器,即指定构造器和便利构造器,请参阅 [构造过程](../chapter2/14_Initialization.md)。 @@ -1228,9 +1155,7 @@ convenience init(参数列表) { 关于在不同类型中声明构造器的例子,请参阅 [构造过程](../chapter2/14_Initialization.md)。 - -### 可失败构造器 - +### 可失败构造器 {#failable_initializers} 可失败构造器可以生成所属类型的可选实例或者隐式解包可选实例,因此,这种构造器通过返回 `nil` 来指明构造过程失败。 声明生成可选实例的可失败构造器时,在构造器声明的 `init` 关键字后加追加一个问号(`init?`)。声明生成隐式解包可选实例的可失败构造器时,在构造器声明后追加一个叹号(`init!`)。使用 `init?` 可失败构造器生成结构体的一个可选实例的例子如下。 @@ -1269,16 +1194,16 @@ if let actualInstance = SomeStruct(input: "Hello") { 更多关于可失败构造器的信息和例子,请参阅 [可失败构造器](../chapter2/14_Initialization.md#failable_initializers)。 - +grammer_of_an_initializer_declaration {#grammer_of_an_initializer_declaration} > 构造器声明语法 > -> +> initializer-declaration {#initializer-declaration} > > *构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **throws**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*构造器主体*](#initializer-body) > > *构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **rethrows**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*构造器主体*](#initializer-body) > -> +> initializer-head {#initializer-head} > > *构造器头* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **init** > @@ -1286,14 +1211,12 @@ if let actualInstance = SomeStruct(input: "Hello") { > > *构造器头* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **init** **!** > -> +> initializer-body {#initializer-body} > > *构造器主体* → [*代码块*](#code-block) > - -## 析构器声明 - +## 析构器声明 {#deinitializer_declaration} *析构器声明(deinitializer declaration)* 可以为类声明一个析构器。析构器没有参数,遵循如下格式: ```swift @@ -1310,17 +1233,15 @@ deinit { 关于如何在类声明中使用析构器的例子,请参阅 [析构过程](../chapter2/15_Deinitialization.md)。 - +grammer_of_a_deinitializer_declaration {#grammer_of_a_deinitializer_declaration} > 析构器声明语法 > -> +> deinitializer-declaration {#deinitializer-declaration} > > *析构器声明* → [*特性列表*](./07_Attributes.md#attributes)可选 **deinit** [*代码块*](#code-block) > - -## 扩展声明 - +## 扩展声明 {#extension_declaration} *扩展声明(extension declaration)* 可以扩展一个现存的类型的行为。扩展声明使用关键字 `extension`,遵循如下格式: ```swift @@ -1349,16 +1270,10 @@ extension 类型名称: 采纳的协议 where 约束条件 { 协议声明不能为现有的类添加类的继承关系,因此你只能在 “类型名称” 的冒号后面添加一系列协议。 - - -### 条件遵循 - +### 条件遵循 {#conditional_conformance} 你可以扩展一个泛型类型并使其有条件地遵循某协议,此后此类型的实例只有在特定的限制条件满足时才遵循此协议。在扩展声明中加入限制条件来为协议添加条件遵循。 - - -## 已重写的限制条件会在某些泛型上下文中失效 - +## 已重写的限制条件会在某些泛型上下文中失效 {#overridden_requirements_aren't_Used_in_some_generic_contexts} 对于一些通过条件遵循获得了特定行为的类型,在某些泛型上下文中,并不能够确保能够使用协议限制中的特定实现。为了说明这个行为,下面的例子中定义了两个协议以及一个有条件地遵循两个协议的泛型类型。 ```swift @@ -1422,16 +1337,10 @@ doSomething(with: oneAndTwo) 当传入 `doSomething(_:)` 的实例调用 `log()` 时,打印结果省略了自定义标题。 - - -### 协议遵循决不能冗余 - +### 协议遵循决不能冗余 {#protocol_conformance_must_not_be_redundant} 一个具体的类型只能够遵循某特定协议一次。Swift 会把冗余的协议遵循标记为错误。你会在两种场景中遇到这种错误。第一种场景是,使用不同的限制条件来多次显式地遵循同一协议。第二种场景是,多次隐式地继承同一协议。以上两种场景会在下面章节中讨论。 - - -## 解决显式冗余 - +## 解决显式冗余 {#resolving_explicit_redundancy} 对同一具体类型的多个扩展不能遵循同一协议,即便这些扩展有不同的显式限制条件。这个限制的具体示例在下面的例子中。两个扩展声明都试图添加对 `Serializable` 的条件遵循,一个为 `Int` 类型元素的数组,另一个为 `String` 类型元素的数组。 ```swift @@ -1470,10 +1379,7 @@ extension Array: Serializable where Element: SerializableInArray { } ``` - - -## 解决隐式冗余 - +## 解决隐式冗余 {#resolving_implicit_redundancy} 当一个具体类型有条件地遵循某协议,此类型会隐式地使用相同的条件遵循任一父协议。 如果你需要让一个类型有条件地遵循两个继承自同一父协议的协议,请显式地声明对父协议的遵循。这可以避免使用不同的限制条件隐式遵循同一父协议两次。 @@ -1510,15 +1416,15 @@ extension Array: Loggable where Element: MarkedLoggable { } // 报错: redundant conformance of 'Array' to protocol 'Loggable' ``` - +grammer_of_an_extension_declaration {#grammer_of_an_extension_declaration} > 扩展声明语法 > > -> +> extension-declaration {#extension-declaration} > > *扩展声明* → [特性](./07_Attributes.md#type_attributes)可选 [访问级别修饰符](#access-level-modifier)可选 **extension** [*类型标识符*](03_Types.md#type-identifier) [*类型-继承-子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*扩展主体*](#extension-body) > -> +> extension-body {#extension-body} > > *扩展主体* → **{** [*多条声明*](#declarations)可选 **}** > @@ -1527,10 +1433,7 @@ extension Array: Loggable where Element: MarkedLoggable { } > *单条声明* → [声明语句](#declarations) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > - - -## 下标声明 - +## 下标声明 {#subscript_declaration} *下标声明(subscript declaration)* 用于为特定类型的对象添加下标支持,通常也用于为访问集合、列表和序列中的元素提供语法便利。下标声明使用关键字 `subscript`,形式如下: ```swift @@ -1561,11 +1464,11 @@ subscript (参数列表) -> 返回类型 { 更多关于下标的信息和例子,请参阅 [下标](../chapter2/12_Subscripts.md)。 - +grammer_of_a_subscript_declaration {#grammer_of_a_subscript_declaration} > 下标声明语法 > > -> +> subscript-declaration {#subscript-declaration} > > *下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*代码块*](#code-block) > @@ -1573,18 +1476,16 @@ subscript (参数列表) -> 返回类型 { > > *下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*getter-setter 关键字代码块*](#getter-setter-keyword-block) > -> +> subscript-head {#subscript-head} > > *下标头* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **subscript** [*泛型参数子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) > -> +> subscript-result {#subscript-result} > > *下标结果* → **->** [*特性列表*](./07_Attributes.md#attributes)可选 [*类型*](./03_Types.md#type) > - -## 运算符声明 - +## 运算符声明 {#operator_declaration} *运算符声明(operator declaration)* 会向程序中引入中缀、前缀或后缀运算符,使用关键字 `operator` 来声明。 可以声明三种不同的缀性:中缀、前缀和后缀。运算符的缀性指定了运算符与其运算对象的相对位置。 @@ -1623,30 +1524,28 @@ postfix operator 运算符名称 {} 声明了一个新的运算符以后,需要实现一个跟这个运算符同名的函数来实现这个运算符。如果是实现一个前缀或者后缀运算符,也必须使用相符的 `prefix` 或者 `postfix` 声明修饰符标记函数声明。如果是实现中缀运算符,则不需要使用 `infix` 声明修饰符标记函数声明。关于如何实现一个新的运算符的例子,请参阅 [自定义运算符](../chapter2/26_Advanced_Operators.md#custom_operators)。 - +grammer_of_an_operator_declaration {#grammer_of_an_operator_declaration} > 运算符声明语法 > - +operator-declaration {#operator-declaration} > *运算符声明* → [*前缀运算符声明*](#prefix-operator-declaration) | [*后缀运算符声明*](#postfix-operator-declaration) | [*中缀运算符声明*](#infix-operator-declaration) > - +prefix-operator-declaration {#prefix-operator-declaration} > *前缀运算符声明* → **prefix** **运算符** [*运算符*](./02_Lexical_Structure.md#operator) **{** **}** > -> +> postfix-operator-declaration {#postfix-operator-declaration} > > *后缀运算符声明* → **postfix** **运算符** [*运算符*](./02_Lexical_Structure.html#operator) **{** **}** > -> +> infix-operator-declaration {#infix-operator-declaration} > > *中缀运算符声明* → **infix** **运算符** [*运算符*](./02_Lexical_Structure.md#operator) **{** [*中缀运算符属性*](#infix-operator-attributes)可选 **}** > - +infix-operator-group {#infix-operator-group} > *中缀运算符组* → [*优先级组名称*](#precedence-group-name) > - -## 优先级组声明 - +## 优先级组声明 {#precedence_group_declaration_modifiers} *优先级组声明(A precedence group declaration)* 会向程序的中缀运算符引入一个全新的优先级组。当没有用圆括号分组时,运算符优先级反应了运算符与它的操作数的关系的紧密程度。 优先级组的声明如下所示: @@ -1672,49 +1571,47 @@ Swift 定义了大量的优先级组来与标准库的运算符配合使用, 优先级组的赋值性表示在包含可选链操作时的运算符优先级。当设为 true 时,与优先级组对应的运算符在可选链操作中使用和标准库中赋值运算符同样的分组规则,当设为 false 或者不设置,该优先级组的运算符与不赋值的运算符遵循同样的可选链规则。 - +grammer_of_a_precedence_group_declaration {#grammer_of_a_precedence_group_declaration} > 优先级组声明语法 > - +precedence-group-declaration {#precedence-group-declaration} > *优先级组声明* → **precedence**[*优先级组名称*](#precedence-group-name){[*多优先级组属性*](#precedence-group-attributes)可选 } > - +precedence-group-attributes {#precedence-group-attributes} > *优先级组属性* → [*优先级组属性*](#precedence-group-attribute)[*多优先级组属性*](#precedence-group-attributes)可选 **{** **}** > - +precedence-group-attribute {#precedence-group-attribute} > *优先级组属性* → [*优先级组关系*](#precedence-group-relation) > > *优先级组属性* → [*优先级组赋值性*](#precedence-group-assignment) > > *优先级组属性* → [*优先级组相关性*](#precedence-group-associativity) > -> +> precedence-group-relation {#precedence-group-relation} > > *优先级组关系* → **higherThan:**[*多优先级组名称*](#precedence-group-names) > > *优先级组关系* → **lowerThan:**[*多优先级组名称*](#precedence-group-names) > -> +> precedence-group-assignment {#precedence-group-assignment} > > *优先级组赋值* → **assignment:**[*布尔字面值*](./02_Lexical_Structure.md#boolean-literal) > - +precedence-group-associativity {#precedence-group-associativity} > *优先级组结合性* → **associativity:left** > > *优先级组结合性* → **associativity:right** > > *优先级组结合性* → **associativity:none** > - +precedence-group-names {#precedence-group-names} > *多优先级组名称* → [*优先级组名称*](#precedence-group-name) | [*优先级组名称*](#precedence-group-name) | [*优先级组名称*](#precedence-group-name) > - +precedence-group-name {#precedence-group-name} > *优先级组名称* →[*标识符*](./02_Lexical_Structure.md#identifier) > - -## 声明修饰符 - +## 声明修饰符 {#Declaration_Modifiers} 声明修饰符都是关键字或上下文相关的关键字,可以修改一个声明的行为或者含义。可以在声明的特性(如果存在)和引入该声明的关键字之间,利用声明修饰符的关键字或上下文相关的关键字指定一个声明修饰符。 `dynamic` @@ -1757,9 +1654,7 @@ Swift 定义了大量的优先级组来与标准库的运算符配合使用, 该修饰符用于修饰变量或存储型变量属性,表示该变量或属性持有其存储的对象的弱引用。这种变量或属性的类型必须是可选的类类型。使用 `weak` 修饰符可避免强引用循环。关于 `weak` 修饰符的更多信息和例子,请参阅 [弱引用](../chapter2/23_Automatic_Reference_Counting.md#resolving_strong_reference_cycles_between_class_instances)。 - -### 访问控制级别 - +### 访问控制级别 {#access_control_levels} Swift 提供了三个级别的访问控制:`public`、`internal` 和 `private`。可以使用以下任意一种访问级别修饰符来指定声明的访问级别。访问控制在 [访问控制](../chapter2/25_Access_Control.md) 中有详细讨论。 `public` @@ -1776,19 +1671,19 @@ Swift 提供了三个级别的访问控制:`public`、`internal` 和 `private` 以上访问级别修饰符都可以选择带上一个参数,该参数由一对圆括号和其中的 `set` 关键字组成(例如,`private(set)`)。使用这种形式的访问级别修饰符来限制某个属性或下标的 setter 的访问级别低于其本身的访问级别,正如 [Getter 和 Setter](../chapter2/25_Access_Control.md#getters_and_setters) 中所讨论的。 - +grammer_of_a_declaration_modifier {#grammer_of_a_declaration_modifier} > 声明修饰符的语法 > - +declaration-modifier {#declaration-modifier} > *声明修饰符* → **class** | **convenience**| **dynamic** | **final** | **infix** | **lazy** | **mutating** | **nonmutating** | **optional** | **override** | **postfix** | **prefix** | **required** | **static** | **unowned** | **unowned ( safe )** | **unowned ( unsafe )** | **weak** > > 声明修饰符 → [*访问级别修饰符*](#access-level-modifier) > -> +> declaration-modifiers {#declaration-modifiers} > > *声明修饰符列表* → [*声明修饰符*](#declaration-modifier) [*声明修饰符列表*](#declaration-modifiers)可选 > - +access-level-modifier {#access-level-modifier} > 访问级别修饰符 → **internal** | **internal ( set )** > > 访问级别修饰符 → **private** | **private ( set )** diff --git a/source/chapter3/07_Attributes.md b/source/chapter3/07_Attributes.md index d4ee1edc..cabde055 100755 --- a/source/chapter3/07_Attributes.md +++ b/source/chapter3/07_Attributes.md @@ -10,13 +10,11 @@ 有些声明特性通过接收参数来指定特性的更多信息以及它是如何修饰某个特定的声明的。这些_特性的参数_写在圆括号内,它们的格式由它们所属的特性来定义。 - -## 声明特性 +## 声明特性 {#declaration_attributes} 声明特性只能应用于声明。 - -### `available` +### `available` {#available} 将 `available` 特性用于声明时,表示该声明的生命周期是相对于特定的平台和操作系统版本。 @@ -112,13 +110,11 @@ struct MyStruct { } ``` - -### `discardableResult` +### `discardableResult` {#discardableresult} 该特性用于的函数或方法声明,以抑制编译器中函数或方法的返回值被调而没有使用其结果的警告。 - -### `dynamicCallable` +### `dynamicCallable` {#dynamiccallable} 该特性用于类、结构体、枚举或协议,以将该类型的实例视为可调用的函数。该类型必须实现 `dynamicallyCall(withArguments:)`、`dynamicallyCall(withKeywordArguments:)` 方法之一,或两者同时实现。 @@ -183,8 +179,7 @@ print(repeatLabels(a: 1, b: 2, c: 3, b: 2, a: 1)) repeatLabels(a: "four") // Error ``` - -### `dynamicMemberLookup` +### `dynamicMemberLookup` {#dynamicmemberlookup} 该特性用于类、结构体、枚举或协议,让其能在运行时查找成员。该类型必须实现 `subscript(dynamicMemberLookup:)` 下标。 @@ -213,13 +208,11 @@ print(dynamic == equivalent) // 打印“true” ``` - -### `GKInspectable` +### `GKInspectable` {#gkinspectable} 应用此属性,暴露一个自定义 GameplayKit 组件属性给 SpriteKit 编辑器 UI。 - -### `inlinable` +### `inlinable` {#inlinable} 该特性用于函数、方法、计算属性、下标、便利构造器或析构器的声明,以将该声明的实现公开为模块公开接口的一部分。编译器允许在调用处把 `inlinable` 标记的符号替换为符号实现的副本。 @@ -227,8 +220,7 @@ print(dynamic == equivalent) 该特性不能用于嵌套在函数内的声明,也不能用于 `fileprivate` 或 `private` 访问级别的声明。在内联函数定义的函数和闭包是隐式非内联的,即使他们不能标记该特性。 - -### `nonobjc` +### `nonobjc` {#nonobjc} 该特性用于方法、属性、下标、或构造器的声明,这些声明本可以在 Objective-C 代码中使用,而使用 `nonobjc` 特性则告诉编译器这个声明不能在 Objective-C 代码中使用。 @@ -238,8 +230,7 @@ print(dynamic == equivalent) 标有 `nonobjc` 特性的方法不能重写标有 `objc` 特性的方法。然而,标有 `objc` 特性的方法可以重写标有 `nonobjc` 特性的方法。同样,标有 `nonobjc` 特性的方法不能满足标有 `@objc` 特性的协议中的方法要求。 - -### `NSApplicationMain` +### `NSApplicationMain` {#nsapplicationmain} 在类上使用该特性表示该类是应用程序委托类,使用该特性与调用 `NSApplicationMain(_:_:)` 函数并且把该类的名字作为委托类的名字传递给函数的效果相同。 @@ -250,20 +241,17 @@ import AppKit NSApplicationMain(CommandLine.argc, CommandLine.unsafeArgv) ``` - -### `NSCopying` +### `NSCopying` {#nscopying} 该特性用于修饰一个类的存储型变量属性。该特性将使属性的设值方法使用传入值的副本进行赋值,这个值由传入值的 `copyWithZone(_:)` 方法返回。该属性的类型必需符合 `NSCopying` 协议。 `NSCopying` 特性的行为与 Objective-C 中的 `copy` 特性相似。 - -### `NSManaged` +### `NSManaged` {#nsmanaged} 该特性用于修饰 `NSManagedObject` 子类中的实例方法或存储型变量属性,表明它们的实现由 `Core Data` 在运行时基于相关实体描述动态提供。对于标记了 `NSManaged` 特性的属性,`Core Data` 也会在运行时为其提供存储。应用这个特性也意味着 `objc` 特性。 - -### `objc` +### `objc` {#objc} 该特性用于修饰任何可以在 Objective-C 中表示的声明。比如,非嵌套类、协议、非泛型枚举(仅限原始值为整型的枚举)、类和协议中的属性和方法(包括存取方法)、构造器、析构器以及下标运算符。`objc` 特性告诉编译器这个声明可以在 Objective-C 代码中使用。 @@ -291,32 +279,27 @@ class ExampleClass: NSObject { } ``` - -### `objcMembers` +### `objcMembers` {#objcmembers} 该特性用于类声明,以将 `objc` 特性应用于该类、扩展、子类以及子类的扩展的所有 Objective-C 兼容成员。 大多数代码应该使用 `objc` 特性,以暴露所需的声明。如果需要暴露多个声明,可以将其分组到添加 `objc` 特性的扩展中。`objcMembers` 特性为大量使用 Objective-C 运行时的内省工具的库提供了便利。添加不必要的 `objc` 特性会增加二进制体积并影响性能。 - -### `requires_stored_property_inits` +### `requires_stored_property_inits` {#requires_stored_property_inits} 该特性用于类声明,以要求类中所有存储属性提供默认值作为其定义的一部分。对于从中继承的任何类都推断出 `NSManagedObject` 特性。 - -### `testable` +### `testable` {#testable} 在导入允许测试的编译模块时,该特性用于修饰 `import` 声明,这样就能访问被导入模块中的任何标有 `internal` 访问级别修饰符的实体,犹如它们被标记了 `public` 访问级别修饰符。测试也可以访问使用 `internal` 或者 `public` 访问级别修饰符标记的类和类成员,就像它们是 `open` 访问修饰符声明的。 - -### `UIApplicationMain` +### `UIApplicationMain` {#uiapplicationmain} 在类上使用该特性表示该类是应用程序委托类,使用该特性与调用 `UIApplicationMain` 函数并且把该类的名字作为委托类的名字传递给函数的效果相同。 如果你不想使用这个特性,可以提供一个 `main.swift` 文件,并在代码顶层调用 `UIApplicationMain(_:_:_:_:)` 函数。比如,如果你的应用程序使用一个继承于 UIApplication 的自定义子类作为主要类,你可以调用 `UIApplicationMain(_:_:_:_:)` 函数而不是使用该特性。 - -### `usableFromInline` +### `usableFromInline` {#usablefrominline} 该特性用于函数、方法、计算属性、下标、构造器或析构器的声明,以在同一模块中允许该符号用于内联代码的声明。声明必须具有 `internal` 访问级别修饰符。 @@ -324,16 +307,13 @@ class ExampleClass: NSObject { 标记为 `inlinable` 特性的声明,在内联代码中可以隐式使用。虽然 `inlinable` 或 `usableFromInline` 可以用于 `internal` 声明,但这两者不能同时使用。 - -### `warn_unqualified_access` +### `warn_unqualified_access` {#warn_unqualified_access} 该特性应用于顶级函数、实例方法、类方法或静态方法,以在没有前置限定符(例如模块名称、类型名称、实例变量或常量)的情况下使用该函数或方法时触发警告。使用该特性可以帮助减少在同一作用于访问同名函数之间的歧义。 例如,Swift 标准库包含 [`min(_:_:)`](https://developer.apple.com/documentation/swift/1538339-min/) 顶级函数和用于序列比较元素的 [`min()`](https://developer.apple.com/documentation/swift/sequence/1641174-min) 方法。序列方法声明使用了 `warn_unqualified_access`,以减少在 `Sequence` 扩展中使用它们的歧义。 - - -### Interface Builder 使用的声明特性 +### Interface Builder 使用的声明特性 {#declaration_attributes_used_by_interface_builder} `Interface Builder` 特性是 `Interface Builder` 用来与 Xcode 同步的声明特性。`Swift` 提供了以下的 `Interface Builder` 特性:`IBAction`,`IBOutlet`,`IBDesignable`,以及 `IBInspectable` 。这些特性与 Objective-C 中对应的特性在概念上是相同的。 @@ -341,18 +321,15 @@ class ExampleClass: NSObject { 应用 `IBAction`、`IBOutlet`、`IBDesignable` 或者 `IBInspectable` 特性都意味着同时应用 `objc` 特性。 - -## 类型特性 +## 类型特性 {#type_attributes} 类型特性只能用于修饰类型。 - -### `autoclosure` +### `autoclosure` {#autoclosure} 这个特性通过把表达式自动封装成无参数的闭包来延迟表达式的计算。它可以修饰类型为返回表达式结果类型的无参数函数类型的函数参数。关于如何使用 autoclosure 特性的例子,请参阅 [自动闭包](../chapter2/07_Closures.md#autoclosures) 和 [函数类型](./03_Types.md#function_type)。 - -### `convention` +### `convention` {#convention} 该特性用于修饰函数类型,它指出了函数调用的约定。 @@ -366,13 +343,11 @@ convention 特性总是与下面的参数之一一起出现。 使用 C 函数调用约定的函数也可用作使用 Objective-C 块调用约定的函数,同时使用 Objective-C 块调用约定的函数也可用作使用 Swift 函数调用约定的函数。然而,只有非泛型的全局函数、局部函数以及未捕获任何局部变量的闭包,才可以被用作使用 C 函数调用约定的函数。 - -### `escaping` +### `escaping` {#escaping} 在函数或者方法声明上使用该特性,它表示参数将不会被存储以供延迟执行,这将确保参数不会超出函数调用的生命周期。在使用 `escaping` 声明特性的函数类型中访问属性和方法时不需要显式地使用 `self.`。关于如何使用 `escaping` 特性的例子,请参阅 [逃逸闭包](../chapter2/07_Closures.md#escaping_closures)。 - -## Switch Case 特性 +## Switch Case 特性 {#switch_case_attributes} 你只能在 switch cases 中使用 switch case 特性。 @@ -383,28 +358,28 @@ convention 特性总是与下面的参数之一一起出现。 > 特性语法 > > -> +> attribute {#attribute} > > *特性*→ [特性名](#attribute_name) [特性参数子句](#atribute_argument_clause)可选 > -> +> attribute_name {#attribute_name} > > *特性名* → [标识符](./02_Lexical_Structure.md#identifier) > -> +> atribute_argument_clause {#atribute_argument_clause} > > *特性参数子句* → **(** [均衡令牌列表](#balanced_tokens)可选 **)** > -> +> attributes {#attributes} > > *特性列表* → [特性](#attribute) [特性列表](#attributes)可选 > > -> +> balanced_tokens {#balanced_tokens} > > *均衡令牌列表* → [均衡令牌](#balanced_token) [均衡令牌列表](#balanced_tokens)可选 > -> +> balanced_token {#balanced_token} > > *均衡令牌* → **(** [均衡令牌列表](#balanced_tokens)可选 **)** > diff --git a/source/chapter3/08_Patterns.md b/source/chapter3/08_Patterns.md index 76c0b2de..64e5512a 100755 --- a/source/chapter3/08_Patterns.md +++ b/source/chapter3/08_Patterns.md @@ -10,7 +10,7 @@ Swift 中的模式分为两类:一种能成功匹配任何类型的值,另 > 模式语法 > - +pattern {#pattern} > *模式* → [*通配符模式*](#wildcard_pattern) [*类型标注*](03_Types.md#type-annotation)可选 > > *模式* → [*标识符模式*](#identifier_pattern) [*类型标注*](03_Types.md#type-annotation)可选 @@ -40,13 +40,11 @@ for _ in 1...3 { > 通配符模式语法 > - +wildcard-pattern {#wildcard-pattern} > *通配符模式* → **_** > - -## 标识符模式(Identifier Pattern) - +## 标识符模式(Identifier Pattern) {#identifier_pattern} *标识符模式*匹配任何值,并将匹配的值和一个变量或常量绑定起来。例如,在下面的常量声明中,`someValue` 是一个标识符模式,匹配了 `Int` 类型的 `42`: ```swift @@ -59,13 +57,11 @@ let someValue = 42 > 标识符模式语法 > - +identifier-pattern {#identifier-pattern} > *标识符模式* → [*标识符*](./02_Lexical_Structure.md#identifier) > - -## 值绑定模式(Value-Binding Pattern) - +## 值绑定模式(Value-Binding Pattern) {#value-binding_pattern} *值绑定模式*把匹配到的值绑定给一个变量或常量。把匹配到的值绑定给常量时,用关键字 `let`,绑定给变量时,用关键字 `var`。 在值绑定模式中的标识符模式会把新命名的变量或常量与匹配到的值做绑定。例如,你可以拆开一个元组,然后把每个元素绑定到相应的标识符模式中。 @@ -84,13 +80,11 @@ case let (x, y): > 值绑定模式语法 > - +value-binding-pattern {#value-binding-pattern} > *值绑定模式* → **var** [*模式*](#pattern) | **let** [*模式*](#pattern) > - -## 元组模式 - +## 元组模式 {#tuple_pattern} *元组模式*是由逗号分隔的,具有零个或多个模式的列表,并由一对圆括号括起来。元组模式匹配相应元组类型的值。 你可以使用类型标注去限制一个元组模式能匹配哪种元组类型。例如,在常量声明 `let (x, y): (Int, Int) = (1, 2)` 中的元组模式 `(x, y): (Int, Int)` 只匹配两个元素都是 `Int` 类型的元组。 @@ -115,32 +109,28 @@ let (a): Int = 2 // a: Int = 2 > 元组模式语法 > - +tuple-pattern {#tuple-pattern} > *元组模式* → **(** [*元组模式元素列表*](#tuple-pattern-element-list)可选 **)** > - +tuple-pattern-element-list {#tuple-pattern-element-list} > *元组模式元素列表* → [*元组模式元素*](#tuple-pattern-element) | [*元组模式元素*](#tuple-pattern-element) **,** [*元组模式元素列表*](#tuple-pattern-element-list) > - +tuple-pattern-element {#tuple-pattern-element} > *元组模式元素* → [*模式*](#pattern) > - -## 枚举用例模式(Enumeration Case Pattern) - +## 枚举用例模式(Enumeration Case Pattern) {#enumeration_case_pattern} *枚举用例模式*匹配现有的某个枚举类型的某个用例。枚举用例模式出现在 `switch` 语句中的 `case` 标签中,以及 `if`、`while`、`guard` 和 `for-in` 语句的 `case` 条件中。 如果你准备匹配的枚举用例有任何关联的值,则相应的枚举用例模式必须指定一个包含每个关联值元素的元组模式。关于使用 `switch` 语句来匹配包含关联值的枚举用例的例子,请参阅 [关联值](../chapter2/08_Enumerations.md#associated_values)。 > 枚举用例模式语法 > - +enum-case-pattern {#enum-case-pattern} > *枚举用例模式* → [*类型标识*](./03_Types.md#type-identifier)可选 **.** [*枚举用例名*](./06_Declarations.md#enum-case-name) [*元组模式*](#tuple-pattern)可选 > - -## 可选模式(Optional Pattern) - +## 可选模式(Optional Pattern) {#optional_pattern} *可选模式*匹配包装在一个 `Optional(Wrapped)` 或者 `ExplicitlyUnwrappedOptional(Wrapped)` 枚举中的 `Some(Wrapped)` 用例中的值。可选模式由一个标识符模式和紧随其后的一个问号组成,可以像枚举用例模式一样使用。 由于可选模式是 `Optional` 和 `ImplicitlyUnwrappedOptional` 枚举用例模式的语法糖,下面两种写法是等效的: @@ -173,13 +163,11 @@ for case let number? in arrayOfOptinalInts { > 可选模式语法 > - +optional-pattern {#optional-pattern} > *可选模式* → [*标识符模式*](./03_Types.md#type-identifier) **?** > - -## 类型转换模式(Type-Casting Patterns) - +## 类型转换模式(Type-Casting Patterns) {#type-casting_patterns} 有两种类型转换模式,`is` 模式和 `as` 模式。`is` 模式只出现在 `switch` 语句中的 `case` 标签中。`is` 模式和 `as` 模式形式如下: > is `类型` @@ -195,19 +183,17 @@ for case let number? in arrayOfOptinalInts { > 类型转换模式语法 > - +type-casting-pattern {#type-casting-pattern} > *类型转换模式* → [*is 模式*](#is-pattern) | [*as 模式*](#as-pattern) > - +is-pattern {#is-pattern} > *is 模式* → **is** [*类型*](./03_Types.md#type) > - +as-pattern {#as-pattern} > *as 模式* → [*模式*](#pattern) **as** [*类型*](03_Types.md#type) > - -## 表达式模式(Expression Pattern) - +## 表达式模式(Expression Pattern) {#expression_pattern} *表达式模式*代表表达式的值。表达式模式只出现在 `switch` 语句中的 `case` 标签中。 表达式模式代表的表达式会使用 Swift 标准库中的 `~=` 运算符与输入表达式的值进行比较。如果 `~=` 运算符返回 `true`,则匹配成功。默认情况下,`~=` 运算符使用 `==` 运算符来比较两个相同类型的值。它也可以将一个整型数值与一个 `Range` 实例中的一段整数区间做匹配,正如下面这个例子所示: @@ -245,6 +231,6 @@ default: > 表达式模式语法 > - +expression-pattern {#expression-pattern} > *表达式模式* → [*表达式*](./04_Expressions.md#expression) > diff --git a/source/chapter3/09_Generic_Parameters_and_Arguments.md b/source/chapter3/09_Generic_Parameters_and_Arguments.md index ed0cac15..374157ce 100755 --- a/source/chapter3/09_Generic_Parameters_and_Arguments.md +++ b/source/chapter3/09_Generic_Parameters_and_Arguments.md @@ -4,9 +4,7 @@ 关于 Swift 语言的泛型概述,请参阅 [泛型](../chapter2/22_Generics.md)。 - -## 泛型形参子句 - +## 泛型形参子句 {#generic_parameter} *泛型形参子句*指定泛型类型或函数的类型形参,以及这些参数相关的约束和要求。泛型形参子句用尖括号(`<>`)包住,形式如下: > <`泛型形参列表`> @@ -38,9 +36,7 @@ simpleMax(17, 42) // T 被推断为 Int 类型 simpleMax(3.14159, 2.71828) // T 被推断为 Double 类型 ``` - -### Where 子句 - +### Where 子句 {#where_clauses} 要想对类型形参及其关联类型指定额外要求,可以在函数体或者类型的大括号之前添加 `where` 子句。`where` 子句由关键字 `where` 及其后的用逗号分隔的一个或多个要求组成。 > `where` : `类型要求` @@ -60,42 +56,40 @@ simpleMax(3.14159, 2.71828) // T 被推断为 Double 类型 > 泛型形参子句语法 > - +generic-parameter-clause {#generic-parameter-clause} > *泛型形参子句* → **<** [*泛型形参列表*](#generic-parameter-list) [*约束子句*](#requirement-clause)可选 **>** > - +generic-parameter-list {#generic-parameter-list} > *泛型形参列表* → [*泛形形参*](#generic-parameter) | [*泛形形参*](#generic-parameter) **,** [*泛型形参列表*](#generic-parameter-list) > - +generic-parameter {#generic-parameter} > *泛形形参* → [*类型名称*](./03_Types.md#type-name) > > *泛形形参* → [*类型名称*](./03_Types.md#type-name) **:** [*类型标识符*](./03_Types.md#type-identifier) > > *泛形形参* → [*类型名称*](./03_Types.md#type-name) **:** [*协议合成类型*](./03_Types.md#protocol-composition-type) > -> +> requirement-clause {#requirement-clause} > > *约束子句* → **where** [*约束列表*](#requirement-list) > - +requirement-list {#requirement-list} > *约束列表* → [*约束*](#requirement) | [*约束*](#requirement) **,** [*约束列表*](#requirement-list) > - +requirement {#requirement} > *约束* → [*一致性约束*](#conformance-requirement) | [*同类型约束*](#same-type-requirement) > -> +> conformance-requirement {#conformance-requirement} > > *一致性约束* → [*类型标识符*](./03_Types.md#type-identifier) **:** [*类型标识符*](./03_Types.md#type-identifier) > > *一致性约束* → [*类型标识符*](./03_Types.md#type-identifier) **:** [*协议合成类型*](./03_Types.md#protocol-composition-type) > - +same-type-requirement {#same-type-requirement} > *同类型约束* → [*类型标识符*](./03_Types.md#type-identifier) **==** [*类型*](./03_Types.md#type) > - -## 泛型实参子句 - +## 泛型实参子句 {#generic_argument} *泛型实参子句*指定泛型类型的类型实参。泛型实参子句用尖括号(`<>`)包住,形式如下: > <`泛型实参列表`> @@ -122,12 +116,12 @@ let arrayOfArrays: Array> = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] > 泛型实参子句语法 > - +generic-argument-clause {#generic-argument-clause} > *泛型实参子句* → **<** [*泛型实参列表*](#generic-argument-list) **>** > - +generic-argument-list {#generic-argument-list} > *泛型实参列表* → [*泛型实参*](#generic-argument) | [*泛型实参*](#generic-argument) **,** [*泛型实参列表*](#generic-argument-list) > - +generic-argument {#generic-argument} > *泛型实参* → [*类型*](./03_Types.md#type) > diff --git a/source/chapter3/10_Summary_of_the_Grammar.md b/source/chapter3/10_Summary_of_the_Grammar.md index d8ccc305..279ca9c8 100755 --- a/source/chapter3/10_Summary_of_the_Grammar.md +++ b/source/chapter3/10_Summary_of_the_Grammar.md @@ -1,7 +1,6 @@ # 语法总结(Summary of the Grammar) - -## 语句 +## 语句 {#statements} > 语句语法 > @@ -243,8 +242,7 @@ > *catch-clauses* → **catch** [*模式(pattern)*](TODO) _可选_ [*where-clause*](TODO) _可选_ [*代码块(code-block)*](TODO) _可选_ > - -## 泛型参数 +## 泛型参数 {#generic_parameters_and_arguments} > 泛型形参从句(Generic Parameter Clause)语法 > @@ -283,8 +281,7 @@ > *泛型参数* → [*类型*](./03_Types.md#type) > - -## 声明(Declarations) +## 声明(Declarations) {#declarations} > 声明语法 > @@ -666,8 +663,7 @@ > *访问级别修改器集* →[*访问级别修改器*](TODO) [*访问级别修改器集*](TODO) _可选_ > - -## 模式 +## 模式 {#patterns} > 模式(Patterns)语法 > @@ -751,8 +747,7 @@ > *表达式模式* → [*表达式*](./04_Expressions.md#expression) > - -## 属性 +## 属性 {#attributes} > 属性语法 > @@ -777,8 +772,7 @@ > *平衡令牌* → **任意标点除了(、)、[、]、{ 或 }** > - -## 表达式 +## 表达式 {#expressions} > 表达式语法 > @@ -1049,8 +1043,7 @@ > *可选链表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **?** > - -## 词法结构 +## 词法结构 {#lexical_structure} > 标识符语法 > @@ -1277,8 +1270,7 @@ > *后置运算符* → [*运算符*](./02_Lexical_Structure.md#operator) > - -## 类型 +## 类型 {#types} > 类型语法 > diff --git a/source/chapter4/02_Type_Custom.md b/source/chapter4/02_Type_Custom.md index 9ae1c210..3b82da08 100644 --- a/source/chapter4/02_Type_Custom.md +++ b/source/chapter4/02_Type_Custom.md @@ -15,8 +15,7 @@ 小伙伴们,Swift 中的 Bool 类型有着非常重要的语法功能,并支撑起了整个 Swift 体系中的逻辑判断体系,经过老码的研究和学习, Bool 类型本身其实是对基础 Boolean 类型封装,小伙伴们可能咬着手指头问老码,怎么一会 Bool 类型,一会 Boolean 类型,其区别在于,前者是基于枚举的组合类型,而后者则是基本类型,只有两种 true 和 false。 - -####自定义原型 +####自定义原型 {#prefix_expressions} 接下老码根据 Bool 的思想来创建一个 OCBool 类型,来让小伙伴们了解一下 Swift 中到底是怎么玩儿的。 来我们先看一下 OCBool 的定义。 @@ -35,8 +34,7 @@ case ocFalse - 代码中第2行和第3行,可以合并到一行写,如苹果官方 Blog 所写的一样 - 代码中命名需要注意:OCBool 是类型名,所以首字母必须大写,而 case 中的 ocTrue 和 ocFalse 是小类型则需要首字母小写。 - -####实现默认值 +####实现默认值 {#imp-default} 行,我们给了一个漂亮的定义,不过按照传统语言的经验,Bool 值默认情况下是假, 所以我们的 OCBool 也应该如此,我们使用类型扩展技术增加这个默认特性: @@ -61,8 +59,7 @@ var result:OCBool = OCBool() var result1:OCBool = .ocTrue ``` - -####支持基本布尔型初始化 +####支持基本布尔型初始化 {#init-by-bool} 正如上述代码所述,我们只能通过类型或者枚举项目赋值,这是组合类型的用法,但是编码的日子里,我们总是希望和 true,false 直接打交道,也就是说,我们希望这么做, 代码示例如下: @@ -113,8 +110,7 @@ protocol BooleanLiteralConvertible { - 这个定义中有个类方法 convertFromBooleanLiteral,它的参数为 BooleanLiteralType 类型,也就是我传入的 Bool 类型, 且返回值为实现这个协议的类型本身,在我们的 OCBool 类型中,其返回值就是 OCBool 本身。经过这个定义,我们可以直接对 OCBool 类型直接进行布尔字面量初始化了。 - -####支持 Bool 类型判断 +####支持 Bool 类型判断 {#condition-by-bool} 小伙伴们不安分, 肯定想着我怎么用它实现逻辑判断,所以如果你这么写, @@ -188,9 +184,7 @@ Program ended with exit code: 0 - 如果小伙伴们现在用的是 Beta 版的 Xcode,注意苹果官方 Blog 中,在代码第17行如果在 Xcode Beta4下是错误的,这里的协议是,LogicValue 而不是 BooleanVue,所以记得看错误提示才是好习惯。 - 注意代码第34行,完美支持 if 判断,且输出结果为“老码请你吃火锅”,老码也是说说而已,请不要当真。 - - -####支持兼容各们各派的类型 +####支持兼容各们各派的类型 {#support-all-type} 小伙伴们,江湖风险,门派众多,老码有自己的 OCBool 类型,可能嵩山少林有自己的 SSBool 类型,甚至连郭美美都可能有自己的 MMBool 类型,所以 OCBool 必须能够识别这些类型,这些各门各派的类型,只要支持 LogicValue 协议,就应该可以被识别,看老码怎么做, @@ -232,8 +226,7 @@ Program ended with exit code: 0 - 代码中第2行:“_”下横杠的用法,这是一个功能强大的小强,在此的目的是屏蔽外部参数名,所以小伙伴们可以直接:var ocResult:OCBool = OCBool(mmResult)而不是:var ocResult:OCBool = OCBool(v: mmResult),小伙伴们惊呆了!这个 init 函数中本来就没有外部参数名啊,还记得老码在书里说过没,Swift 的初始化函数会默认使用内部参数名,作为外部参数名。 - -####完善 OCBool 的布尔基因体系: +####完善 OCBool 的布尔基因体系: {#make-up-type} 小伙伴们,bool 类型的价值就是在于各种判断,诸如==,!=, &,|,^,!,以及各种组合逻辑运算,我们 OCBool 也要具备这些功能,否则就会基因缺陷,且看老码如何实现: diff --git a/source/chapter4/05_Value_and_Reference_Types.md b/source/chapter4/05_Value_and_Reference_Types.md index 25d5c473..df24e210 100644 --- a/source/chapter4/05_Value_and_Reference_Types.md +++ b/source/chapter4/05_Value_and_Reference_Types.md @@ -17,8 +17,7 @@ 在这篇博文里面,我们会介绍两种类型各自的优点,以及应该怎么选择使用。 - -#### 值类型与引用类型的区别 +#### 值类型与引用类型的区别 {#difference-two} 值类型和引用类型最基本的分别在复制之后的结果。当一个值类型被复制的时候,相当于创造了一个完全独立的实例,这个实例保有属于自己的独有数据,数据不会受到其他实例的数据变化影响: @@ -44,8 +43,7 @@ println("\(x.data), \(y.data)") // 输出结果 "42, 42" ``` - -#### Mutation(修改)在安全中扮演的角色 +#### Mutation(修改)在安全中扮演的角色 {#act-in=mutation} 值类型较引用类型来说,会让你更容易在大量代码中理清状况。如果你总是得到一个独立的拷贝出来的实例,你就可以放心它不会被你 app 里面的其他部分代码默默地修改。这在多线程的环境里面是尤为重要的,因为另外一个线程可能会在暗地里修改你的数据。因此可能会造成严重的程序错误,这在调试过程中非常难以排除。 @@ -53,8 +51,7 @@ 你可能在想,有的时候我可能也需要一个完全不变的类。这样使用 `Cocoa NSObject` 对象的时候会比较容易,又可以保留值语义的好处。在今天,你可以通过只使用不可变的存储属性,和避开任何可以修改状态的 API,用 Swift 写出一个不可变类 `(immutable class)`。实际上,很多基本的 Cocoa 类,例如 `NSURL`,都是设计成不可变类的。然而,Swift 语言目前只强制 `struct` 和 `enum` 这种值类型的不可变性,对类这种引用类型则没有。(例如还不支持强制将子类的限制为不可变类) - -#### 如何选择类型? +#### 如何选择类型? {#how-to-choose} 所以当我们想要建立一个新的类型的时候,怎么决定用值类型还是引用类型呢?当你使用 Cocoa 框架的时候,很多 API 都要通过 NSObject 的子类使用,所以这时候必须要用到引用类型 class。在其他情况下,有下面几个准则: diff --git a/source/chapter4/07_Optional_Case_Study.md b/source/chapter4/07_Optional_Case_Study.md index 4a38ee93..d54a68db 100644 --- a/source/chapter4/07_Optional_Case_Study.md +++ b/source/chapter4/07_Optional_Case_Study.md @@ -13,10 +13,10 @@ 可选类型是 Swift 中新引入的,功能很强大。在这篇博文里讨论的,是在 Swift 里,如何通过可选类型来保证强类型的安全性。作为例子,我们来创建一个 Objective-C API 的 Swift 版本,但实际上 Swift 本身并不需要这样的 API。 - -#### 为 Dictionary 增加 objectsForKeys 函数 +#### 为 Dictionary 增加 objectsForKeys 函数 {#add-function} -在 Objective-C 中,`NSDictionary` 有一个方法 `-objectsForKeys:NoFoundMarker:`, 这个方法需要一个 `NSArray` 数组作为键值参数,然后返回一个包含相关值的数组。文档里写到:“返回数组中的第 N 个值,和输入数组中的第 N 个值相对应”,那如果有某个键值在字典里不存在呢?于是就有了 `notFoundMarker` 作为返回提示。比如第三个键值没有找到,那么在返回数组中第三个值就是这个 `notFoundMarker`,而不是字典中的第三个值,但是这个值只是用来提醒原字典中没有找到对应值,但在返回数组中该元素存在,且用 `notFoundMarker` 作为占位符,因为这个对象不能直接使用,所以在 Foundation 框架中有个专门的类处理这个情况:`NSNull`。 +在 Objective-C 中,`NSDictionary` 有一个方法 `-objectsForKeys:NoFoundMarker:`, 这个方法需要一个 `NSArray` 数组作为键值参数,然后返回一个包含相关值的数组。文档里写到:“返回数组中的第 N 个值, +和输入数组中的第 N 个值相对应”,那如果有某个键值在字典里不存在呢?于是就有了 `notFoundMarker` 作为返回提示。比如第三个键值没有找到,那么在返回数组中第三个值就是这个 `notFoundMarker`,而不是字典中的第三个值,但是这个值只是用来提醒原字典中没有找到对应值,但在返回数组中该元素存在,且用 `notFoundMarker` 作为占位符,因为这个对象不能直接使用,所以在 Foundation 框架中有个专门的类处理这个情况:`NSNull`。 在 Swift 中,`Dictionary` 类没有类似 `objectsForKeys` 的函数,为了说明问题,我们动手加一个,并且使其成为操作字典值的通用方法。我们可以用 `extension` 来实现: @@ -43,8 +43,7 @@ extension Dictionary{ } ``` - -#### Swift 中更简便的方法 +#### Swift 中更简便的方法 {#easy-function} 小伙伴们可能会问,为什么 Swift 中不需要实现这么一个 API 呢?其实其有更简单的实现,如下面代码所示: @@ -73,8 +72,7 @@ t = dic.valuesForKeys([]) //结果为:[] ``` - -#### 内嵌可选类型 +#### 内嵌可选类型 {#nested-optional} 现在,如果我们为每一个结果调用 `last` 方法,看下结果如何? @@ -114,8 +112,7 @@ var last:T? { get } 不管是 Swift 版本还是 Objective-C 版本,返回值为 `nil` 都意味数组是空的,所以它就没有最后一个元素。 但是如果返回是 `Optional(nil)` 或者 Objective-C 中的 `NSNull` 都表示数组中的最后一个元素存在,但是元素的内容是空的。在 Objective-C 中只能借助 `NSNull` 作为占位符来达到这个目的,但是 Swift 却可以语言系统类型的角度的实现。 - -#### 提供一个默认值 +#### 提供一个默认值 {#provide-default} 进一步封装,如果我字典中的某个或某些元素不存在,我们想提供一个默认值怎么办呢?实现方法很简单: From 964478ed72c2d7ef0bd7871895e91a2c6cdeadb3 Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Wed, 27 Mar 2019 00:29:15 -0500 Subject: [PATCH 057/107] fix none head anchor --- source/chapter3/02_Lexical_Structure.md | 114 ++++----- source/chapter3/03_Types.md | 100 +++----- source/chapter3/04_Expressions.md | 122 ++++----- source/chapter3/05_Statements.md | 142 +++++----- source/chapter3/06_Declarations.md | 242 +++++++++--------- source/chapter3/07_Attributes.md | 12 +- source/chapter3/08_Patterns.md | 26 +- .../09_Generic_Parameters_and_Arguments.md | 22 +- 8 files changed, 377 insertions(+), 403 deletions(-) diff --git a/source/chapter3/02_Lexical_Structure.md b/source/chapter3/02_Lexical_Structure.md index c04c0ce7..afc994f3 100755 --- a/source/chapter3/02_Lexical_Structure.md +++ b/source/chapter3/02_Lexical_Structure.md @@ -13,7 +13,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > 空白语法 > -whitespace {#whitespace} +###### {#whitespace} > *空白* → [*空白项*](#whitespace-item) [*空白*](#whitespace)可选 > > *空白项* → [*断行符*](#line-break) @@ -25,7 +25,7 @@ whitespace {#whitespace} > *空白项* → U+0000,U+0009,U+000B,U+000C 或者 U+0020 > -line-break {#line-break} +###### {#line-break} > *断行符* → U+000A > > *断行符* → U+000D @@ -33,7 +33,7 @@ line-break {#line-break} > *断行符* → U+000D 接着是 U+000A > -comment {#comment} +###### {#comment} > *注释* → // [*注释内容 断行*](#comment-text line-break) > > *多行注释* → `/*` [*多行注释内容*](#multiline-commnet-text) `*/` @@ -64,7 +64,7 @@ comment {#comment} > 标识符语法 > -identifier {#identifier} +###### {#identifier} > *标识符* → [*头部标识符*](#identifier-head) [*标识符字符组*](#identifier-characters)可选 > > *标识符* → \`[*头部标识符*](#identifier-head) [*标识符字符组*](#identifier-characters)可选\` @@ -72,11 +72,11 @@ identifier {#identifier} > *标识符* → [*隐式参数名*](#implicit-parameter-name) > -identifier-list {#identifier-list} +###### {#identifier-list} > *标识符列表* → [*标识符*](#identifier) | [*标识符*](#identifier) **,** [*标识符列表*](#identifier-list) > -identifier-head {#identifier-head} +###### {#identifier-head} > *头部标识符* → 大写或小写字母 A - Z > > *头部标识符* → _ @@ -110,19 +110,19 @@ identifier-head {#identifier-head} > *头部标识符* → U+D0000–U+DFFFD 或者 U+E0000–U+EFFFD > -identifier-character {#identifier-character} +###### {#identifier-character} > *标识符字符* → 数值 0 - 9 > > *标识符字符* → U+0300–U+036F,U+1DC0–U+1DFF,U+20D0–U+20FF,或者 U+FE20–U+FE2F > > *标识符字符* → [*头部标识符*](#identifier-head) > -> identifier-characters {#identifier-characters} +> ###### identifier-characters {#identifier-characters} > > *标识符字符组* → [*标识符字符*](#identifier-character) [*标识符字符组*](#identifier-characters)可选 > -implicit-parameter-name {#implicit-parameter-name} +###### {#implicit-parameter-name} > *隐式参数名* → **$** [*十进制数字列表*](#decimal-digits) > @@ -161,14 +161,14 @@ true // 布尔值字面量 > *字面量* → [*数值字面量*](#numeric-literal) | [*字符串字面量*](#string-literal) | [*布尔值字面量*](#boolean-literal) | [*nil 字面量*](#nil-literal) > -numeric-literal {#numeric-literal} +###### {#numeric-literal} > *数值字面量* → **-**可选 [*整数字面量*](#integer-literal) | **-**可选 [*浮点数字面量*](#floating-point-literal) > -> boolean-literal {#boolean-literal} +> ###### boolean-literal {#boolean-literal} > > *布尔值字面量* → **true** | **false** > -> nil-literal {#nil-literal} +> ###### nil-literal {#nil-literal} > > *nil 字面量* → **nil** > @@ -187,7 +187,7 @@ numeric-literal {#numeric-literal} > 整数字面量语法 > -integer-literal {#integer-literal} +###### {#integer-literal} > *整数字面量* → [*二进制字面量*](#binary-literal) > > *整数字面量* → [*八进制字面量*](#octal-literal) @@ -197,70 +197,70 @@ integer-literal {#integer-literal} > *整数字面量* → [*十六进制字面量*](#hexadecimal-literal) > -binary-literal {#binary-literal} +###### {#binary-literal} > *二进制字面量* → **0b** [*二进制数字*](#binary-digit) [*二进制字面量字符组*](#binary-literal-characters)可选 > -> binary-digit {#binary-digit} +> ###### binary-digit {#binary-digit} > > *二进制数字* → 数值 0 到 1 > -> binary-literal-character {#binary-literal-character} +> ###### binary-literal-character {#binary-literal-character} > > *二进制字面量字符* → [*二进制数字*](#binary-digit) | _ > -> binary-literal-characters {#binary-literal-characters} +> ###### binary-literal-characters {#binary-literal-characters} > > *二进制字面量字符组* → [*二进制字面量字符*](#binary-literal-character) [*二进制字面量字符组*](#binary-literal-characters)可选 > -octal-literal {#octal-literal} +###### {#octal-literal} > *八进制字面量* → **0o** [*八进字数字*](#octal-digit) [*八进制字符组*](#octal-literal-characters)可选 > -> octal-digit {#octal-digit} +> ###### octal-digit {#octal-digit} > > *八进字数字* → 数值 0 到 7 > -> octal-literal-character {#octal-literal-character} +> ###### octal-literal-character {#octal-literal-character} > > *八进制字符* → [*八进字数字*](#octal-digit) | _ > -> octal-literal-characters {#octal-literal-characters} +> ###### octal-literal-characters {#octal-literal-characters} > > *八进制字符组* → [*八进制字符*](#octal-literal-character) [*八进制字符组*](#octal-literal-characters)可选 > -decimal-literal {#decimal-literal} +###### {#decimal-literal} > *十进制字面量* → [*十进制数字*](#decimal-digit) [*十进制字符组*](#decimal-literal-characters)可选 > -> decimal-digit {#decimal-digit} +> ###### decimal-digit {#decimal-digit} > > *十进制数字* → 数值 0 到 9 > -> decimal-digits {#decimal-digits} +> ###### decimal-digits {#decimal-digits} > > *十进制数字组* → [*十进制数字*](#decimal-digit) [*十进制数字组*](#decimal-digits)可选 > -> decimal-literal-character {#decimal-literal-character} +> ###### decimal-literal-character {#decimal-literal-character} > > *十进制字符* → [*十进制数字*](#decimal-digit) | _ > -> decimal-literal-characters {#decimal-literal-characters} +> ###### decimal-literal-characters {#decimal-literal-characters} > > *十进制字符组* → [*十进制字符*](#decimal-literal-character) [*十进制字符组*](#decimal-literal-characters)可选 > -hexadecimal-literal {#hexadecimal-literal} +###### {#hexadecimal-literal} > *十六进制字面量* → **0x** [*十六进制数字*](#hexadecimal-digit) [*十六进制字面量字符组*](#hexadecimal-literal-characters)可选 > -> hexadecimal-digit {#hexadecimal-digit} +> ###### hexadecimal-digit {#hexadecimal-digit} > > *十六进制数字* → 数值 0 到 9, 字母 a 到 f, 或 A 到 F > -> hexadecimal-literal-character {#hexadecimal-literal-character} +> ###### hexadecimal-literal-character {#hexadecimal-literal-character} > > *十六进制字符* → [*十六进制数字*](#hexadecimal-digit) | _ > -> hexadecimal-literal-characters {#hexadecimal-literal-characters} +> ###### hexadecimal-literal-characters {#hexadecimal-literal-characters} > > *十六进制字面量字符组* → [*十六进制字符*](#hexadecimal-literal-character) [*十六进制字面量字符组*](#hexadecimal-literal-characters)可选 > @@ -283,36 +283,36 @@ hexadecimal-literal {#hexadecimal-literal} > 浮点数字面量语法 > -floating-point-literal {#floating-point-literal} +###### {#floating-point-literal} > *浮点数字面量* → [*十进制字面量*](#decimal-literal) [*十进制分数*](#decimal-fraction)可选 [*十进制指数*](#decimal-exponent)可选 > > *浮点数字面量* → [*十六进制字面量*](#hexadecimal-literal) [*十六进制分数*](#hexadecimal-fraction)可选 [*十六进制指数*](#hexadecimal-exponent) > -decimal-fraction {#decimal-fraction} +###### {#decimal-fraction} > *十进制分数* → **.** [*十进制字面量*](#decimal-literal) > -> decimal-exponent {#decimal-exponent} +> ###### decimal-exponent {#decimal-exponent} > > *十进制指数* → [*十进制指数 e*](#floating-point-e) [*正负号*](#sign)可选 [*十进制字面量*](#decimal-literal) > -hexadecimal-fraction {#hexadecimal-fraction} +###### {#hexadecimal-fraction} > *十六进制分数* → **.** [*十六进制数字*](#hexadecimal-digit) [*十六进制字面量字符组*](#hexadecimal-literal-characters)可选 > -> hexadecimal-exponent {#hexadecimal-exponent} +> ###### hexadecimal-exponent {#hexadecimal-exponent} > > *十六进制指数* → [*十六进制指数 p*](#floating-point-p) [*正负号*](#sign)可选 [*十进制字面量*](#decimal-literal) > -floating-point-e {#floating-point-e} +###### {#floating-point-e} > *十进制指数 e* → **e** | **E** > -> floating-point-p {#floating-point-p} +> ###### floating-point-p {#floating-point-p} > > *十六进制指数 p* → **p** | **P** > -> sign {#sign} +> ###### sign {#sign} > > *正负号* → **+** | **-** > @@ -378,42 +378,42 @@ let textB = "Hello world" > 字符串字面量语法 > -string-literal {#string-literal} +###### {#string-literal} > *字符串字面量* → [*静态字符串字面量*](#static-string-literal) | [*插值字符串字面量*](#interpolated-string-literal) > -static-string-literal {#static-string-literal} +###### {#static-string-literal} > *静态字符串字面量* → **"**[*引用文本*](#quoted-text)可选**"** > -> quoted-text {#quoted-text} +> ###### quoted-text {#quoted-text} > > *引用文本* → [*引用文本项*](#quoted-text-item) [*引用文本*](#quoted-text)可选 > -> quoted-text-item {#quoted-text-item} +> ###### quoted-text-item {#quoted-text-item} > > *引用文本项* → [*转义字符*](#escaped-character) > > *引用文本项* → 除了 **"**、**\\**、U+000A、U+000D 以外的所有 Unicode 字符 > -interpolated-string-literal {#interpolated-string-literal} +###### {#interpolated-string-literal} > *插值字符串字面量* → **"**[*插值文本*](#interpolated-text)可选**"** > -> interpolated-text {#interpolated-text} +> ###### interpolated-text {#interpolated-text} > > *插值文本* → [*插值文本项*](#interpolated-text-item) [*插值文本*](#interpolated-text)可选 > -> interpolated-text-item {#interpolated-text-item} +> ###### interpolated-text-item {#interpolated-text-item} > > *插值文本项* → **\\****(**[*表达式*](./04_Expressions.md)**)** | [*引用文本项*](#quoted-text-item) > -escaped-character {#escaped-character} +###### {#escaped-character} > *转义字符* → **\\****0** | **\\****\\** | **\t** | **\n** | **\r** | **\\"** | **\\'** > > *转义字符* → **\u {** [*unicode 标量数字*](#unicode-scalar-digits) **}** > -> unicode-scalar-digits {#unicode-scalar-digits} +> ###### unicode-scalar-digits {#unicode-scalar-digits} > > *unicode 标量数字* → 一到八位的十六进制数字 > @@ -450,13 +450,13 @@ Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基 > 运算符语法 > -operator {#operator} +###### {#operator} > *运算符* → [*头部运算符*](#operator-head) [*运算符字符组*](#operator-characters)可选 > > *运算符* → [*头部点运算符*](#dot-operator-head) [*点运算符字符组*](#dot-operator-characters)可选 > -operator-head {#operator-head} +###### {#operator-head} > *头部运算符* → **/** | **=** | **-** | **+** | **!** | __*__ | **%** | **<** | **>** | **&** | **|** | **^** | **~** | **?** > > *头部运算符* → U+00A1–U+00A7 @@ -488,7 +488,7 @@ operator-head {#operator-head} > *头部运算符* → U+3008–U+3030 > -operator-character {#operator-character} +###### {#operator-character} > *运算符字符* → [*头部运算符*](#operator-head) > > *运算符字符* → U+0300–U+036F @@ -503,31 +503,31 @@ operator-character {#operator-character} > > *运算符字符* → U+E0100–U+E01EF > -> operator-characters {#operator-characters} +> ###### operator-characters {#operator-characters} > > *运算符字符组* → [*运算符字符*](#operator-character) [*运算符字符组*](#operator-characters)可选 > -dot-operator-head {#dot-operator-head} +###### {#dot-operator-head} > *头部点运算符* → **..** > -> dot-operator-character {#dot-operator-character} +> ###### dot-operator-character {#dot-operator-character} > > *点运算符字符* → **.** | [*运算符字符*](#operator-character) > -> dot-operator-characters {#dot-operator-characters} +> ###### dot-operator-characters {#dot-operator-characters} > > *点运算符字符组* → [*点运算符字符*](#dot-operator-character) [*点运算符字符组*](#dot-operator-characters)可选 > -binary-operator {#binary-operator} +###### {#binary-operator} > *二元运算符* → [*运算符*](#operator) > -> prefix-operator {#prefix-operator} +> ###### prefix-operator {#prefix-operator} > > *前缀运算符* → [*运算符*](#operator) > -> postfix-operator {#postfix-operator} +> ###### postfix-operator {#postfix-operator} > > *后缀运算符* → [*运算符*](#operator) > diff --git a/source/chapter3/03_Types.md b/source/chapter3/03_Types.md index 0d96571f..e5627a56 100644 --- a/source/chapter3/03_Types.md +++ b/source/chapter3/03_Types.md @@ -27,7 +27,7 @@ Swift 语言存在两种类型:命名型类型和复合型类型。命名型 > 类型语法 > -type {#type} +###### {#type} > *类型* → [*数组类型*](#array-type) > > *类型* → [*字典类型*](#dictionary-type) @@ -53,9 +53,7 @@ type {#type} > *类型* → [*(类型)*](#type) > -type_annotation {#type_annotation} -## 类型注解 - +## 类型注解 {#type_annotation} 类型注解显式地指定一个变量或表达式的值。类型注解始于冒号 `:` 终于类型,比如下面两个例子: ```swift @@ -69,13 +67,11 @@ func someFunction(a: Int) { /* ... */ } > 类型注解语法 > -type-annotation {#type-annotation} +###### {#type-annotation} > *类型注解* → **:** [*特性列表*](./07_Attributes.md#attributes)可选 **输入输出参数**可选 [*类型*](#type) > -type_identifier {#type_identifier} -## 类型标识符 - +## 类型标识符 {#type_identifier} 类型标识符引用命名型类型,还可引用命名型或复合型类型的别名。 大多数情况下,类型标识符引用的是与之同名的命名型类型。例如类型标识符 `Int` 引用命名型类型 `Int`,同样,类型标识符 `Dictionary` 引用命名型类型 `Dictionary`。 @@ -95,16 +91,14 @@ var someValue: ExampleModule.MyType > 类型标识符语法 > -type-identifier {#type-identifier} +###### {#type-identifier} > *类型标识符* → [*类型名称*](#type-name) [*泛型参数子句*](08_Generic_Parameters_and_Arguments.md#generic_argument_clause)可选 | [*类型名称*](#type-name) [*泛型参数子句*](08_Generic_Parameters_and_Arguments.md#generic_argument_clause)可选 **.** [*类型标识符*](#type-identifier) > -type-name {#type-name} +###### {#type-name} > *类型名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > -tuple_type {#tuple_type} -## 元组类型 - +## 元组类型 {#tuple_type} 元组类型是使用括号括起来的零个或多个类型,类型间用逗号隔开。 你可以使用元组类型作为一个函数的返回类型,这样就可以使函数返回多个值。你也可以命名元组类型中的元素,然后用这些名字来引用每个元素的值。元素的名字由一个标识符紧跟一个冒号 `(:)` 组成。[函数和多返回值](../chapter2/06_Functions.md#functions_with_multiple_return_values) 章节里有一个展示上述特性的例子。 @@ -122,22 +116,20 @@ someTuple = (left: 5, right: 5) // 错误:命名类型不匹配 > 元组类型语法 > -tuple-type {#tuple-type} +###### {#tuple-type} > *元组类型* → **(** [*元组类型元素列表*](#tuple-type-element-list) 可选 **)** > -tuple-type-element-list {#tuple-type-element-list} +###### {#tuple-type-element-list} > *元组类型元素列表* → [*元组类型元素*](#tuple-type-element) | [*元组类型元素*](#tuple-type-element) **,** [*元组类型元素列表*](#tuple-type-element-list) > -tuple-type-element {#tuple-type-element} +###### {#tuple-type-element} > *元组类型元素* → [*元素名*](#element-name) [*类型注解*](#type-annotation) | [*类型*](#type) > -element-name {#element-name} +###### {#element-name} > *元素名* → [*标识符*](./02_Lexical_Structure.md#identifier) > -function_type {#function_type} -## 函数类型 - +## 函数类型 {#function_type} 函数类型表示一个函数、方法或闭包的类型,它由参数类型和返回值类型组成,中间用箭头(`->`)隔开: > `参数类型` -> `返回值类型` @@ -190,9 +182,7 @@ var operation: (Int, Int) -> Int // 正确 函数类型若要抛出错误就必须使用 `throws` 关键字来标记,若要重抛错误则必须使用 `rethrows` 关键字来标记。`throws` 关键字是函数类型的一部分,非抛出函数是抛出函数函数的一个子类型。因此,在使用抛出函数的地方也可以使用不抛出函数。抛出和重抛函数的相关描述见章节 [抛出函数与方法](./06_Declarations.md#throwing_functions_and_methods) 和 [重抛函数与方法](./06_Declarations.md#rethrowing_functions_and_methods)。 -Restrictions for Nonescaping Closures {#Restrictions for Nonescaping Closures} -### 对非逃逸闭包的限制 -非逃逸闭包函数不能作为参数传递到另一个非逃逸闭包函数的参数。这样的限制可以让 Swift 在编译时就完成更多的内存访问冲突检查, 而不是在运行时。举个例子: +### 对非逃逸闭包的限制 {#Restrictions for Nonescaping Closures}非逃逸闭包函数不能作为参数传递到另一个非逃逸闭包函数的参数。这样的限制可以让 Swift 在编译时就完成更多的内存访问冲突检查, 而不是在运行时。举个例子: ```swift let external: (Any) -> Void = { _ in () } @@ -219,29 +209,27 @@ func takesTwoFunctions(first: (Any) -> Void, second: (Any) -> Void) { > 函数类型语法 > -function-type {#function-type} +###### {#function-type} > *函数类型* → [*特性列表*](./07_Attributes.md#attributes)可选 [*函数类型子句*](#function-type-argument-clause) **throws**可选 **->** [*类型*](#type) > > *函数类型* → [*特性列表*](./07_Attributes.md#attributes)可选 [*函数类型子句*](#function-type-argument-clause) **rethrows­** **->** [*类型*](#type) > -function-type-argument-clause {#function-type-argument-clause} +###### {#function-type-argument-clause} > *函数类型子句* → (­)­ > > *函数类型子句* → ([*函数类型参数列表*](#function-type-argument-list)*...*­可选)­ > -function-type-argument-list {#function-type-argument-list} +###### {#function-type-argument-list} > *函数类型参数列表* → [*函数类型参数*](function-type-argument) | [*函数类型参数*](function-type-argument), [*函数类型参数列表*](#function-type-argument-list) > -function-type-argument {#function-type-argument} +###### {#function-type-argument} > *函数类型参数* → [*特性列表*](./07_Attributes.md#attributes)可选 **输入输出参数**可选 [*类型*](#type) | [*参数标签*](#argument-label) [*类型注解*](#type-annotation) > -argument-label {#argument-label} +###### {#argument-label} > *参数标签* → [*标识符*](./02_Lexical_Structure.md#identifier) > -array_type {#array_type} -## 数组类型 - +## 数组类型 {#array_type} Swift 语言为标准库中定义的 `Array` 类型提供了如下语法糖: > [`类型`] @@ -269,13 +257,11 @@ var array3D: [[[Int]]] = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]] > 数组类型语法 > -array-type {#array-type} +###### {#array-type} > *数组类型* → **[** [*类型*](#type) **]** > -dictionary_type {#dictionary_type} -## 字典类型 - +## 字典类型 {#dictionary_type} Swift 语言为标准库中定义的 `Dictionary` 类型提供了如下语法糖: > [`键类型` : `值类型`] @@ -299,13 +285,11 @@ let someDictionary: Dictionary = ["Alex": 31, "Paul": 39] > 字典类型语法 > -dictionary-type {#dictionary-type} +###### {#dictionary-type} > *字典类型* → **[** [*类型*](#type) **:** [*类型*](#type) **]** > -optional_type {#optional_type} -## 可选类型 - +## 可选类型 {#optional_type} Swift 定义后缀 `?` 来作为标准库中的定义的命名型类型 `Optional` 的语法糖。换句话说,下面两个声明是等价的: ```swift @@ -332,13 +316,11 @@ optionalInteger! // 42 > 可选类型语法 > -optional-type {#optional-type} +###### {#optional-type} > *可选类型* → [*类型*](#type) **?** > -implicitly_unwrapped_optional_type {#implicitly_unwrapped_optional_type} -## 隐式解析可选类型 - +## 隐式解析可选类型 {#implicitly_unwrapped_optional_type} 当可以被访问时,Swift 语言定义后缀 `!` 作为标准库中命名类型 `Optional` 的语法糖,来实现自动解包的功能。换句话说,下面两个声明等价: ```swift @@ -368,13 +350,11 @@ let implicitlyUnwrappedArray: [Int]! // 正确 > 隐式解析可选类型语法 > -implicitly-unwrapped-optional-type {#implicitly-unwrapped-optional-type} +###### {#implicitly-unwrapped-optional-type} > *隐式解析可选类型* → [*类型*](#type) **!** > -protocol_composition_type {#protocol_composition_type} -## 协议合成类型 - +## 协议合成类型 {#protocol_composition_type} 协议合成类型是一种符合协议列表中每个指定协议的类型。协议合成类型可能会用在类型注解和泛型参数中。 协议合成类型的形式如下: @@ -388,19 +368,17 @@ protocol_composition_type {#protocol_composition_type} > 协议合成类型语法 > -protocol-composition-type {#protocol-composition-type} +###### {#protocol-composition-type} > *协议合成类型* → [*协议标识符*](#protocol-identifier) & [*协议合成延续*](#protocol-composition-continuation) > -protocol-composition-continuation {#protocol-composition-continuation} +###### {#protocol-composition-continuation} > *协议合成延续* → [*协议标识符*](#protocol-identifier) | [*协议合成类型*](#protocol-composition-type) > -protocol-identifier {#protocol-identifier} +###### {#protocol-identifier} > *协议标识符* → [*类型标识符*](#type-identifier) > -metatype_type {#metatype_type} -## 元类型 - +## 元类型 {#metatype_type} 元类型是指类型的类型,包括类类型、结构体类型、枚举类型和协议类型。 类、结构体或枚举类型的元类型是相应的类型名紧跟 `.Type`。协议类型的元类型——并不是运行时符合该协议的具体类型——而是该协议名字紧跟 `.Protocol`。比如,类 `SomeClass` 的元类型就是 `SomeClass.Type`,协议 `SomeProtocol` 的元类型就是 `SomeProtocal.Protocol`。 @@ -445,13 +423,11 @@ let anotherInstance = metatype.init(string: "some string") > 元类型语法 > -metatype-type {#metatype-type} +###### {#metatype-type} > *元类型* → [*类型*](#type) **.** **Type** | [*类型*](#type) **.** **Protocol** > -type_inheritance_clause {#type_inheritance_clause} -## 类型继承子句 - +## 类型继承子句 {#type_inheritance_clause} 类型继承子句被用来指定一个命名型类型继承自哪个类、采纳哪些协议。类型继承子句也用来指定一个类类型专属协议。类型继承子句开始于冒号 `:`,其后是所需要的类、类型标识符列表或两者都有。 类可以继承单个超类,采纳任意数量的协议。当定义一个类时,超类的名字必须出现在类型标识符列表首位,然后跟上该类需要采纳的任意数量的协议。如果一个类不是从其它类继承而来,那么列表可以以协议开头。关于类继承更多的讨论和例子,请参阅 [继承](../chapter2/13_Inheritance.md)。 @@ -462,18 +438,16 @@ type_inheritance_clause {#type_inheritance_clause} > 类型继承子句语法 > -type_inheritance_clause {#type_inheritance_clause} +###### {#type_inheritance_clause} > *类型继承子句* → **:** [*类型继承列表*](#type-inheritance-list) > -type-inheritance-list {#type-inheritance-list} +###### {#type-inheritance-list} > *类型继承列表* → [*类型标识符*](#type-identifier) | [*类型标识符*](#type-identifier) **,** [*类型继承列表*](#type-inheritance-list) > -class-requirement {#class-requirement} +###### {#class-requirement} -type_inference {#type_inference} -## 类型推断 - +## 类型推断 {#type_inference} Swift 广泛使用类型推断,从而允许你省略代码中很多变量和表达式的类型或部分类型。比如,对于 `var x: Int = 0`,你可以完全省略类型而简写成 `var x = 0`,编译器会正确推断出 `x` 的类型 `Int`。类似的,当完整的类型可以从上下文推断出来时,你也可以省略类型的一部分。比如,如果你写了 `let dict: Dictionary = ["A" : 1]`,编译器能推断出 `dict` 的类型是 `Dictionary`。 在上面的两个例子中,类型信息从表达式树的叶子节点传向根节点。也就是说,`var x: Int = 0` 中 `x` 的类型首先根据 `0` 的类型进行推断,然后将该类型信息传递到根节点(变量 `x`)。 diff --git a/source/chapter3/04_Expressions.md b/source/chapter3/04_Expressions.md index e80943a3..7eebe85c 100644 --- a/source/chapter3/04_Expressions.md +++ b/source/chapter3/04_Expressions.md @@ -6,10 +6,10 @@ Swift 中存在四种表达式:前缀表达式,二元表达式,基本表 > 表达式语法 > -expression {#expression} +###### {#expression} > *表达式* → [*try 运算符*](#try-operator)可选 [*前缀表达式*](#prefix-expression) [*二元表达式列表*](#binary-expressions)可选 > -expression-list {#expression-list} +###### {#expression-list} > *表达式列表* → [*表达式*](#expression) | [*表达式*](#expression) **,** [*表达式列表*](#expression-list) > @@ -24,12 +24,12 @@ expression-list {#expression-list} > 前缀表达式语法 > -prefix-expression {#prefix-expression} +###### {#prefix-expression} > *前缀表达式* → [*前缀运算符*](./02_Lexical_Structure.md#prefix-operator)可选 [*后缀表达式*](#postfix-expression) > > *前缀表达式* → [*输入输出表达式*](#in-out-expression) > -in-out-expression {#in-out-expression} +###### {#in-out-expression} > *输入输出表达式* → **&** [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -66,7 +66,7 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try 关于 `try`、`try?` 和 `try!` 的更多信息,以及该如何使用的例子,请参阅 [错误处理](../chapter2/17_Error_Handling.md)。 > Try 表达式语法 > -try-operator {#try-operator} +###### {#try-operator} > *try 运算符* → **try** | **try?** | **try!** > @@ -85,7 +85,7 @@ try-operator {#try-operator} > 在解析时,一个二元表达式将作为一个扁平列表表示,然后根据运算符的优先级,再进一步进行组合。例如,`2 + 3 * 5` 首先被看作具有五个元素的列表,即 `2`、`+`、`3`、`*`、`5`,随后根据运算符优先级组合为 `(2 + (3 * 5))`。 > -binary-expression {#binary-expression} +###### {#binary-expression} > 二元表达式语法 > > *二元表达式* → [*二元运算符*](./02_Lexical_Structure.md#binary-operator) [*前缀表达式*](#prefix-expression) @@ -96,7 +96,7 @@ binary-expression {#binary-expression} > > *二元表达式* → [*类型转换运算符*](#type-casting-operator) > -binary-expressions {#binary-expressions} +###### {#binary-expressions} > *二元表达式列表* → [*二元表达式*](#binary-expression) [*二元表达式列表*](#binary-expressions)可选 > @@ -117,7 +117,7 @@ binary-expressions {#binary-expressions} > 赋值运算符语法 > -assignment-operator {#assignment-operator} +###### {#assignment-operator} > *赋值运算符* → **=** > @@ -133,7 +133,7 @@ assignment-operator {#assignment-operator} > 三元条件运算符语法 > -conditional-operator {#conditional-operator} +###### {#conditional-operator} > *三元条件运算符* → **?** [*表达式*](#expression) **:** > @@ -176,7 +176,7 @@ f(x as Any) 关于类型转换的更多内容和例子,请参阅 [类型转换](../chapter2/18_Type_Casting.md)。 -type-casting-operator {#type-casting-operator} +###### {#type-casting-operator} > 类型转换运算符语法 > > *类型转换运算符* → **is** [*类型*](./03_Types.md#type) @@ -193,7 +193,7 @@ type-casting-operator {#type-casting-operator} > 基本表达式语法 > -primary-expression {#primary-expression} +###### {#primary-expression} > *基本表达式* → [*标识符*](./02_Lexical_Structure.md#identifier) [*泛型实参子句*](./09_Generic_Parameters_and_Arguments.md#generic-argument-clause)可选 > > *基本表达式* → [*字面量表达式*](#literal-expression) @@ -269,7 +269,7 @@ Xcode 使用 playground 字面量对程序编辑器中的颜色、文件或者 > 字面量表达式语法 > > -> literal-expression {#literal-expression} +> ###### literal-expression {#literal-expression} > > *字面量表达式* → [*字面量*](./02_Lexical_Structure.md#literal) > @@ -279,38 +279,38 @@ Xcode 使用 playground 字面量对程序编辑器中的颜色、文件或者 > -> array-literal {#array-literal} +> ###### array-literal {#array-literal} > > *数组字面量* → [[*数组字面量项列表*](#array-literal-items)可选 **]** > -> array-literal-items {#array-literal-items} +> ###### array-literal-items {#array-literal-items} > > *数组字面量项列表* → [*数组字面量项*](#array-literal-item) **,**可选 | [*数组字面量项*](#array-literal-item) **,** [*数组字面量项列表*](#array-literal-items) > -> array-literal-item {#array-literal-item} +> ###### array-literal-item {#array-literal-item} > > *数组字面量项* → [*表达式*](#expression) > > -> dictionary-literal {#dictionary-literal} +> ###### dictionary-literal {#dictionary-literal} > > *字典字面量* → [[*字典字面量项列表*](#dictionary-literal-items) **]** | **[** **:** **]** > -> dictionary-literal-items {#dictionary-literal-items} +> ###### dictionary-literal-items {#dictionary-literal-items} > > *字典字面量项列表* → [*字典字面量项*](#dictionary-literal-item) **,**可选 | [*字典字面量项*](#dictionary-literal-item) **,** [*字典字面量项列表*](#dictionary-literal-items) > -> dictionary-literal-item {#dictionary-literal-item} +> ###### dictionary-literal-item {#dictionary-literal-item} > > *字典字面量项* → [*表达式*](#expression) **:** [*表达式*](#expression)。 > -> playground-literal {#playground-literal} +> ###### playground-literal {#playground-literal} > > *playground 字面量* → **#colorLiteral ( red : [*表达式*](#expression) , green :[*表达式*](#expression) [*表达式*](#e[*表达式*](#expression) xpression) , blue :[*表达式*](#expression) , alpha : [*表达式*](#expression) )** > > *playground 字面量* → **#fileLiteral ( resourceName : [*表达式*](#expression) )** > -> playground 字面量* → **#imageLiteral ( resourceName : [*表达式*](#expression) )**self_expression {#self_expression} +> ###### playground 字面量* → **#imageLiteral ( resourceName : [*表达式*](#expression) )**self_expression {#self_expression} > ### Self 表达式 @@ -354,17 +354,17 @@ struct Point { > Self 表达式语法 > -self-expression {#self-expression} +###### {#self-expression} > *self 表达式* → **self** | [*self 方法表达式*](#self-method-expression) | [*self 下标表达式*](#self-subscript-expression) | [*self 构造器表达式*](#self-initializer-expression) > > -self-method-expression {#self-method-expression} +###### {#self-method-expression} > *self 方法表达式* → **self** **.** [*标识符*](./02_Lexical_Structure.md#identifier) > -self-subscript-expression {#self-subscript-expression} +###### {#self-subscript-expression} > *self 下标表达式* → **self** **[** [*函数调用参数表*](#function-call-argument-list­) **]** > -self-initializer-expression {#self-initializer-expression} +###### {#self-initializer-expression} > *self 构造器表达式* → **self** **.** **init** > @@ -384,16 +384,16 @@ self-initializer-expression {#self-initializer-expression} > 父类表达式语法 > -superclass-expression {#superclass-expression} +###### {#superclass-expression} > *父类表达式* → [*父类方法表达式*](#superclass-method-expression) | [*父类下标表达式*](#superclass-subscript-expression) | [*父类构造器表达式*](#superclass-initializer-expression) > -superclass-method-expression {#superclass-method-expression} +###### {#superclass-method-expression} > *父类方法表达式* → **super** **.** [*标识符*](./02_Lexical_Structure.md#identifier) > -superclass-subscript-expression {#superclass-subscript-expression} +###### {#superclass-subscript-expression} > *父类下标表达式* → **super** [[*函数调用参数表*](#function-call-argument-list­) **]** > -superclass-initializer-expression {#superclass-initializer-expression} +###### {#superclass-initializer-expression} > *父类构造器表达式* → **super** **.** **init** > @@ -501,12 +501,12 @@ myFunction { [weak parent = self.parent] in print(parent!.title) } > 闭包表达式语法 > > -> closure-expression {#closure-expression} +> ###### closure-expression {#closure-expression} > > *闭包表达式* → **{** [*闭包签名*](#closure-signature)可选 [*语句*](#statements) **}** > > -> closure-signature {#closure-signature} +> ###### closure-signature {#closure-signature} > > > 闭包签名* → [*参数子句*](#parameter-clause) [*函数结果*](05_Declarations.md#function-result)可选 **in** @@ -520,20 +520,20 @@ myFunction { [weak parent = self.parent] in print(parent!.title) } > *闭包签名* → [*捕获列表*](#capture-list) **in** > > -> capture-list {#capture-list} +> ###### capture-list {#capture-list} > > > 捕获列表* → [ [*捕获列表项列表*](#capture-list-items) **]** > -> capture-list-items {#capture-list-items} +> ###### capture-list-items {#capture-list-items} > > *捕获列表项列表* → [*捕获列表项*](#capture-list-item) | [*捕获列表项*](#capture-list-item) **,** [*捕获列表项列表*](#capture-list-items) > -> capture-list-item {#capture-list-item} +> ###### capture-list-item {#capture-list-item} > > *捕获列表项* → [*捕获说明符*](#capture-specifier)可选 [*表达式*](#expression) > -> capture-specifier {#capture-specifier} +> ###### capture-specifier {#capture-specifier} > > *捕获说明符* → **weak** | **unowned** | **unowned(safe)** | **unowned(unsafe)** > @@ -553,7 +553,7 @@ x = .AnotherValue > 隐式成员表达式语法 > -implicit-member-expression {#implicit-member-expression} +###### {#implicit-member-expression} > *隐式成员表达式* → **.** [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -562,7 +562,7 @@ implicit-member-expression {#implicit-member-expression} > 圆括号表达式语法 > -parenthesized-expression {#parenthesized-expression} +###### {#parenthesized-expression} > *圆括号表达式* → **( [*表达式*](#expression) )** > @@ -583,13 +583,13 @@ parenthesized-expression {#parenthesized-expression} > 元组表达式语法 > -tuple-expression {#tuple-expression} +###### {#tuple-expression} > *元组表达式* → **( )** | **(**[*元组元素*](#tuple-element), [*元组元素列表*](#tuple-element-list) **)** > -tuple-element-list {#tuple-element-list} +###### {#tuple-element-list} > *元组元素列表* → [*元组元素*](#tuple-element) | [*元组元素*](#tuple-element) **,** [*元组元素列表*](#tuple-element-list) > -tuple-element {#tuple-element} +###### {#tuple-element} > *元组元素* → [*表达式*](#expression) | [*标识符*](identifier) **:** [*表达式*](#expression) > @@ -603,7 +603,7 @@ tuple-element {#tuple-element} > 通配符表达式语法 > -wildcard-expression {#wildcard-expression} +###### {#wildcard-expression} > *通配符表达式* → **_** > @@ -740,21 +740,21 @@ print(interestingNumbers[keyPath: \[String: [Int]].["hexagonal"]!.count.bitWidth > key-path 表达式语法 > > -> key-path-expression {#key-path-expression} +> ###### key-path-expression {#key-path-expression} > > *key-path 表达式* → **\\** [类型](./03_Types.md#type)可选 **.** [多个 key-path 组件](#key-path-components) > -> key-path-components {#key-path-components} +> ###### key-path-components {#key-path-components} > > *多个 key-path 组件* → [key-path 组件](#key-path-component) | [key-path 组件](#key-path-component) **.** [多个 key-path 组件](#key-path-components) > -> key-path-component {#key-path-component} +> ###### key-path-component {#key-path-component} > > *key-path 组件* → [标识符](./02_Lexical_Structure.md#identifier) [多个 key-path 后缀](#key-path-postfixes)可选 | [多个 key-path 后缀](#key-path-postfixes) > -> key-path-postfixes {#key-path-postfixes} +> ###### key-path-postfixes {#key-path-postfixes} > -> *多个 key-path 后缀* → [key-path 后缀](#key-path-postfix) [多个 key-path 后缀](#key-path-postfixes)可选 key-path-postfixes {#key-path-postfixes} +> ###### *多个 key-path 后缀* → [key-path 后缀](#key-path-postfix) [多个 key-path 后缀](#key-path-postfixes)可选 key-path-postfixes {#key-path-postfixes} > > *key-path 后缀* → **?** | **!** | **self** | **\[** [函数调用参数表](#function-call-argument-list) **\]** > @@ -809,7 +809,7 @@ let anotherSelector = #selector(SomeClass.doSomething(_:) as (SomeClass) -> (Str > 选择器表达式语法 > -selector-expression {#selector-expression} +###### {#selector-expression} > *选择器表达式* → __#selector__ **(** [*表达式*](#expression) **)** > > *选择器表达式* → __#selector__ **(** [*getter:表达式*](#expression) **)** @@ -867,7 +867,7 @@ print(keyPath == c.getSomeKeyPath()) > key-path 字符串表达式语法 > -> key-path-string-expression {#key-path-string-expression} +> ###### key-path-string-expression {#key-path-string-expression} > > *key-path 字符串表达式* → **#keyPath (** [表达式](#expression) **)** > @@ -881,7 +881,7 @@ print(keyPath == c.getSomeKeyPath()) > 后缀表达式语法 > -postfix-expression {#postfix-expression} +###### {#postfix-expression} > *后缀表达式* → [*基本表达式*](#primary-expression) > > *后缀表达式* → [*后缀表达式*](#postfix-expression) [*后缀运算符*](02_Lexical_Structure.md#postfix-operator) @@ -934,29 +934,29 @@ myData.someMethod {$0 == 13} > 函数调用表达式语法 > -> function-call-expression {#function-call-expression} +> ###### function-call-expression {#function-call-expression} > > *函数调用表达式* → [*后缀表达式*](#postfix-expression) [*函数调用参数子句*](#function-call-argument-clause) > > *函数调用表达式* → [*后缀表达式*](#postfix-expression) [*函数调用参数子句*](#function-call-argument-clause)可选 [*尾随闭包*](#trailing-closure) > > -> function-call-argument-clause {#function-call-argument-clause} +> ###### function-call-argument-clause {#function-call-argument-clause} > > *函数调用参数子句* → **(** **)** | **(** [*函数调用参数表*](#function-call-argument-list) **)** > -> function-call-argument-list {#function-call-argument-list} +> ###### function-call-argument-list {#function-call-argument-list} > > *函数调用参数表* → [函数调用参数](#function-call-argument) | [函数调用参数](#function-call-argument) **,** [*函数调用参数表*](#function-call-argument-list) > -> function-call-argument {#function-call-argument} +> ###### function-call-argument {#function-call-argument} > > *函数调用参数* → [表达式](#expression) | [标识符](02_Lexical_Structure.md#identifier) **:** [*表达式*](#expression) > > *函数调用参数* → [运算符](./02_Lexical_Structure.md#operator) | [标识符](./02_Lexical_Structure.md#identifier) **:** [*运算符*](./02_Lexical_Structure.md#operator) > > -> trailing-closure {#trailing-closure} +> ###### trailing-closure {#trailing-closure} > > *尾随闭包* → [*闭包表达式*](#closure-expression) > @@ -1001,7 +1001,7 @@ let s3 = someValue.dynamicType.init(data: 7) // 有效 > 构造器表达式语法 > -initializer-expression {#initializer-expression} +###### {#initializer-expression} > *构造器表达式* → [*后缀表达式*](#postfix-expression) **.** **init** > > *构造器表达式* → [*后缀表达式*](#postfix-expression) **.** **init** **(** [*参数名称*](#argument-names) **)** @@ -1067,17 +1067,17 @@ let x = [10, 3, 20, 15, 4] > 显式成员表达式语法 > -explicit-member-expression {#explicit-member-expression} +###### {#explicit-member-expression} > *显式成员表达式* → [*后缀表达式*](#postfix-expression) **.** [*十进制数字*] (02_Lexical_Structure.md#decimal-digit) > > *显式成员表达式* → [*后缀表达式*](#postfix-expression) **.** [*标识符*](02_Lexical_Structure.md#identifier) [*泛型实参子句*](./09_Generic_Parameters_and_Arguments.md#generic-argument-clause)可选
> > *显式成员表达式* → [*后缀表达式*](#postfix-expression) **.** [*标识符*] (02_Lexical_Structure.md#identifier) **(** [*参数名称*](#argument-names) **)** > -argument-names {#argument-names} +###### {#argument-names} > *参数名称* → [*参数名*](#argument-name) [*参数名称*](#argument-names)可选
> -argument-name {#argument-name} +###### {#argument-name} > *参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) **:** > @@ -1095,7 +1095,7 @@ argument-name {#argument-name} > 后缀 self 表达式语法 > -postfix-self-expression {#postfix-self-expression} +###### {#postfix-self-expression} > *后缀 self 表达式* → [*后缀表达式*](#postfix-expression) **.** **self** > @@ -1112,7 +1112,7 @@ postfix-self-expression {#postfix-self-expression} > 下标表达式语法 > -subscript-expression {#subscript-expression} +###### {#subscript-expression} > *下标表达式* → [*后缀表达式*](#postfix-expression) **[** [*表达式列表*](#expression-list) **]** > @@ -1138,7 +1138,7 @@ someDictionary["a"]![0] = 100 > 强制取值语法 > -forced-value-expression {#forced-value-expression} +###### {#forced-value-expression} > *强制取值表达式* → [*后缀表达式*](#postfix-expression) **!** > @@ -1190,6 +1190,6 @@ someDictionary["a"]?[0] = someFunctionWithSideEffects() > 可选链表达式语法 > -optional-chaining-expression {#optional-chaining-expression} +###### {#optional-chaining-expression} > *可选链表达式* → [*后缀表达式*](#postfix-expression) **?** > diff --git a/source/chapter3/05_Statements.md b/source/chapter3/05_Statements.md index 59b0b262..51259de0 100755 --- a/source/chapter3/05_Statements.md +++ b/source/chapter3/05_Statements.md @@ -7,7 +7,7 @@ > 语句语法 > -statement {#statement} +###### {#statement} > *语句* → [*表达式*](./04_Expressions.md#expression) **;**可选 > > *语句* → [*声明*](./06_Declarations.md#declaration) **;**可选 @@ -26,7 +26,7 @@ statement {#statement} > > *语句* → [*编译器控制语句*](#compiler-control-statement) > -statements {#statements} +###### {#statements} > *多条语句* → [*语句*](#statement) [*多条语句*](#statements)可选 > @@ -38,7 +38,7 @@ statements {#statements} > 循环语句语法 > > -loop-statement {#loop-statement} +###### {#loop-statement} > *循环语句* → [*for-in 语句*](#for-in-statement) > > *循环语句* → [*while 语句*](#while-statement) @@ -62,7 +62,7 @@ for item in collection { > for-in 语句语法 > > -for-in-statement {#for-in-statement} +###### {#for-in-statement} > *for-in 语句* → **for** **case**可选 [*模式*](./08_Patterns.md#pattern) **in** [*表达式*](./04_Expressions.md#expression) [*where 子句*](#where-clause)可选 [*代码块*](05_Declarations.md#code-block) > @@ -89,21 +89,21 @@ while condition { > while 语句语法 > > -while-statement {#while-statement} +###### {#while-statement} > *while 语句* → **while** [*条件子句*](#condition-clause) [*代码块*](05_Declarations.md#code-block) > -condition-clause {#condition-clause} +###### {#condition-clause} > *条件子句* → [*表达式*](./04_Expressions.md#expression) | [*表达式*](./04_Expressions.md#expression) **,** [*条件列表*](#condition-list) > -condition {#condition} +###### {#condition} > *条件* → [*表达式*](./04_Expressions.md#expression) |[*可用性条件*](#availability-condition) | [*case 条件*](#case-condition) | [*可选绑定条件*](#optional-binding-condition) > > -case-condition {#case-condition} +###### {#case-condition} > *case 条件* → **case** [*模式*](./08_Patterns.md#pattern) [*构造器*](./06_Declarations.md#initializer) > -optional-binding-condition {#optional-binding-condition} +###### {#optional-binding-condition} > *可选绑定条件* → **let** [*模式*](./08_Patterns.md#pattern) [*构造器*](./06_Declarations.md#initializer) | **var** [*模式*](./08_Patterns.md#pattern) [*构造器*](./06_Declarations.md#initializer) > @@ -130,7 +130,7 @@ repeat { > repeat-while 语句语法 > > -repeat-while-statement {#repeat-while-statement} +###### {#repeat-while-statement} > *repeat-while 语句* → **repeat** [*代码块*](./06_Declarations.md#code-block) **while** [*表达式*](./04_Expressions.md#expression) > @@ -142,7 +142,7 @@ repeat-while-statement {#repeat-while-statement} > 分支语句语法 > > -branch-statement {#branch-statement} +###### {#branch-statement} > *分支语句* → [*if 语句*](#if-statement) > > *分支语句* → [*guard 语句*](#guard-statement) @@ -190,10 +190,10 @@ if condition 1 { > if 语句语法 > > -if-statement {#if-statement} +###### {#if-statement} > *if 语句* → **if** [*条件子句*](#condition-clause) [*代码块*](05_Declarations.md#code-block) [*else 子句*](#else-clause)可选 > -else-clause {#else-clause} +###### {#else-clause} > *else 子句* → **else** [*代码块*](./06_Declarations.md#code-block) | **else** [*if 语句*](#if-statement) > @@ -224,7 +224,7 @@ guard condition else { > guard 语句语法 > > -guard-statement {#guard-statement} +###### {#guard-statement} > *guard 语句* → **guard** [*条件子句*](#condition-clause) **else** [*代码块*] (05_Declarations.md#code-block) > @@ -296,46 +296,46 @@ case .suppressed: > switch 语句语法 > > -switch-statement {#switch-statement} +###### {#switch-statement} > *switch 语句* → **switch** [*表达式*](./04_Expressions.md#expression) **{** [*switch-case 列表*](#switch-cases)可选 **}** > -switch-cases {#switch-cases} +###### {#switch-cases} > *switch case 列表* → [*switch-case*](#switch-case) [*switch-case 列表*](#switch-cases)可选 > -switch-case {#switch-case} +###### {#switch-case} > *switch case* → [*case 标签*](#case-label) [*多条语句*](#statements) | [*default 标签*](#default-label) [*多条语句*](#statements) | [*conditional-switch-case*](#conditional-switch-case-label) > -case-label {#case-label} +###### {#case-label} > *case 标签* → [*属性*](#switch-case-attributes-label)可选 **case** [*case 项列表*](#case-item-list) **:** > -case-item-list {#case-item-list} +###### {#case-item-list} > *case 项列表* → [*模式*](./08_Patterns.md#pattern) [*where 子句*](#where-clause)可选 | [*模式*](07_Patterns.md#pattern) [*where 子句*](#where-clause)可选 **,** [*case 项列表*](#case-item-list) > -default-label {#default-label} +###### {#default-label} > *default 标签* → [*属性*](#switch-case-attributes-label)可选 **default** **:** > > -where-clause {#where-clause} +###### {#where-clause} > *where-clause* → **where** [*where 表达式*](#where-expression) > -where-expression {#where-expression} +###### {#where-expression} > *where-expression* → [*表达式*](./04_Expressions.md#expression) > > -grammar_conditional-switch-case {#grammar_conditional-switch-case} +###### {#grammar_conditional-switch-case} > *conditional-switch-case* → [*switch-if-directive-clause*](#switch-case-attributes-label) [*switch-elseif-directive-clauses*](#switch-case-attributes-label) 可选 [*switch-else-directive-clause*](#switch-case-attributes-label) 可选 [*endif-directive*](#switch-case-attributes-label) > -grammar_switch-if-directive-clause {#grammar_switch-if-directive-clause} +###### {#grammar_switch-if-directive-clause} > *switch-if-directive 语句* → [*if-directive*](#switch-case-attributes-label) [*compilation-condition*](#switch-case-attributes-label) [*switch-cases*](#switch-case-attributes-label) 可选 > -grammar_switch-elseif-directive-clauses {#grammar_switch-elseif-directive-clauses} +###### {#grammar_switch-elseif-directive-clauses} > *switch-elseif-directive 语句(复数)* → [*elseif-directive-clause*](#switch-case-attributes-label) [*switch-elseif-directive-clauses*](#switch-case-attributes-label)可选 > -grammar_switch-elseif-directive-clause {#grammar_switch-elseif-directive-clause} +###### {#grammar_switch-elseif-directive-clause} > *switch-elseif-directive 语句* → [*elseif-directive*](#switch-case-attributes-label) [*compilation-condition*](#switch-case-attributes-label) [*switch-cases*](#switch-case-attributes-label)可选 > -grammar_switch-else-directive-clause {#grammar_switch-else-directive-clause} +###### {#grammar_switch-else-directive-clause} > *switch-else-directive 语句* → [*else-directive*](#switch-case-attributes-label) [*switch-cases*](#switch-case-attributes-label) 可选 > @@ -349,7 +349,7 @@ grammar_switch-else-directive-clause {#grammar_switch-else-directive-clause} > 带标签的语句语法 > > -labeled-statement {#labeled-statement} +###### {#labeled-statement} > *带标签的语句* → [*语句标签*](#statement-label) [*循环语句*](#grammar_loop-statement) > > *带标签的语句* → [*语句标签*](#statement-label) [*if 语句*](#if-statement) @@ -358,10 +358,10 @@ labeled-statement {#labeled-statement} > > > *带标签的语句* → [*语句标签*](#statement-label) [*do 语句*](#sdo-statement) > -statement-label {#statement-label} +###### {#statement-label} > *语句标签* → [*标签名称*](#label-name) **:** > -label-name {#label-name} +###### {#label-name} > *标签名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -371,7 +371,7 @@ label-name {#label-name} > 控制转移语句语法 > > -control-transfer-statement {#control-transfer-statement} +###### {#control-transfer-statement} > *控制转移语句* → [*break 语句*](#break-statement) > > *控制转移语句* → [*continue 语句*](#continue-statement) @@ -402,7 +402,7 @@ control-transfer-statement {#control-transfer-statement} > break 语句语法 > > -break-statement {#break-statement} +###### {#break-statement} > *break 语句* → **break** [*标签名称*](#label-name)可选 > @@ -427,7 +427,7 @@ break-statement {#break-statement} > continue 语句语法 > > -continue-statement {#continue-statement} +###### {#continue-statement} > *continue 语句* → **continue** [*标签名称*](#label-name)可选 > @@ -441,7 +441,7 @@ continue-statement {#continue-statement} > fallthrough 语句语法 > > -fallthrough-statement {#fallthrough-statement} +###### {#fallthrough-statement} > *fallthrough 语句* → **fallthrough** > @@ -468,7 +468,7 @@ fallthrough-statement {#fallthrough-statement} > return 语句语法 > > -return-statement {#return-statement} +###### {#return-statement} > *return 语句* → **return** [*表达式*](./04_Expressions.md#expression)可选 > @@ -489,7 +489,7 @@ return-statement {#return-statement} > throw 语句语法 > > -throw-statement {#throw-statement} +###### {#throw-statement} > *throw 语句* → **throw** [*表达式*](./04_Expressions.md#expression) > @@ -525,7 +525,7 @@ f() > defer 语句语法 > > -defer-statement {#defer-statement} +###### {#defer-statement} > *延迟语句* → **defer** [*代码块*](./06_Declarations.md#code-block) > @@ -556,13 +556,13 @@ do { > do 语句语法 > > -do-statement {#do-statement} +###### {#do-statement} > *do 语句* → **do** [*代码块*](./06_Declarations.md#code-block) [*多条 catch 子句*](#catch-clauses)可选 > -catch-clauses {#catch-clauses} +###### {#catch-clauses} > *多条 catch 子句* → [*catch 子句*](#catch-clause) [*多条 catch 子句*](#catch-clauses)可选 > -catch-clause {#catch-clause} +###### {#catch-clause} > *catch 子句* → **catch** [*模式*](./08_Patterns.md#pattern)可选 [*where 子句*](#where-clause)可选 [*代码块*](05_Declarations.md#code-block) > @@ -572,7 +572,7 @@ catch-clause {#catch-clause} > 编译器控制语句语法 > > -compiler-control-statement {#compiler-control-statement} +###### {#compiler-control-statement} > *编译器控制语句* → [*条件编译语句*](#grammar_conditional-compilation-block) > > *编译器控制语句* → [*线路控制语句*](#line-control-statement) @@ -651,23 +651,23 @@ statements to compile if both compilation conditions are false > 即使没有被编译,编译配置中的语句仍然会被解析。然而,唯一的例外是编译配置语句中包含语言版本检测函数:仅当 `Swift` 编译器版本和语言版本检测函数中指定的版本号匹配时,语句才会被解析。这种设定能确保旧的编译器不会尝试去解析新 Swift 版本的语法。 > -build-config-statement {#build-config-statement} +###### {#build-config-statement} > 条件编译代码块语法 > > -grammar_conditional-compilation-block {#grammar_conditional-compilation-block} +###### {#grammar_conditional-compilation-block} > *条件编译代码块* → [*if-directive 语句*](#grammar_if-directive-clause) [*elseif-directive 语句(复数)*](#grammar_elseif-directive-clauses)可选 [*else-directive 语句*](#grammar_else-directive-clause)可选 [*endif-directive*](#grammar_endif-directive) > -grammar_if-directive-clause {#grammar_if-directive-clause} +###### {#grammar_if-directive-clause} > *if-directive 语句* → [*if-directive*](#grammar_if-directive) [*编译条件*](#compilation-condition) [*语句(复数)*](#statements)可选 > -grammar_elseif-directive-clauses {#grammar_elseif-directive-clauses} +###### {#grammar_elseif-directive-clauses} > *elseif-directive 语句(复数)* → [*elseif-directive 语句*](#grammar_elseif-directive-clause) [*elseif-directive 语句(复数)*](#grammar_elseif-directive-clauses) > -grammar_elseif-directive-clauses {#grammar_elseif-directive-clauses} +###### {#grammar_elseif-directive-clauses} > *elseif-directive 语句* → [*elseif-directive*](#grammar_elseif-directive) [*编译条件*](#compilation-condition) [*语句(复数)*](#statements)可选 > -grammar_else-directive-clause {#grammar_else-directive-clause} +###### {#grammar_else-directive-clause} > *else-directive 语句* → [*else-directive*](#grammar_else-directive) [*语句(复数)*](#statements)可选 > @@ -681,7 +681,7 @@ grammar_else-directive-clause {#grammar_else-directive-clause} > *endif-directive* → **#endif** > -compilation-condition {#compilation-condition} +###### {#compilation-condition} > *编译条件* → [*平台条件*](#grammar_platform-condition) > > *编译条件* → [*标识符*](./02_Lexical_Structure.md#identifier) @@ -697,41 +697,41 @@ compilation-condition {#compilation-condition} > *编译条件* → [*编译条件*](#compilation-condition) **||** [*编译条件*](#compilation-condition) > -grammar_platform-condition {#grammar_platform-condition} -grammar_platform-condition-os {#grammar_platform-condition-os} +###### {#grammar_platform-condition} +###### {#grammar_platform-condition-os} > *平台条件* → **os ( [*操作系统*](#operating-system) )** > -grammar_platform-condition-arch {#grammar_platform-condition-arch} +###### {#grammar_platform-condition-arch} > *平台条件* → **arch ( [*架构*](#architecture) )** > -grammar_platform-condition-swift {#grammar_platform-condition-swift} +###### {#grammar_platform-condition-swift} > *平台条件* → **swift ( >= [*swift 版本*](#swift-version) )** | **swift ( < [*swift 版本*](#swift-version) )** > -grammar_platform-condition-compiler {#grammar_platform-condition-compiler} +###### {#grammar_platform-condition-compiler} > *平台条件* → **compiler ( >= [*swift 版本*](#swift-version) )** | **compiler ( < [*swift 版本*](#swift-version) )** > -grammar_platform-condition-canImport {#grammar_platform-condition-canImport} +###### {#grammar_platform-condition-canImport} > *平台条件* → **canImport ( [*模块名*](#grammar_module-name) )** > -grammar_platform-condition-targetEnvironment {#grammar_platform-condition-targetEnvironment} +###### {#grammar_platform-condition-targetEnvironment} > *平台条件* → **targetEnvironment ( [*环境*](#grammar_environment) )** > -operating-system {#operating-system} +###### {#operating-system} > *操作系统* → **macOS** | **iOS** | **watchOS** | **tvOS** > -architecture {#architecture} +###### {#architecture} > *架构* → **i386** | **x86_64** | **arm** | **arm64** > -swift-version {#swift-version} +###### {#swift-version} > *swift 版本* → [*十进制数字*](./02_Lexical_Structure.md#decimal-digit) ­**.** ­[*swift 版本延续*](#grammar_swift-version-continuation) 可选 > -grammar_swift-version-continuation {#grammar_swift-version-continuation} +###### {#grammar_swift-version-continuation} > *swift 版本延续* → **.** [*十进制数字*](./02_Lexical_Structure.md#decimal-digit) [*swift 版本延续*](#grammar_swift-version-continuation) 可选 > -grammar_module-name {#grammar_module-name} +###### {#grammar_module-name} > *模块名* → [*identifier*](./02_Lexical_Structure.md#identifier) > -grammar_environment {#grammar_environment} +###### {#grammar_environment} > *环境* → **模拟器** > @@ -750,7 +750,7 @@ grammar_environment {#grammar_environment} 第二种的行控制语句,`#sourceLocation()`,会将源代码的定位信息重置回默认的行号和文件名。 -line-control-statement {#line-control-statement} +###### {#line-control-statement} > 行控制语句语法 > > @@ -758,10 +758,10 @@ line-control-statement {#line-control-statement} > > *行控制语句* → **#sourceLocation()** > -line-number {#line-number} +###### {#line-number} > *行号* → 大于 0 的十进制整数 > -file-name {#file-name} +###### {#file-name} > *文件名* → [*静态字符串字面量*](./02_Lexical_Structure.md#static-string-literal) > @@ -779,12 +779,12 @@ file-name {#file-name} > 编译时诊断语句语法 > > -grammar_compile-time-diagnostic-statement {#grammar_compile-time-diagnostic-statement} +###### {#grammar_compile-time-diagnostic-statement} > *诊断语句* → **#error** **(** [*diagnostic-message*](#grammar_diagnostic-message) **)** > > *诊断语句* → **#warning** **(** [*diagnostic-message*](#grammar_diagnostic-message) **)** > -grammar_diagnostic-message {#grammar_diagnostic-message} +###### {#grammar_diagnostic-message} > *诊断语句* → [*静态字符串字面量*](./02_Lexical_Structure.md#static-string-literal) > @@ -810,19 +810,19 @@ if #available(platform name version, ..., *) { > 可用性条件语法 > > -availability-condition {#availability-condition} +###### {#availability-condition} > *可用性条件* → **#available** **(** [*可用性参数列表*](#availability-arguments) **)** > -availability-arguments {#availability-arguments} +###### {#availability-arguments} > *可用性参数列表* → [*可用性参数*](#availability-argument) | [*可用性参数*](#availability-argument) **,** [*可用性参数列表*](#availability-arguments) > -availability-argument {#availability-argument} +###### {#availability-argument} > *可用性参数* → [平台名称](#platform-name) [平台版本](#platform-version) > > *可用性条件* → __*__ > > -platform-name {#platform-name} +###### {#platform-name} > *平台名称* → **iOS** | **iOSApplicationExtension** > > *平台名称* → **OSX** | **macOSApplicationExtension** @@ -831,7 +831,7 @@ platform-name {#platform-name} > > *平台名称* → **tvOS** > -platform-version {#platform-version} +###### {#platform-version} > *平台版本* → [十进制数字](./02_Lexical_Structure.md#decimal-digits) > > *平台版本* → [十进制数字](./02_Lexical_Structure.md#decimal-digits) **.** [十进制数字](./02_Lexical_Structure.md#decimal-digits) diff --git a/source/chapter3/06_Declarations.md b/source/chapter3/06_Declarations.md index 0950d826..2189cb36 100755 --- a/source/chapter3/06_Declarations.md +++ b/source/chapter3/06_Declarations.md @@ -5,7 +5,7 @@ > 声明语法 > -> declaration {#declaration} +> ###### declaration {#declaration} > > *声明* → [*导入声明*](#import-declaration) > @@ -35,7 +35,7 @@ > > *声明* → [*运算符声明*](#operator-declaration) > -> declarations {#declarations} +> ###### declarations {#declarations} > > *多条声明* → [*声明*](#declaration) [*多条声明*](#declarations)可选 > @@ -61,7 +61,7 @@ Swift 的源文件中的顶级代码(top-level code)由零个或多个语句 > 代码块语法 > -> code-block {#code-block} +> ###### code-block {#code-block} > > *代码块* → **{** [*多条语句*](./05_Statements.md#statements)可选 **}** > @@ -80,22 +80,22 @@ import 导入类型 模块.符号名 import 模块.子模块 ``` -grammer_of_an_import_declaration {#grammer_of_an_import_declaration} +###### {#grammer_of_an_import_declaration} > 导入声明语法 > -> import-declaration {#import-declaration} +> ###### import-declaration {#import-declaration} > > *导入声明* → [*特性列表*](./07_Attributes.md#attributes)可选 **import** [*导入类型*](#import-kind)可选 [*导入路径*](#import-path) > -> import-kind {#import-kind} +> ###### import-kind {#import-kind} > > *导入类型* → **typealias** | **struct** | **class** | **enum** | **protocol** | **let** | **var** | **func** > -> import-path {#import-path} +> ###### import-path {#import-path} > > *导入路径* → [*导入路径标识符*](#import-path-identifier) | [*导入路径标识符*](#import-path-identifier) **.** [*导入路径*](#import-path) > -> import-path-identifier {#import-path-identifier} +> ###### import-path-identifier {#import-path-identifier} > > *导入路径标识符* → [*标识符*](./02_Lexical_Structure.md#identifier) | [*运算符*](./02_Lexical_Structure.md#operator) > @@ -132,22 +132,22 @@ print("The second number is \(secondNumber).") 如果还想获得更多关于常量的信息或者想在使用中获得帮助,请参阅 [常量和变量](../chapter2/01_The_Basics.md#constants_and_variables) 和 [存储属性](../chapter2/10_Properties.md#stored_properties)。 -grammer_of_a_constant_declaration {#grammer_of_a_constant_declaration} +###### {#grammer_of_a_constant_declaration} > 常量声明语法 > -> constant-declaration {#constant-declaration} +> ###### constant-declaration {#constant-declaration} > > *常量声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **let** [*模式构造器列表*](pattern-initializer-list) > -> pattern-initializer-list {#pattern-initializer-list} +> ###### pattern-initializer-list {#pattern-initializer-list} > > *模式构造器列表* → [*模式构造器*](#pattern-initializer) | [*模式构造器*](#pattern-initializer) **,** [*模式构造器列表*](#pattern-initializer-list) > -> pattern-initializer {#pattern-initializer} +> ###### pattern-initializer {#pattern-initializer} > > *模式构造器* → [*模式*](./08_Patterns.md#pattern) [*构造器*](#initializer)可选 > -> initializer {#initializer} +> ###### initializer {#initializer} > > *构造器* → **=** [*表达式*](./04_Expressions.md#expression) > @@ -242,10 +242,10 @@ var 变量名称: 类型 = 表达式 { > 在一个类声明中,使用关键字 `static` 与同时使用 `class` 和 `final` 去标记一个声明的效果相同。 > -grammer_of_a_variable_declaration {#grammer_of_a_variable_declaration} +###### {#grammer_of_a_variable_declaration} > 变量声明语法 > -variable-declaration {#variable-declaration} +###### {#variable-declaration} > *变量声明* → [*变量声明头*](#variable-declaration-head) [*模式构造器列表*](#pattern-initializer-list) > > *变量声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*代码块*](#code-block) @@ -259,58 +259,58 @@ variable-declaration {#variable-declaration} > *变量声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*构造器*](#initializer)可选 [*willSet-didSet 代码块*](#willSet-didSet-block) > -variable-declaration-head {#variable-declaration-head} +###### {#variable-declaration-head} > *变量声明头* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **var** > -> variable-name {#variable-name} +> ###### variable-name {#variable-name} > > *变量名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > -getter-setter-block {#getter-setter-block} +###### {#getter-setter-block} > *getter-setter 代码块* → [*代码块*](#code-block) > > *getter-setter 代码块* → **{** [*getter 子句*](#getter-clause) [*setter 子句*](#setter-clause)可选 **}** > > *getter-setter 代码块* → **{** [*setter 子句*](#setter-clause) [*getter 子句*](#getter-clause) **}** > -> getter-clause {#getter-clause} +> ###### getter-clause {#getter-clause} > > *getter 子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **get** [*代码块*](#code-block) > -> setter-clause {#setter-clause} +> ###### setter-clause {#setter-clause} > > *setter 子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **set** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) > -> setter-name {#setter-name} +> ###### setter-name {#setter-name} > > *setter 名称* → **(** [*标识符*](./02_Lexical_Structure.md#identifier) **)** > -getter-setter-keyword-block {#getter-setter-keyword-block} +###### {#getter-setter-keyword-block} > *getter-setter 关键字代码块* → **{** [*getter 关键字子句*](#getter-keyword-clause) [*setter 关键字子句*](#setter-keyword-clause)可选 **}** > > *getter-setter 关键字代码块* → **{** [*setter 关键字子句*](#setter-keyword-clause) [*getter 关键字子句*](#getter-keyword-clause) **}** > -> getter-keyword-clause {#getter-keyword-clause} +> ###### getter-keyword-clause {#getter-keyword-clause} > > *getter 关键字子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **get** > -> setter-keyword-clause {#setter-keyword-clause} +> ###### setter-keyword-clause {#setter-keyword-clause} > > *setter 关键字子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **set** > -willSet-didSet-block {#willSet-didSet-block} +###### {#willSet-didSet-block} > *willSet-didSet 代码块* → **{** [*willSet 子句*](#willSet-clause) [*didSet 子句*](#didSet-clause)可选 **}** > > *willSet-didSet 代码块* → **{** [*didSet 子句*](#didSet-clause) [*willSet 子句*](#willSet-clause)可选 **}** > -> willSet-clause {#willSet-clause} +> ###### willSet-clause {#willSet-clause} > > *willSet 子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **willSet** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) > -> didSet-clause {#didSet-clause} +> ###### didSet-clause {#didSet-clause} > > *didSet 子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **didSet** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) > @@ -370,19 +370,19 @@ func sum(_ sequence: T) -> Int where T.Element == Int { 另请参阅 [协议关联类型声明](#protocol_associated_type_declaration)。 -grammer_of_a_type_alias_declaration {#grammer_of_a_type_alias_declaration} +###### {#grammer_of_a_type_alias_declaration} > 类型别名声明语法 > > -> typealias-declaration {#typealias-declaration} +> ###### typealias-declaration {#typealias-declaration} > > *类型别名声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **typealias** [*类型别名名称*](#typealias-name) [*类型别子句*](#typealias-clause) [*类型别名赋值*](#typealias-assignment) > -> typealias-name {#typealias-name} +> ###### typealias-name {#typealias-name} > > *类型别名名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> typealias-assignment {#typealias-assignment} +> ###### typealias-assignment {#typealias-assignment} > > *类型别名赋值* → **=** [*类型*](./03_Types.md#type) > @@ -570,46 +570,46 @@ Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它 你可以重写一个不归方法,但是新的方法必须保持原有的返回类型和没有返回的行为。 -grammer_of_a_function_declaration {#grammer_of_a_function_declaration} +###### {#grammer_of_a_function_declaration} > 函数声明语法 > -function-declaration {#function-declaration} +###### {#function-declaration} > *函数声明* → [*函数头*](#function-head) [*函数名*](#function-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*函数签名*](#function-signature) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause) [*函数体*](#function-body)可选 > -function-head {#function-head} +###### {#function-head} > *函数头* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **func** > -> function-name {#function-name} +> ###### function-name {#function-name} > > *函数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | [*运算符*](./02_Lexical_Structure.md#operator) > > -> function-signature {#function-signature} +> ###### function-signature {#function-signature} > > > *函数签名* → [*参数子句列表*](#parameter-clauses) **throws**可选 [*函数结果*](#function-result)可选 > > *函数签名* → [*参数子句列表*](#parameter-clauses) **rethrows** [*函数结果*](#function-result)可选 > -> function-result {#function-result} +> ###### function-result {#function-result} > > *函数结果* → **->** [*特性列表*](./07_Attributes.md#attributes)可选 [*类型*](./03_Types.md#type) > -> function-body {#function-body} +> ###### function-body {#function-body} > > *函数体* → [*代码块*](#code-block) > -> parameter-clause {#parameter-clause} +> ###### parameter-clause {#parameter-clause} > > *参数子句* → **(** **)** | **(** [*参数列表*](#parameter-list) **)** > -> parameter-list {#parameter-list} +> ###### parameter-list {#parameter-list} > > *参数列表* → [*参数*](#parameter) | [*参数*](#parameter) **,** [*参数列表*](#parameter-list) > -> parameter {#parameter} +> ###### parameter {#parameter} > > *参数* → [*外部参数名*](#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.md#type-annotation) [*默认参数子句*](#default-argument-clause)可选 > @@ -617,15 +617,15 @@ function-head {#function-head} > > *参数* → [*外部参数名*](#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.md#type-annotation) **...** > -> external-parameter-name {#external-parameter-name} +> ###### external-parameter-name {#external-parameter-name} > > *外部参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | **_** > -> local-parameter-name {#local-parameter-name} +> ###### local-parameter-name {#local-parameter-name} > > *内部参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | **_** > -> default-argument-clause {#default-argument-clause} +> ###### default-argument-clause {#default-argument-clause} > > *默认参数子句* → **=** [*表达式*](./04_Expressions.md#expression) > @@ -731,11 +731,11 @@ enum GamePlayMode: String { 可以使用 `switch` 语句来检验枚举用例的值,正如 [使用 switch 语句匹配枚举值](../chapter2/08_Enumerations.md#matching_enumeration_values_with_a_switch_statement) 所述。枚举类型是模式匹配的,依靠 `switch` 语句 `case` 块中的枚举用例模式,正如 [枚举用例模式](./08_Patterns.md#enumeration_case_pattern) 所述。 -grammer_of_an_enumeration_declaration {#grammer_of_an_enumeration_declaration} +###### {#grammer_of_an_enumeration_declaration} > 枚举声明语法 > > -> enum-declaration {#enum-declaration} +> ###### enum-declaration {#enum-declaration} > > *枚举声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 [*联合风格枚举*](#union-style-enum) > @@ -744,65 +744,65 @@ grammer_of_an_enumeration_declaration {#grammer_of_an_enumeration_declaration} > > *联合风格枚举* → **indirect**可选 **enum** [*枚举名称*](#enum-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [类型继承子句](./03_Types.md#type-inheritance-clause)可选 **{** [*多个联合风格枚举成员*](#union-style-enum-members)可选 **}** > -> union-style-enum-members {#union-style-enum-members} +> ###### union-style-enum-members {#union-style-enum-members} > > *多个联合风格枚举成员* → [*联合风格枚举成员*](#union-style-enum-member) [*多个联合风格枚举成员*](#union-style-enum-members)可选 > -> union-style-enum-member {#union-style-enum-member} +> ###### union-style-enum-member {#union-style-enum-member} > > *联合风格枚举成员* → [*声明*](#declaration) | [*联合风格枚举用例子句*](#union-style-enum-case-clause) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > -> union-style-enum-case-clause {#union-style-enum-case-clause} +> ###### union-style-enum-case-clause {#union-style-enum-case-clause} > > *联合风格枚举用例子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **indirect**可选 **case** [*联合风格枚举用例列表*](#union-style-enum-case-list) > -> union-style-enum-case-list {#union-style-enum-case-list} +> ###### union-style-enum-case-list {#union-style-enum-case-list} > > *联合风格枚举用例列表* → [*联合风格枚举用例*](#union-style-enum-case) | [*联合风格枚举用例*](#union-style-enum-case) **,** [*联合风格枚举用例列表*](#union-style-enum-case-list) > -> union-style-enum-case {#union-style-enum-case} +> ###### union-style-enum-case {#union-style-enum-case} > > *联合风格枚举用例* → [*枚举用例名称*](#enum-case-name) [*元组类型*](03_Types.md#tuple-type)可选 > -> enum-name {#enum-name} +> ###### enum-name {#enum-name} > > *枚举名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> enum-case-name {#enum-case-name} +> ###### enum-case-name {#enum-case-name} > > *枚举用例名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > > -> raw-value-style-enum {#raw-value-style-enum} +> ###### raw-value-style-enum {#raw-value-style-enum} > > > *原始值风格枚举* → **enum** [*枚举名称*](#enum-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause) **{** [*多个原始值风格枚举成员*](#raw-value-style-enum-members) **}** > -> raw-value-style-enum-members {#raw-value-style-enum-members} +> ###### raw-value-style-enum-members {#raw-value-style-enum-members} > > *多个原始值风格枚举成员* → [*原始值风格枚举成员*](#raw-value-style-enum-member) [*多个原始值风格枚举成员*](#raw-value-style-enum-members)可选 > -> raw-value-style-enum-member {#raw-value-style-enum-member} +> ###### raw-value-style-enum-member {#raw-value-style-enum-member} > > *原始值风格枚举成员* → [*声明*](#declaration) | [*原始值风格枚举用例子句*](#raw-value-style-enum-case-clause) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > -> raw-value-style-enum-case-clause {#raw-value-style-enum-case-clause} +> ###### raw-value-style-enum-case-clause {#raw-value-style-enum-case-clause} > > *原始值风格枚举用例子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **case** [*原始值风格枚举用例列表*](#raw-value-style-enum-case-list) > -> raw-value-style-enum-case-list {#raw-value-style-enum-case-list} +> ###### raw-value-style-enum-case-list {#raw-value-style-enum-case-list} > > *原始值风格枚举用例列表* → [*原始值风格枚举用例*](#raw-value-style-enum-case) | [*原始值风格枚举用例*](#raw-value-style-enum-case) **,** [*原始值风格枚举用例列表*](#raw-value-style-enum-case-list) > -> raw-value-style-enum-case {#raw-value-style-enum-case} +> ###### raw-value-style-enum-case {#raw-value-style-enum-case} > > *原始值风格枚举用例* → [*枚举用例名称*](#enum-case-name) [*原始值赋值*](#raw-value-assignment)可选 > -> raw-value-assignment {#raw-value-assignment} +> ###### raw-value-assignment {#raw-value-assignment} > > *原始值赋值* → **=** [*原始值字面量*](#raw-value-literal) > -> raw-value-literal {#raw-value-literal} +> ###### raw-value-literal {#raw-value-literal} > > *原始值字面量* → [数字型字面量](./02_Lexical_Structure.md#numeric-literal) | [字符串型字面量](./02_Lexical_Structure.md#static-string-literal) | [布尔型字面量](./02_Lexical_Structure.md#boolean-literal) > @@ -837,28 +837,28 @@ struct 结构体名称: 采纳的协议 { 可以使用扩展声明来扩展结构体类型的行为,请参阅 [扩展声明](#extension_declaration)。 -grammer_of_a_structure_declaration {#grammer_of_a_structure_declaration} +###### {#grammer_of_a_structure_declaration} > 结构体声明语法 > > -> struct-declaration {#struct-declaration} +> ###### struct-declaration {#struct-declaration} > > *结构体声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier) 可选 **struct** [*结构体名称*](#struct-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*结构体主体*](#struct-body) > -> struct-name {#struct-name} +> ###### struct-name {#struct-name} > > *结构体名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> struct-body {#struct-body} +> ###### struct-body {#struct-body} > > *结构体主体* → **{** [*多条声明*](#declarations)可选 **}** > -> struct-name {#struct-name} +> ###### struct-name {#struct-name} > > > *结构体多个成员* → [*结构体成员*](#struct-member) [*结构体多个成员*](#struct-members)可选 > -> struct-member {#struct-member} +> ###### struct-member {#struct-member} > > *结构体成员* → [*声明*](#declaration) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > @@ -896,28 +896,28 @@ class 类名: 超类, 采纳的协议 { 可以使用扩展声明来扩展类的行为,请参阅 [扩展声明](#extension_declaration)。 -grammer_of_a_class_declaration {#grammer_of_a_class_declaration} +###### {#grammer_of_a_class_declaration} > 类声明语法 > > -> class-declaration {#class-declaration} +> ###### class-declaration {#class-declaration} > > *类声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [访问级别修饰符](#access-level-modifier)可选 **final**可选 **class** [*类名*](#class-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*类主体*](#class-body) > > *类声明* → [*特性列表*](./07_Attributes.md#attributes)可选 **final** [访问级别修饰符](#access-level-modifier)可选 **class** [*类名*](#class-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*类主体*](#class-body) > -> class-name {#class-name} +> ###### class-name {#class-name} > > *类名* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> class-body {#class-body} +> ###### class-body {#class-body} > > *类主体* → **{** [*多条声明*](#declarations)可选 **}** > > > *类多个成员* → [*类成员*](#class-member) [*类多个成员*](#class-members)可选 > -> class-member {#class-member} +> ###### class-member {#class-member} > > *类成员* → [*声明*](#declaration) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > @@ -963,31 +963,31 @@ protocol SomeProtocol: AnyObject { 可以使用协议来声明作为代理的类或者结构体应该实现的方法,正如 [委托(代理)模式](../chapter2/21_Protocols.md#delegation) 中所述。 -grammer_of_a_protocol_declaration {#grammer_of_a_protocol_declaration} +###### {#grammer_of_a_protocol_declaration} > 协议声明语法 > > -> protocol-declaration {#protocol-declaration} +> ###### protocol-declaration {#protocol-declaration} > > *协议声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **protocol** [*协议名称*](#protocol-name) [*类型继承子句*](03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*协议主体*](#protocol-body) > -> protocol-name {#protocol-name} +> ###### protocol-name {#protocol-name} > > *协议名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> protocol-body {#protocol-body} +> ###### protocol-body {#protocol-body} > > *协议主体* → **{** [*协议成员声明列表*](#protocol-member-declarations)可选 **}** > > > *协议多个成员* → [*协议成员*](#protocol-member) [*协议多个成员*](#protocol-members)可选 > -> protocol-member {#protocol-member} +> ###### protocol-member {#protocol-member} > > *协议成员* → [*协议成员声明*](#protocol-member-declaration) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > > -> protocol-member-declaration {#protocol-member-declaration} +> ###### protocol-member-declaration {#protocol-member-declaration} > > *协议成员声明* → [*协议属性声明*](#protocol-property-declaration) > @@ -999,7 +999,7 @@ grammer_of_a_protocol_declaration {#grammer_of_a_protocol_declaration} > > *协议成员声明* → [*协议关联类型声明*](#protocol-associated-type-declaration) > -> protocol-member-declarations {#protocol-member-declarations} +> ###### protocol-member-declarations {#protocol-member-declarations} > > *协议成员声明列表* → [*协议成员声明*](#protocol-member-declaration) [*协议成员声明列表*](#protocol-member-declarations)可选 > @@ -1017,10 +1017,10 @@ var 属性名: 类型 { get set } 另请参阅 [变量声明](#variable_declaration)。 -grammer_of_an_import_declaration {#grammer_of_an_import_declaration} +###### {#grammer_of_an_import_declaration} > 协议属性声明语法 > -> protocol-property-declaration {#protocol-property-declaration} +> ###### protocol-property-declaration {#protocol-property-declaration} > > *协议属性声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*getter-setter 关键字代码块*](#getter-setter-keyword-block) > @@ -1032,10 +1032,10 @@ grammer_of_an_import_declaration {#grammer_of_an_import_declaration} 另请参阅 [函数声明](#function_declaration)。 -grammer_of_a_protocol_declaration {#grammer_of_a_protocol_declaration} +###### {#grammer_of_a_protocol_declaration} > 协议方法声明语法 > -> protocol-method-declaration {#protocol-method-declaration} +> ###### protocol-method-declaration {#protocol-method-declaration} > > *协议方法声明* → [*函数头*](#function-head) [*函数名*](#function-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*函数签名*](#function-signature) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 > @@ -1050,10 +1050,10 @@ grammer_of_a_protocol_declaration {#grammer_of_a_protocol_declaration} 另请参阅 [构造器声明](#initializer_declaration)。 -grammer_of_a_protocol_initializer_declaration {#grammer_of_a_protocol_initializer_declaration} +###### {#grammer_of_a_protocol_initializer_declaration} > 协议构造器声明语法 > -> protocol-initializer-declaration {#protocol-initializer-declaration} +> ###### protocol-initializer-declaration {#protocol-initializer-declaration} > > *协议构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **throws**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 > @@ -1072,10 +1072,10 @@ subscript (参数列表) -> 返回类型 { get set } 另请参阅 [下标声明](#subscript_declaration)。 -grammer_of_a_protocol_subscript_declaration {#grammer_of_a_protocol_subscript_declaration} +###### {#grammer_of_a_protocol_subscript_declaration} > 协议下标声明语法 > -> protocol-subscript-declaration {#protocol-subscript-declaration} +> ###### protocol-subscript-declaration {#protocol-subscript-declaration} > > *协议下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*getter-setter 关键字代码块*](#getter-setter-keyword-block) > @@ -1103,10 +1103,10 @@ protocol SubProtocolB: SomeProtocol where SomeType: Equatable { } 另请参阅 [类型别名声明](#type_alias_declaration)。 -grammer_of_a_protocol_associated_type_declaration {#grammer_of_a_protocol_associated_type_declaration} +###### {#grammer_of_a_protocol_associated_type_declaration} > 协议关联类型声明语法 > -> protocol-associated-type-declaration {#protocol-associated-type-declaration} +> ###### protocol-associated-type-declaration {#protocol-associated-type-declaration} > > *协议关联类型声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **associatedtype** [*类型别名头*](#typealias-head) [*类型继承子句*](03_Types.md#type-inheritance-clause)可选 [*类型别名赋值*](#typealias-assignment)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 > @@ -1194,16 +1194,16 @@ if let actualInstance = SomeStruct(input: "Hello") { 更多关于可失败构造器的信息和例子,请参阅 [可失败构造器](../chapter2/14_Initialization.md#failable_initializers)。 -grammer_of_an_initializer_declaration {#grammer_of_an_initializer_declaration} +###### {#grammer_of_an_initializer_declaration} > 构造器声明语法 > -> initializer-declaration {#initializer-declaration} +> ###### initializer-declaration {#initializer-declaration} > > *构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **throws**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*构造器主体*](#initializer-body) > > *构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **rethrows**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*构造器主体*](#initializer-body) > -> initializer-head {#initializer-head} +> ###### initializer-head {#initializer-head} > > *构造器头* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **init** > @@ -1211,7 +1211,7 @@ grammer_of_an_initializer_declaration {#grammer_of_an_initializer_declaration} > > *构造器头* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **init** **!** > -> initializer-body {#initializer-body} +> ###### initializer-body {#initializer-body} > > *构造器主体* → [*代码块*](#code-block) > @@ -1233,10 +1233,10 @@ deinit { 关于如何在类声明中使用析构器的例子,请参阅 [析构过程](../chapter2/15_Deinitialization.md)。 -grammer_of_a_deinitializer_declaration {#grammer_of_a_deinitializer_declaration} +###### {#grammer_of_a_deinitializer_declaration} > 析构器声明语法 > -> deinitializer-declaration {#deinitializer-declaration} +> ###### deinitializer-declaration {#deinitializer-declaration} > > *析构器声明* → [*特性列表*](./07_Attributes.md#attributes)可选 **deinit** [*代码块*](#code-block) > @@ -1416,15 +1416,15 @@ extension Array: Loggable where Element: MarkedLoggable { } // 报错: redundant conformance of 'Array' to protocol 'Loggable' ``` -grammer_of_an_extension_declaration {#grammer_of_an_extension_declaration} +###### {#grammer_of_an_extension_declaration} > 扩展声明语法 > > -> extension-declaration {#extension-declaration} +> ###### extension-declaration {#extension-declaration} > > *扩展声明* → [特性](./07_Attributes.md#type_attributes)可选 [访问级别修饰符](#access-level-modifier)可选 **extension** [*类型标识符*](03_Types.md#type-identifier) [*类型-继承-子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*扩展主体*](#extension-body) > -> extension-body {#extension-body} +> ###### extension-body {#extension-body} > > *扩展主体* → **{** [*多条声明*](#declarations)可选 **}** > @@ -1464,11 +1464,11 @@ subscript (参数列表) -> 返回类型 { 更多关于下标的信息和例子,请参阅 [下标](../chapter2/12_Subscripts.md)。 -grammer_of_a_subscript_declaration {#grammer_of_a_subscript_declaration} +###### {#grammer_of_a_subscript_declaration} > 下标声明语法 > > -> subscript-declaration {#subscript-declaration} +> ###### subscript-declaration {#subscript-declaration} > > *下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*代码块*](#code-block) > @@ -1476,11 +1476,11 @@ grammer_of_a_subscript_declaration {#grammer_of_a_subscript_declaration} > > *下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*getter-setter 关键字代码块*](#getter-setter-keyword-block) > -> subscript-head {#subscript-head} +> ###### subscript-head {#subscript-head} > > *下标头* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **subscript** [*泛型参数子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) > -> subscript-result {#subscript-result} +> ###### subscript-result {#subscript-result} > > *下标结果* → **->** [*特性列表*](./07_Attributes.md#attributes)可选 [*类型*](./03_Types.md#type) > @@ -1524,24 +1524,24 @@ postfix operator 运算符名称 {} 声明了一个新的运算符以后,需要实现一个跟这个运算符同名的函数来实现这个运算符。如果是实现一个前缀或者后缀运算符,也必须使用相符的 `prefix` 或者 `postfix` 声明修饰符标记函数声明。如果是实现中缀运算符,则不需要使用 `infix` 声明修饰符标记函数声明。关于如何实现一个新的运算符的例子,请参阅 [自定义运算符](../chapter2/26_Advanced_Operators.md#custom_operators)。 -grammer_of_an_operator_declaration {#grammer_of_an_operator_declaration} +###### {#grammer_of_an_operator_declaration} > 运算符声明语法 > -operator-declaration {#operator-declaration} +###### {#operator-declaration} > *运算符声明* → [*前缀运算符声明*](#prefix-operator-declaration) | [*后缀运算符声明*](#postfix-operator-declaration) | [*中缀运算符声明*](#infix-operator-declaration) > -prefix-operator-declaration {#prefix-operator-declaration} +###### {#prefix-operator-declaration} > *前缀运算符声明* → **prefix** **运算符** [*运算符*](./02_Lexical_Structure.md#operator) **{** **}** > -> postfix-operator-declaration {#postfix-operator-declaration} +> ###### postfix-operator-declaration {#postfix-operator-declaration} > > *后缀运算符声明* → **postfix** **运算符** [*运算符*](./02_Lexical_Structure.html#operator) **{** **}** > -> infix-operator-declaration {#infix-operator-declaration} +> ###### infix-operator-declaration {#infix-operator-declaration} > > *中缀运算符声明* → **infix** **运算符** [*运算符*](./02_Lexical_Structure.md#operator) **{** [*中缀运算符属性*](#infix-operator-attributes)可选 **}** > -infix-operator-group {#infix-operator-group} +###### {#infix-operator-group} > *中缀运算符组* → [*优先级组名称*](#precedence-group-name) > @@ -1571,43 +1571,43 @@ Swift 定义了大量的优先级组来与标准库的运算符配合使用, 优先级组的赋值性表示在包含可选链操作时的运算符优先级。当设为 true 时,与优先级组对应的运算符在可选链操作中使用和标准库中赋值运算符同样的分组规则,当设为 false 或者不设置,该优先级组的运算符与不赋值的运算符遵循同样的可选链规则。 -grammer_of_a_precedence_group_declaration {#grammer_of_a_precedence_group_declaration} +###### {#grammer_of_a_precedence_group_declaration} > 优先级组声明语法 > -precedence-group-declaration {#precedence-group-declaration} +###### {#precedence-group-declaration} > *优先级组声明* → **precedence**[*优先级组名称*](#precedence-group-name){[*多优先级组属性*](#precedence-group-attributes)可选 } > -precedence-group-attributes {#precedence-group-attributes} +###### {#precedence-group-attributes} > *优先级组属性* → [*优先级组属性*](#precedence-group-attribute)[*多优先级组属性*](#precedence-group-attributes)可选 **{** **}** > -precedence-group-attribute {#precedence-group-attribute} +###### {#precedence-group-attribute} > *优先级组属性* → [*优先级组关系*](#precedence-group-relation) > > *优先级组属性* → [*优先级组赋值性*](#precedence-group-assignment) > > *优先级组属性* → [*优先级组相关性*](#precedence-group-associativity) > -> precedence-group-relation {#precedence-group-relation} +> ###### precedence-group-relation {#precedence-group-relation} > > *优先级组关系* → **higherThan:**[*多优先级组名称*](#precedence-group-names) > > *优先级组关系* → **lowerThan:**[*多优先级组名称*](#precedence-group-names) > -> precedence-group-assignment {#precedence-group-assignment} +> ###### precedence-group-assignment {#precedence-group-assignment} > > *优先级组赋值* → **assignment:**[*布尔字面值*](./02_Lexical_Structure.md#boolean-literal) > -precedence-group-associativity {#precedence-group-associativity} +###### {#precedence-group-associativity} > *优先级组结合性* → **associativity:left** > > *优先级组结合性* → **associativity:right** > > *优先级组结合性* → **associativity:none** > -precedence-group-names {#precedence-group-names} +###### {#precedence-group-names} > *多优先级组名称* → [*优先级组名称*](#precedence-group-name) | [*优先级组名称*](#precedence-group-name) | [*优先级组名称*](#precedence-group-name) > -precedence-group-name {#precedence-group-name} +###### {#precedence-group-name} > *优先级组名称* →[*标识符*](./02_Lexical_Structure.md#identifier) > @@ -1671,19 +1671,19 @@ Swift 提供了三个级别的访问控制:`public`、`internal` 和 `private` 以上访问级别修饰符都可以选择带上一个参数,该参数由一对圆括号和其中的 `set` 关键字组成(例如,`private(set)`)。使用这种形式的访问级别修饰符来限制某个属性或下标的 setter 的访问级别低于其本身的访问级别,正如 [Getter 和 Setter](../chapter2/25_Access_Control.md#getters_and_setters) 中所讨论的。 -grammer_of_a_declaration_modifier {#grammer_of_a_declaration_modifier} +###### {#grammer_of_a_declaration_modifier} > 声明修饰符的语法 > -declaration-modifier {#declaration-modifier} +###### {#declaration-modifier} > *声明修饰符* → **class** | **convenience**| **dynamic** | **final** | **infix** | **lazy** | **mutating** | **nonmutating** | **optional** | **override** | **postfix** | **prefix** | **required** | **static** | **unowned** | **unowned ( safe )** | **unowned ( unsafe )** | **weak** > > 声明修饰符 → [*访问级别修饰符*](#access-level-modifier) > -> declaration-modifiers {#declaration-modifiers} +> ###### declaration-modifiers {#declaration-modifiers} > > *声明修饰符列表* → [*声明修饰符*](#declaration-modifier) [*声明修饰符列表*](#declaration-modifiers)可选 > -access-level-modifier {#access-level-modifier} +###### {#access-level-modifier} > 访问级别修饰符 → **internal** | **internal ( set )** > > 访问级别修饰符 → **private** | **private ( set )** diff --git a/source/chapter3/07_Attributes.md b/source/chapter3/07_Attributes.md index cabde055..07b03f18 100755 --- a/source/chapter3/07_Attributes.md +++ b/source/chapter3/07_Attributes.md @@ -358,28 +358,28 @@ convention 特性总是与下面的参数之一一起出现。 > 特性语法 > > -> attribute {#attribute} +> ###### attribute {#attribute} > > *特性*→ [特性名](#attribute_name) [特性参数子句](#atribute_argument_clause)可选 > -> attribute_name {#attribute_name} +> ###### attribute_name {#attribute_name} > > *特性名* → [标识符](./02_Lexical_Structure.md#identifier) > -> atribute_argument_clause {#atribute_argument_clause} +> ###### atribute_argument_clause {#atribute_argument_clause} > > *特性参数子句* → **(** [均衡令牌列表](#balanced_tokens)可选 **)** > -> attributes {#attributes} +> ###### attributes {#attributes} > > *特性列表* → [特性](#attribute) [特性列表](#attributes)可选 > > -> balanced_tokens {#balanced_tokens} +> ###### balanced_tokens {#balanced_tokens} > > *均衡令牌列表* → [均衡令牌](#balanced_token) [均衡令牌列表](#balanced_tokens)可选 > -> balanced_token {#balanced_token} +> ###### balanced_token {#balanced_token} > > *均衡令牌* → **(** [均衡令牌列表](#balanced_tokens)可选 **)** > diff --git a/source/chapter3/08_Patterns.md b/source/chapter3/08_Patterns.md index 64e5512a..e44017b1 100755 --- a/source/chapter3/08_Patterns.md +++ b/source/chapter3/08_Patterns.md @@ -10,7 +10,7 @@ Swift 中的模式分为两类:一种能成功匹配任何类型的值,另 > 模式语法 > -pattern {#pattern} +###### {#pattern} > *模式* → [*通配符模式*](#wildcard_pattern) [*类型标注*](03_Types.md#type-annotation)可选 > > *模式* → [*标识符模式*](#identifier_pattern) [*类型标注*](03_Types.md#type-annotation)可选 @@ -40,7 +40,7 @@ for _ in 1...3 { > 通配符模式语法 > -wildcard-pattern {#wildcard-pattern} +###### {#wildcard-pattern} > *通配符模式* → **_** > @@ -57,7 +57,7 @@ let someValue = 42 > 标识符模式语法 > -identifier-pattern {#identifier-pattern} +###### {#identifier-pattern} > *标识符模式* → [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -80,7 +80,7 @@ case let (x, y): > 值绑定模式语法 > -value-binding-pattern {#value-binding-pattern} +###### {#value-binding-pattern} > *值绑定模式* → **var** [*模式*](#pattern) | **let** [*模式*](#pattern) > @@ -109,13 +109,13 @@ let (a): Int = 2 // a: Int = 2 > 元组模式语法 > -tuple-pattern {#tuple-pattern} +###### {#tuple-pattern} > *元组模式* → **(** [*元组模式元素列表*](#tuple-pattern-element-list)可选 **)** > -tuple-pattern-element-list {#tuple-pattern-element-list} +###### {#tuple-pattern-element-list} > *元组模式元素列表* → [*元组模式元素*](#tuple-pattern-element) | [*元组模式元素*](#tuple-pattern-element) **,** [*元组模式元素列表*](#tuple-pattern-element-list) > -tuple-pattern-element {#tuple-pattern-element} +###### {#tuple-pattern-element} > *元组模式元素* → [*模式*](#pattern) > @@ -126,7 +126,7 @@ tuple-pattern-element {#tuple-pattern-element} > 枚举用例模式语法 > -enum-case-pattern {#enum-case-pattern} +###### {#enum-case-pattern} > *枚举用例模式* → [*类型标识*](./03_Types.md#type-identifier)可选 **.** [*枚举用例名*](./06_Declarations.md#enum-case-name) [*元组模式*](#tuple-pattern)可选 > @@ -163,7 +163,7 @@ for case let number? in arrayOfOptinalInts { > 可选模式语法 > -optional-pattern {#optional-pattern} +###### {#optional-pattern} > *可选模式* → [*标识符模式*](./03_Types.md#type-identifier) **?** > @@ -183,13 +183,13 @@ optional-pattern {#optional-pattern} > 类型转换模式语法 > -type-casting-pattern {#type-casting-pattern} +###### {#type-casting-pattern} > *类型转换模式* → [*is 模式*](#is-pattern) | [*as 模式*](#as-pattern) > -is-pattern {#is-pattern} +###### {#is-pattern} > *is 模式* → **is** [*类型*](./03_Types.md#type) > -as-pattern {#as-pattern} +###### {#as-pattern} > *as 模式* → [*模式*](#pattern) **as** [*类型*](03_Types.md#type) > @@ -231,6 +231,6 @@ default: > 表达式模式语法 > -expression-pattern {#expression-pattern} +###### {#expression-pattern} > *表达式模式* → [*表达式*](./04_Expressions.md#expression) > diff --git a/source/chapter3/09_Generic_Parameters_and_Arguments.md b/source/chapter3/09_Generic_Parameters_and_Arguments.md index 374157ce..70a72307 100755 --- a/source/chapter3/09_Generic_Parameters_and_Arguments.md +++ b/source/chapter3/09_Generic_Parameters_and_Arguments.md @@ -56,36 +56,36 @@ simpleMax(3.14159, 2.71828) // T 被推断为 Double 类型 > 泛型形参子句语法 > -generic-parameter-clause {#generic-parameter-clause} +###### {#generic-parameter-clause} > *泛型形参子句* → **<** [*泛型形参列表*](#generic-parameter-list) [*约束子句*](#requirement-clause)可选 **>** > -generic-parameter-list {#generic-parameter-list} +###### {#generic-parameter-list} > *泛型形参列表* → [*泛形形参*](#generic-parameter) | [*泛形形参*](#generic-parameter) **,** [*泛型形参列表*](#generic-parameter-list) > -generic-parameter {#generic-parameter} +###### {#generic-parameter} > *泛形形参* → [*类型名称*](./03_Types.md#type-name) > > *泛形形参* → [*类型名称*](./03_Types.md#type-name) **:** [*类型标识符*](./03_Types.md#type-identifier) > > *泛形形参* → [*类型名称*](./03_Types.md#type-name) **:** [*协议合成类型*](./03_Types.md#protocol-composition-type) > -> requirement-clause {#requirement-clause} +> ###### requirement-clause {#requirement-clause} > > *约束子句* → **where** [*约束列表*](#requirement-list) > -requirement-list {#requirement-list} +###### {#requirement-list} > *约束列表* → [*约束*](#requirement) | [*约束*](#requirement) **,** [*约束列表*](#requirement-list) > -requirement {#requirement} +###### {#requirement} > *约束* → [*一致性约束*](#conformance-requirement) | [*同类型约束*](#same-type-requirement) > -> conformance-requirement {#conformance-requirement} +> ###### conformance-requirement {#conformance-requirement} > > *一致性约束* → [*类型标识符*](./03_Types.md#type-identifier) **:** [*类型标识符*](./03_Types.md#type-identifier) > > *一致性约束* → [*类型标识符*](./03_Types.md#type-identifier) **:** [*协议合成类型*](./03_Types.md#protocol-composition-type) > -same-type-requirement {#same-type-requirement} +###### {#same-type-requirement} > *同类型约束* → [*类型标识符*](./03_Types.md#type-identifier) **==** [*类型*](./03_Types.md#type) > @@ -116,12 +116,12 @@ let arrayOfArrays: Array> = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] > 泛型实参子句语法 > -generic-argument-clause {#generic-argument-clause} +###### {#generic-argument-clause} > *泛型实参子句* → **<** [*泛型实参列表*](#generic-argument-list) **>** > -generic-argument-list {#generic-argument-list} +###### {#generic-argument-list} > *泛型实参列表* → [*泛型实参*](#generic-argument) | [*泛型实参*](#generic-argument) **,** [*泛型实参列表*](#generic-argument-list) > -generic-argument {#generic-argument} +###### {#generic-argument} > *泛型实参* → [*类型*](./03_Types.md#type) > From 3acdfbca8c4a43e6dc64bf844a6f1a190beef796 Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Wed, 27 Mar 2019 00:33:34 -0500 Subject: [PATCH 058/107] fix none text anchor --- source/chapter3/02_Lexical_Structure.md | 54 +++---- source/chapter3/03_Types.md | 48 +++--- source/chapter3/04_Expressions.md | 70 ++++----- source/chapter3/05_Statements.md | 142 +++++++++--------- source/chapter3/06_Declarations.md | 78 +++++----- source/chapter3/08_Patterns.md | 26 ++-- .../09_Generic_Parameters_and_Arguments.md | 18 +-- 7 files changed, 218 insertions(+), 218 deletions(-) diff --git a/source/chapter3/02_Lexical_Structure.md b/source/chapter3/02_Lexical_Structure.md index afc994f3..ffff9205 100755 --- a/source/chapter3/02_Lexical_Structure.md +++ b/source/chapter3/02_Lexical_Structure.md @@ -13,7 +13,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > 空白语法 > -###### {#whitespace} +###### whitespace {#whitespace} > *空白* → [*空白项*](#whitespace-item) [*空白*](#whitespace)可选 > > *空白项* → [*断行符*](#line-break) @@ -25,7 +25,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > *空白项* → U+0000,U+0009,U+000B,U+000C 或者 U+0020 > -###### {#line-break} +###### line-break {#line-break} > *断行符* → U+000A > > *断行符* → U+000D @@ -33,7 +33,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > *断行符* → U+000D 接着是 U+000A > -###### {#comment} +###### comment {#comment} > *注释* → // [*注释内容 断行*](#comment-text line-break) > > *多行注释* → `/*` [*多行注释内容*](#multiline-commnet-text) `*/` @@ -64,7 +64,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > 标识符语法 > -###### {#identifier} +###### identifier {#identifier} > *标识符* → [*头部标识符*](#identifier-head) [*标识符字符组*](#identifier-characters)可选 > > *标识符* → \`[*头部标识符*](#identifier-head) [*标识符字符组*](#identifier-characters)可选\` @@ -72,11 +72,11 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > *标识符* → [*隐式参数名*](#implicit-parameter-name) > -###### {#identifier-list} +###### identifier-list {#identifier-list} > *标识符列表* → [*标识符*](#identifier) | [*标识符*](#identifier) **,** [*标识符列表*](#identifier-list) > -###### {#identifier-head} +###### identifier-head {#identifier-head} > *头部标识符* → 大写或小写字母 A - Z > > *头部标识符* → _ @@ -110,7 +110,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > *头部标识符* → U+D0000–U+DFFFD 或者 U+E0000–U+EFFFD > -###### {#identifier-character} +###### identifier-character {#identifier-character} > *标识符字符* → 数值 0 - 9 > > *标识符字符* → U+0300–U+036F,U+1DC0–U+1DFF,U+20D0–U+20FF,或者 U+FE20–U+FE2F @@ -122,7 +122,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > *标识符字符组* → [*标识符字符*](#identifier-character) [*标识符字符组*](#identifier-characters)可选 > -###### {#implicit-parameter-name} +###### implicit-parameter-name {#implicit-parameter-name} > *隐式参数名* → **$** [*十进制数字列表*](#decimal-digits) > @@ -161,7 +161,7 @@ true // 布尔值字面量 > *字面量* → [*数值字面量*](#numeric-literal) | [*字符串字面量*](#string-literal) | [*布尔值字面量*](#boolean-literal) | [*nil 字面量*](#nil-literal) > -###### {#numeric-literal} +###### numeric-literal {#numeric-literal} > *数值字面量* → **-**可选 [*整数字面量*](#integer-literal) | **-**可选 [*浮点数字面量*](#floating-point-literal) > > ###### boolean-literal {#boolean-literal} @@ -187,7 +187,7 @@ true // 布尔值字面量 > 整数字面量语法 > -###### {#integer-literal} +###### integer-literal {#integer-literal} > *整数字面量* → [*二进制字面量*](#binary-literal) > > *整数字面量* → [*八进制字面量*](#octal-literal) @@ -197,7 +197,7 @@ true // 布尔值字面量 > *整数字面量* → [*十六进制字面量*](#hexadecimal-literal) > -###### {#binary-literal} +###### binary-literal {#binary-literal} > *二进制字面量* → **0b** [*二进制数字*](#binary-digit) [*二进制字面量字符组*](#binary-literal-characters)可选 > > ###### binary-digit {#binary-digit} @@ -213,7 +213,7 @@ true // 布尔值字面量 > *二进制字面量字符组* → [*二进制字面量字符*](#binary-literal-character) [*二进制字面量字符组*](#binary-literal-characters)可选 > -###### {#octal-literal} +###### octal-literal {#octal-literal} > *八进制字面量* → **0o** [*八进字数字*](#octal-digit) [*八进制字符组*](#octal-literal-characters)可选 > > ###### octal-digit {#octal-digit} @@ -229,7 +229,7 @@ true // 布尔值字面量 > *八进制字符组* → [*八进制字符*](#octal-literal-character) [*八进制字符组*](#octal-literal-characters)可选 > -###### {#decimal-literal} +###### decimal-literal {#decimal-literal} > *十进制字面量* → [*十进制数字*](#decimal-digit) [*十进制字符组*](#decimal-literal-characters)可选 > > ###### decimal-digit {#decimal-digit} @@ -249,7 +249,7 @@ true // 布尔值字面量 > *十进制字符组* → [*十进制字符*](#decimal-literal-character) [*十进制字符组*](#decimal-literal-characters)可选 > -###### {#hexadecimal-literal} +###### hexadecimal-literal {#hexadecimal-literal} > *十六进制字面量* → **0x** [*十六进制数字*](#hexadecimal-digit) [*十六进制字面量字符组*](#hexadecimal-literal-characters)可选 > > ###### hexadecimal-digit {#hexadecimal-digit} @@ -283,13 +283,13 @@ true // 布尔值字面量 > 浮点数字面量语法 > -###### {#floating-point-literal} +###### floating-point-literal {#floating-point-literal} > *浮点数字面量* → [*十进制字面量*](#decimal-literal) [*十进制分数*](#decimal-fraction)可选 [*十进制指数*](#decimal-exponent)可选 > > *浮点数字面量* → [*十六进制字面量*](#hexadecimal-literal) [*十六进制分数*](#hexadecimal-fraction)可选 [*十六进制指数*](#hexadecimal-exponent) > -###### {#decimal-fraction} +###### decimal-fraction {#decimal-fraction} > *十进制分数* → **.** [*十进制字面量*](#decimal-literal) > > ###### decimal-exponent {#decimal-exponent} @@ -297,7 +297,7 @@ true // 布尔值字面量 > *十进制指数* → [*十进制指数 e*](#floating-point-e) [*正负号*](#sign)可选 [*十进制字面量*](#decimal-literal) > -###### {#hexadecimal-fraction} +###### hexadecimal-fraction {#hexadecimal-fraction} > *十六进制分数* → **.** [*十六进制数字*](#hexadecimal-digit) [*十六进制字面量字符组*](#hexadecimal-literal-characters)可选 > > ###### hexadecimal-exponent {#hexadecimal-exponent} @@ -305,7 +305,7 @@ true // 布尔值字面量 > *十六进制指数* → [*十六进制指数 p*](#floating-point-p) [*正负号*](#sign)可选 [*十进制字面量*](#decimal-literal) > -###### {#floating-point-e} +###### floating-point-e {#floating-point-e} > *十进制指数 e* → **e** | **E** > > ###### floating-point-p {#floating-point-p} @@ -378,11 +378,11 @@ let textB = "Hello world" > 字符串字面量语法 > -###### {#string-literal} +###### string-literal {#string-literal} > *字符串字面量* → [*静态字符串字面量*](#static-string-literal) | [*插值字符串字面量*](#interpolated-string-literal) > -###### {#static-string-literal} +###### static-string-literal {#static-string-literal} > *静态字符串字面量* → **"**[*引用文本*](#quoted-text)可选**"** > > ###### quoted-text {#quoted-text} @@ -396,7 +396,7 @@ let textB = "Hello world" > *引用文本项* → 除了 **"**、**\\**、U+000A、U+000D 以外的所有 Unicode 字符 > -###### {#interpolated-string-literal} +###### interpolated-string-literal {#interpolated-string-literal} > *插值字符串字面量* → **"**[*插值文本*](#interpolated-text)可选**"** > > ###### interpolated-text {#interpolated-text} @@ -408,7 +408,7 @@ let textB = "Hello world" > *插值文本项* → **\\****(**[*表达式*](./04_Expressions.md)**)** | [*引用文本项*](#quoted-text-item) > -###### {#escaped-character} +###### escaped-character {#escaped-character} > *转义字符* → **\\****0** | **\\****\\** | **\t** | **\n** | **\r** | **\\"** | **\\'** > > *转义字符* → **\u {** [*unicode 标量数字*](#unicode-scalar-digits) **}** @@ -450,13 +450,13 @@ Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基 > 运算符语法 > -###### {#operator} +###### operator {#operator} > *运算符* → [*头部运算符*](#operator-head) [*运算符字符组*](#operator-characters)可选 > > *运算符* → [*头部点运算符*](#dot-operator-head) [*点运算符字符组*](#dot-operator-characters)可选 > -###### {#operator-head} +###### operator-head {#operator-head} > *头部运算符* → **/** | **=** | **-** | **+** | **!** | __*__ | **%** | **<** | **>** | **&** | **|** | **^** | **~** | **?** > > *头部运算符* → U+00A1–U+00A7 @@ -488,7 +488,7 @@ Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基 > *头部运算符* → U+3008–U+3030 > -###### {#operator-character} +###### operator-character {#operator-character} > *运算符字符* → [*头部运算符*](#operator-head) > > *运算符字符* → U+0300–U+036F @@ -508,7 +508,7 @@ Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基 > *运算符字符组* → [*运算符字符*](#operator-character) [*运算符字符组*](#operator-characters)可选 > -###### {#dot-operator-head} +###### dot-operator-head {#dot-operator-head} > *头部点运算符* → **..** > > ###### dot-operator-character {#dot-operator-character} @@ -520,7 +520,7 @@ Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基 > *点运算符字符组* → [*点运算符字符*](#dot-operator-character) [*点运算符字符组*](#dot-operator-characters)可选 > -###### {#binary-operator} +###### binary-operator {#binary-operator} > *二元运算符* → [*运算符*](#operator) > > ###### prefix-operator {#prefix-operator} diff --git a/source/chapter3/03_Types.md b/source/chapter3/03_Types.md index e5627a56..49380784 100644 --- a/source/chapter3/03_Types.md +++ b/source/chapter3/03_Types.md @@ -27,7 +27,7 @@ Swift 语言存在两种类型:命名型类型和复合型类型。命名型 > 类型语法 > -###### {#type} +###### type {#type} > *类型* → [*数组类型*](#array-type) > > *类型* → [*字典类型*](#dictionary-type) @@ -67,7 +67,7 @@ func someFunction(a: Int) { /* ... */ } > 类型注解语法 > -###### {#type-annotation} +###### type-annotation {#type-annotation} > *类型注解* → **:** [*特性列表*](./07_Attributes.md#attributes)可选 **输入输出参数**可选 [*类型*](#type) > @@ -91,10 +91,10 @@ var someValue: ExampleModule.MyType > 类型标识符语法 > -###### {#type-identifier} +###### type-identifier {#type-identifier} > *类型标识符* → [*类型名称*](#type-name) [*泛型参数子句*](08_Generic_Parameters_and_Arguments.md#generic_argument_clause)可选 | [*类型名称*](#type-name) [*泛型参数子句*](08_Generic_Parameters_and_Arguments.md#generic_argument_clause)可选 **.** [*类型标识符*](#type-identifier) > -###### {#type-name} +###### type-name {#type-name} > *类型名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -116,16 +116,16 @@ someTuple = (left: 5, right: 5) // 错误:命名类型不匹配 > 元组类型语法 > -###### {#tuple-type} +###### tuple-type {#tuple-type} > *元组类型* → **(** [*元组类型元素列表*](#tuple-type-element-list) 可选 **)** > -###### {#tuple-type-element-list} +###### tuple-type-element-list {#tuple-type-element-list} > *元组类型元素列表* → [*元组类型元素*](#tuple-type-element) | [*元组类型元素*](#tuple-type-element) **,** [*元组类型元素列表*](#tuple-type-element-list) > -###### {#tuple-type-element} +###### tuple-type-element {#tuple-type-element} > *元组类型元素* → [*元素名*](#element-name) [*类型注解*](#type-annotation) | [*类型*](#type) > -###### {#element-name} +###### element-name {#element-name} > *元素名* → [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -209,23 +209,23 @@ func takesTwoFunctions(first: (Any) -> Void, second: (Any) -> Void) { > 函数类型语法 > -###### {#function-type} +###### function-type {#function-type} > *函数类型* → [*特性列表*](./07_Attributes.md#attributes)可选 [*函数类型子句*](#function-type-argument-clause) **throws**可选 **->** [*类型*](#type) > > *函数类型* → [*特性列表*](./07_Attributes.md#attributes)可选 [*函数类型子句*](#function-type-argument-clause) **rethrows­** **->** [*类型*](#type) > -###### {#function-type-argument-clause} +###### function-type-argument-clause {#function-type-argument-clause} > *函数类型子句* → (­)­ > > *函数类型子句* → ([*函数类型参数列表*](#function-type-argument-list)*...*­可选)­ > -###### {#function-type-argument-list} +###### function-type-argument-list {#function-type-argument-list} > *函数类型参数列表* → [*函数类型参数*](function-type-argument) | [*函数类型参数*](function-type-argument), [*函数类型参数列表*](#function-type-argument-list) > -###### {#function-type-argument} +###### function-type-argument {#function-type-argument} > *函数类型参数* → [*特性列表*](./07_Attributes.md#attributes)可选 **输入输出参数**可选 [*类型*](#type) | [*参数标签*](#argument-label) [*类型注解*](#type-annotation) > -###### {#argument-label} +###### argument-label {#argument-label} > *参数标签* → [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -257,7 +257,7 @@ var array3D: [[[Int]]] = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]] > 数组类型语法 > -###### {#array-type} +###### array-type {#array-type} > *数组类型* → **[** [*类型*](#type) **]** > @@ -285,7 +285,7 @@ let someDictionary: Dictionary = ["Alex": 31, "Paul": 39] > 字典类型语法 > -###### {#dictionary-type} +###### dictionary-type {#dictionary-type} > *字典类型* → **[** [*类型*](#type) **:** [*类型*](#type) **]** > @@ -316,7 +316,7 @@ optionalInteger! // 42 > 可选类型语法 > -###### {#optional-type} +###### optional-type {#optional-type} > *可选类型* → [*类型*](#type) **?** > @@ -350,7 +350,7 @@ let implicitlyUnwrappedArray: [Int]! // 正确 > 隐式解析可选类型语法 > -###### {#implicitly-unwrapped-optional-type} +###### implicitly-unwrapped-optional-type {#implicitly-unwrapped-optional-type} > *隐式解析可选类型* → [*类型*](#type) **!** > @@ -368,13 +368,13 @@ let implicitlyUnwrappedArray: [Int]! // 正确 > 协议合成类型语法 > -###### {#protocol-composition-type} +###### protocol-composition-type {#protocol-composition-type} > *协议合成类型* → [*协议标识符*](#protocol-identifier) & [*协议合成延续*](#protocol-composition-continuation) > -###### {#protocol-composition-continuation} +###### protocol-composition-continuation {#protocol-composition-continuation} > *协议合成延续* → [*协议标识符*](#protocol-identifier) | [*协议合成类型*](#protocol-composition-type) > -###### {#protocol-identifier} +###### protocol-identifier {#protocol-identifier} > *协议标识符* → [*类型标识符*](#type-identifier) > @@ -423,7 +423,7 @@ let anotherInstance = metatype.init(string: "some string") > 元类型语法 > -###### {#metatype-type} +###### metatype-type {#metatype-type} > *元类型* → [*类型*](#type) **.** **Type** | [*类型*](#type) **.** **Protocol** > @@ -438,13 +438,13 @@ let anotherInstance = metatype.init(string: "some string") > 类型继承子句语法 > -###### {#type_inheritance_clause} +###### type_inheritance_clause {#type_inheritance_clause} > *类型继承子句* → **:** [*类型继承列表*](#type-inheritance-list) > -###### {#type-inheritance-list} +###### type-inheritance-list {#type-inheritance-list} > *类型继承列表* → [*类型标识符*](#type-identifier) | [*类型标识符*](#type-identifier) **,** [*类型继承列表*](#type-inheritance-list) > -###### {#class-requirement} +###### class-requirement {#class-requirement} ## 类型推断 {#type_inference} diff --git a/source/chapter3/04_Expressions.md b/source/chapter3/04_Expressions.md index 7eebe85c..7e6d10b8 100644 --- a/source/chapter3/04_Expressions.md +++ b/source/chapter3/04_Expressions.md @@ -6,10 +6,10 @@ Swift 中存在四种表达式:前缀表达式,二元表达式,基本表 > 表达式语法 > -###### {#expression} +###### expression {#expression} > *表达式* → [*try 运算符*](#try-operator)可选 [*前缀表达式*](#prefix-expression) [*二元表达式列表*](#binary-expressions)可选 > -###### {#expression-list} +###### expression-list {#expression-list} > *表达式列表* → [*表达式*](#expression) | [*表达式*](#expression) **,** [*表达式列表*](#expression-list) > @@ -24,12 +24,12 @@ Swift 中存在四种表达式:前缀表达式,二元表达式,基本表 > 前缀表达式语法 > -###### {#prefix-expression} +###### prefix-expression {#prefix-expression} > *前缀表达式* → [*前缀运算符*](./02_Lexical_Structure.md#prefix-operator)可选 [*后缀表达式*](#postfix-expression) > > *前缀表达式* → [*输入输出表达式*](#in-out-expression) > -###### {#in-out-expression} +###### in-out-expression {#in-out-expression} > *输入输出表达式* → **&** [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -66,7 +66,7 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try 关于 `try`、`try?` 和 `try!` 的更多信息,以及该如何使用的例子,请参阅 [错误处理](../chapter2/17_Error_Handling.md)。 > Try 表达式语法 > -###### {#try-operator} +###### try-operator {#try-operator} > *try 运算符* → **try** | **try?** | **try!** > @@ -85,7 +85,7 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try > 在解析时,一个二元表达式将作为一个扁平列表表示,然后根据运算符的优先级,再进一步进行组合。例如,`2 + 3 * 5` 首先被看作具有五个元素的列表,即 `2`、`+`、`3`、`*`、`5`,随后根据运算符优先级组合为 `(2 + (3 * 5))`。 > -###### {#binary-expression} +###### binary-expression {#binary-expression} > 二元表达式语法 > > *二元表达式* → [*二元运算符*](./02_Lexical_Structure.md#binary-operator) [*前缀表达式*](#prefix-expression) @@ -96,7 +96,7 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try > > *二元表达式* → [*类型转换运算符*](#type-casting-operator) > -###### {#binary-expressions} +###### binary-expressions {#binary-expressions} > *二元表达式列表* → [*二元表达式*](#binary-expression) [*二元表达式列表*](#binary-expressions)可选 > @@ -117,7 +117,7 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try > 赋值运算符语法 > -###### {#assignment-operator} +###### assignment-operator {#assignment-operator} > *赋值运算符* → **=** > @@ -133,7 +133,7 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try > 三元条件运算符语法 > -###### {#conditional-operator} +###### conditional-operator {#conditional-operator} > *三元条件运算符* → **?** [*表达式*](#expression) **:** > @@ -176,7 +176,7 @@ f(x as Any) 关于类型转换的更多内容和例子,请参阅 [类型转换](../chapter2/18_Type_Casting.md)。 -###### {#type-casting-operator} +###### type-casting-operator {#type-casting-operator} > 类型转换运算符语法 > > *类型转换运算符* → **is** [*类型*](./03_Types.md#type) @@ -193,7 +193,7 @@ f(x as Any) > 基本表达式语法 > -###### {#primary-expression} +###### primary-expression {#primary-expression} > *基本表达式* → [*标识符*](./02_Lexical_Structure.md#identifier) [*泛型实参子句*](./09_Generic_Parameters_and_Arguments.md#generic-argument-clause)可选 > > *基本表达式* → [*字面量表达式*](#literal-expression) @@ -354,17 +354,17 @@ struct Point { > Self 表达式语法 > -###### {#self-expression} +###### self-expression {#self-expression} > *self 表达式* → **self** | [*self 方法表达式*](#self-method-expression) | [*self 下标表达式*](#self-subscript-expression) | [*self 构造器表达式*](#self-initializer-expression) > > -###### {#self-method-expression} +###### self-method-expression {#self-method-expression} > *self 方法表达式* → **self** **.** [*标识符*](./02_Lexical_Structure.md#identifier) > -###### {#self-subscript-expression} +###### self-subscript-expression {#self-subscript-expression} > *self 下标表达式* → **self** **[** [*函数调用参数表*](#function-call-argument-list­) **]** > -###### {#self-initializer-expression} +###### self-initializer-expression {#self-initializer-expression} > *self 构造器表达式* → **self** **.** **init** > @@ -384,16 +384,16 @@ struct Point { > 父类表达式语法 > -###### {#superclass-expression} +###### superclass-expression {#superclass-expression} > *父类表达式* → [*父类方法表达式*](#superclass-method-expression) | [*父类下标表达式*](#superclass-subscript-expression) | [*父类构造器表达式*](#superclass-initializer-expression) > -###### {#superclass-method-expression} +###### superclass-method-expression {#superclass-method-expression} > *父类方法表达式* → **super** **.** [*标识符*](./02_Lexical_Structure.md#identifier) > -###### {#superclass-subscript-expression} +###### superclass-subscript-expression {#superclass-subscript-expression} > *父类下标表达式* → **super** [[*函数调用参数表*](#function-call-argument-list­) **]** > -###### {#superclass-initializer-expression} +###### superclass-initializer-expression {#superclass-initializer-expression} > *父类构造器表达式* → **super** **.** **init** > @@ -553,7 +553,7 @@ x = .AnotherValue > 隐式成员表达式语法 > -###### {#implicit-member-expression} +###### implicit-member-expression {#implicit-member-expression} > *隐式成员表达式* → **.** [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -562,7 +562,7 @@ x = .AnotherValue > 圆括号表达式语法 > -###### {#parenthesized-expression} +###### parenthesized-expression {#parenthesized-expression} > *圆括号表达式* → **( [*表达式*](#expression) )** > @@ -583,13 +583,13 @@ x = .AnotherValue > 元组表达式语法 > -###### {#tuple-expression} +###### tuple-expression {#tuple-expression} > *元组表达式* → **( )** | **(**[*元组元素*](#tuple-element), [*元组元素列表*](#tuple-element-list) **)** > -###### {#tuple-element-list} +###### tuple-element-list {#tuple-element-list} > *元组元素列表* → [*元组元素*](#tuple-element) | [*元组元素*](#tuple-element) **,** [*元组元素列表*](#tuple-element-list) > -###### {#tuple-element} +###### tuple-element {#tuple-element} > *元组元素* → [*表达式*](#expression) | [*标识符*](identifier) **:** [*表达式*](#expression) > @@ -603,7 +603,7 @@ x = .AnotherValue > 通配符表达式语法 > -###### {#wildcard-expression} +###### wildcard-expression {#wildcard-expression} > *通配符表达式* → **_** > @@ -809,7 +809,7 @@ let anotherSelector = #selector(SomeClass.doSomething(_:) as (SomeClass) -> (Str > 选择器表达式语法 > -###### {#selector-expression} +###### selector-expression {#selector-expression} > *选择器表达式* → __#selector__ **(** [*表达式*](#expression) **)** > > *选择器表达式* → __#selector__ **(** [*getter:表达式*](#expression) **)** @@ -881,7 +881,7 @@ print(keyPath == c.getSomeKeyPath()) > 后缀表达式语法 > -###### {#postfix-expression} +###### postfix-expression {#postfix-expression} > *后缀表达式* → [*基本表达式*](#primary-expression) > > *后缀表达式* → [*后缀表达式*](#postfix-expression) [*后缀运算符*](02_Lexical_Structure.md#postfix-operator) @@ -1001,7 +1001,7 @@ let s3 = someValue.dynamicType.init(data: 7) // 有效 > 构造器表达式语法 > -###### {#initializer-expression} +###### initializer-expression {#initializer-expression} > *构造器表达式* → [*后缀表达式*](#postfix-expression) **.** **init** > > *构造器表达式* → [*后缀表达式*](#postfix-expression) **.** **init** **(** [*参数名称*](#argument-names) **)** @@ -1067,17 +1067,17 @@ let x = [10, 3, 20, 15, 4] > 显式成员表达式语法 > -###### {#explicit-member-expression} +###### explicit-member-expression {#explicit-member-expression} > *显式成员表达式* → [*后缀表达式*](#postfix-expression) **.** [*十进制数字*] (02_Lexical_Structure.md#decimal-digit) > > *显式成员表达式* → [*后缀表达式*](#postfix-expression) **.** [*标识符*](02_Lexical_Structure.md#identifier) [*泛型实参子句*](./09_Generic_Parameters_and_Arguments.md#generic-argument-clause)可选
> > *显式成员表达式* → [*后缀表达式*](#postfix-expression) **.** [*标识符*] (02_Lexical_Structure.md#identifier) **(** [*参数名称*](#argument-names) **)** > -###### {#argument-names} +###### argument-names {#argument-names} > *参数名称* → [*参数名*](#argument-name) [*参数名称*](#argument-names)可选
> -###### {#argument-name} +###### argument-name {#argument-name} > *参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) **:** > @@ -1095,7 +1095,7 @@ let x = [10, 3, 20, 15, 4] > 后缀 self 表达式语法 > -###### {#postfix-self-expression} +###### postfix-self-expression {#postfix-self-expression} > *后缀 self 表达式* → [*后缀表达式*](#postfix-expression) **.** **self** > @@ -1112,7 +1112,7 @@ let x = [10, 3, 20, 15, 4] > 下标表达式语法 > -###### {#subscript-expression} +###### subscript-expression {#subscript-expression} > *下标表达式* → [*后缀表达式*](#postfix-expression) **[** [*表达式列表*](#expression-list) **]** > @@ -1138,7 +1138,7 @@ someDictionary["a"]![0] = 100 > 强制取值语法 > -###### {#forced-value-expression} +###### forced-value-expression {#forced-value-expression} > *强制取值表达式* → [*后缀表达式*](#postfix-expression) **!** > @@ -1190,6 +1190,6 @@ someDictionary["a"]?[0] = someFunctionWithSideEffects() > 可选链表达式语法 > -###### {#optional-chaining-expression} +###### optional-chaining-expression {#optional-chaining-expression} > *可选链表达式* → [*后缀表达式*](#postfix-expression) **?** > diff --git a/source/chapter3/05_Statements.md b/source/chapter3/05_Statements.md index 51259de0..8a0c6413 100755 --- a/source/chapter3/05_Statements.md +++ b/source/chapter3/05_Statements.md @@ -7,7 +7,7 @@ > 语句语法 > -###### {#statement} +###### statement {#statement} > *语句* → [*表达式*](./04_Expressions.md#expression) **;**可选 > > *语句* → [*声明*](./06_Declarations.md#declaration) **;**可选 @@ -26,7 +26,7 @@ > > *语句* → [*编译器控制语句*](#compiler-control-statement) > -###### {#statements} +###### statements {#statements} > *多条语句* → [*语句*](#statement) [*多条语句*](#statements)可选 > @@ -38,7 +38,7 @@ > 循环语句语法 > > -###### {#loop-statement} +###### loop-statement {#loop-statement} > *循环语句* → [*for-in 语句*](#for-in-statement) > > *循环语句* → [*while 语句*](#while-statement) @@ -62,7 +62,7 @@ for item in collection { > for-in 语句语法 > > -###### {#for-in-statement} +###### for-in-statement {#for-in-statement} > *for-in 语句* → **for** **case**可选 [*模式*](./08_Patterns.md#pattern) **in** [*表达式*](./04_Expressions.md#expression) [*where 子句*](#where-clause)可选 [*代码块*](05_Declarations.md#code-block) > @@ -89,21 +89,21 @@ while condition { > while 语句语法 > > -###### {#while-statement} +###### while-statement {#while-statement} > *while 语句* → **while** [*条件子句*](#condition-clause) [*代码块*](05_Declarations.md#code-block) > -###### {#condition-clause} +###### condition-clause {#condition-clause} > *条件子句* → [*表达式*](./04_Expressions.md#expression) | [*表达式*](./04_Expressions.md#expression) **,** [*条件列表*](#condition-list) > -###### {#condition} +###### condition {#condition} > *条件* → [*表达式*](./04_Expressions.md#expression) |[*可用性条件*](#availability-condition) | [*case 条件*](#case-condition) | [*可选绑定条件*](#optional-binding-condition) > > -###### {#case-condition} +###### case-condition {#case-condition} > *case 条件* → **case** [*模式*](./08_Patterns.md#pattern) [*构造器*](./06_Declarations.md#initializer) > -###### {#optional-binding-condition} +###### optional-binding-condition {#optional-binding-condition} > *可选绑定条件* → **let** [*模式*](./08_Patterns.md#pattern) [*构造器*](./06_Declarations.md#initializer) | **var** [*模式*](./08_Patterns.md#pattern) [*构造器*](./06_Declarations.md#initializer) > @@ -130,7 +130,7 @@ repeat { > repeat-while 语句语法 > > -###### {#repeat-while-statement} +###### repeat-while-statement {#repeat-while-statement} > *repeat-while 语句* → **repeat** [*代码块*](./06_Declarations.md#code-block) **while** [*表达式*](./04_Expressions.md#expression) > @@ -142,7 +142,7 @@ repeat { > 分支语句语法 > > -###### {#branch-statement} +###### branch-statement {#branch-statement} > *分支语句* → [*if 语句*](#if-statement) > > *分支语句* → [*guard 语句*](#guard-statement) @@ -190,10 +190,10 @@ if condition 1 { > if 语句语法 > > -###### {#if-statement} +###### if-statement {#if-statement} > *if 语句* → **if** [*条件子句*](#condition-clause) [*代码块*](05_Declarations.md#code-block) [*else 子句*](#else-clause)可选 > -###### {#else-clause} +###### else-clause {#else-clause} > *else 子句* → **else** [*代码块*](./06_Declarations.md#code-block) | **else** [*if 语句*](#if-statement) > @@ -224,7 +224,7 @@ guard condition else { > guard 语句语法 > > -###### {#guard-statement} +###### guard-statement {#guard-statement} > *guard 语句* → **guard** [*条件子句*](#condition-clause) **else** [*代码块*] (05_Declarations.md#code-block) > @@ -296,46 +296,46 @@ case .suppressed: > switch 语句语法 > > -###### {#switch-statement} +###### switch-statement {#switch-statement} > *switch 语句* → **switch** [*表达式*](./04_Expressions.md#expression) **{** [*switch-case 列表*](#switch-cases)可选 **}** > -###### {#switch-cases} +###### switch-cases {#switch-cases} > *switch case 列表* → [*switch-case*](#switch-case) [*switch-case 列表*](#switch-cases)可选 > -###### {#switch-case} +###### switch-case {#switch-case} > *switch case* → [*case 标签*](#case-label) [*多条语句*](#statements) | [*default 标签*](#default-label) [*多条语句*](#statements) | [*conditional-switch-case*](#conditional-switch-case-label) > -###### {#case-label} +###### case-label {#case-label} > *case 标签* → [*属性*](#switch-case-attributes-label)可选 **case** [*case 项列表*](#case-item-list) **:** > -###### {#case-item-list} +###### case-item-list {#case-item-list} > *case 项列表* → [*模式*](./08_Patterns.md#pattern) [*where 子句*](#where-clause)可选 | [*模式*](07_Patterns.md#pattern) [*where 子句*](#where-clause)可选 **,** [*case 项列表*](#case-item-list) > -###### {#default-label} +###### default-label {#default-label} > *default 标签* → [*属性*](#switch-case-attributes-label)可选 **default** **:** > > -###### {#where-clause} +###### where-clause {#where-clause} > *where-clause* → **where** [*where 表达式*](#where-expression) > -###### {#where-expression} +###### where-expression {#where-expression} > *where-expression* → [*表达式*](./04_Expressions.md#expression) > > -###### {#grammar_conditional-switch-case} +###### grammar_conditional-switch-case {#grammar_conditional-switch-case} > *conditional-switch-case* → [*switch-if-directive-clause*](#switch-case-attributes-label) [*switch-elseif-directive-clauses*](#switch-case-attributes-label) 可选 [*switch-else-directive-clause*](#switch-case-attributes-label) 可选 [*endif-directive*](#switch-case-attributes-label) > -###### {#grammar_switch-if-directive-clause} +###### grammar_switch-if-directive-clause {#grammar_switch-if-directive-clause} > *switch-if-directive 语句* → [*if-directive*](#switch-case-attributes-label) [*compilation-condition*](#switch-case-attributes-label) [*switch-cases*](#switch-case-attributes-label) 可选 > -###### {#grammar_switch-elseif-directive-clauses} +###### grammar_switch-elseif-directive-clauses {#grammar_switch-elseif-directive-clauses} > *switch-elseif-directive 语句(复数)* → [*elseif-directive-clause*](#switch-case-attributes-label) [*switch-elseif-directive-clauses*](#switch-case-attributes-label)可选 > -###### {#grammar_switch-elseif-directive-clause} +###### grammar_switch-elseif-directive-clause {#grammar_switch-elseif-directive-clause} > *switch-elseif-directive 语句* → [*elseif-directive*](#switch-case-attributes-label) [*compilation-condition*](#switch-case-attributes-label) [*switch-cases*](#switch-case-attributes-label)可选 > -###### {#grammar_switch-else-directive-clause} +###### grammar_switch-else-directive-clause {#grammar_switch-else-directive-clause} > *switch-else-directive 语句* → [*else-directive*](#switch-case-attributes-label) [*switch-cases*](#switch-case-attributes-label) 可选 > @@ -349,7 +349,7 @@ case .suppressed: > 带标签的语句语法 > > -###### {#labeled-statement} +###### labeled-statement {#labeled-statement} > *带标签的语句* → [*语句标签*](#statement-label) [*循环语句*](#grammar_loop-statement) > > *带标签的语句* → [*语句标签*](#statement-label) [*if 语句*](#if-statement) @@ -358,10 +358,10 @@ case .suppressed: > > > *带标签的语句* → [*语句标签*](#statement-label) [*do 语句*](#sdo-statement) > -###### {#statement-label} +###### statement-label {#statement-label} > *语句标签* → [*标签名称*](#label-name) **:** > -###### {#label-name} +###### label-name {#label-name} > *标签名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -371,7 +371,7 @@ case .suppressed: > 控制转移语句语法 > > -###### {#control-transfer-statement} +###### control-transfer-statement {#control-transfer-statement} > *控制转移语句* → [*break 语句*](#break-statement) > > *控制转移语句* → [*continue 语句*](#continue-statement) @@ -402,7 +402,7 @@ case .suppressed: > break 语句语法 > > -###### {#break-statement} +###### break-statement {#break-statement} > *break 语句* → **break** [*标签名称*](#label-name)可选 > @@ -427,7 +427,7 @@ case .suppressed: > continue 语句语法 > > -###### {#continue-statement} +###### continue-statement {#continue-statement} > *continue 语句* → **continue** [*标签名称*](#label-name)可选 > @@ -441,7 +441,7 @@ case .suppressed: > fallthrough 语句语法 > > -###### {#fallthrough-statement} +###### fallthrough-statement {#fallthrough-statement} > *fallthrough 语句* → **fallthrough** > @@ -468,7 +468,7 @@ case .suppressed: > return 语句语法 > > -###### {#return-statement} +###### return-statement {#return-statement} > *return 语句* → **return** [*表达式*](./04_Expressions.md#expression)可选 > @@ -489,7 +489,7 @@ case .suppressed: > throw 语句语法 > > -###### {#throw-statement} +###### throw-statement {#throw-statement} > *throw 语句* → **throw** [*表达式*](./04_Expressions.md#expression) > @@ -525,7 +525,7 @@ f() > defer 语句语法 > > -###### {#defer-statement} +###### defer-statement {#defer-statement} > *延迟语句* → **defer** [*代码块*](./06_Declarations.md#code-block) > @@ -556,13 +556,13 @@ do { > do 语句语法 > > -###### {#do-statement} +###### do-statement {#do-statement} > *do 语句* → **do** [*代码块*](./06_Declarations.md#code-block) [*多条 catch 子句*](#catch-clauses)可选 > -###### {#catch-clauses} +###### catch-clauses {#catch-clauses} > *多条 catch 子句* → [*catch 子句*](#catch-clause) [*多条 catch 子句*](#catch-clauses)可选 > -###### {#catch-clause} +###### catch-clause {#catch-clause} > *catch 子句* → **catch** [*模式*](./08_Patterns.md#pattern)可选 [*where 子句*](#where-clause)可选 [*代码块*](05_Declarations.md#code-block) > @@ -572,7 +572,7 @@ do { > 编译器控制语句语法 > > -###### {#compiler-control-statement} +###### compiler-control-statement {#compiler-control-statement} > *编译器控制语句* → [*条件编译语句*](#grammar_conditional-compilation-block) > > *编译器控制语句* → [*线路控制语句*](#line-control-statement) @@ -651,23 +651,23 @@ statements to compile if both compilation conditions are false > 即使没有被编译,编译配置中的语句仍然会被解析。然而,唯一的例外是编译配置语句中包含语言版本检测函数:仅当 `Swift` 编译器版本和语言版本检测函数中指定的版本号匹配时,语句才会被解析。这种设定能确保旧的编译器不会尝试去解析新 Swift 版本的语法。 > -###### {#build-config-statement} +###### build-config-statement {#build-config-statement} > 条件编译代码块语法 > > -###### {#grammar_conditional-compilation-block} +###### grammar_conditional-compilation-block {#grammar_conditional-compilation-block} > *条件编译代码块* → [*if-directive 语句*](#grammar_if-directive-clause) [*elseif-directive 语句(复数)*](#grammar_elseif-directive-clauses)可选 [*else-directive 语句*](#grammar_else-directive-clause)可选 [*endif-directive*](#grammar_endif-directive) > -###### {#grammar_if-directive-clause} +###### grammar_if-directive-clause {#grammar_if-directive-clause} > *if-directive 语句* → [*if-directive*](#grammar_if-directive) [*编译条件*](#compilation-condition) [*语句(复数)*](#statements)可选 > -###### {#grammar_elseif-directive-clauses} +###### grammar_elseif-directive-clauses {#grammar_elseif-directive-clauses} > *elseif-directive 语句(复数)* → [*elseif-directive 语句*](#grammar_elseif-directive-clause) [*elseif-directive 语句(复数)*](#grammar_elseif-directive-clauses) > -###### {#grammar_elseif-directive-clauses} +###### grammar_elseif-directive-clauses {#grammar_elseif-directive-clauses} > *elseif-directive 语句* → [*elseif-directive*](#grammar_elseif-directive) [*编译条件*](#compilation-condition) [*语句(复数)*](#statements)可选 > -###### {#grammar_else-directive-clause} +###### grammar_else-directive-clause {#grammar_else-directive-clause} > *else-directive 语句* → [*else-directive*](#grammar_else-directive) [*语句(复数)*](#statements)可选 > @@ -681,7 +681,7 @@ statements to compile if both compilation conditions are false > *endif-directive* → **#endif** > -###### {#compilation-condition} +###### compilation-condition {#compilation-condition} > *编译条件* → [*平台条件*](#grammar_platform-condition) > > *编译条件* → [*标识符*](./02_Lexical_Structure.md#identifier) @@ -697,41 +697,41 @@ statements to compile if both compilation conditions are false > *编译条件* → [*编译条件*](#compilation-condition) **||** [*编译条件*](#compilation-condition) > -###### {#grammar_platform-condition} -###### {#grammar_platform-condition-os} +###### grammar_platform-condition {#grammar_platform-condition} +###### grammar_platform-condition-os {#grammar_platform-condition-os} > *平台条件* → **os ( [*操作系统*](#operating-system) )** > -###### {#grammar_platform-condition-arch} +###### grammar_platform-condition-arch {#grammar_platform-condition-arch} > *平台条件* → **arch ( [*架构*](#architecture) )** > -###### {#grammar_platform-condition-swift} +###### grammar_platform-condition-swift {#grammar_platform-condition-swift} > *平台条件* → **swift ( >= [*swift 版本*](#swift-version) )** | **swift ( < [*swift 版本*](#swift-version) )** > -###### {#grammar_platform-condition-compiler} +###### grammar_platform-condition-compiler {#grammar_platform-condition-compiler} > *平台条件* → **compiler ( >= [*swift 版本*](#swift-version) )** | **compiler ( < [*swift 版本*](#swift-version) )** > -###### {#grammar_platform-condition-canImport} +###### grammar_platform-condition-canImport {#grammar_platform-condition-canImport} > *平台条件* → **canImport ( [*模块名*](#grammar_module-name) )** > -###### {#grammar_platform-condition-targetEnvironment} +###### grammar_platform-condition-targetEnvironment {#grammar_platform-condition-targetEnvironment} > *平台条件* → **targetEnvironment ( [*环境*](#grammar_environment) )** > -###### {#operating-system} +###### operating-system {#operating-system} > *操作系统* → **macOS** | **iOS** | **watchOS** | **tvOS** > -###### {#architecture} +###### architecture {#architecture} > *架构* → **i386** | **x86_64** | **arm** | **arm64** > -###### {#swift-version} +###### swift-version {#swift-version} > *swift 版本* → [*十进制数字*](./02_Lexical_Structure.md#decimal-digit) ­**.** ­[*swift 版本延续*](#grammar_swift-version-continuation) 可选 > -###### {#grammar_swift-version-continuation} +###### grammar_swift-version-continuation {#grammar_swift-version-continuation} > *swift 版本延续* → **.** [*十进制数字*](./02_Lexical_Structure.md#decimal-digit) [*swift 版本延续*](#grammar_swift-version-continuation) 可选 > -###### {#grammar_module-name} +###### grammar_module-name {#grammar_module-name} > *模块名* → [*identifier*](./02_Lexical_Structure.md#identifier) > -###### {#grammar_environment} +###### grammar_environment {#grammar_environment} > *环境* → **模拟器** > @@ -750,7 +750,7 @@ statements to compile if both compilation conditions are false 第二种的行控制语句,`#sourceLocation()`,会将源代码的定位信息重置回默认的行号和文件名。 -###### {#line-control-statement} +###### line-control-statement {#line-control-statement} > 行控制语句语法 > > @@ -758,10 +758,10 @@ statements to compile if both compilation conditions are false > > *行控制语句* → **#sourceLocation()** > -###### {#line-number} +###### line-number {#line-number} > *行号* → 大于 0 的十进制整数 > -###### {#file-name} +###### file-name {#file-name} > *文件名* → [*静态字符串字面量*](./02_Lexical_Structure.md#static-string-literal) > @@ -779,12 +779,12 @@ statements to compile if both compilation conditions are false > 编译时诊断语句语法 > > -###### {#grammar_compile-time-diagnostic-statement} +###### grammar_compile-time-diagnostic-statement {#grammar_compile-time-diagnostic-statement} > *诊断语句* → **#error** **(** [*diagnostic-message*](#grammar_diagnostic-message) **)** > > *诊断语句* → **#warning** **(** [*diagnostic-message*](#grammar_diagnostic-message) **)** > -###### {#grammar_diagnostic-message} +###### grammar_diagnostic-message {#grammar_diagnostic-message} > *诊断语句* → [*静态字符串字面量*](./02_Lexical_Structure.md#static-string-literal) > @@ -810,19 +810,19 @@ if #available(platform name version, ..., *) { > 可用性条件语法 > > -###### {#availability-condition} +###### availability-condition {#availability-condition} > *可用性条件* → **#available** **(** [*可用性参数列表*](#availability-arguments) **)** > -###### {#availability-arguments} +###### availability-arguments {#availability-arguments} > *可用性参数列表* → [*可用性参数*](#availability-argument) | [*可用性参数*](#availability-argument) **,** [*可用性参数列表*](#availability-arguments) > -###### {#availability-argument} +###### availability-argument {#availability-argument} > *可用性参数* → [平台名称](#platform-name) [平台版本](#platform-version) > > *可用性条件* → __*__ > > -###### {#platform-name} +###### platform-name {#platform-name} > *平台名称* → **iOS** | **iOSApplicationExtension** > > *平台名称* → **OSX** | **macOSApplicationExtension** @@ -831,7 +831,7 @@ if #available(platform name version, ..., *) { > > *平台名称* → **tvOS** > -###### {#platform-version} +###### platform-version {#platform-version} > *平台版本* → [十进制数字](./02_Lexical_Structure.md#decimal-digits) > > *平台版本* → [十进制数字](./02_Lexical_Structure.md#decimal-digits) **.** [十进制数字](./02_Lexical_Structure.md#decimal-digits) diff --git a/source/chapter3/06_Declarations.md b/source/chapter3/06_Declarations.md index 2189cb36..4f538449 100755 --- a/source/chapter3/06_Declarations.md +++ b/source/chapter3/06_Declarations.md @@ -80,7 +80,7 @@ import 导入类型 模块.符号名 import 模块.子模块 ``` -###### {#grammer_of_an_import_declaration} +###### grammer_of_an_import_declaration {#grammer_of_an_import_declaration} > 导入声明语法 > > ###### import-declaration {#import-declaration} @@ -132,7 +132,7 @@ print("The second number is \(secondNumber).") 如果还想获得更多关于常量的信息或者想在使用中获得帮助,请参阅 [常量和变量](../chapter2/01_The_Basics.md#constants_and_variables) 和 [存储属性](../chapter2/10_Properties.md#stored_properties)。 -###### {#grammer_of_a_constant_declaration} +###### grammer_of_a_constant_declaration {#grammer_of_a_constant_declaration} > 常量声明语法 > > ###### constant-declaration {#constant-declaration} @@ -242,10 +242,10 @@ var 变量名称: 类型 = 表达式 { > 在一个类声明中,使用关键字 `static` 与同时使用 `class` 和 `final` 去标记一个声明的效果相同。 > -###### {#grammer_of_a_variable_declaration} +###### grammer_of_a_variable_declaration {#grammer_of_a_variable_declaration} > 变量声明语法 > -###### {#variable-declaration} +###### variable-declaration {#variable-declaration} > *变量声明* → [*变量声明头*](#variable-declaration-head) [*模式构造器列表*](#pattern-initializer-list) > > *变量声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*代码块*](#code-block) @@ -259,7 +259,7 @@ var 变量名称: 类型 = 表达式 { > *变量声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*构造器*](#initializer)可选 [*willSet-didSet 代码块*](#willSet-didSet-block) > -###### {#variable-declaration-head} +###### variable-declaration-head {#variable-declaration-head} > *变量声明头* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **var** > > ###### variable-name {#variable-name} @@ -267,7 +267,7 @@ var 变量名称: 类型 = 表达式 { > *变量名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > -###### {#getter-setter-block} +###### getter-setter-block {#getter-setter-block} > *getter-setter 代码块* → [*代码块*](#code-block) > > *getter-setter 代码块* → **{** [*getter 子句*](#getter-clause) [*setter 子句*](#setter-clause)可选 **}** @@ -287,7 +287,7 @@ var 变量名称: 类型 = 表达式 { > *setter 名称* → **(** [*标识符*](./02_Lexical_Structure.md#identifier) **)** > -###### {#getter-setter-keyword-block} +###### getter-setter-keyword-block {#getter-setter-keyword-block} > *getter-setter 关键字代码块* → **{** [*getter 关键字子句*](#getter-keyword-clause) [*setter 关键字子句*](#setter-keyword-clause)可选 **}** > > *getter-setter 关键字代码块* → **{** [*setter 关键字子句*](#setter-keyword-clause) [*getter 关键字子句*](#getter-keyword-clause) **}** @@ -301,7 +301,7 @@ var 变量名称: 类型 = 表达式 { > *setter 关键字子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **set** > -###### {#willSet-didSet-block} +###### willSet-didSet-block {#willSet-didSet-block} > *willSet-didSet 代码块* → **{** [*willSet 子句*](#willSet-clause) [*didSet 子句*](#didSet-clause)可选 **}** > > *willSet-didSet 代码块* → **{** [*didSet 子句*](#didSet-clause) [*willSet 子句*](#willSet-clause)可选 **}** @@ -370,7 +370,7 @@ func sum(_ sequence: T) -> Int where T.Element == Int { 另请参阅 [协议关联类型声明](#protocol_associated_type_declaration)。 -###### {#grammer_of_a_type_alias_declaration} +###### grammer_of_a_type_alias_declaration {#grammer_of_a_type_alias_declaration} > 类型别名声明语法 > > @@ -570,14 +570,14 @@ Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它 你可以重写一个不归方法,但是新的方法必须保持原有的返回类型和没有返回的行为。 -###### {#grammer_of_a_function_declaration} +###### grammer_of_a_function_declaration {#grammer_of_a_function_declaration} > 函数声明语法 > -###### {#function-declaration} +###### function-declaration {#function-declaration} > *函数声明* → [*函数头*](#function-head) [*函数名*](#function-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*函数签名*](#function-signature) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause) [*函数体*](#function-body)可选 > -###### {#function-head} +###### function-head {#function-head} > *函数头* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **func** > > ###### function-name {#function-name} @@ -731,7 +731,7 @@ enum GamePlayMode: String { 可以使用 `switch` 语句来检验枚举用例的值,正如 [使用 switch 语句匹配枚举值](../chapter2/08_Enumerations.md#matching_enumeration_values_with_a_switch_statement) 所述。枚举类型是模式匹配的,依靠 `switch` 语句 `case` 块中的枚举用例模式,正如 [枚举用例模式](./08_Patterns.md#enumeration_case_pattern) 所述。 -###### {#grammer_of_an_enumeration_declaration} +###### grammer_of_an_enumeration_declaration {#grammer_of_an_enumeration_declaration} > 枚举声明语法 > > @@ -837,7 +837,7 @@ struct 结构体名称: 采纳的协议 { 可以使用扩展声明来扩展结构体类型的行为,请参阅 [扩展声明](#extension_declaration)。 -###### {#grammer_of_a_structure_declaration} +###### grammer_of_a_structure_declaration {#grammer_of_a_structure_declaration} > 结构体声明语法 > > @@ -896,7 +896,7 @@ class 类名: 超类, 采纳的协议 { 可以使用扩展声明来扩展类的行为,请参阅 [扩展声明](#extension_declaration)。 -###### {#grammer_of_a_class_declaration} +###### grammer_of_a_class_declaration {#grammer_of_a_class_declaration} > 类声明语法 > > @@ -963,7 +963,7 @@ protocol SomeProtocol: AnyObject { 可以使用协议来声明作为代理的类或者结构体应该实现的方法,正如 [委托(代理)模式](../chapter2/21_Protocols.md#delegation) 中所述。 -###### {#grammer_of_a_protocol_declaration} +###### grammer_of_a_protocol_declaration {#grammer_of_a_protocol_declaration} > 协议声明语法 > > @@ -1017,7 +1017,7 @@ var 属性名: 类型 { get set } 另请参阅 [变量声明](#variable_declaration)。 -###### {#grammer_of_an_import_declaration} +###### grammer_of_an_import_declaration {#grammer_of_an_import_declaration} > 协议属性声明语法 > > ###### protocol-property-declaration {#protocol-property-declaration} @@ -1032,7 +1032,7 @@ var 属性名: 类型 { get set } 另请参阅 [函数声明](#function_declaration)。 -###### {#grammer_of_a_protocol_declaration} +###### grammer_of_a_protocol_declaration {#grammer_of_a_protocol_declaration} > 协议方法声明语法 > > ###### protocol-method-declaration {#protocol-method-declaration} @@ -1050,7 +1050,7 @@ var 属性名: 类型 { get set } 另请参阅 [构造器声明](#initializer_declaration)。 -###### {#grammer_of_a_protocol_initializer_declaration} +###### grammer_of_a_protocol_initializer_declaration {#grammer_of_a_protocol_initializer_declaration} > 协议构造器声明语法 > > ###### protocol-initializer-declaration {#protocol-initializer-declaration} @@ -1072,7 +1072,7 @@ subscript (参数列表) -> 返回类型 { get set } 另请参阅 [下标声明](#subscript_declaration)。 -###### {#grammer_of_a_protocol_subscript_declaration} +###### grammer_of_a_protocol_subscript_declaration {#grammer_of_a_protocol_subscript_declaration} > 协议下标声明语法 > > ###### protocol-subscript-declaration {#protocol-subscript-declaration} @@ -1103,7 +1103,7 @@ protocol SubProtocolB: SomeProtocol where SomeType: Equatable { } 另请参阅 [类型别名声明](#type_alias_declaration)。 -###### {#grammer_of_a_protocol_associated_type_declaration} +###### grammer_of_a_protocol_associated_type_declaration {#grammer_of_a_protocol_associated_type_declaration} > 协议关联类型声明语法 > > ###### protocol-associated-type-declaration {#protocol-associated-type-declaration} @@ -1194,7 +1194,7 @@ if let actualInstance = SomeStruct(input: "Hello") { 更多关于可失败构造器的信息和例子,请参阅 [可失败构造器](../chapter2/14_Initialization.md#failable_initializers)。 -###### {#grammer_of_an_initializer_declaration} +###### grammer_of_an_initializer_declaration {#grammer_of_an_initializer_declaration} > 构造器声明语法 > > ###### initializer-declaration {#initializer-declaration} @@ -1233,7 +1233,7 @@ deinit { 关于如何在类声明中使用析构器的例子,请参阅 [析构过程](../chapter2/15_Deinitialization.md)。 -###### {#grammer_of_a_deinitializer_declaration} +###### grammer_of_a_deinitializer_declaration {#grammer_of_a_deinitializer_declaration} > 析构器声明语法 > > ###### deinitializer-declaration {#deinitializer-declaration} @@ -1416,7 +1416,7 @@ extension Array: Loggable where Element: MarkedLoggable { } // 报错: redundant conformance of 'Array' to protocol 'Loggable' ``` -###### {#grammer_of_an_extension_declaration} +###### grammer_of_an_extension_declaration {#grammer_of_an_extension_declaration} > 扩展声明语法 > > @@ -1464,7 +1464,7 @@ subscript (参数列表) -> 返回类型 { 更多关于下标的信息和例子,请参阅 [下标](../chapter2/12_Subscripts.md)。 -###### {#grammer_of_a_subscript_declaration} +###### grammer_of_a_subscript_declaration {#grammer_of_a_subscript_declaration} > 下标声明语法 > > @@ -1524,13 +1524,13 @@ postfix operator 运算符名称 {} 声明了一个新的运算符以后,需要实现一个跟这个运算符同名的函数来实现这个运算符。如果是实现一个前缀或者后缀运算符,也必须使用相符的 `prefix` 或者 `postfix` 声明修饰符标记函数声明。如果是实现中缀运算符,则不需要使用 `infix` 声明修饰符标记函数声明。关于如何实现一个新的运算符的例子,请参阅 [自定义运算符](../chapter2/26_Advanced_Operators.md#custom_operators)。 -###### {#grammer_of_an_operator_declaration} +###### grammer_of_an_operator_declaration {#grammer_of_an_operator_declaration} > 运算符声明语法 > -###### {#operator-declaration} +###### operator-declaration {#operator-declaration} > *运算符声明* → [*前缀运算符声明*](#prefix-operator-declaration) | [*后缀运算符声明*](#postfix-operator-declaration) | [*中缀运算符声明*](#infix-operator-declaration) > -###### {#prefix-operator-declaration} +###### prefix-operator-declaration {#prefix-operator-declaration} > *前缀运算符声明* → **prefix** **运算符** [*运算符*](./02_Lexical_Structure.md#operator) **{** **}** > > ###### postfix-operator-declaration {#postfix-operator-declaration} @@ -1541,7 +1541,7 @@ postfix operator 运算符名称 {} > > *中缀运算符声明* → **infix** **运算符** [*运算符*](./02_Lexical_Structure.md#operator) **{** [*中缀运算符属性*](#infix-operator-attributes)可选 **}** > -###### {#infix-operator-group} +###### infix-operator-group {#infix-operator-group} > *中缀运算符组* → [*优先级组名称*](#precedence-group-name) > @@ -1571,16 +1571,16 @@ Swift 定义了大量的优先级组来与标准库的运算符配合使用, 优先级组的赋值性表示在包含可选链操作时的运算符优先级。当设为 true 时,与优先级组对应的运算符在可选链操作中使用和标准库中赋值运算符同样的分组规则,当设为 false 或者不设置,该优先级组的运算符与不赋值的运算符遵循同样的可选链规则。 -###### {#grammer_of_a_precedence_group_declaration} +###### grammer_of_a_precedence_group_declaration {#grammer_of_a_precedence_group_declaration} > 优先级组声明语法 > -###### {#precedence-group-declaration} +###### precedence-group-declaration {#precedence-group-declaration} > *优先级组声明* → **precedence**[*优先级组名称*](#precedence-group-name){[*多优先级组属性*](#precedence-group-attributes)可选 } > -###### {#precedence-group-attributes} +###### precedence-group-attributes {#precedence-group-attributes} > *优先级组属性* → [*优先级组属性*](#precedence-group-attribute)[*多优先级组属性*](#precedence-group-attributes)可选 **{** **}** > -###### {#precedence-group-attribute} +###### precedence-group-attribute {#precedence-group-attribute} > *优先级组属性* → [*优先级组关系*](#precedence-group-relation) > > *优先级组属性* → [*优先级组赋值性*](#precedence-group-assignment) @@ -1597,17 +1597,17 @@ Swift 定义了大量的优先级组来与标准库的运算符配合使用, > > *优先级组赋值* → **assignment:**[*布尔字面值*](./02_Lexical_Structure.md#boolean-literal) > -###### {#precedence-group-associativity} +###### precedence-group-associativity {#precedence-group-associativity} > *优先级组结合性* → **associativity:left** > > *优先级组结合性* → **associativity:right** > > *优先级组结合性* → **associativity:none** > -###### {#precedence-group-names} +###### precedence-group-names {#precedence-group-names} > *多优先级组名称* → [*优先级组名称*](#precedence-group-name) | [*优先级组名称*](#precedence-group-name) | [*优先级组名称*](#precedence-group-name) > -###### {#precedence-group-name} +###### precedence-group-name {#precedence-group-name} > *优先级组名称* →[*标识符*](./02_Lexical_Structure.md#identifier) > @@ -1671,10 +1671,10 @@ Swift 提供了三个级别的访问控制:`public`、`internal` 和 `private` 以上访问级别修饰符都可以选择带上一个参数,该参数由一对圆括号和其中的 `set` 关键字组成(例如,`private(set)`)。使用这种形式的访问级别修饰符来限制某个属性或下标的 setter 的访问级别低于其本身的访问级别,正如 [Getter 和 Setter](../chapter2/25_Access_Control.md#getters_and_setters) 中所讨论的。 -###### {#grammer_of_a_declaration_modifier} +###### grammer_of_a_declaration_modifier {#grammer_of_a_declaration_modifier} > 声明修饰符的语法 > -###### {#declaration-modifier} +###### declaration-modifier {#declaration-modifier} > *声明修饰符* → **class** | **convenience**| **dynamic** | **final** | **infix** | **lazy** | **mutating** | **nonmutating** | **optional** | **override** | **postfix** | **prefix** | **required** | **static** | **unowned** | **unowned ( safe )** | **unowned ( unsafe )** | **weak** > > 声明修饰符 → [*访问级别修饰符*](#access-level-modifier) @@ -1683,7 +1683,7 @@ Swift 提供了三个级别的访问控制:`public`、`internal` 和 `private` > > *声明修饰符列表* → [*声明修饰符*](#declaration-modifier) [*声明修饰符列表*](#declaration-modifiers)可选 > -###### {#access-level-modifier} +###### access-level-modifier {#access-level-modifier} > 访问级别修饰符 → **internal** | **internal ( set )** > > 访问级别修饰符 → **private** | **private ( set )** diff --git a/source/chapter3/08_Patterns.md b/source/chapter3/08_Patterns.md index e44017b1..00e631a6 100755 --- a/source/chapter3/08_Patterns.md +++ b/source/chapter3/08_Patterns.md @@ -10,7 +10,7 @@ Swift 中的模式分为两类:一种能成功匹配任何类型的值,另 > 模式语法 > -###### {#pattern} +###### pattern {#pattern} > *模式* → [*通配符模式*](#wildcard_pattern) [*类型标注*](03_Types.md#type-annotation)可选 > > *模式* → [*标识符模式*](#identifier_pattern) [*类型标注*](03_Types.md#type-annotation)可选 @@ -40,7 +40,7 @@ for _ in 1...3 { > 通配符模式语法 > -###### {#wildcard-pattern} +###### wildcard-pattern {#wildcard-pattern} > *通配符模式* → **_** > @@ -57,7 +57,7 @@ let someValue = 42 > 标识符模式语法 > -###### {#identifier-pattern} +###### identifier-pattern {#identifier-pattern} > *标识符模式* → [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -80,7 +80,7 @@ case let (x, y): > 值绑定模式语法 > -###### {#value-binding-pattern} +###### value-binding-pattern {#value-binding-pattern} > *值绑定模式* → **var** [*模式*](#pattern) | **let** [*模式*](#pattern) > @@ -109,13 +109,13 @@ let (a): Int = 2 // a: Int = 2 > 元组模式语法 > -###### {#tuple-pattern} +###### tuple-pattern {#tuple-pattern} > *元组模式* → **(** [*元组模式元素列表*](#tuple-pattern-element-list)可选 **)** > -###### {#tuple-pattern-element-list} +###### tuple-pattern-element-list {#tuple-pattern-element-list} > *元组模式元素列表* → [*元组模式元素*](#tuple-pattern-element) | [*元组模式元素*](#tuple-pattern-element) **,** [*元组模式元素列表*](#tuple-pattern-element-list) > -###### {#tuple-pattern-element} +###### tuple-pattern-element {#tuple-pattern-element} > *元组模式元素* → [*模式*](#pattern) > @@ -126,7 +126,7 @@ let (a): Int = 2 // a: Int = 2 > 枚举用例模式语法 > -###### {#enum-case-pattern} +###### enum-case-pattern {#enum-case-pattern} > *枚举用例模式* → [*类型标识*](./03_Types.md#type-identifier)可选 **.** [*枚举用例名*](./06_Declarations.md#enum-case-name) [*元组模式*](#tuple-pattern)可选 > @@ -163,7 +163,7 @@ for case let number? in arrayOfOptinalInts { > 可选模式语法 > -###### {#optional-pattern} +###### optional-pattern {#optional-pattern} > *可选模式* → [*标识符模式*](./03_Types.md#type-identifier) **?** > @@ -183,13 +183,13 @@ for case let number? in arrayOfOptinalInts { > 类型转换模式语法 > -###### {#type-casting-pattern} +###### type-casting-pattern {#type-casting-pattern} > *类型转换模式* → [*is 模式*](#is-pattern) | [*as 模式*](#as-pattern) > -###### {#is-pattern} +###### is-pattern {#is-pattern} > *is 模式* → **is** [*类型*](./03_Types.md#type) > -###### {#as-pattern} +###### as-pattern {#as-pattern} > *as 模式* → [*模式*](#pattern) **as** [*类型*](03_Types.md#type) > @@ -231,6 +231,6 @@ default: > 表达式模式语法 > -###### {#expression-pattern} +###### expression-pattern {#expression-pattern} > *表达式模式* → [*表达式*](./04_Expressions.md#expression) > diff --git a/source/chapter3/09_Generic_Parameters_and_Arguments.md b/source/chapter3/09_Generic_Parameters_and_Arguments.md index 70a72307..0d0e5acc 100755 --- a/source/chapter3/09_Generic_Parameters_and_Arguments.md +++ b/source/chapter3/09_Generic_Parameters_and_Arguments.md @@ -56,13 +56,13 @@ simpleMax(3.14159, 2.71828) // T 被推断为 Double 类型 > 泛型形参子句语法 > -###### {#generic-parameter-clause} +###### generic-parameter-clause {#generic-parameter-clause} > *泛型形参子句* → **<** [*泛型形参列表*](#generic-parameter-list) [*约束子句*](#requirement-clause)可选 **>** > -###### {#generic-parameter-list} +###### generic-parameter-list {#generic-parameter-list} > *泛型形参列表* → [*泛形形参*](#generic-parameter) | [*泛形形参*](#generic-parameter) **,** [*泛型形参列表*](#generic-parameter-list) > -###### {#generic-parameter} +###### generic-parameter {#generic-parameter} > *泛形形参* → [*类型名称*](./03_Types.md#type-name) > > *泛形形参* → [*类型名称*](./03_Types.md#type-name) **:** [*类型标识符*](./03_Types.md#type-identifier) @@ -73,10 +73,10 @@ simpleMax(3.14159, 2.71828) // T 被推断为 Double 类型 > > *约束子句* → **where** [*约束列表*](#requirement-list) > -###### {#requirement-list} +###### requirement-list {#requirement-list} > *约束列表* → [*约束*](#requirement) | [*约束*](#requirement) **,** [*约束列表*](#requirement-list) > -###### {#requirement} +###### requirement {#requirement} > *约束* → [*一致性约束*](#conformance-requirement) | [*同类型约束*](#same-type-requirement) > > ###### conformance-requirement {#conformance-requirement} @@ -85,7 +85,7 @@ simpleMax(3.14159, 2.71828) // T 被推断为 Double 类型 > > *一致性约束* → [*类型标识符*](./03_Types.md#type-identifier) **:** [*协议合成类型*](./03_Types.md#protocol-composition-type) > -###### {#same-type-requirement} +###### same-type-requirement {#same-type-requirement} > *同类型约束* → [*类型标识符*](./03_Types.md#type-identifier) **==** [*类型*](./03_Types.md#type) > @@ -116,12 +116,12 @@ let arrayOfArrays: Array> = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] > 泛型实参子句语法 > -###### {#generic-argument-clause} +###### generic-argument-clause {#generic-argument-clause} > *泛型实参子句* → **<** [*泛型实参列表*](#generic-argument-list) **>** > -###### {#generic-argument-list} +###### generic-argument-list {#generic-argument-list} > *泛型实参列表* → [*泛型实参*](#generic-argument) | [*泛型实参*](#generic-argument) **,** [*泛型实参列表*](#generic-argument-list) > -###### {#generic-argument} +###### generic-argument {#generic-argument} > *泛型实参* → [*类型*](./03_Types.md#type) > From 4cb21c38f080c625229a51d1cad3a1e80ebbfdcd Mon Sep 17 00:00:00 2001 From: Jax Wu Date: Wed, 27 Mar 2019 14:11:44 +0800 Subject: [PATCH 059/107] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AF=AD=E8=A8=80?= =?UTF-8?q?=E5=8F=82=E8=80=83=E9=83=A8=E5=88=86=E7=9A=84=E9=93=BE=E6=8E=A5?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/chapter3/02_Lexical_Structure.md | 5 ++--- source/chapter3/04_Expressions.md | 8 ++++---- source/chapter3/06_Declarations.md | 2 +- source/chapter3/07_Attributes.md | 6 +++--- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/source/chapter3/02_Lexical_Structure.md b/source/chapter3/02_Lexical_Structure.md index ffff9205..ed6bc918 100755 --- a/source/chapter3/02_Lexical_Structure.md +++ b/source/chapter3/02_Lexical_Structure.md @@ -51,7 +51,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > *多行注释内容项* → 任何 Unicode 标量值, 除了 `/*` 或者 `*/` > -注释可以包含额外的格式和标记,正如 [*Markup Formatting Reference*](https://developer.apple.com/library/archive/documentation/Xcode/Reference/xcode_markup_formatting_ref/index.html) 所述。 +注释可以包含额外的格式和标记,正如 [*Markup Formatting Reference*](https://developer.apple.com/library/content/documentation/Xcode/Reference/xcode_markup_formatting_ref/index.html) 所述。 ## 标识符 {#identifiers} @@ -367,8 +367,7 @@ true // 布尔值字面量 let x = 3; "1 2 \(x)" ``` -字符串字面量的默认推导类型为 `String`。更多有关 `String` 类型的信息请参考 [字符串和字符](../chapter2/03_Strings_and_Characters.md) 以及 [*字符串结构参考*](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Reference/Swift_String_Structure/index.md#//apple_ref/doc/uid/TP40015181)。 - +字符串字面量的默认推导类型为 `String`。更多有关 `String` 类型的信息请参考 [字符串和字符](../chapter2/03_Strings_and_Characters.md) 以及 [*字符串结构参考*](https://developer.apple.com/documentation/swift/string)。 用 `+` 操作符连接的字符型字面量是在编译时进行连接的。比如下面的 `textA` 和 `textB` 是完全一样的,`textA` 没有任何运行时的连接操作。 ```swift diff --git a/source/chapter3/04_Expressions.md b/source/chapter3/04_Expressions.md index 7e6d10b8..7ce3c7b7 100644 --- a/source/chapter3/04_Expressions.md +++ b/source/chapter3/04_Expressions.md @@ -18,7 +18,7 @@ Swift 中存在四种表达式:前缀表达式,二元表达式,基本表 关于这些运算符的更多信息,请参阅 [基本运算符](../chapter2/02_Basic_Operators.md) 和 [高级运算符](../chapter2/26_Advanced_Operators.md)。 -关于 Swift 标准库提供的运算符的更多信息,请参阅 [*Operators Declarations*](https://developer.apple.com/documentation/swift/swift_standard_library/operator_declarations)。 +关于 Swift 标准库提供的运算符的更多信息,请参阅 [*Operators Declarations*](https://developer.apple.com/documentation/swift/operator_declarations)。 除了标准库运算符,你也可以对某个变量使用 `&` 运算符,从而将其传递给函数的输入输出参数。更多信息,请参阅 [输入输出参数](../chapter2/06_Functions.md#in_out_parameters)。 @@ -78,7 +78,7 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try 关于这些运算符的更多信息,请参阅 [基本运算符](../chapter2/02_Basic_Operators.md) 和 [高级运算符](../chapter2/26_Advanced_Operators.md)。 -关于 Swift 标准库提供的运算符的更多信息,请参阅 [*Swift Standard Library Operators Reference*](./https://developer.apple.com/library/prerelease/ios/documentation/Swift/Reference/Swift_StandardLibrary_Operators/index.md#//apple_ref/doc/uid/TP40016054)。 +关于 Swift 标准库提供的运算符的更多信息,请参阅 [*Swift Standard Library Operators Reference*](https://developer.apple.com/documentation/swift/operator_declarations)。 > 注意 > @@ -168,7 +168,7 @@ f(x as Any) // 打印“Function for Any” ``` -桥接可将 Swift 标准库中的类型(例如 `String`)作为一个与之相关的 Foundation 类型(例如 `NSString`)来使用,而不需要新建一个实例。关于桥接的更多信息,请参阅 [*Working with Foundation Types*](https://developer.apple.com/documentation/swift/imported_c_and_objective-c_apis/working_with_foundation_types)。 +桥接可将 Swift 标准库中的类型(例如 `String`)作为一个与之相关的 Foundation 类型(例如 `NSString`)来使用,而不需要新建一个实例。关于桥接的更多信息,请参阅 [*Working with Foundation Types*](https://developer.apple.com/documentation/swift/imported_c_and_objective_c_apis/working_with_foundation_types)。 `as?` 运算符有条件地执行类型转换,返回目标类型的可选值。在运行时,如果转换成功,返回的可选值将包含转换后的值,否则返回 `nil`。如果在编译时就能确定转换一定会成功或是失败,则会导致编译报错。 @@ -735,7 +735,7 @@ print(interestingNumbers[keyPath: \[String: [Int]].["hexagonal"]!.count.bitWidth // 打印 "64" ``` -关于更多如何使用 key path 与 Objective-C APIs 交互的信息,请参阅 [在 Swift 中使用 Objective-C 运行时特性](./https://developer.apple.com/documentation/swift/using_objective_c_runtime_features_in_swift)。关于更多 key-value 编程和 key-value 观察的信息,请参阅 [Key-Value 编程](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueCoding/index.md#//apple_ref/doc/uid/10000107i) 和 [Key-Value 观察编程](./https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.md#//apple_ref/doc/uid/10000177i) +关于更多如何使用 key path 与 Objective-C APIs 交互的信息,请参阅 [在 Swift 中使用 Objective-C 运行时特性](https://developer.apple.com/documentation/swift/using_objective_c_runtime_features_in_swift)。关于更多 key-value 编程和 key-value 观察的信息,请参阅 [Key-Value 编程](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueCoding/index.html#//apple_ref/doc/uid/10000107i) 和 [Key-Value 观察编程](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html#//apple_ref/doc/uid/10000177i) > key-path 表达式语法 > diff --git a/source/chapter3/06_Declarations.md b/source/chapter3/06_Declarations.md index 4f538449..43c347b4 100755 --- a/source/chapter3/06_Declarations.md +++ b/source/chapter3/06_Declarations.md @@ -1565,7 +1565,7 @@ precedencegroup 优先级组名称{ > 使用较低和较高优先级组相互联系的优先级组必须保持单一层次关系,但它们不必是线性关系。这意味着优先级组也许会有未定义的相关优先级。这些优先级组的运算符在没有用圆括号分组的情况下是不能紧邻着使用的。 > -Swift 定义了大量的优先级组来与标准库的运算符配合使用,例如相加(`+`)和相减(`-`)属于 `AdditionPrecedence` 组,相乘(`*`)和相除(`/`)属于 `MultiplicationPrecedence` 组,详细关于 Swift 标准库中一系列运算符和优先级组内容,参阅[Swift 标准库操作符参考](https://developer.apple.com/reference/swift/1851035-swift_standard_library_operators)。 +Swift 定义了大量的优先级组来与标准库的运算符配合使用,例如相加(`+`)和相减(`-`)属于 `AdditionPrecedence` 组,相乘(`*`)和相除(`/`)属于 `MultiplicationPrecedence` 组,详细关于 Swift 标准库中一系列运算符和优先级组内容,参阅[Swift 标准库操作符参考](https://developer.apple.com/documentation/swift/operator_declarations)。 运算符的结合性表示在没有圆括号分组的情况下,同样优先级的一系列运算符是如何被分组的。你可以指定运算符的结合性通过上下文关键字 `left`、`right` 或者 `none`,如果没有指定结合性,默认是 `none` 关键字。左关联性的运算符是从左至右分组的,例如,相减操作符(-)是左关联性的,所以表达式 `4 - 5 - 6` 被分组为 `(4 - 5) - 6`,得出结果-7。右关联性的运算符是从右往左分组的,指定为 `none` 结合性的运算符就没有结合性。同样优先级没有结合性的运算符不能相邻出现,例如 `<` 运算符是 `none` 结合性,那表示 `1 < 2 < 3` 就不是一个有效表达式。 diff --git a/source/chapter3/07_Attributes.md b/source/chapter3/07_Attributes.md index 07b03f18..e3ea48b1 100755 --- a/source/chapter3/07_Attributes.md +++ b/source/chapter3/07_Attributes.md @@ -169,7 +169,7 @@ print(repeatLabels(a: 1, b: 2, c: 3, b: 2, a: 1)) // a ``` -`dynamicallyCall(withKeywordArguments:)` 方法声明必须至少有一个参数遵循 [`ExpressibleByDictionaryLiteral`](https://developer.apple.com/documentation/swift/expressiblebydictionaryliteral) 协议,返回值可以任意类型。参数的 [`Key`](https://developer.apple.com/documentation/swift/expressiblebydictionaryliteral/2294108-key) 必须遵循 [`ExpressibleByStringLiteral`](https://developer.apple.com/documentation/swift/caseiterable) 协议。上述的示例使用 [`KeyValuePairs`](https://developer.apple.com/documentation/swift/keyvaluepairs) 作为参数类型,以便调用者可以传入重复的参数标签,`a` 和 `b` 在调用 `repeat`中多次使用。 +`dynamicallyCall(withKeywordArguments:)` 方法声明必须至少有一个参数遵循 [`ExpressibleByDictionaryLiteral`](https://developer.apple.com/documentation/swift/expressiblebydictionaryliteral) 协议,返回值可以任意类型。参数的 [`Key`](https://developer.apple.com/documentation/swift/expressiblebydictionaryliteral/2294108-key) 必须遵循 [`ExpressibleByStringLiteral`](https://developer.apple.com/documentation/swift/expressiblebystringliteral) 协议。上述的示例使用 [`KeyValuePairs`](https://developer.apple.com/documentation/swift/keyvaluepairs) 作为参数类型,以便调用者可以传入重复的参数标签,`a` 和 `b` 在调用 `repeat`中多次使用。 如果你同时实现两种 `dynamicallyCall` 方法,则当在方法调用中包含关键字参数时,会调用 `dynamicallyCall(withKeywordArguments:)` 方法,否则调用 `dynamicallyCall(withArguments:)` 方法。 @@ -267,7 +267,7 @@ NSApplicationMain(CommandLine.argc, CommandLine.unsafeArgv) 如果你将 `objc` 特性应用于枚举,每一个枚举用例都会以枚举名称和用例名称组合的方式暴露在 Objective-C 代码中。例如,在 `Planet` 枚举中有一个名为 `Venus` 的用例,该用例暴露在 Objective-C 代码中时叫做 `PlanetVenus`。 -`objc` 特性有一个可选的参数,由标识符构成。当你想把 `objc` 所修饰的实体以一个不同的名字暴露给 Objective-C 时,你就可以使用这个特性参数。你可以使用这个参数来命名类、枚举类型、枚举用例、协议、方法、存取方法以及构造器。如果你要指定类、协议或枚举在 Objective-C 下的名称,在名称上包含三个字母的前缀,如 [Objective-C 编程](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html#//apple_ref/doc/uid/TP40011210) 中的 [约定](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Conventions/Conventions.html#//apple_ref/doc/uid/TP40011210-CH10-SW1)。下面的例子把 `ExampleClass` 中的 `enabled` 属性的取值方法暴露给 Objective-C,名字是 `isEnabled`,而不是它原来的属性名。 +`objc` 特性有一个可选的参数,由标识符构成。当你想把 `objc` 所修饰的实体以一个不同的名字暴露给 Objective-C 时,你就可以使用这个特性参数。你可以使用这个参数来命名类、枚举类型、枚举用例、协议、方法、存取方法以及构造器。如果你要指定类、协议或枚举在 Objective-C 下的名称,在名称上包含三个字母的前缀,如 [Objective-C 编程](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html#//apple_ref/doc/uid/TP40011210) 中的 [约定](https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Conventions/Conventions.html#//apple_ref/doc/uid/TP40011210-CH10-SW1)。下面的例子把 `ExampleClass` 中的 `enabled` 属性的取值方法暴露给 Objective-C,名字是 `isEnabled`,而不是它原来的属性名。 ```swift class ExampleClass: NSObject { @@ -351,7 +351,7 @@ convention 特性总是与下面的参数之一一起出现。 你只能在 switch cases 中使用 switch case 特性。 -### `unknown` +### `unknown` {#unknown} 次特性用于 switch case,表示在编译时该地方不会匹配枚举的任何情况。有关如何使用 `unknown` 特性的示例,可参阅 [对未来枚举的 `case` 进行 `switch`](./05_Statements.md#future-case)。 From d29d719469f502c06ecd0c784d1e16737ae1c60b Mon Sep 17 00:00:00 2001 From: edz Date: Wed, 27 Mar 2019 14:19:47 +0800 Subject: [PATCH 060/107] =?UTF-8?q?Swift5=20=E6=96=B0=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E7=BB=B4=E6=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/chapter3/03_Types.md | 50 +++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/source/chapter3/03_Types.md b/source/chapter3/03_Types.md index 8245cf89..016816d5 100644 --- a/source/chapter3/03_Types.md +++ b/source/chapter3/03_Types.md @@ -15,11 +15,11 @@ - [类型继承子句](#type_inheritance_clause) - [类型推断](#type_inference) -Swift 语言存在两种类型:命名型类型和复合型类型。命名型类型是指定义时可以给定名字的类型。命名型类型包括类、结构体、枚举和协议。比如,一个用户定义的类 `MyClass` 的实例拥有类型 `MyClass`。除了用户定义的命名型类型,Swift 标准库也定义了很多常用的命名型类型,包括那些表示数组、字典和可选值的类型。 +Swift 语言存在两种类型:命名型类型和复合型类型。*命名型类型*是指定义时可以给定名字的类型。命名型类型包括类、结构体、枚举和协议。比如,一个用户定义类 `MyClass` 的实例拥有类型 `MyClass`。除了用户定义的命名型类型,Swift 标准库也定义了很多常用的命名型类型,包括那些表示数组、字典和可选值的类型。 -那些通常被其它语言认为是基本或原始的数据型类型,比如表示数字、字符和字符串的类型,实际上就是命名型类型,这些类型在 Swift 标准库中是使用结构体来定义和实现的。因为它们是命名型类型,因此你可以按照 [扩展](../chapter2/21_Extensions.html) 和 [扩展声明](05_Declarations.html#extension_declaration) 中讨论的那样,声明一个扩展来增加它们的行为以满足你程序的需求。 +那些通常被其它语言认为是基本或原始的数据型类型,比如表示数字、字符和字符串的类型,实际上就是命名型类型,这些类型在 Swift 标准库中是使用结构体来定义和实现的。因为它们是命名型类型,因此你可以按照 [扩展](../chapter2/20_Extensions.html) 和 [扩展声明](06_Declarations.html#extension_declaration) 中讨论的那样,声明一个扩展来增加它们的行为以满足你程序的需求。 -复合型类型是没有名字的类型,它由 Swift 本身定义。Swift 存在两种复合型类型:函数类型和元组类型。一个复合型类型可以包含命名型类型和其它复合型类型。例如,元组类型 `(Int, (Int, Int))` 包含两个元素:第一个是命名型类型 `Int`,第二个是另一个复合型类型 `(Int, Int)`。 +*复合型类型*是没有名字的类型,它由 Swift 本身定义。Swift 存在两种复合型类型:函数类型和元组类型。一个复合型类型可以包含命名型类型和其它复合型类型。例如,元组类型 `(Int, (Int, Int))` 包含两个元素:第一个是命名型类型 `Int`,第二个是另一个复合型类型 `(Int, Int)`。 你可以在命名型类型和复合型类型使用小括号。但是在类型旁加小括号没有任何作用。举个例子,`(Int)` 等同于 `Int`。 @@ -44,7 +44,7 @@ Swift 语言存在两种类型:命名型类型和复合型类型。命名型 ## 类型注解 -类型注解显式地指定一个变量或表达式的值。类型注解始于冒号 `:` 终于类型,比如下面两个例子: +*类型注解*显式地指定一个变量或表达式的类型。类型注解始于冒号 `:` 终于类型,比如下面两个例子: ```swift let someTuple: (Double, Double) = (3.14159, 2.71828) @@ -58,7 +58,7 @@ func someFunction(a: Int) { /* ... */ } > 类型注解语法 > -> *类型注解* → **:** [*特性列表*](06_Attributes.html#attributes)可选 **输入输出参数**可选 [*类型*](#type) +> *类型注解* → **:** [*特性列表*](07_Attributes.html#attributes)可选 **输入输出参数**可选 [*类型*](#type) ## 类型标识符 @@ -83,7 +83,7 @@ var someValue: ExampleModule.MyType > 类型标识符语法 > -> *类型标识符* → [*类型名称*](#type-name) [*泛型参数子句*](08_Generic_Parameters_and_Arguments.html#generic_argument_clause)可选 | [*类型名称*](#type-name) [*泛型参数子句*](08_Generic_Parameters_and_Arguments.html#generic_argument_clause)可选 **.** [*类型标识符*](#type-identifier) +> *类型标识符* → [*类型名称*](#type-name) [*泛型参数子句*](09_Generic_Parameters_and_Arguments.html#generic_argument_clause)可选 | [*类型名称*](#type-name) [*泛型参数子句*](09_Generic_Parameters_and_Arguments.html#generic_argument_clause)可选 **.** [*类型标识符*](#type-identifier) > *类型名称* → [*标识符*](02_Lexical_Structure.html#identifier) @@ -108,7 +108,7 @@ someTuple = (left: 5, right: 5) // 错误:命名类型不匹配 > 元组类型语法 > -> *元组类型* → **(** [*元组类型元素列表*](#tuple-type-element-list) 可选 **)** +> *元组类型* → **(** **)** | **(** [*元组类型元素*](#tuple-type-element) **,** [*元组类型元素列表*](#tuple-type-element-list) **)** > *元组类型元素列表* → [*元组类型元素*](#tuple-type-element) | [*元组类型元素*](#tuple-type-element) **,** [*元组类型元素列表*](#tuple-type-element-list) @@ -121,17 +121,17 @@ someTuple = (left: 5, right: 5) // 错误:命名类型不匹配 函数类型表示一个函数、方法或闭包的类型,它由参数类型和返回值类型组成,中间用箭头(`->`)隔开: -> `参数类型` -> `返回值类型` +> (`参数类型`)->(`返回值类型`) -参数类型是由逗号间隔的类型列表。由于参数类型和返回值类型可以是元组类型,所以函数类型支持多参数与多返回值的函数与方法。 +*参数类型*是由逗号间隔的类型列表。由于*返回值类型*可以是元组类型,所以函数类型支持多返回值的函数与方法。 -你可以对函数参数 `() -> T`(其中 T 是任何类型)使用 `autoclosure` 特性。这会自动将参数表达式转化为闭包,表达式的结果即闭包返回值。这从语法结构上提供了一种便捷:延迟对表达式的求值,直到其值在函数体中被调用。以自动闭包做为参数的函数类型的例子详见 [自动闭包](../chapter2/07_Closures.html#autoclosures) 。 +你可以对参数类型为 `() -> T`(其中 T 是任何类型)的函数使用 `autoclosure` 特性。这会自动将参数表达式转化为闭包,表达式的结果即闭包返回值。这从语法结构上提供了一种便捷:延迟对表达式的求值,直到其值在函数体中被调用。以自动闭包做为参数的函数类型的例子详见 [自动闭包](../chapter2/07_Closures.html#autoclosures)。 -函数类型可以拥有一个可变长参数作为参数类型中的最后一个参数。从语法角度上讲,可变长参数由一个基础类型名字紧随三个点(`...`)组成,如 `Int...`。可变长参数被认为是一个包含了基础类型元素的数组。即 `Int...` 就是 `[Int]`。关于使用可变长参数的例子,请参阅 [可变参数](../chapter2/06_Functions.html#variadic_parameters)。 +函数类型可以拥有一个可变长参数作为*参数类型*中的最后一个参数。从语法角度上讲,可变长参数由一个基础类型名字紧随三个点(`...`)组成,如 `Int...`。可变长参数被认为是一个包含了基础类型元素的数组。即 `Int...` 就是 `[Int]`。关于使用可变长参数的例子,请参阅 [可变参数](../chapter2/06_Functions.html#variadic_parameters)。 为了指定一个 `in-out` 参数,可以在参数类型前加 `inout` 前缀。但是你不可以对可变长参数或返回值类型使用 `inout`。关于这种参数的详细讲解请参阅 [输入输出参数](../chapter2/06_Functions.html#in_out_parameters)。 -如果一个函数类型只有一个形式参数而且形式参数的类型是元组类型,那么元组类型在写函数类型的时候必须用圆括号括起来。比如说,`((Int, Int)) -> Void` 是接收一个元组 `(Int, Int)` 作为形式参数的函数的类型。与此相反,不加括号的 `(Int, Int) -> Void` 是一个接收两个 `Int` 形式参数并且不返回任何值的函数的类型。相似地,因为 `Void` 是空元组类型 `()` 的别名, 函数类型 `(Void)-> Void` 与一个空元组的变量的函数类型 `(()) -> ()` 是一样的。但这些类型和无变量的函数类型 `() -> ()` 是不一样的。 +如果一个函数类型只有一个形式参数而且形式参数的类型是元组类型,那么元组类型在写函数类型的时候必须用圆括号括起来。比如说,`((Int, Int)) -> Void` 是接收一个元组 `(Int, Int)` 作为形式参数并且不返回任何值的函数类型。与此相对,不加括号的 `(Int, Int) -> Void` 是一个接收两个 `Int` 作为形式参数并且不返回任何值的函数类型。相似地,因为 `Void` 是空元组类型 `()` 的别名,函数类型 `(Void)-> Void` 与 `(()) -> ()` 是一样的 - 一个将空元组作为唯一参数的函数。但这些类型和无变量的函数类型 `() -> ()` 是不一样的。 函数和方法中的变量名并不是函数类型的一部分。例如: @@ -159,13 +159,15 @@ var operation: (_ lhs: Int, _ rhs: Int) -> Int // 正确 var operation: (Int, Int) -> Int // 正确 ``` -如果一个函数类型包涵多个箭头(->),那么函数类型将从右向左进行组合。例如,函数类型 `Int -> Int -> Int` 可以理解为 `Int -> (Int -> Int)`,也就是说,该函数类型的参数为 `Int` 类型,其返回类型是一个参数类型为 `Int`,返回类型为 `Int` 的函数类型。 +如果一个函数类型包涵多个箭头(->),那么函数类型将从右向左进行组合。例如,函数类型 `(Int) -> (Int) -> Int` 可以理解为 `(Int) -> ((Int) -> Int)`,也就是说,该函数类型的参数为 `Int` 类型,其返回类型是一个参数类型为 `Int`,返回类型为 `Int` 的函数。 -函数类型若要抛出错误就必须使用 `throws` 关键字来标记,若要重抛错误则必须使用 `rethrows` 关键字来标记。`throws` 关键字是函数类型的一部分,非抛出函数是抛出函数函数的一个子类型。因此,在使用抛出函数的地方也可以使用不抛出函数。抛出和重抛函数的相关描述见章节 [抛出函数与方法](05_Declarations.html#throwing_functions_and_methods) 和 [重抛函数与方法](05_Declarations.html#rethrowing_functions_and_methods)。 +函数类型若要抛出错误就必须使用 `throws` 关键字来标记,若要重抛错误则必须使用 `rethrows` 关键字来标记。`throws` 关键字是函数类型的一部分,非抛出函数是抛出函数函数的一个子类型。因此,在使用抛出函数的地方也可以使用不抛出函数。抛出和重抛函数的相关描述见章节 [抛出函数与方法](06_Declarations.html#throwing_functions_and_methods) 和 [重抛函数与方法](06_Declarations.html#rethrowing_functions_and_methods)。 ### 对非逃逸闭包的限制 -非逃逸闭包函数不能作为参数传递到另一个非逃逸闭包函数的参数。这样的限制可以让 Swift 在编译时就完成更多的内存访问冲突检查, 而不是在运行时。举个例子: +当非逃逸闭包函数是参数时,不能存储在属性、变量或任何 `Any` 类型的常量中,因为这可能导致值的逃逸。 + +当非逃逸闭包函数是参数时,不能作为参数传递到另一个非逃逸闭包函数中。这样的限制可以让 Swift 在编译时就完成更多的内存访问冲突检查,而不是在运行时。举个例子: ```swift let external: (Any) -> Void = { _ in () } @@ -181,25 +183,25 @@ func takesTwoFunctions(first: (Any) -> Void, second: (Any) -> Void) { } ``` -在上面代码里,`takesTwoFunctions(first:second:)` 的两个参数都是函数。 它们都没有标记为 `@escaping`, 因此它们都是非逃逸的。 +在上面代码里,`takesTwoFunctions(first:second:)` 的两个参数都是函数。它们都没有标记为 `@escaping`, 因此它们都是非逃逸的。 -上述例子里的被标记为“错误”的四个函数调用会产生编译错误。因为第一个和第二个参数是非逃逸函数,它们不能够被当作变量被传递到另一个非闭包函数参数。与此相反, 标记“正确”的两个函数不回产生编译错误。这些函数调用不会违反限制, 因为 `外部(external)` 不是 `takesTwoFunctions(first:second:)` 里的一个参数。 +上述例子里的被标记为“错误”的四个函数调用会产生编译错误。因为参数 `first` 和 `second` 是非逃逸函数,它们不能够作为参数被传递到另一个非闭包函数。相对的, 标记“正确”的两个函数不会产生编译错误。这些函数调用不会违反限制,因为 `external` 不是 `takesTwoFunctions(first:second:)` 的参数之一。 -如果你需要避免这个限制, 标记其中之一的参数为逃逸, 或者使用 `withoutActuallyEscaping(_:do:)` 函数临时地转换非逃逸函数的其中一个参数为逃逸函数。关于避免内存访问冲突,可以参阅[内存安全](../chapter2/24_Memory_Safety.html)。 +如果你需要避免这个限制,标记其中之一的参数为逃逸,或者使用 `withoutActuallyEscaping(_:do:)` 函数临时地转换非逃逸函数的其中一个参数为逃逸函数。关于避免内存访问冲突,可以参阅[内存安全](../chapter2/24_Memory_Safety.html)。 > 函数类型语法 > -> *函数类型* → [*特性列表*](06_Attributes.html#attributes)可选 [*函数类型子句*](#function-type-argument-clause) **throws**可选 **->** [*类型*](#type) -> *函数类型* → [*特性列表*](06_Attributes.html#attributes)可选 [*函数类型子句*](#function-type-argument-clause) **rethrows­** **->** [*类型*](#type) +> *函数类型* → [*特性列表*](07_Attributes.html#attributes)可选 [*函数类型子句*](#function-type-argument-clause) **throws**可选 **->** [*类型*](#type) +> *函数类型* → [*特性列表*](07_Attributes.html#attributes)可选 [*函数类型子句*](#function-type-argument-clause) **rethrows­** **->** [*类型*](#type) -> *函数类型子句* → (­)­ -> *函数类型子句* → ([*函数类型参数列表*](#function-type-argument-list)*...*­可选)­ +> *函数类型子句* → **(**­ **)**­ +> *函数类型子句* → **(** [*函数类型参数列表*](#function-type-argument-list)*...*­可选 **)**­ -> *函数类型参数列表* → [*函数类型参数*](function-type-argument) | [*函数类型参数*](function-type-argument), [*函数类型参数列表*](#function-type-argument-list) +> *函数类型参数列表* → [*函数类型参数*](function-type-argument) | [*函数类型参数*](function-type-argument)**,** [*函数类型参数列表*](#function-type-argument-list) -> *函数类型参数* → [*特性列表*](06_Attributes.html#attributes)可选 **输入输出参数**可选 [*类型*](#type) | [*参数标签*](#argument-label) [*类型注解*](#type-annotation) +> *函数类型参数* → [*特性列表*](07_Attributes.html#attributes)可选 **输入输出参数**可选 [*类型*](#type) | [*参数标签*](#argument-label) [*类型注解*](#type-annotation) > *参数标签* → [*标识符*](02_Lexical_Structure.html#identifier) From 7b603a307fecf206aa10921701dbc8e01b2f00a7 Mon Sep 17 00:00:00 2001 From: Jax Wu Date: Wed, 27 Mar 2019 14:59:18 +0800 Subject: [PATCH 061/107] =?UTF-8?q?=E8=A1=A5=E5=85=85=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E7=BC=BA=E5=A4=B1=E6=A0=87=E9=A2=98=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/chapter2/01_The_Basics.md | 1 - source/chapter2/02_Basic_Operators.md | 8 ++++---- source/chapter2/08_Enumerations.md | 2 +- source/chapter2/13_Inheritance.md | 8 ++++---- source/chapter2/17_Error_Handling.md | 6 +++--- source/chapter2/20_Extensions.md | 14 +++++++------- source/chapter2/21_Protocols.md | 4 ++-- 7 files changed, 21 insertions(+), 22 deletions(-) diff --git a/source/chapter2/01_The_Basics.md b/source/chapter2/01_The_Basics.md index ac5a5263..b2eb0fff 100755 --- a/source/chapter2/01_The_Basics.md +++ b/source/chapter2/01_The_Basics.md @@ -1,6 +1,5 @@ # 基础部分 - Swift 是一门开发 iOS, macOS, watchOS 和 tvOS 应用的新语言。然而,如果你有 C 或者 Objective-C 开发经验的话,你会发现 Swift 的很多内容都是你熟悉的。 Swift 包含了 C 和 Objective-C 上所有基础数据类型,`Int` 表示整型值; `Double` 和 `Float` 表示浮点型值; `Bool` 是布尔型值;`String` 是文本型数据。 Swift 还提供了三个基本的集合类型,`Array`、`Set` 和 `Dictionary` ,详见[集合类型](./04_Collection_Types.md)。 diff --git a/source/chapter2/02_Basic_Operators.md b/source/chapter2/02_Basic_Operators.md index 3127b7d1..41456890 100755 --- a/source/chapter2/02_Basic_Operators.md +++ b/source/chapter2/02_Basic_Operators.md @@ -402,7 +402,7 @@ if !allowedEntry { 在示例代码中,小心地选择布尔常量或变量有助于代码的可读性,并且避免使用双重逻辑非运算,或混乱的逻辑语句。 -### 逻辑与运算符 +### 逻辑与运算符 #{logical_and_operator} *逻辑与运算符*(`a && b`)表达了只有 `a` 和 `b` 的值都为 `true` 时,整个表达式的值才会是 `true`。 @@ -421,7 +421,7 @@ if enteredDoorCode && passedRetinaScan { // 输出“ACCESS DENIED” ``` -### 逻辑或运算符 +### 逻辑或运算符 #{logical_or_operator} 逻辑或运算符(`a || b`)是一个由两个连续的 `|` 组成的中置运算符。它表示了两个逻辑表达式的其中一个为 `true`,整个表达式就为 `true`。 @@ -440,7 +440,7 @@ if hasDoorKey || knowsOverridePassword { // 输出“Welcome!” ``` -### 逻辑运算符组合计算 +### 逻辑运算符组合计算 {#combining_logical_operators} 我们可以组合多个逻辑运算符来表达一个复合逻辑: @@ -463,7 +463,7 @@ if enteredDoorCode && passedRetinaScan || hasDoorKey || knowsOverridePassword { > > Swift 逻辑操作符 `&&` 和 `||` 是左结合的,这意味着拥有多元逻辑操作符的复合表达式优先计算最左边的子表达式。 -### 使用括号来明确优先级 +### 使用括号来明确优先级 {#explicit_parentheses} 为了一个复杂表达式更容易读懂,在合适的地方使用括号来明确优先级是很有效的,虽然它并非必要的。在上个关于门的权限的例子中,我们给第一个部分加个括号,使它看起来逻辑更明确: diff --git a/source/chapter2/08_Enumerations.md b/source/chapter2/08_Enumerations.md index ed9ae60d..ab9a04fb 100755 --- a/source/chapter2/08_Enumerations.md +++ b/source/chapter2/08_Enumerations.md @@ -99,7 +99,7 @@ default: // 打印“Mostly harmless” ``` -## 枚举成员的遍历 {#iterating over enumeration cases} +## 枚举成员的遍历 {#iterating_over_enumeration_cases} 在一些情况下,你会需要得到一个包含枚举所有成员的集合。可以通过如下代码实现: diff --git a/source/chapter2/13_Inheritance.md b/source/chapter2/13_Inheritance.md index ecc78cfc..2d548bc3 100755 --- a/source/chapter2/13_Inheritance.md +++ b/source/chapter2/13_Inheritance.md @@ -113,7 +113,7 @@ print("Tandem: \(tandem.description)") `override` 关键字会提醒 Swift 编译器去检查该类的超类(或其中一个父类)是否有匹配重写版本的声明。这个检查可以确保你的重写定义是正确的。 -### 访问超类的方法,属性及下标 +### 访问超类的方法,属性及下标 {#accessing_superclass_methods_properties_and_subscripts} 当你在子类中重写超类的方法,属性或下标时,有时在你的重写版本中使用已经存在的超类实现会大有裨益。比如,你可以完善已有实现的行为,或在一个继承来的变量中存储一个修改过的值。 @@ -123,7 +123,7 @@ print("Tandem: \(tandem.description)") * 在属性 `someProperty` 的 getter 或 setter 的重写实现中,可以通过 `super.someProperty` 来访问超类版本的 `someProperty` 属性。 * 在下标的重写实现中,可以通过 `super[someIndex]` 来访问超类版本中的相同下标。 -### 重写方法 +### 重写方法 {#overriding_methods} 在子类中,你可以重写继承来的实例方法或类方法,提供一个定制或替代的方法实现。 @@ -145,11 +145,11 @@ train.makeNoise() // 打印“Choo Choo” ``` -### 重写属性 +### 重写属性 {#overriding_properties} 你可以重写继承来的实例属性或类型属性,提供自己定制的 getter 和 setter,或添加属性观察器,使重写的属性可以观察到底层的属性值什么时候发生改变。 -#### 重写属性的 Getters 和 Setters +#### 重写属性的 Getters 和 Setters {#overriding_property_etters_and_setters} 你可以提供定制的 getter(或 setter)来重写任何一个继承来的属性,无论这个属性是存储型还是计算型属性。子类并不知道继承来的属性是存储型的还是计算型的,它只知道继承来的属性会有一个名字和类型。你在重写一个属性时,必须将它的名字和类型都写出来。这样才能使编译器去检查你重写的属性是与超类中同名同类型的属性相匹配的。 diff --git a/source/chapter2/17_Error_Handling.md b/source/chapter2/17_Error_Handling.md index c4023892..51f11691 100755 --- a/source/chapter2/17_Error_Handling.md +++ b/source/chapter2/17_Error_Handling.md @@ -128,7 +128,7 @@ struct PurchasedSnack { } ``` -### 用 Do-Catch 处理错误 +### 用 Do-Catch 处理错误 {#handling_errors_using_do-Catch} 你可以使用一个 `do-catch` 语句运行一段闭包代码来处理错误。如果在 `do` 子句中的代码抛出了一个错误,这个错误会与 `catch` 子句做匹配,从而决定哪条子句能处理它。 @@ -194,7 +194,7 @@ do { 如果 `vend(itemNamed:)` 抛出的是一个 `VendingMachineError` 类型的错误,`nourish(with:)` 会打印一条消息,否则 `nourish(with:)` 会将错误抛给它的调用方。这个错误之后会被通用的 `catch` 语句捕获。 -### 将错误转换成可选值 +### 将错误转换成可选值 #{converting_errors_to_optional_values} 可以使用 `try?` 通过将错误转换成一个可选值来处理错误。如果是在计算 `try?` 表达式时抛出错误,该表达式的结果就为 `nil`。例如,在下面的代码中,`x` 和 `y` 有着相同的数值和等价的含义: @@ -225,7 +225,7 @@ func fetchData() -> Data? { } ``` -### 禁用错误传递 +### 禁用错误传递 #{disabling_error_propagation} 有时你知道某个 `throwing` 函数实际上在运行时是不会抛出错误的,在这种情况下,你可以在表达式前面写 `try!` 来禁用错误传递,这会把调用包装在一个不会有错误抛出的运行时断言中。如果真的抛出了错误,你会得到一个运行时错误。 diff --git a/source/chapter2/20_Extensions.md b/source/chapter2/20_Extensions.md index 0429ec9c..533d9ab2 100644 --- a/source/chapter2/20_Extensions.md +++ b/source/chapter2/20_Extensions.md @@ -17,7 +17,7 @@ Swift 中的扩展可以: > > 扩展可以给一个类型添加新的功能,但是不能重写已经存在的功能。 -## 扩展的语法 +## 扩展的语法 {#extension_syntax} 使用 `extension` 关键字声明扩展: @@ -43,7 +43,7 @@ extension SomeType: SomeProtocol, AnotherProtocol { > > 对一个现有的类型,如果你定义了一个扩展来添加新的功能,那么这个类型的所有实例都可以使用这个新功能,包括那些在扩展定义之前就存在的实例。 -## 计算型属性 +## 计算型属性 {#computed_properties} 扩展可以给现有类型添加计算型实例属性和计算型类属性。这个例子给 Swift 内建的 `Double` 类型添加了五个计算型实例属性,从而提供与距离单位相关工作的基本支持: @@ -81,7 +81,7 @@ print("A marathon is \(aMarathon) meters long") > > 扩展可以添加新的计算属性,但是它们不能添加存储属性,或向现有的属性添加属性观察者。 -## 构造器 +## 构造器 {#initializers} 扩展可以给现有的类型添加新的构造器。它使你可以把自定义类型作为参数来供其他类型的构造器使用,或者在类型的原始实现上添加额外的构造选项。 @@ -138,7 +138,7 @@ let centerRect = Rect(center: Point(x: 4.0, y: 4.0), > > 如果你通过扩展提供一个新的构造器,你有责任确保每个通过该构造器创建的实例都是初始化完整的。 -## 方法 +## 方法 {#methods} 扩展可以给现有类型添加新的实例方法和类方法。在下面的例子中,给 `Int` 类型添加了一个新的实例方法叫做 `repetitions`: @@ -165,7 +165,7 @@ extension Int { // Hello! ``` -### 可变实例方法 +### 可变实例方法 {#mutating_instance_methods} 通过扩展添加的实例方法同样也可以修改(或 *mutating(改变)*)实例本身。结构体和枚举的方法,若是可以修改 `self` 或者它自己的属性,则必须将这个实例方法标记为 `mutating`,就像是改变了方法的原始实现。 @@ -182,7 +182,7 @@ someInt.square() // someInt 现在是 9 ``` -## 下标 +## 下标 {#subscripts} 扩展可以给现有的类型添加新的下标。下面的例子中,对 Swift 的 `Int` 类型添加了一个整数类型的下标。下标 `[n]` 从数字右侧开始,返回小数点后的第 `n` 位: @@ -218,7 +218,7 @@ extension Int { 0746381295[9] ``` -## 嵌套类型 +## 嵌套类型 {#nested_yypes} 扩展可以给现有的类,结构体,还有枚举添加新的嵌套类型: diff --git a/source/chapter2/21_Protocols.md b/source/chapter2/21_Protocols.md index c137d6b6..8a287108 100644 --- a/source/chapter2/21_Protocols.md +++ b/source/chapter2/21_Protocols.md @@ -192,7 +192,7 @@ protocol SomeProtocol { } ``` -### 协议构造器要求的类实现 +### 协议构造器要求的类实现 {#class_implementations_of_protocol_initializer_requirements} 你可以在遵循协议的类中实现构造器,无论是作为指定构造器,还是作为便利构造器。无论哪种情况,你都必须为构造器实现标上 `required` 修饰符: @@ -234,7 +234,7 @@ class SomeSubClass: SomeSuperClass, SomeProtocol { } ``` -### 可失败构造器要求 +### 可失败构造器要求 {#failable_initializer_requirements} 协议还可以为遵循协议的类型定义可失败构造器要求,详见 [可失败构造器](./14_Initialization.md#failable_initializers)。 From 91afca83679ecbc68d3e0b0c33c2d5273715653a Mon Sep 17 00:00:00 2001 From: Jax Wu Date: Wed, 27 Mar 2019 16:13:45 +0800 Subject: [PATCH 062/107] =?UTF-8?q?=E8=BF=BD=E5=8A=A0=E6=9C=80=E8=BF=91?= =?UTF-8?q?=E6=89=8D=E6=B7=BB=E5=8A=A0=E7=9A=84=20Swift5=20=E6=94=B9?= =?UTF-8?q?=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/chapter2/03_Strings_and_Characters.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/source/chapter2/03_Strings_and_Characters.md b/source/chapter2/03_Strings_and_Characters.md index 210487f3..af81a37e 100755 --- a/source/chapter2/03_Strings_and_Characters.md +++ b/source/chapter2/03_Strings_and_Characters.md @@ -104,6 +104,20 @@ Escaping all three quotes \"\"\" """ ``` +### 扩展字符串分隔符 {#extended_string_delimiters} + +您可以将字符串文字放在扩展分隔符中,这样字符串中的特殊字符将会被直接包含而非转义后的效果。将字符串放在引号(**"**)中并用数字符号(**#**)括起来。例如,打印字符串文字 **#"Line 1 \ nLine 2"#** 打印换行符转义序列(**\n**)而不是进行换行打印。 + +如果需要字符串文字中字符的特殊效果,请匹配转义字符(**\\**)后面添加与起始位置个数相匹配的 **#** 符。 例如,如果您的字符串是 **#"Line 1 \ nLine 2"#** 并且您想要换行,则可以使用 **#“Line 1 \ #nLine 2”#** 来代替。 同样,**###"Line1 \ ### nLine2"###** 也可以实现换行效果。 + +扩展分隔符创建的字符串文字也可以是多行字符串文字。 您可以使用扩展分隔符在多行字符串中包含文本 **"""**,覆盖原有的结束文字的默认行为。例如: + +```swift +let threeMoreDoubleQuotationMarks = #""" +Here are three more double quotes: """ +"""# +``` + ## 初始化空字符串 {#initializing_an_empty_string} 要创建一个空字符串作为初始值,可以将空的字符串字面量赋值给变量,也可以初始化一个新的 `String` 实例: From 7ced6d2dd731eb1e08207a11c0dd3fcf1f1b3064 Mon Sep 17 00:00:00 2001 From: Hale Date: Wed, 27 Mar 2019 18:21:09 +0800 Subject: [PATCH 063/107] update --- source/chapter2/26_Advanced_Operators.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/source/chapter2/26_Advanced_Operators.md b/source/chapter2/26_Advanced_Operators.md index 186eef91..ce65344e 100644 --- a/source/chapter2/26_Advanced_Operators.md +++ b/source/chapter2/26_Advanced_Operators.md @@ -465,5 +465,3 @@ let plusMinusVector = firstVector +- secondVector > > 当定义前缀与后缀运算符的时候,我们并没有指定优先级。然而,如果对同一个值同时使用前缀与后缀运算符,则后缀运算符会先参与运算。 - - From c634f574a1d833d7b4ff05e8bd8b851471d09c8e Mon Sep 17 00:00:00 2001 From: edz Date: Wed, 27 Mar 2019 20:03:36 +0800 Subject: [PATCH 064/107] =?UTF-8?q?=E9=81=BF=E5=85=8D=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/chapter2/26_Advanced_Operators.md | 468 ----------------------- 1 file changed, 468 deletions(-) delete mode 100644 source/chapter2/26_Advanced_Operators.md diff --git a/source/chapter2/26_Advanced_Operators.md b/source/chapter2/26_Advanced_Operators.md deleted file mode 100644 index 0464257f..00000000 --- a/source/chapter2/26_Advanced_Operators.md +++ /dev/null @@ -1,468 +0,0 @@ -# 高级运算符 - -除了之前介绍过的[基本运算符](./02_Basic_Operators.md),Swift 还提供了数种可以对数值进行复杂运算的高级运算符。它们包含了在 C 和 Objective-C 中已经被大家所熟知的位运算符和移位运算符。 - -与 C 语言中的算术运算符不同,Swift 中的算术运算符默认是不会溢出的。所有溢出行为都会被捕获并报告为错误。如果想让系统允许溢出行为,可以选择使用 Swift 中另一套默认支持溢出的运算符,比如溢出加法运算符(`&+`)。所有的这些溢出运算符都是以 `&` 开头的。 - -自定义结构体、类和枚举时,如果也为它们提供标准 Swift 运算符的实现,将会非常有用。在 Swift 中为这些运算符提供自定义的实现非常简单,运算符也会针对不同类型使用对应实现。 - -我们不用被预定义的运算符所限制。在 Swift 中可以自由地定义中缀、前缀、后缀和赋值运算符,它们具有自定义的优先级与关联值。这些运算符在代码中可以像预定义的运算符一样使用,你甚至可以扩展已有的类型以支持自定义运算符。 - -## 位运算符 {#bitwise_operators} - -*位运算符*可以操作数据结构中每个独立的比特位。它们通常被用在底层开发中,比如图形编程和创建设备驱动。位运算符在处理外部资源的原始数据时也十分有用,比如对自定义通信协议传输的数据进行编码和解码。 - -Swift 支持 C 语言中的全部位运算符,接下来会一一介绍。 - -### Bitwise NOT Operator(按位取反运算符) {#bitwise_not_operator} - -*按位取反运算符(`~`)*对一个数值的全部比特位进行取反: - -![Art/bitwiseNOT_2x.png](https://docs.swift.org/swift-book/_images/bitwiseNOT_2x.png) - -按位取反运算符是一个前缀运算符,直接放在运算数之前,并且它们之间不能添加任何空格: - -```swift -let initialBits: UInt8 = 0b00001111 -let invertedBits = ~initialBits // 等于 0b11110000 -``` - -`UInt8` 类型的整数有 8 个比特位,可以存储 `0 ~ 255` 之间的任意整数。这个例子初始化了一个 `UInt8` 类型的整数,并赋值为二进制的 `00001111`,它的前 4 位为 `0`,后 4 位为 `1`。这个值等价于十进制的 `15`。 - -接着使用按位取反运算符创建了一个名为 `invertedBits` 的常量,这个常量的值与全部位取反后的 `initialBits` 相等。即所有的 `0` 都变成了 `1`,同时所有的 `1` 都变成 `0`。`invertedBits` 的二进制值为 `11110000`,等价于无符号十进制数的 `240`。 - -### Bitwise AND Operator(按位与运算符) {#bitwise_and_operator} - -*按位与运算符(`&`)* 对两个数的比特位进行合并。它返回一个新的数,只有当两个数的对应位*都*为 `1` 的时候,新数的对应位才为 `1`: - -![Art/bitwiseAND_2x.png](https://docs.swift.org/swift-book/_images/bitwiseAND_2x.png) - -在下面的示例当中,`firstSixBits` 和 `lastSixBits` 中间 4 个位的值都为 `1`。使用按位与运算符之后,得到二进制数值 `00111100`,等价于无符号十进制数的 `60`: - -```swift -let firstSixBits: UInt8 = 0b11111100 -let lastSixBits: UInt8 = 0b00111111 -let middleFourBits = firstSixBits & lastSixBits // 等于 00111100 -``` - -### Bitwise OR Operator(按位或运算符) {#bitwise_or_operator} - -*按位或运算符(`|`)* 可以对两个数的比特位进行比较。它返回一个新的数,只要两个数的对应位中有*任意一个*为 `1` 时,新数的对应位就为 `1`: - -![Art/bitwiseOR_2x.png](https://docs.swift.org/swift-book/_images/bitwiseOR_2x.png) - -在下面的示例中,`someBits` 和 `moreBits` 存在不同的位被设置为 `1`。使用按位或运算符之后,得到二进制数值 `11111110`,等价于无符号十进制数的 `254`: - -```swift -let someBits: UInt8 = 0b10110010 -let moreBits: UInt8 = 0b01011110 -let combinedbits = someBits | moreBits // 等于 11111110 -``` - -### Bitwise XOR Operator(按位异或运算符) {#bitwise_xor_operator} - -*按位异或运算符*,或称“排外的或运算符”(`^`),可以对两个数的比特位进行比较。它返回一个新的数,当两个数的对应位不相同时,新数的对应位就为 `1`,并且对应位相同时则为 `0`: - -![Art/bitwiseXOR_2x.png](https://docs.swift.org/swift-book/_images/bitwiseXOR_2x.png) - -在下面的示例当中,`firstBits` 和 `otherBits` 都有一个自己为 `1`,而对方为 `0` 的位。按位异或运算符将新数的这两个位都设置为 `1`。在其余的位上 `firstBits` 和 `otherBits` 是相同的,所以设置为 `0`: - -```swift -let firstBits: UInt8 = 0b00010100 -let otherBits: UInt8 = 0b00000101 -let outputBits = firstBits ^ otherBits // 等于 00010001 -``` - -### Bitwise Left and Right Shift Operators(按位左移、右移运算符) {#bitwise_left_and_right_shift_operators} - -*按位左移运算符(`<<`)* 和 *按位右移运算符(`>>`)*可以对一个数的所有位进行指定位数的左移和右移,但是需要遵守下面定义的规则。 - -对一个数进行按位左移或按位右移,相当于对这个数进行乘以 2 或除以 2 的运算。将一个整数左移一位,等价于将这个数乘以 2,同样地,将一个整数右移一位,等价于将这个数除以 2。 - -#### 无符号整数的移位运算 {#shifting_behavior_for_unsigned_integers} - -对无符号整数进行移位的规则如下: - -1. 已存在的位按指定的位数进行左移和右移。 -2. 任何因移动而超出整型存储范围的位都会被丢弃。 -3. 用 `0` 来填充移位后产生的空白位。 - -这种方法称为*逻辑移位*。 - -以下这张图展示了 `11111111 << 1`(即把 `11111111` 向左移动 `1` 位),和 `11111111 >> 1`(即把 `11111111` 向右移动 `1` 位)的结果。蓝色的数字是被移位的,灰色的数字是被抛弃的,橙色的 `0` 则是被填充进来的: - -![Art/bitshiftUnsigned_2x.png](https://docs.swift.org/swift-book/_images/bitshiftUnsigned_2x.png) - -下面的代码演示了 Swift 中的移位运算: - -```swift -let shiftBits: UInt8 = 4 // 即二进制的 00000100 -shiftBits << 1 // 00001000 -shiftBits << 2 // 00010000 -shiftBits << 5 // 10000000 -shiftBits << 6 // 00000000 -shiftBits >> 2 // 00000001 -``` - -可以使用移位运算对其他的数据类型进行编码和解码: - -```swift -let pink: UInt32 = 0xCC6699 -let redComponent = (pink & 0xFF0000) >> 16 // redComponent 是 0xCC,即 204 -let greenComponent = (pink & 0x00FF00) >> 8 // greenComponent 是 0x66, 即 102 -let blueComponent = pink & 0x0000FF // blueComponent 是 0x99,即 153 -``` - -这个示例使用了一个命名为 `pink` 的 `UInt32` 型常量来存储 Cascading Style Sheets(CSS)中粉色的颜色值。该 CSS 的颜色值 `#CC6699`,在 Swift 中表示为十六进制的 `0xCC6699`。然后利用按位与运算符(`&`)和按位右移运算符(`>>`)从这个颜色值中分解出红(`CC`)、绿(`66`)以及蓝(`99`)三个部分。 - -红色部分是通过对 `0xCC6699` 和 `0xFF0000` 进行按位与运算后得到的。`0xFF0000` 中的 `0` 部分“掩盖”了 `OxCC6699` 中的第二、第三个字节,使得数值中的 `6699` 被忽略,只留下 `0xCC0000`。 - -然后,将这个数向右移动 16 位(`>> 16`)。十六进制中每两个字符占用 8 个比特位,所以移动 16 位后 `0xCC0000` 就变为 `0x0000CC`。这个数和 `0xCC` 是等同的,也就是十进制数值的 `204`。 - -同样的,绿色部分通过对 `0xCC6699` 和 `0x00FF00` 进行按位与运算得到 `0x006600`。然后将这个数向右移动 8 位,得到 `0x66`,也就是十进制数值的 `102`。 - -最后,蓝色部分通过对 `0xCC6699` 和 `0x0000FF` 进行按位与运算得到 `0x000099`。这里不需要再向右移位,而 `0x000099` 也就是 `0x99` ,也就是十进制数值的 `153`。 - -#### 有符号整数的移位运算 {#shifting_behavior_for_signed_integers} - -对比无符号整数,有符号整数的移位运算相对复杂得多,这种复杂性源于有符号整数的二进制表现形式。(为了简单起见,以下的示例都是基于 8 比特的有符号整数,但是其中的原理对任何位数的有符号整数都是通用的。) - -有符号整数使用第 1 个比特位(通常被称为*符号位*)来表示这个数的正负。符号位为 `0` 代表正数,为 `1` 代表负数。 - -其余的比特位(通常被称为*数值位*)存储了实际的值。有符号正整数和无符号数的存储方式是一样的,都是从 `0` 开始算起。这是值为 `4` 的 `Int8` 型整数的二进制位表现形式: - -![Art/bitshiftSignedFour_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSignedFour_2x.png) - -符号位为 `0`(代表这是一个“正数”),另外 7 位则代表了十进制数值 `4` 的二进制表示。 - -负数的存储方式略有不同。它存储 `2` 的 `n` 次方减去其实际值的绝对值,这里的 `n` 是数值位的位数。一个 8 比特位的数有 7 个比特位是数值位,所以是 `2` 的 `7` 次方,即 `128`。 - -这是值为 `-4` 的 `Int8` 型整数的二进制表现形式: - -![Art/bitshiftSignedMinusFour_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSignedMinusFour_2x.png) - -这次的符号位为 `1`,说明这是一个负数,另外 7 个位则代表了数值 `124`(即 `128 - 4`)的二进制表示: - -![Art/bitshiftSignedMinusFourValue_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSignedMinusFourValue_2x.png) - -负数的表示通常被称为*二进制补码*。用这种方法来表示负数乍看起来有点奇怪,但它有几个优点。 - -首先,如果想对 `-1` 和 `-4` 进行加法运算,我们只需要对这两个数的全部 8 个比特位执行标准的二进制相加(包括符号位),并且将计算结果中超出 8 位的数值丢弃: - -![Art/bitshiftSignedAddition_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSignedAddition_2x.png) - -其次,使用二进制补码可以使负数的按位左移和右移运算得到跟正数同样的效果,即每向左移一位就将自身的数值乘以 2,每向右一位就将自身的数值除以 2。要达到此目的,对有符号整数的右移有一个额外的规则:当对有符号整数进行按位右移运算时,遵循与无符号整数相同的规则,但是对于移位产生的空白位使用*符号位*进行填充,而不是用 `0`。 - -![Art/bitshiftSigned_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSigned_2x.png) - -这个行为可以确保有符号整数的符号位不会因为右移运算而改变,这通常被称为*算术移位*。 - -由于正数和负数的特殊存储方式,在对它们进行右移的时候,会使它们越来越接近 `0`。在移位的过程中保持符号位不变,意味着负整数在接近 `0` 的过程中会一直保持为负。 - -## 溢出运算符 {#overflow_operators} - -当向一个整数类型的常量或者变量赋予超过它容量的值时,Swift 默认会报错,而不是允许生成一个无效的数。这个行为为我们在运算过大或者过小的数时提供了额外的安全性。 - -例如,`Int16` 型整数能容纳的有符号整数范围是 `-32768` 到 `32767`。当为一个 `Int16` 类型的变量或常量赋予的值超过这个范围时,系统就会报错: - -```swift -var potentialOverflow = Int16.max -// potentialOverflow 的值是 32767,这是 Int16 能容纳的最大整数 -potentialOverflow += 1 -// 这里会报错 -``` - -在赋值时为过大或者过小的情况提供错误处理,能让我们在处理边界值时更加灵活。 - -然而,当你希望的时候也可以选择让系统在数值溢出的时候采取截断处理,而非报错。Swift 提供的三个*溢出运算符*来让系统支持整数溢出运算。这些运算符都是以 `&` 开头的: - -* 溢出加法 `&+` -* 溢出减法 `&-` -* 溢出乘法 `&*` - -### 数值溢出 {#value_overflow} - -数值有可能出现上溢或者下溢。 - -这个示例演示了当我们对一个无符号整数使用溢出加法(`&+`)进行上溢运算时会发生什么: - -```swift -var unsignedOverflow = UInt8.max -// unsignedOverflow 等于 UInt8 所能容纳的最大整数 255 -unsignedOverflow = unsignedOverflow &+ 1 -// 此时 unsignedOverflow 等于 0 -``` - -`unsignedOverflow` 被初始化为 `UInt8` 所能容纳的最大整数(`255`,以二进制表示即 `11111111`)。然后使用溢出加法运算符(`&+`)对其进行加 `1` 运算。这使得它的二进制表示正好超出 `UInt8` 所能容纳的位数,也就导致了数值的溢出,如下图所示。数值溢出后,仍然留在 `UInt8` 边界内的值是 `00000000`,也就是十进制数值的 `0`。 - -![Art/overflowAddition_2x.png](https://docs.swift.org/swift-book/_images/overflowAddition_2x.png) - -当允许对一个无符号整数进行下溢运算时也会产生类似的情况。这里有一个使用溢出减法运算符(`&-`)的例子: - -```swift -var unsignedOverflow = UInt8.min -// unsignedOverflow 等于 UInt8 所能容纳的最小整数 0 -unsignedOverflow = unsignedOverflow &- 1 -// 此时 unsignedOverflow 等于 255 -``` - -`UInt8` 型整数能容纳的最小值是 `0`,以二进制表示即 `00000000`。当使用溢出减法运算符对其进行减 `1` 运算时,数值会产生下溢并被截断为 `11111111`, 也就是十进制数值的 `255`。 - -![Art/overflowUnsignedSubtraction_2x.png](https://docs.swift.org/swift-book/_images/overflowUnsignedSubtraction_2x.png) - -溢出也会发生在有符号整型上。针对有符号整型的所有溢出加法或者减法运算都是按位运算的方式执行的,符号位也需要参与计算,正如[按位左移、右移运算符](#bitwise_left_and_right_shift_operators)所描述的。 - -```swift -var signedOverflow = Int8.min -// signedOverflow 等于 Int8 所能容纳的最小整数 -128 -signedOverflow = signedOverflow &- 1 -// 此时 signedOverflow 等于 127 -``` - -`Int8` 型整数能容纳的最小值是 `-128`,以二进制表示即 `10000000`。当使用溢出减法运算符对其进行减 `1` 运算时,符号位被翻转,得到二进制数值 `01111111`,也就是十进制数值的 `127`,这个值也是 `Int8` 型整所能容纳的最大值。 - -![Art/overflowSignedSubtraction_2x.png](https://docs.swift.org/swift-book/_images/overflowSignedSubtraction_2x.png) - -对于无符号与有符号整型数值来说,当出现上溢时,它们会从数值所能容纳的最大数变成最小数。同样地,当发生下溢时,它们会从所能容纳的最小数变成最大数。 - -## 优先级和结合性 {#precedence_and_associativity} - -运算符的*优先级*使得一些运算符优先于其他运算符;它们会先被执行。 - -*结合性*定义了相同优先级的运算符是如何结合的,也就是说,是与左边结合为一组,还是与右边结合为一组。可以将其理解为“它们是与左边的表达式结合的”,或者“它们是与右边的表达式结合的”。 - -当考虑一个复合表达式的计算顺序时,运算符的优先级和结合性是非常重要的。举例来说,运算符优先级解释了为什么下面这个表达式的运算结果会是 `17`。 - -```swift -2 + 3 % 4 * 5 -// 结果是 17 -``` - -如果你直接从左到右进行运算,你可能认为运算的过程是这样的: - -- 2 + 3 = 5 -- 5 % 4 = 1 -- 1 * 5 = 5 - -但是正确答案是 `17` 而不是 `5`。优先级高的运算符要先于优先级低的运算符进行计算。与 C 语言类似,在 Swift 中,乘法运算符(`*`)与取余运算符(`%`)的优先级高于加法运算符(`+`)。因此,它们的计算顺序要先于加法运算。 - -而乘法运算与取余运算的优先级*相同*。这时为了得到正确的运算顺序,还需要考虑结合性。乘法运算与取余运算都是左结合的。可以将这考虑成,从它们的左边开始为这两部分表达式都隐式地加上括号: - -```swift -2 + ((3 % 4) * 5) -``` - -`(3 % 4)` 等于 `3`,所以表达式相当于: - -```swift -2 + (3 * 5) -``` - -`3 * 5` 等于 `15`,所以表达式相当于: - -```swift -2 + 15 -``` - -因此计算结果为 `17`。 - -有关 Swift 标准库提供的操作符信息,包括操作符优先级组和结核性设置的完整列表,请参见[操作符声明](https://developer.apple.com/documentation/swift/swift_standard_library/operator_declarations)。 - -> 注意 -> -> 相对 C 语言和 Objective-C 来说,Swift 的运算符优先级和结合性规则更加简洁和可预测。但是,这也意味着它们相较于 C 语言及其衍生语言并不是完全一致。在对现有的代码进行移植的时候,要注意确保运算符的行为仍然符合你的预期。 - -## 运算符函数 {#operator_functions} - -类和结构体可以为现有的运算符提供自定义的实现。这通常被称为运算符*重载*。 - -下面的例子展示了如何让自定义的结构体支持加法运算符(`+`)。算术加法运算符是一个*二元运算符*,因为它是对两个值进行运算,同时它还可以称为*中缀*运算符,因为它出现在两个值中间。 - -例子中定义了一个名为 `Vector2D` 的结构体用来表示二维坐标向量 `(x, y)`,紧接着定义了一个可以将两个 `Vector2D` 结构体实例进行相加的*运算符函数*: - -```swift -struct Vector2D { - var x = 0.0, y = 0.0 -} - -extension Vector2D { - static func + (left: Vector2D, right: Vector2D) -> Vector2D { - return Vector2D(x: left.x + right.x, y: left.y + right.y) - } -} -``` - -该运算符函数被定义为 `Vector2D` 上的一个类方法,并且函数的名字与它要进行重载的 `+` 名字一致。因为加法运算并不是一个向量必需的功能,所以这个类方法被定义在 `Vector2D` 的一个扩展中,而不是 `Vector2D` 结构体声明内。而算术加法运算符是二元运算符,所以这个运算符函数接收两个类型为 `Vector2D` 的参数,同时有一个 `Vector2D` 类型的返回值。 - -在这个实现中,输入参数分别被命名为 `left` 和 `right`,代表在 `+` 运算符左边和右边的两个 `Vector2D` 实例。函数返回了一个新的 `Vector2D` 实例,这个实例的 `x` 和 `y` 分别等于作为参数的两个实例的 `x` 和 `y` 的值之和。 - -这个类方法可以在任意两个 `Vector2D` 实例中间作为中缀运算符来使用: - -```swift -let vector = Vector2D(x: 3.0, y: 1.0) -let anotherVector = Vector2D(x: 2.0, y: 4.0) -let combinedVector = vector + anotherVector -// combinedVector 是一个新的 Vector2D 实例,值为 (5.0, 5.0) -``` - -这个例子实现两个向量 `(3.0,1.0)` 和 `(2.0,4.0)` 的相加,并得到新的向量 `(5.0,5.0)`。这个过程如下图示: - -![Art/vectorAddition_2x.png](https://docs.swift.org/swift-book/_images/vectorAddition_2x.png) - -### 前缀和后缀运算符 {#prefix_and_postfix_operators} - -上个例子演示了一个二元中缀运算符的自定义实现。类与结构体也能提供标准*一元运算符*的实现。一元运算符只运算一个值。当运算符出现在值之前时,它就是*前缀*的(例如 `-a`),而当它出现在值之后时,它就是*后缀*的(例如 `b!`)。 - -要实现前缀或者后缀运算符,需要在声明运算符函数的时候在 `func` 关键字之前指定 `prefix` 或者 `postfix` 修饰符: - -```swift -extension Vector2D { - static prefix func - (vector: Vector2D) -> Vector2D { - return Vector2D(x: -vector.x, y: -vector.y) - } -} -``` - -这段代码为 `Vector2D` 类型实现了一元运算符(`-a`)。由于该运算符是前缀运算符,所以这个函数需要加上 `prefix` 修饰符。 - -对于简单数值,一元负号运算符可以对它们的正负性进行改变。对于 `Vector2D` 来说,该运算将其 `x` 和 `y` 属性的正负性都进行了改变: - -```swift -let positive = Vector2D(x: 3.0, y: 4.0) -let negative = -positive -// negative 是一个值为 (-3.0, -4.0) 的 Vector2D 实例 -let alsoPositive = -negative -// alsoPositive 是一个值为 (3.0, 4.0) 的 Vector2D 实例 -``` - -### 复合赋值运算符 {#compound_assignment_operators} - -*复合赋值运算符*将赋值运算符(`=`)与其它运算符进行结合。例如,将加法与赋值结合成加法赋值运算符(`+=`)。在实现的时候,需要把运算符的左参数设置成 `inout` 类型,因为这个参数的值会在运算符函数内直接被修改。 - -在下面的例子中,对 `Vector2D` 实例实现了一个加法赋值运算符函数: - -在下面的例子中,对 `Vector2D` 实例实现了一个加法赋值运算符函数: - -```swift -extension Vector2D { - static func += (left: inout Vector2D, right: Vector2D) { - left = left + right - } -} -``` - -因为加法运算在之前已经定义过了,所以在这里无需重新定义。在这里可以直接利用现有的加法运算符函数,用它来对左值和右值进行相加,并再次赋值给左值: - -```swift -var original = Vector2D(x: 1.0, y: 2.0) -let vectorToAdd = Vector2D(x: 3.0, y: 4.0) -original += vectorToAdd -// original 的值现在为 (4.0, 6.0) -``` - -> 注意 -> -> 不能对默认的赋值运算符(`=`)进行重载。只有复合赋值运算符可以被重载。同样地,也无法对三元条件运算符 (`a ? b : c`) 进行重载。 - -### 等价运算符 {#equivalence_operators} - -通常情况下,自定义的类和结构体没有对*等价运算符*进行默认实现,等价运算符通常被称为*相等*运算符(`==`)与*不等*运算符(`!=`)。 - -为了使用等价运算符对自定义的类型进行判等运算,需要为“相等”运算符提供自定义实现,实现的方法与其它中缀运算符一样, 并且增加对标准库 `Equatable` 协议的遵循: - -```swift -extension Vector2D: Equatable { - static func == (left: Vector2D, right: Vector2D) -> Bool { - return (left.x == right.x) && (left.y == right.y) - } -} -``` - -上述代码实现了“相等”运算符(`==`)来判断两个 `Vector2D` 实例是否相等。对于 `Vector2D` 来说,“相等”意味着“两个实例的 `x` 和 `y` 都相等”,这也是代码中用来进行判等的逻辑。如果你已经实现了“相等”运算符,通常情况下你并不需要自己再去实现“不等”运算符(`!=`)。标准库对于“不等”运算符提供了默认的实现,它简单地将“相等”运算符的结果进行取反后返回。 - -现在我们可以使用这两个运算符来判断两个 `Vector2D` 实例是否相等: - -```swift -let twoThree = Vector2D(x: 2.0, y: 3.0) -let anotherTwoThree = Vector2D(x: 2.0, y: 3.0) -if twoThree == anotherTwoThree { - print("These two vectors are equivalent.") -} -// 打印“These two vectors are equivalent.” -``` - -Swift 为以下数种自定义类型提供等价运算符的默认实现: - -- 只拥有存储属性,并且它们全都遵循 `Equatable` 协议的结构体 -- 只拥有关联类型,并且它们全都遵循 `Equatable` 协议的枚举 -- 没有关联类型的枚举 - -在类型原始的声明中声明遵循 `Equatable` 来接收这些默认实现。 - -下面为三维位置向量 `(x, y, z)` 定义的 `Vector3D` 结构体,与 `Vector2D` 类似。由于 `x`,`y` 和 `z` 属性都是 `Equatable` 类型,`Vector3D` 获得了默认的等价运算符实现。 - -```swift -struct Vector3D: Equatable { - var x = 0.0, y = 0.0, z = 0.0 -} - -let twoThreeFour = Vector3D(x: 2.0, y: 3.0, z: 4.0) -let anotherTwoThreeFour = Vector3D(x: 2.0, y: 3.0, z: 4.0) -if twoThreeFour == anotherTwoThreeFour { - print("These two vectors are also equivalent.") -} -// 打印“These two vectors are also equivalent.” -``` - -## 自定义运算符 {#custom_operators} - -除了实现标准运算符,在 Swift 中还可以声明和实现*自定义运算符*。可以用来自定义运算符的字符列表请参考[运算符](../chapter3/02_Lexical_Structure.html#operators)。 - -新的运算符要使用 `operator` 关键字在全局作用域内进行定义,同时还要指定 `prefix`、`infix` 或者 `postfix` 修饰符: - -```swift -prefix operator +++ -``` - -上面的代码定义了一个新的名为 `+++` 的前缀运算符。对于这个运算符,在 Swift 中并没有已知的意义,因此在针对 `Vector2D` 实例的特定上下文中,给予了它自定义的意义。对这个示例来讲,`+++` 被实现为“前缀双自增”运算符。它使用了前面定义的复合加法运算符来让矩阵与自身进行相加,从而让 `Vector2D` 实例的 `x` 属性和 `y` 属性值翻倍。你可以像下面这样通过对 `Vector2D` 添加一个 `+++` 类方法,来实现 `+++` 运算符: - -```swift -extension Vector2D { - static prefix func +++ (vector: inout Vector2D) -> Vector2D { - vector += vector - return vector - } -} - -var toBeDoubled = Vector2D(x: 1.0, y: 4.0) -let afterDoubling = +++toBeDoubled -// toBeDoubled 现在的值为 (2.0, 8.0) -// afterDoubling 现在的值也为 (2.0, 8.0) -``` - -### 自定义中缀运算符的优先级 {#precedence_and_associativity_for_custom_infix_operators} - -每个自定义中缀运算符都属于某个优先级组。优先级组指定了这个运算符相对于其他中缀运算符的优先级和结合性。[优先级和结合性](#precedence_and_associativity)中详细阐述了这两个特性是如何对中缀运算符的运算产生影响的。 - -而没有明确放入某个优先级组的自定义中缀运算符将会被放到一个默认的优先级组内,其优先级高于三元运算符。 - -以下例子定义了一个新的自定义中缀运算符 `+-`,此运算符属于 `AdditionPrecedence` 优先组: - -```swift -infix operator +-: AdditionPrecedence -extension Vector2D { - static func +- (left: Vector2D, right: Vector2D) -> Vector2D { - return Vector2D(x: left.x + right.x, y: left.y - right.y) - } -} -let firstVector = Vector2D(x: 1.0, y: 2.0) -let secondVector = Vector2D(x: 3.0, y: 4.0) -let plusMinusVector = firstVector +- secondVector -// plusMinusVector 是一个 Vector2D 实例,并且它的值为 (4.0, -2.0) -``` - -这个运算符把两个向量的 `x` 值相加,同时从第一个向量的 `y` 中减去第二个向量的 `y` 。因为它本质上是属于“相加型”运算符,所以将它放置在 `+` 和 `-` 等默认中缀“相加型”运算符相同的优先级组中。关于 Swift 标准库提供的运算符,以及完整的运算符优先级组和结合性设置,请参考 [运算符声明](https://developer.apple.com/documentation/swift/swift_standard_library/operator_declarations)。而更多关于优先级组以及自定义操作符和优先级组的语法,请参考[运算符声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID380)。 - -> 注意 -> -> 当定义前缀与后缀运算符的时候,我们并没有指定优先级。然而,如果对同一个值同时使用前缀与后缀运算符,则后缀运算符会先参与运算。 \ No newline at end of file From 93cffd5ff14126f14d6b856988379091fa423908 Mon Sep 17 00:00:00 2001 From: edz Date: Wed, 27 Mar 2019 20:08:28 +0800 Subject: [PATCH 065/107] =?UTF-8?q?=E9=81=BF=E5=85=8D=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/chapter2/26_Advanced_Operators.md | 468 +++++++++++++++++++++++ 1 file changed, 468 insertions(+) create mode 100644 source/chapter2/26_Advanced_Operators.md diff --git a/source/chapter2/26_Advanced_Operators.md b/source/chapter2/26_Advanced_Operators.md new file mode 100644 index 00000000..0464257f --- /dev/null +++ b/source/chapter2/26_Advanced_Operators.md @@ -0,0 +1,468 @@ +# 高级运算符 + +除了之前介绍过的[基本运算符](./02_Basic_Operators.md),Swift 还提供了数种可以对数值进行复杂运算的高级运算符。它们包含了在 C 和 Objective-C 中已经被大家所熟知的位运算符和移位运算符。 + +与 C 语言中的算术运算符不同,Swift 中的算术运算符默认是不会溢出的。所有溢出行为都会被捕获并报告为错误。如果想让系统允许溢出行为,可以选择使用 Swift 中另一套默认支持溢出的运算符,比如溢出加法运算符(`&+`)。所有的这些溢出运算符都是以 `&` 开头的。 + +自定义结构体、类和枚举时,如果也为它们提供标准 Swift 运算符的实现,将会非常有用。在 Swift 中为这些运算符提供自定义的实现非常简单,运算符也会针对不同类型使用对应实现。 + +我们不用被预定义的运算符所限制。在 Swift 中可以自由地定义中缀、前缀、后缀和赋值运算符,它们具有自定义的优先级与关联值。这些运算符在代码中可以像预定义的运算符一样使用,你甚至可以扩展已有的类型以支持自定义运算符。 + +## 位运算符 {#bitwise_operators} + +*位运算符*可以操作数据结构中每个独立的比特位。它们通常被用在底层开发中,比如图形编程和创建设备驱动。位运算符在处理外部资源的原始数据时也十分有用,比如对自定义通信协议传输的数据进行编码和解码。 + +Swift 支持 C 语言中的全部位运算符,接下来会一一介绍。 + +### Bitwise NOT Operator(按位取反运算符) {#bitwise_not_operator} + +*按位取反运算符(`~`)*对一个数值的全部比特位进行取反: + +![Art/bitwiseNOT_2x.png](https://docs.swift.org/swift-book/_images/bitwiseNOT_2x.png) + +按位取反运算符是一个前缀运算符,直接放在运算数之前,并且它们之间不能添加任何空格: + +```swift +let initialBits: UInt8 = 0b00001111 +let invertedBits = ~initialBits // 等于 0b11110000 +``` + +`UInt8` 类型的整数有 8 个比特位,可以存储 `0 ~ 255` 之间的任意整数。这个例子初始化了一个 `UInt8` 类型的整数,并赋值为二进制的 `00001111`,它的前 4 位为 `0`,后 4 位为 `1`。这个值等价于十进制的 `15`。 + +接着使用按位取反运算符创建了一个名为 `invertedBits` 的常量,这个常量的值与全部位取反后的 `initialBits` 相等。即所有的 `0` 都变成了 `1`,同时所有的 `1` 都变成 `0`。`invertedBits` 的二进制值为 `11110000`,等价于无符号十进制数的 `240`。 + +### Bitwise AND Operator(按位与运算符) {#bitwise_and_operator} + +*按位与运算符(`&`)* 对两个数的比特位进行合并。它返回一个新的数,只有当两个数的对应位*都*为 `1` 的时候,新数的对应位才为 `1`: + +![Art/bitwiseAND_2x.png](https://docs.swift.org/swift-book/_images/bitwiseAND_2x.png) + +在下面的示例当中,`firstSixBits` 和 `lastSixBits` 中间 4 个位的值都为 `1`。使用按位与运算符之后,得到二进制数值 `00111100`,等价于无符号十进制数的 `60`: + +```swift +let firstSixBits: UInt8 = 0b11111100 +let lastSixBits: UInt8 = 0b00111111 +let middleFourBits = firstSixBits & lastSixBits // 等于 00111100 +``` + +### Bitwise OR Operator(按位或运算符) {#bitwise_or_operator} + +*按位或运算符(`|`)* 可以对两个数的比特位进行比较。它返回一个新的数,只要两个数的对应位中有*任意一个*为 `1` 时,新数的对应位就为 `1`: + +![Art/bitwiseOR_2x.png](https://docs.swift.org/swift-book/_images/bitwiseOR_2x.png) + +在下面的示例中,`someBits` 和 `moreBits` 存在不同的位被设置为 `1`。使用按位或运算符之后,得到二进制数值 `11111110`,等价于无符号十进制数的 `254`: + +```swift +let someBits: UInt8 = 0b10110010 +let moreBits: UInt8 = 0b01011110 +let combinedbits = someBits | moreBits // 等于 11111110 +``` + +### Bitwise XOR Operator(按位异或运算符) {#bitwise_xor_operator} + +*按位异或运算符*,或称“排外的或运算符”(`^`),可以对两个数的比特位进行比较。它返回一个新的数,当两个数的对应位不相同时,新数的对应位就为 `1`,并且对应位相同时则为 `0`: + +![Art/bitwiseXOR_2x.png](https://docs.swift.org/swift-book/_images/bitwiseXOR_2x.png) + +在下面的示例当中,`firstBits` 和 `otherBits` 都有一个自己为 `1`,而对方为 `0` 的位。按位异或运算符将新数的这两个位都设置为 `1`。在其余的位上 `firstBits` 和 `otherBits` 是相同的,所以设置为 `0`: + +```swift +let firstBits: UInt8 = 0b00010100 +let otherBits: UInt8 = 0b00000101 +let outputBits = firstBits ^ otherBits // 等于 00010001 +``` + +### Bitwise Left and Right Shift Operators(按位左移、右移运算符) {#bitwise_left_and_right_shift_operators} + +*按位左移运算符(`<<`)* 和 *按位右移运算符(`>>`)*可以对一个数的所有位进行指定位数的左移和右移,但是需要遵守下面定义的规则。 + +对一个数进行按位左移或按位右移,相当于对这个数进行乘以 2 或除以 2 的运算。将一个整数左移一位,等价于将这个数乘以 2,同样地,将一个整数右移一位,等价于将这个数除以 2。 + +#### 无符号整数的移位运算 {#shifting_behavior_for_unsigned_integers} + +对无符号整数进行移位的规则如下: + +1. 已存在的位按指定的位数进行左移和右移。 +2. 任何因移动而超出整型存储范围的位都会被丢弃。 +3. 用 `0` 来填充移位后产生的空白位。 + +这种方法称为*逻辑移位*。 + +以下这张图展示了 `11111111 << 1`(即把 `11111111` 向左移动 `1` 位),和 `11111111 >> 1`(即把 `11111111` 向右移动 `1` 位)的结果。蓝色的数字是被移位的,灰色的数字是被抛弃的,橙色的 `0` 则是被填充进来的: + +![Art/bitshiftUnsigned_2x.png](https://docs.swift.org/swift-book/_images/bitshiftUnsigned_2x.png) + +下面的代码演示了 Swift 中的移位运算: + +```swift +let shiftBits: UInt8 = 4 // 即二进制的 00000100 +shiftBits << 1 // 00001000 +shiftBits << 2 // 00010000 +shiftBits << 5 // 10000000 +shiftBits << 6 // 00000000 +shiftBits >> 2 // 00000001 +``` + +可以使用移位运算对其他的数据类型进行编码和解码: + +```swift +let pink: UInt32 = 0xCC6699 +let redComponent = (pink & 0xFF0000) >> 16 // redComponent 是 0xCC,即 204 +let greenComponent = (pink & 0x00FF00) >> 8 // greenComponent 是 0x66, 即 102 +let blueComponent = pink & 0x0000FF // blueComponent 是 0x99,即 153 +``` + +这个示例使用了一个命名为 `pink` 的 `UInt32` 型常量来存储 Cascading Style Sheets(CSS)中粉色的颜色值。该 CSS 的颜色值 `#CC6699`,在 Swift 中表示为十六进制的 `0xCC6699`。然后利用按位与运算符(`&`)和按位右移运算符(`>>`)从这个颜色值中分解出红(`CC`)、绿(`66`)以及蓝(`99`)三个部分。 + +红色部分是通过对 `0xCC6699` 和 `0xFF0000` 进行按位与运算后得到的。`0xFF0000` 中的 `0` 部分“掩盖”了 `OxCC6699` 中的第二、第三个字节,使得数值中的 `6699` 被忽略,只留下 `0xCC0000`。 + +然后,将这个数向右移动 16 位(`>> 16`)。十六进制中每两个字符占用 8 个比特位,所以移动 16 位后 `0xCC0000` 就变为 `0x0000CC`。这个数和 `0xCC` 是等同的,也就是十进制数值的 `204`。 + +同样的,绿色部分通过对 `0xCC6699` 和 `0x00FF00` 进行按位与运算得到 `0x006600`。然后将这个数向右移动 8 位,得到 `0x66`,也就是十进制数值的 `102`。 + +最后,蓝色部分通过对 `0xCC6699` 和 `0x0000FF` 进行按位与运算得到 `0x000099`。这里不需要再向右移位,而 `0x000099` 也就是 `0x99` ,也就是十进制数值的 `153`。 + +#### 有符号整数的移位运算 {#shifting_behavior_for_signed_integers} + +对比无符号整数,有符号整数的移位运算相对复杂得多,这种复杂性源于有符号整数的二进制表现形式。(为了简单起见,以下的示例都是基于 8 比特的有符号整数,但是其中的原理对任何位数的有符号整数都是通用的。) + +有符号整数使用第 1 个比特位(通常被称为*符号位*)来表示这个数的正负。符号位为 `0` 代表正数,为 `1` 代表负数。 + +其余的比特位(通常被称为*数值位*)存储了实际的值。有符号正整数和无符号数的存储方式是一样的,都是从 `0` 开始算起。这是值为 `4` 的 `Int8` 型整数的二进制位表现形式: + +![Art/bitshiftSignedFour_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSignedFour_2x.png) + +符号位为 `0`(代表这是一个“正数”),另外 7 位则代表了十进制数值 `4` 的二进制表示。 + +负数的存储方式略有不同。它存储 `2` 的 `n` 次方减去其实际值的绝对值,这里的 `n` 是数值位的位数。一个 8 比特位的数有 7 个比特位是数值位,所以是 `2` 的 `7` 次方,即 `128`。 + +这是值为 `-4` 的 `Int8` 型整数的二进制表现形式: + +![Art/bitshiftSignedMinusFour_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSignedMinusFour_2x.png) + +这次的符号位为 `1`,说明这是一个负数,另外 7 个位则代表了数值 `124`(即 `128 - 4`)的二进制表示: + +![Art/bitshiftSignedMinusFourValue_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSignedMinusFourValue_2x.png) + +负数的表示通常被称为*二进制补码*。用这种方法来表示负数乍看起来有点奇怪,但它有几个优点。 + +首先,如果想对 `-1` 和 `-4` 进行加法运算,我们只需要对这两个数的全部 8 个比特位执行标准的二进制相加(包括符号位),并且将计算结果中超出 8 位的数值丢弃: + +![Art/bitshiftSignedAddition_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSignedAddition_2x.png) + +其次,使用二进制补码可以使负数的按位左移和右移运算得到跟正数同样的效果,即每向左移一位就将自身的数值乘以 2,每向右一位就将自身的数值除以 2。要达到此目的,对有符号整数的右移有一个额外的规则:当对有符号整数进行按位右移运算时,遵循与无符号整数相同的规则,但是对于移位产生的空白位使用*符号位*进行填充,而不是用 `0`。 + +![Art/bitshiftSigned_2x.png](https://docs.swift.org/swift-book/_images/bitshiftSigned_2x.png) + +这个行为可以确保有符号整数的符号位不会因为右移运算而改变,这通常被称为*算术移位*。 + +由于正数和负数的特殊存储方式,在对它们进行右移的时候,会使它们越来越接近 `0`。在移位的过程中保持符号位不变,意味着负整数在接近 `0` 的过程中会一直保持为负。 + +## 溢出运算符 {#overflow_operators} + +当向一个整数类型的常量或者变量赋予超过它容量的值时,Swift 默认会报错,而不是允许生成一个无效的数。这个行为为我们在运算过大或者过小的数时提供了额外的安全性。 + +例如,`Int16` 型整数能容纳的有符号整数范围是 `-32768` 到 `32767`。当为一个 `Int16` 类型的变量或常量赋予的值超过这个范围时,系统就会报错: + +```swift +var potentialOverflow = Int16.max +// potentialOverflow 的值是 32767,这是 Int16 能容纳的最大整数 +potentialOverflow += 1 +// 这里会报错 +``` + +在赋值时为过大或者过小的情况提供错误处理,能让我们在处理边界值时更加灵活。 + +然而,当你希望的时候也可以选择让系统在数值溢出的时候采取截断处理,而非报错。Swift 提供的三个*溢出运算符*来让系统支持整数溢出运算。这些运算符都是以 `&` 开头的: + +* 溢出加法 `&+` +* 溢出减法 `&-` +* 溢出乘法 `&*` + +### 数值溢出 {#value_overflow} + +数值有可能出现上溢或者下溢。 + +这个示例演示了当我们对一个无符号整数使用溢出加法(`&+`)进行上溢运算时会发生什么: + +```swift +var unsignedOverflow = UInt8.max +// unsignedOverflow 等于 UInt8 所能容纳的最大整数 255 +unsignedOverflow = unsignedOverflow &+ 1 +// 此时 unsignedOverflow 等于 0 +``` + +`unsignedOverflow` 被初始化为 `UInt8` 所能容纳的最大整数(`255`,以二进制表示即 `11111111`)。然后使用溢出加法运算符(`&+`)对其进行加 `1` 运算。这使得它的二进制表示正好超出 `UInt8` 所能容纳的位数,也就导致了数值的溢出,如下图所示。数值溢出后,仍然留在 `UInt8` 边界内的值是 `00000000`,也就是十进制数值的 `0`。 + +![Art/overflowAddition_2x.png](https://docs.swift.org/swift-book/_images/overflowAddition_2x.png) + +当允许对一个无符号整数进行下溢运算时也会产生类似的情况。这里有一个使用溢出减法运算符(`&-`)的例子: + +```swift +var unsignedOverflow = UInt8.min +// unsignedOverflow 等于 UInt8 所能容纳的最小整数 0 +unsignedOverflow = unsignedOverflow &- 1 +// 此时 unsignedOverflow 等于 255 +``` + +`UInt8` 型整数能容纳的最小值是 `0`,以二进制表示即 `00000000`。当使用溢出减法运算符对其进行减 `1` 运算时,数值会产生下溢并被截断为 `11111111`, 也就是十进制数值的 `255`。 + +![Art/overflowUnsignedSubtraction_2x.png](https://docs.swift.org/swift-book/_images/overflowUnsignedSubtraction_2x.png) + +溢出也会发生在有符号整型上。针对有符号整型的所有溢出加法或者减法运算都是按位运算的方式执行的,符号位也需要参与计算,正如[按位左移、右移运算符](#bitwise_left_and_right_shift_operators)所描述的。 + +```swift +var signedOverflow = Int8.min +// signedOverflow 等于 Int8 所能容纳的最小整数 -128 +signedOverflow = signedOverflow &- 1 +// 此时 signedOverflow 等于 127 +``` + +`Int8` 型整数能容纳的最小值是 `-128`,以二进制表示即 `10000000`。当使用溢出减法运算符对其进行减 `1` 运算时,符号位被翻转,得到二进制数值 `01111111`,也就是十进制数值的 `127`,这个值也是 `Int8` 型整所能容纳的最大值。 + +![Art/overflowSignedSubtraction_2x.png](https://docs.swift.org/swift-book/_images/overflowSignedSubtraction_2x.png) + +对于无符号与有符号整型数值来说,当出现上溢时,它们会从数值所能容纳的最大数变成最小数。同样地,当发生下溢时,它们会从所能容纳的最小数变成最大数。 + +## 优先级和结合性 {#precedence_and_associativity} + +运算符的*优先级*使得一些运算符优先于其他运算符;它们会先被执行。 + +*结合性*定义了相同优先级的运算符是如何结合的,也就是说,是与左边结合为一组,还是与右边结合为一组。可以将其理解为“它们是与左边的表达式结合的”,或者“它们是与右边的表达式结合的”。 + +当考虑一个复合表达式的计算顺序时,运算符的优先级和结合性是非常重要的。举例来说,运算符优先级解释了为什么下面这个表达式的运算结果会是 `17`。 + +```swift +2 + 3 % 4 * 5 +// 结果是 17 +``` + +如果你直接从左到右进行运算,你可能认为运算的过程是这样的: + +- 2 + 3 = 5 +- 5 % 4 = 1 +- 1 * 5 = 5 + +但是正确答案是 `17` 而不是 `5`。优先级高的运算符要先于优先级低的运算符进行计算。与 C 语言类似,在 Swift 中,乘法运算符(`*`)与取余运算符(`%`)的优先级高于加法运算符(`+`)。因此,它们的计算顺序要先于加法运算。 + +而乘法运算与取余运算的优先级*相同*。这时为了得到正确的运算顺序,还需要考虑结合性。乘法运算与取余运算都是左结合的。可以将这考虑成,从它们的左边开始为这两部分表达式都隐式地加上括号: + +```swift +2 + ((3 % 4) * 5) +``` + +`(3 % 4)` 等于 `3`,所以表达式相当于: + +```swift +2 + (3 * 5) +``` + +`3 * 5` 等于 `15`,所以表达式相当于: + +```swift +2 + 15 +``` + +因此计算结果为 `17`。 + +有关 Swift 标准库提供的操作符信息,包括操作符优先级组和结核性设置的完整列表,请参见[操作符声明](https://developer.apple.com/documentation/swift/swift_standard_library/operator_declarations)。 + +> 注意 +> +> 相对 C 语言和 Objective-C 来说,Swift 的运算符优先级和结合性规则更加简洁和可预测。但是,这也意味着它们相较于 C 语言及其衍生语言并不是完全一致。在对现有的代码进行移植的时候,要注意确保运算符的行为仍然符合你的预期。 + +## 运算符函数 {#operator_functions} + +类和结构体可以为现有的运算符提供自定义的实现。这通常被称为运算符*重载*。 + +下面的例子展示了如何让自定义的结构体支持加法运算符(`+`)。算术加法运算符是一个*二元运算符*,因为它是对两个值进行运算,同时它还可以称为*中缀*运算符,因为它出现在两个值中间。 + +例子中定义了一个名为 `Vector2D` 的结构体用来表示二维坐标向量 `(x, y)`,紧接着定义了一个可以将两个 `Vector2D` 结构体实例进行相加的*运算符函数*: + +```swift +struct Vector2D { + var x = 0.0, y = 0.0 +} + +extension Vector2D { + static func + (left: Vector2D, right: Vector2D) -> Vector2D { + return Vector2D(x: left.x + right.x, y: left.y + right.y) + } +} +``` + +该运算符函数被定义为 `Vector2D` 上的一个类方法,并且函数的名字与它要进行重载的 `+` 名字一致。因为加法运算并不是一个向量必需的功能,所以这个类方法被定义在 `Vector2D` 的一个扩展中,而不是 `Vector2D` 结构体声明内。而算术加法运算符是二元运算符,所以这个运算符函数接收两个类型为 `Vector2D` 的参数,同时有一个 `Vector2D` 类型的返回值。 + +在这个实现中,输入参数分别被命名为 `left` 和 `right`,代表在 `+` 运算符左边和右边的两个 `Vector2D` 实例。函数返回了一个新的 `Vector2D` 实例,这个实例的 `x` 和 `y` 分别等于作为参数的两个实例的 `x` 和 `y` 的值之和。 + +这个类方法可以在任意两个 `Vector2D` 实例中间作为中缀运算符来使用: + +```swift +let vector = Vector2D(x: 3.0, y: 1.0) +let anotherVector = Vector2D(x: 2.0, y: 4.0) +let combinedVector = vector + anotherVector +// combinedVector 是一个新的 Vector2D 实例,值为 (5.0, 5.0) +``` + +这个例子实现两个向量 `(3.0,1.0)` 和 `(2.0,4.0)` 的相加,并得到新的向量 `(5.0,5.0)`。这个过程如下图示: + +![Art/vectorAddition_2x.png](https://docs.swift.org/swift-book/_images/vectorAddition_2x.png) + +### 前缀和后缀运算符 {#prefix_and_postfix_operators} + +上个例子演示了一个二元中缀运算符的自定义实现。类与结构体也能提供标准*一元运算符*的实现。一元运算符只运算一个值。当运算符出现在值之前时,它就是*前缀*的(例如 `-a`),而当它出现在值之后时,它就是*后缀*的(例如 `b!`)。 + +要实现前缀或者后缀运算符,需要在声明运算符函数的时候在 `func` 关键字之前指定 `prefix` 或者 `postfix` 修饰符: + +```swift +extension Vector2D { + static prefix func - (vector: Vector2D) -> Vector2D { + return Vector2D(x: -vector.x, y: -vector.y) + } +} +``` + +这段代码为 `Vector2D` 类型实现了一元运算符(`-a`)。由于该运算符是前缀运算符,所以这个函数需要加上 `prefix` 修饰符。 + +对于简单数值,一元负号运算符可以对它们的正负性进行改变。对于 `Vector2D` 来说,该运算将其 `x` 和 `y` 属性的正负性都进行了改变: + +```swift +let positive = Vector2D(x: 3.0, y: 4.0) +let negative = -positive +// negative 是一个值为 (-3.0, -4.0) 的 Vector2D 实例 +let alsoPositive = -negative +// alsoPositive 是一个值为 (3.0, 4.0) 的 Vector2D 实例 +``` + +### 复合赋值运算符 {#compound_assignment_operators} + +*复合赋值运算符*将赋值运算符(`=`)与其它运算符进行结合。例如,将加法与赋值结合成加法赋值运算符(`+=`)。在实现的时候,需要把运算符的左参数设置成 `inout` 类型,因为这个参数的值会在运算符函数内直接被修改。 + +在下面的例子中,对 `Vector2D` 实例实现了一个加法赋值运算符函数: + +在下面的例子中,对 `Vector2D` 实例实现了一个加法赋值运算符函数: + +```swift +extension Vector2D { + static func += (left: inout Vector2D, right: Vector2D) { + left = left + right + } +} +``` + +因为加法运算在之前已经定义过了,所以在这里无需重新定义。在这里可以直接利用现有的加法运算符函数,用它来对左值和右值进行相加,并再次赋值给左值: + +```swift +var original = Vector2D(x: 1.0, y: 2.0) +let vectorToAdd = Vector2D(x: 3.0, y: 4.0) +original += vectorToAdd +// original 的值现在为 (4.0, 6.0) +``` + +> 注意 +> +> 不能对默认的赋值运算符(`=`)进行重载。只有复合赋值运算符可以被重载。同样地,也无法对三元条件运算符 (`a ? b : c`) 进行重载。 + +### 等价运算符 {#equivalence_operators} + +通常情况下,自定义的类和结构体没有对*等价运算符*进行默认实现,等价运算符通常被称为*相等*运算符(`==`)与*不等*运算符(`!=`)。 + +为了使用等价运算符对自定义的类型进行判等运算,需要为“相等”运算符提供自定义实现,实现的方法与其它中缀运算符一样, 并且增加对标准库 `Equatable` 协议的遵循: + +```swift +extension Vector2D: Equatable { + static func == (left: Vector2D, right: Vector2D) -> Bool { + return (left.x == right.x) && (left.y == right.y) + } +} +``` + +上述代码实现了“相等”运算符(`==`)来判断两个 `Vector2D` 实例是否相等。对于 `Vector2D` 来说,“相等”意味着“两个实例的 `x` 和 `y` 都相等”,这也是代码中用来进行判等的逻辑。如果你已经实现了“相等”运算符,通常情况下你并不需要自己再去实现“不等”运算符(`!=`)。标准库对于“不等”运算符提供了默认的实现,它简单地将“相等”运算符的结果进行取反后返回。 + +现在我们可以使用这两个运算符来判断两个 `Vector2D` 实例是否相等: + +```swift +let twoThree = Vector2D(x: 2.0, y: 3.0) +let anotherTwoThree = Vector2D(x: 2.0, y: 3.0) +if twoThree == anotherTwoThree { + print("These two vectors are equivalent.") +} +// 打印“These two vectors are equivalent.” +``` + +Swift 为以下数种自定义类型提供等价运算符的默认实现: + +- 只拥有存储属性,并且它们全都遵循 `Equatable` 协议的结构体 +- 只拥有关联类型,并且它们全都遵循 `Equatable` 协议的枚举 +- 没有关联类型的枚举 + +在类型原始的声明中声明遵循 `Equatable` 来接收这些默认实现。 + +下面为三维位置向量 `(x, y, z)` 定义的 `Vector3D` 结构体,与 `Vector2D` 类似。由于 `x`,`y` 和 `z` 属性都是 `Equatable` 类型,`Vector3D` 获得了默认的等价运算符实现。 + +```swift +struct Vector3D: Equatable { + var x = 0.0, y = 0.0, z = 0.0 +} + +let twoThreeFour = Vector3D(x: 2.0, y: 3.0, z: 4.0) +let anotherTwoThreeFour = Vector3D(x: 2.0, y: 3.0, z: 4.0) +if twoThreeFour == anotherTwoThreeFour { + print("These two vectors are also equivalent.") +} +// 打印“These two vectors are also equivalent.” +``` + +## 自定义运算符 {#custom_operators} + +除了实现标准运算符,在 Swift 中还可以声明和实现*自定义运算符*。可以用来自定义运算符的字符列表请参考[运算符](../chapter3/02_Lexical_Structure.html#operators)。 + +新的运算符要使用 `operator` 关键字在全局作用域内进行定义,同时还要指定 `prefix`、`infix` 或者 `postfix` 修饰符: + +```swift +prefix operator +++ +``` + +上面的代码定义了一个新的名为 `+++` 的前缀运算符。对于这个运算符,在 Swift 中并没有已知的意义,因此在针对 `Vector2D` 实例的特定上下文中,给予了它自定义的意义。对这个示例来讲,`+++` 被实现为“前缀双自增”运算符。它使用了前面定义的复合加法运算符来让矩阵与自身进行相加,从而让 `Vector2D` 实例的 `x` 属性和 `y` 属性值翻倍。你可以像下面这样通过对 `Vector2D` 添加一个 `+++` 类方法,来实现 `+++` 运算符: + +```swift +extension Vector2D { + static prefix func +++ (vector: inout Vector2D) -> Vector2D { + vector += vector + return vector + } +} + +var toBeDoubled = Vector2D(x: 1.0, y: 4.0) +let afterDoubling = +++toBeDoubled +// toBeDoubled 现在的值为 (2.0, 8.0) +// afterDoubling 现在的值也为 (2.0, 8.0) +``` + +### 自定义中缀运算符的优先级 {#precedence_and_associativity_for_custom_infix_operators} + +每个自定义中缀运算符都属于某个优先级组。优先级组指定了这个运算符相对于其他中缀运算符的优先级和结合性。[优先级和结合性](#precedence_and_associativity)中详细阐述了这两个特性是如何对中缀运算符的运算产生影响的。 + +而没有明确放入某个优先级组的自定义中缀运算符将会被放到一个默认的优先级组内,其优先级高于三元运算符。 + +以下例子定义了一个新的自定义中缀运算符 `+-`,此运算符属于 `AdditionPrecedence` 优先组: + +```swift +infix operator +-: AdditionPrecedence +extension Vector2D { + static func +- (left: Vector2D, right: Vector2D) -> Vector2D { + return Vector2D(x: left.x + right.x, y: left.y - right.y) + } +} +let firstVector = Vector2D(x: 1.0, y: 2.0) +let secondVector = Vector2D(x: 3.0, y: 4.0) +let plusMinusVector = firstVector +- secondVector +// plusMinusVector 是一个 Vector2D 实例,并且它的值为 (4.0, -2.0) +``` + +这个运算符把两个向量的 `x` 值相加,同时从第一个向量的 `y` 中减去第二个向量的 `y` 。因为它本质上是属于“相加型”运算符,所以将它放置在 `+` 和 `-` 等默认中缀“相加型”运算符相同的优先级组中。关于 Swift 标准库提供的运算符,以及完整的运算符优先级组和结合性设置,请参考 [运算符声明](https://developer.apple.com/documentation/swift/swift_standard_library/operator_declarations)。而更多关于优先级组以及自定义操作符和优先级组的语法,请参考[运算符声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID380)。 + +> 注意 +> +> 当定义前缀与后缀运算符的时候,我们并没有指定优先级。然而,如果对同一个值同时使用前缀与后缀运算符,则后缀运算符会先参与运算。 \ No newline at end of file From c02ecdcc09c246210ed3194a3c4f9d03293aa3c4 Mon Sep 17 00:00:00 2001 From: edz Date: Wed, 27 Mar 2019 20:12:00 +0800 Subject: [PATCH 066/107] =?UTF-8?q?=E9=81=BF=E5=85=8D=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/chapter2/26_Advanced_Operators.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/source/chapter2/26_Advanced_Operators.md b/source/chapter2/26_Advanced_Operators.md index 0464257f..21dd7ad2 100644 --- a/source/chapter2/26_Advanced_Operators.md +++ b/source/chapter2/26_Advanced_Operators.md @@ -264,7 +264,7 @@ signedOverflow = signedOverflow &- 1 2 + 15 ``` -因此计算结果为 `17`。 +因此计算结果为 `17`。 有关 Swift 标准库提供的操作符信息,包括操作符优先级组和结核性设置的完整列表,请参见[操作符声明](https://developer.apple.com/documentation/swift/swift_standard_library/operator_declarations)。 @@ -337,9 +337,7 @@ let alsoPositive = -negative ### 复合赋值运算符 {#compound_assignment_operators} -*复合赋值运算符*将赋值运算符(`=`)与其它运算符进行结合。例如,将加法与赋值结合成加法赋值运算符(`+=`)。在实现的时候,需要把运算符的左参数设置成 `inout` 类型,因为这个参数的值会在运算符函数内直接被修改。 - -在下面的例子中,对 `Vector2D` 实例实现了一个加法赋值运算符函数: +*复合赋值运算符*将赋值运算符(`=`)与其它运算符进行结合。例如,将加法与赋值结合成加法赋值运算符(`+=`)。在实现的时候,需要把运算符的左参数设置成 `inout` 类型,因为这个参数的值会在运算符函数内直接被修改。 在下面的例子中,对 `Vector2D` 实例实现了一个加法赋值运算符函数: @@ -465,4 +463,4 @@ let plusMinusVector = firstVector +- secondVector > 注意 > -> 当定义前缀与后缀运算符的时候,我们并没有指定优先级。然而,如果对同一个值同时使用前缀与后缀运算符,则后缀运算符会先参与运算。 \ No newline at end of file +> 当定义前缀与后缀运算符的时候,我们并没有指定优先级。然而,如果对同一个值同时使用前缀与后缀运算符,则后缀运算符会先参与运算。 From 40056164244963ca04c9acb17e056c55c9bf86e3 Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Wed, 27 Mar 2019 08:11:22 -0500 Subject: [PATCH 067/107] Update 26_Advanced_Operators.md --- source/chapter2/26_Advanced_Operators.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/chapter2/26_Advanced_Operators.md b/source/chapter2/26_Advanced_Operators.md index ce65344e..bb57f425 100644 --- a/source/chapter2/26_Advanced_Operators.md +++ b/source/chapter2/26_Advanced_Operators.md @@ -459,7 +459,7 @@ let plusMinusVector = firstVector +- secondVector // plusMinusVector 是一个 Vector2D 实例,并且它的值为 (4.0, -2.0) ``` -这个运算符把两个向量的 `x` 值相加,同时从第一个向量的 `y` 中减去第二个向量的 `y` 。因为它本质上是属于“相加型”运算符,所以将它放置在 `+` 和 `-` 等默认中缀“相加型”运算符相同的优先级组中。关于 Swift 标准库提供的运算符,以及完整的运算符优先级组和结合性设置,请参考 [运算符声明](https://developer.apple.com/documentation/swift/operator_declarations)。而更多关于优先级组以及自定义操作符和优先级组的语法,请参考[运算符声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID380)。 +这个运算符把两个向量的 `x` 值相加,同时从第一个向量的 `y` 中减去第二个向量的 `y` 。因为它本质上是属于“相加型”运算符,所以将它放置在 `+` 和 `-` 等默认中缀“相加型”运算符相同的优先级组中。关于 Swift 标准库提供的运算符,以及完整的运算符优先级组和结合性设置,请参考 [运算符声明](https://developer.apple.com/documentation/swift/operator_declarations)。而更多关于优先级组以及自定义操作符和优先级组的语法,请参考[运算符声明](./06_Declarations.md#operator_declaration)。 > 注意 > From c22767f2426bcbdfb43f21bc866e8f0e207ad126 Mon Sep 17 00:00:00 2001 From: Hale Date: Thu, 28 Mar 2019 00:02:08 +0800 Subject: [PATCH 068/107] Update contributors.md --- source/contributors.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/contributors.md b/source/contributors.md index d3c61aec..14b6915f 100755 --- a/source/contributors.md +++ b/source/contributors.md @@ -27,7 +27,7 @@ Swift 官方文档中文翻译工作由[numbbbbb](https://github.com/numbbbbb) - [rain2540](https://github.com/rain2540) - [Rsenjoyer](https://github.com/Rsenjoyer) - [WAMaker](https://github.com/WAMaker) -- [wuqiuhao](https://github.com/wuqiuhao) +- [Hale](https://github.com/wuqiuhao) - [YiYiZheng](https://github.com/YiYiZheng) - [ZhangChi](https://github.com/zhangchi25806) From c23b0f796d7d03fe5eed6d5ce4c369098d185b22 Mon Sep 17 00:00:00 2001 From: Khala-wan <562836879@qq.com> Date: Fri, 29 Mar 2019 05:41:22 +0800 Subject: [PATCH 069/107] =?UTF-8?q?=E7=AC=AC=E4=B8=89=E7=AB=A0=2002=5FLexi?= =?UTF-8?q?cal=5FStructure=20(#908)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 第一遍翻译 * fixed anchor * fixed anchor * 修改 链接文件格式 * 修改 跳转链接格式 * 修改 字符串参考 跳转链接 * 修改运算符跳转链接 * 修改跳转链接 * 修改跳转链接 --- source/chapter3/02_Lexical_Structure.md | 367 +++++++++++++----------- 1 file changed, 207 insertions(+), 160 deletions(-) diff --git a/source/chapter3/02_Lexical_Structure.md b/source/chapter3/02_Lexical_Structure.md index ed6bc918..9fb9d27a 100755 --- a/source/chapter3/02_Lexical_Structure.md +++ b/source/chapter3/02_Lexical_Structure.md @@ -4,7 +4,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 通常情况下,通过考虑输入文本当中可能的最长子串,并且在随后将介绍的语法约束之下,根据随后将介绍的语法约束生成的,根据 Swift 源文件当中的字符来生成相应的“符号”。这种方法称为*“最长匹配(longest match)”*,或者*“最大适合(maximal munch)”*。 -## 空白与注释 {#whitespace_and_comments} +## 空白与注释 {# whitespace} 空白(whitespace)有两个用途:分隔源文件中的符号以及帮助区分运算符属于前缀还是后缀(参见 [运算符](#operators)),在其他情况下空白则会被忽略。以下的字符会被当作空白:空格(U+0020)、换行符(U+000A)、回车符(U+000D)、水平制表符(U+0009)、垂直制表符(U+000B)、换页符(U+000C)以及空字符(U+0000)。 @@ -12,10 +12,10 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > 空白语法 > - -###### whitespace {#whitespace} > *空白* → [*空白项*](#whitespace-item) [*空白*](#whitespace)可选 > +> ###### whitespace-item {# whitespace-item} +> > *空白项* → [*断行符*](#line-break) > > *空白项* → [*注释*](#comment) @@ -24,24 +24,32 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > > *空白项* → U+0000,U+0009,U+000B,U+000C 或者 U+0020 > - -###### line-break {#line-break} +> ###### line-break {# line-break} +> > *断行符* → U+000A > > *断行符* → U+000D > > *断行符* → U+000D 接着是 U+000A > - -###### comment {#comment} -> *注释* → // [*注释内容 断行*](#comment-text line-break) +> ###### comment {# comment} +> +> *注释* → // [*注释内容*](#comment-text) [断行符*](#line-break) +> +> ###### multiline-comment {# multiline-comment} > > *多行注释* → `/*` [*多行注释内容*](#multiline-commnet-text) `*/` > +> ###### comment-text {# comment-text} +> > *注释内容* → [*注释内容项*](#comment-text-item) [*注释内容*](#comment-text)可选 > +> ###### comment-text-item {# comment-text-item} +> > *注释内容项* → 任何 Unicode 标量值, 除了 U+000A 或者 U+000D > +> ###### multiline-commnet-text {# multiline-commnet-text} +> > *多行注释内容* → [*多行注释内容项*](#multiline-comment-text-item) [*多行注释内容*](#multiline-comment-text)可选 > > *多行注释内容项* → [*多行注释*](#multiline-comment). @@ -49,11 +57,8 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > *多行注释内容项* → [*注释内容项*](#comment-text-item) > > *多行注释内容项* → 任何 Unicode 标量值, 除了 `/*` 或者 `*/` -> -注释可以包含额外的格式和标记,正如 [*Markup Formatting Reference*](https://developer.apple.com/library/content/documentation/Xcode/Reference/xcode_markup_formatting_ref/index.html) 所述。 - -## 标识符 {#identifiers} +## 标识符 {# identifiers} *标识符(identifier)* 可以由以下的字符开始:大写或小写的字母 `A` 到 `Z`、下划线(`_`)、基本多文种平面(Basic Multilingual Plane)中非字符数字组合的 Unicode 字符以及基本多文种平面以外的非个人专用区字符。在首字符之后,允许使用数字和组合 Unicode 字符。 @@ -63,20 +68,16 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > 标识符语法 > - -###### identifier {#identifier} > *标识符* → [*头部标识符*](#identifier-head) [*标识符字符组*](#identifier-characters)可选 > > *标识符* → \`[*头部标识符*](#identifier-head) [*标识符字符组*](#identifier-characters)可选\` > > *标识符* → [*隐式参数名*](#implicit-parameter-name) > - -###### identifier-list {#identifier-list} -> *标识符列表* → [*标识符*](#identifier) | [*标识符*](#identifier) **,** [*标识符列表*](#identifier-list) +> *标识符列表* → [*标识符*](#identifier) | [*标识符*](#identifier) **,** [*标识符列表*](#identifier) +> +> ###### identifier-head {# identifier-head} > - -###### identifier-head {#identifier-head} > *头部标识符* → 大写或小写字母 A - Z > > *头部标识符* → _ @@ -109,37 +110,36 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > > *头部标识符* → U+D0000–U+DFFFD 或者 U+E0000–U+EFFFD > - -###### identifier-character {#identifier-character} > *标识符字符* → 数值 0 - 9 > +> ###### identifier-character {# identifier-character} +> > *标识符字符* → U+0300–U+036F,U+1DC0–U+1DFF,U+20D0–U+20FF,或者 U+FE20–U+FE2F > > *标识符字符* → [*头部标识符*](#identifier-head) > -> ###### identifier-characters {#identifier-characters} +> ###### identifier-characters {# identifier-characters} > > *标识符字符组* → [*标识符字符*](#identifier-character) [*标识符字符组*](#identifier-characters)可选 > - -###### implicit-parameter-name {#implicit-parameter-name} -> *隐式参数名* → **$** [*十进制数字列表*](#decimal-digits) +> ###### implicit-parameter-name {# implicit-parameter-name} > +> *隐式参数名* → **$** [*十进制数字列表*](#decimal-digit) -## 关键字和标点符号 {#keywords} +## 关键字和标点符号 -下面这些被保留的关键字不允许用作标识符,除非使用反引号转义,具体描述请参考 [标识符](#identifiers)。除了 `inout`、`var` 以及 `let` 之外的关键字可以用作某个函数声明或者函数调用当中的外部参数名,不用添加反引号转义。 +下面这些被保留的关键字不允许用作标识符,除非使用反引号转义,具体描述请参考 [标识符](#identifiers)。除了 `inout`、`var` 以及 `let` 之外的关键字可以用作某个函数声明或者函数调用当中的外部参数名,无需添加反引号转义。当一个成员与一个关键字具有相同的名称时,不需要使用反引号来转义对该成员的引用,除非在引用该成员和使用该关键字之间存在歧义 - 例如,`self`,`Type` 和 `Protocol` 在显式的成员表达式中具有特殊的含义,因此它们必须在该上下文中使用反引号进行转义。 -* 用在声明中的关键字: `associatedtype`、`class`、`deinit`、`enum`、`extension`、`func`、`import`、`init`、`inout`、`internal`、`let`、`operator`、`private`、`protocol`、`public`、`static`、`struct`、`subscript`、`typealias` 以及 `var`。 +* 用在声明中的关键字: `associatedtype`、`class`、`deinit`、`enum`、`extension`、`fileprivate `、`func`、`import`、`init`、`inout`、`internal`、`let`、`open`、`operator`、`private`、`protocol`、`public`、`static`、`struct`、`subscript`、`typealias` 以及 `var`。 * 用在语句中的关键字:`break`、`case`、`continue`、`default`、`defer`、`do`、`else`、`fallthrough`、`for`、`guard`、`if`、`in`、`repeat`、`return`、`switch`、`where` 以及 `while`。 -* 用在表达式和类型中的关键字:`as`、`catch`、`dynamicType`、`false`、`is`、`nil`、`rethrows`、`super`、`self`、`Self`、`throw`、`throws`、`true`、`try`、`#column`、`#file`、`#function` 以及 `#line`。 +* 用在表达式和类型中的关键字:`as`、`Any`、`catch`、`false`、`is`、`nil`、`rethrows`、`super`、`self`、`Self`、`throw`、`throws`、`true` 以及 `try `。 * 用在模式中的关键字:`_`。 -* 以井字号(`#`)开头的关键字:`#available`、`#column`、`#else#elseif`、`#endif`、`#file`、`#function`、`#if`、`#line` 以及 `#selector`。 +* 以井字号(`#`)开头的关键字:`#available`、`#colorLiteral`、`#column`、`#else`、`#elseif`、`#endif`、`#error`、`#file`、`#fileLiteral`、`#function`、`#if`、`#imageLiteral `、`#line`、`#selector`、`#sourceLocation`以及 `#warning`。 * 特定上下文中被保留的关键字: `associativity`、`convenience`、`dynamic`、`didSet`、`final`、`get`、`infix`、`indirect`、`lazy`、`left`、`mutating`、`none`、`nonmutating`、`optional`、`override`、`postfix`、`precedence`、`prefix`、`Protocol`、`required`、`right`、`set`、`Type`、`unowned`、`weak` 以及 `willSet`。这些关键字在特定上下文之外可以被用做标识符。 以下符号被当作保留符号,不能用于自定义运算符: `(`、`)`、`{`、`}`、`[`、`]`、`.`、`,`、`:`、`;`、`=`、`@`、`#`、`&`(作为前缀运算符)、`->`、`` ` ``、`?`、`!`(作为后缀运算符)。 -## 字面量 {#literals} +## 字面量 *字面量(literal)* 用来表示源码中某种特定类型的值,比如一个数字或字符串。 @@ -158,22 +158,16 @@ true // 布尔值字面量 > 字面量语法 > -> *字面量* → [*数值字面量*](#numeric-literal) | [*字符串字面量*](#string-literal) | [*布尔值字面量*](#boolean-literal) | [*nil 字面量*](#nil-literal) +> *字面量* → [*数值字面量*](#integer-literal) | [*字符串字面量*](#string-literal) | [*布尔值字面量*](#integer-literal) | [*nil 字面量*](#integer-literal) > - -###### numeric-literal {#numeric-literal} > *数值字面量* → **-**可选 [*整数字面量*](#integer-literal) | **-**可选 [*浮点数字面量*](#floating-point-literal) > -> ###### boolean-literal {#boolean-literal} -> > *布尔值字面量* → **true** | **false** -> -> ###### nil-literal {#nil-literal} -> +> > *nil 字面量* → **nil** -> -### 整数字面量 {#integer_literals} + +### 整数字面量{# integer-literal} *整数字面量(Integer Literals)* 表示未指定精度整数的值。整数字面量默认用十进制表示,可以加前缀来指定其他的进制。二进制字面量加 `0b`,八进制字面量加 `0o`,十六进制字面量加 `0x`。 @@ -187,7 +181,8 @@ true // 布尔值字面量 > 整数字面量语法 > -###### integer-literal {#integer-literal} +> ###### integer-literal {# integer-literal} +> > *整数字面量* → [*二进制字面量*](#binary-literal) > > *整数字面量* → [*八进制字面量*](#octal-literal) @@ -196,76 +191,65 @@ true // 布尔值字面量 > > *整数字面量* → [*十六进制字面量*](#hexadecimal-literal) > - -###### binary-literal {#binary-literal} +> ###### binary-literal {# binary-literal} +> > *二进制字面量* → **0b** [*二进制数字*](#binary-digit) [*二进制字面量字符组*](#binary-literal-characters)可选 > -> ###### binary-digit {#binary-digit} +> ###### binary-digit {# binary-digit} > > *二进制数字* → 数值 0 到 1 > -> ###### binary-literal-character {#binary-literal-character} -> > *二进制字面量字符* → [*二进制数字*](#binary-digit) | _ -> -> ###### binary-literal-characters {#binary-literal-characters} -> +> +> ###### binary-literal-characters {# binary-literal-characters} +> > *二进制字面量字符组* → [*二进制字面量字符*](#binary-literal-character) [*二进制字面量字符组*](#binary-literal-characters)可选 > - -###### octal-literal {#octal-literal} +> ###### octal-literal {# octal-literal} +> > *八进制字面量* → **0o** [*八进字数字*](#octal-digit) [*八进制字符组*](#octal-literal-characters)可选 -> -> ###### octal-digit {#octal-digit} -> +> +> ###### octal-digit {# octal-digit} +> > *八进字数字* → 数值 0 到 7 -> -> ###### octal-literal-character {#octal-literal-character} -> +> > *八进制字符* → [*八进字数字*](#octal-digit) | _ -> -> ###### octal-literal-characters {#octal-literal-characters} -> +> +> ###### octal-literal-characters {# octal-literal-characters} +> > *八进制字符组* → [*八进制字符*](#octal-literal-character) [*八进制字符组*](#octal-literal-characters)可选 > - -###### decimal-literal {#decimal-literal} +> ###### decimal-literal {# decimal-literal} +> > *十进制字面量* → [*十进制数字*](#decimal-digit) [*十进制字符组*](#decimal-literal-characters)可选 -> -> ###### decimal-digit {#decimal-digit} -> +> +> ###### decimal-digit {# decimal-digit} +> > *十进制数字* → 数值 0 到 9 -> -> ###### decimal-digits {#decimal-digits} -> -> *十进制数字组* → [*十进制数字*](#decimal-digit) [*十进制数字组*](#decimal-digits)可选 -> -> ###### decimal-literal-character {#decimal-literal-character} -> +> +> ###### decimal-literal-characters {# decimal-literal-characters} +> +> *十进制数字组* → [*十进制数字*](#decimal-digit) [*十进制数字组*](#decimal-literal-characters)可选 +> > *十进制字符* → [*十进制数字*](#decimal-digit) | _ +> +> *十进制字符组* → [*十进制字符*](#decimal-literal-characters) [*十进制字符组*](#decimal-literal-characters)可选 > -> ###### decimal-literal-characters {#decimal-literal-characters} +> ###### hexadecimal-literal {# hexadecimal-literal} > -> *十进制字符组* → [*十进制字符*](#decimal-literal-character) [*十进制字符组*](#decimal-literal-characters)可选 -> - -###### hexadecimal-literal {#hexadecimal-literal} > *十六进制字面量* → **0x** [*十六进制数字*](#hexadecimal-digit) [*十六进制字面量字符组*](#hexadecimal-literal-characters)可选 -> -> ###### hexadecimal-digit {#hexadecimal-digit} -> +> +> ###### hexadecimal-digit {# hexadecimal-digit} +> > *十六进制数字* → 数值 0 到 9, 字母 a 到 f, 或 A 到 F -> -> ###### hexadecimal-literal-character {#hexadecimal-literal-character} -> +> > *十六进制字符* → [*十六进制数字*](#hexadecimal-digit) | _ -> -> ###### hexadecimal-literal-characters {#hexadecimal-literal-characters} -> -> *十六进制字面量字符组* → [*十六进制字符*](#hexadecimal-literal-character) [*十六进制字面量字符组*](#hexadecimal-literal-characters)可选 -> +> +> ###### hexadecimal-literal-characters {# hexadecimal-literal-characters} +> +> *十六进制字面量字符组* → [*十六进制字符*](#hexadecimal-literal-characters) [*十六进制字面量字符组*](#hexadecimal-literal-characters)可选 -### 浮点数字面量 {#floating_point_literals} +### 浮点数字面量{# floating-point-literal} *浮点数字面量(Floating-point literals)* 表示未指定精度浮点数的值。 @@ -283,58 +267,54 @@ true // 布尔值字面量 > 浮点数字面量语法 > -###### floating-point-literal {#floating-point-literal} +> ###### floating-point-literal {# floating-point-literal} +> > *浮点数字面量* → [*十进制字面量*](#decimal-literal) [*十进制分数*](#decimal-fraction)可选 [*十进制指数*](#decimal-exponent)可选 > > *浮点数字面量* → [*十六进制字面量*](#hexadecimal-literal) [*十六进制分数*](#hexadecimal-fraction)可选 [*十六进制指数*](#hexadecimal-exponent) > - -###### decimal-fraction {#decimal-fraction} +> ###### decimal-fraction {# decimal-fraction} +> > *十进制分数* → **.** [*十进制字面量*](#decimal-literal) -> -> ###### decimal-exponent {#decimal-exponent} -> +> +> ###### decimal-exponent {# decimal-exponent} +> > *十进制指数* → [*十进制指数 e*](#floating-point-e) [*正负号*](#sign)可选 [*十进制字面量*](#decimal-literal) > - -###### hexadecimal-fraction {#hexadecimal-fraction} +> ###### hexadecimal-fraction {# hexadecimal-fraction} +> > *十六进制分数* → **.** [*十六进制数字*](#hexadecimal-digit) [*十六进制字面量字符组*](#hexadecimal-literal-characters)可选 -> -> ###### hexadecimal-exponent {#hexadecimal-exponent} -> +> +> ###### hexadecimal-exponent {# hexadecimal-exponent} +> > *十六进制指数* → [*十六进制指数 p*](#floating-point-p) [*正负号*](#sign)可选 [*十进制字面量*](#decimal-literal) > - -###### floating-point-e {#floating-point-e} +> ###### floating-point-e {# floating-point-e} +> > *十进制指数 e* → **e** | **E** > -> ###### floating-point-p {#floating-point-p} +> ###### floating-point-p {# floating-point-p} > > *十六进制指数 p* → **p** | **P** -> -> ###### sign {#sign} -> +> +> ###### sign {# sign} +> > *正负号* → **+** | **-** -> -### 字符串字面量 {#string_literals} +### 字符串字面量 {# string-literal} 字符串字面量是被引号包括的一串字符组成。 单行字符串字面量被包在双引号中的一串字符组成,形式如下: > "`字符`" -> 字符串字面量中不能包含未转义的双引号(`"`)、未转义的反斜线(`\`)、回车符、换行符。 多行字符串字面量被包在三个双引号中的一串字符组成,形式如下: > """ -> > `字符` -> > """ -> -与单行字符串字面量不同的是,多行字符串字面量可以包含不转义的双引号("),回车以及换行。它不能包含三个非转义的连续双引号。 +与单行字符串字面量不同的是,多行字符串字面量可以包含不转义的双引号("),回车以及换行。它不能包含三个未转义的连续双引号。 """ 之后的回车或者换行开始多行字符串字面量,不是字符串的一部分。 """ 之前回车或者换行结束字面量,也不是字符串的一部分。要让多行字符串字面量的开始或结束带有换行,就在第一行或者最后一行写一个空行。 @@ -367,7 +347,42 @@ true // 布尔值字面量 let x = 3; "1 2 \(x)" ``` +可以使用一对或多对扩展分隔符(#)包裹字符串进行分隔,被分隔的字符串的形式如下所示: + +> \#"`characters`"# +> +> \#""" +> +> `characters` +> +> """# + +特殊字符在被分隔符分隔的结果字符串中会展示为普通字符,而不是特殊字符。你可以使用扩展分隔符来创建一些具有特殊效果的字符串。例如,生成字符串插值,启动或终止转义序列(字符串)。 + +以下所示,由字符串字面量和扩展分隔符所创建的字符串是等价的: + +```swift +let string = #"\(x) \ " \u{2603}"# +let escaped = "\\(x) \\ \" \\u{2603}" +print(string) +// Prints "\(x) \ " \u{2603}" +print(string == escaped) +// Prints "true" + +``` + +如果在一个字符串中使用多对扩展分隔符,请不要在分隔符之间使用空格。 + +```swift +print(###"Line 1\###nLine 2"###) // OK +print(# # #"Line 1\# # #nLine 2"# # #) // Error + +``` + +使用扩展分隔符创建的多行字符串字面量与普通多行字符串字面量具有相同的缩进要求。 + 字符串字面量的默认推导类型为 `String`。更多有关 `String` 类型的信息请参考 [字符串和字符](../chapter2/03_Strings_and_Characters.md) 以及 [*字符串结构参考*](https://developer.apple.com/documentation/swift/string)。 + 用 `+` 操作符连接的字符型字面量是在编译时进行连接的。比如下面的 `textA` 和 `textB` 是完全一样的,`textA` 没有任何运行时的连接操作。 ```swift @@ -377,47 +392,88 @@ let textB = "Hello world" > 字符串字面量语法 > -###### string-literal {#string-literal} > *字符串字面量* → [*静态字符串字面量*](#static-string-literal) | [*插值字符串字面量*](#interpolated-string-literal) > - -###### static-string-literal {#static-string-literal} -> *静态字符串字面量* → **"**[*引用文本*](#quoted-text)可选**"** +> *字符串开分隔定界符* → [*字符串扩展分隔符*](#extended-string-literal-delimiter) **"** > -> ###### quoted-text {#quoted-text} +> *字符串闭分隔定界符* → **"** [*字符串扩展分隔符*](#extended-string-literal-delimiter)可选 > +> ###### static-string-literal {# static-string-literal} +> +> *静态字符串字面量* → [*字符串开分隔定界符*](#extended-string-literal-delimiter) [*引用文本*](#quoted-text)可选 [*字符串闭分隔定界符*](#extended-string-literal-delimiter) +> +> *静态字符串字面量* → [*多行字符串开分隔定界符*](#extended-string-literal-delimiter) [*多行引用文本*](#multiline-quoted-text)可选 [*多行字符串闭分隔定界符*](#extended-string-literal-delimiter) +> +> *多行字符串开分隔定界符* → [*字符串扩展分隔符*](#extended-string-literal-delimiter) **"""** +> +> *多行字符串闭分隔定界符* → **"""** [*字符串扩展分隔符*](#extended-string-literal-delimiter) +> +> ###### extended-string-literal-delimiter {# extended-string-literal-delimiter} +> +> *字符串扩展分隔符* → **#** [*字符串扩展分隔符*](#extended-string-literal-delimiter)可选 +> +> ###### quoted-text {# quoted-text} +> > *引用文本* → [*引用文本项*](#quoted-text-item) [*引用文本*](#quoted-text)可选 -> -> ###### quoted-text-item {#quoted-text-item} -> +> +> ###### quoted-text-item {# quoted-text-item} +> > *引用文本项* → [*转义字符*](#escaped-character) > > *引用文本项* → 除了 **"**、**\\**、U+000A、U+000D 以外的所有 Unicode 字符 > - -###### interpolated-string-literal {#interpolated-string-literal} -> *插值字符串字面量* → **"**[*插值文本*](#interpolated-text)可选**"** +> ###### multiline-quoted-text {# multiline-quoted-text} > -> ###### interpolated-text {#interpolated-text} +> *多行引用文本* → [*多行引用文本项*](#multiline-quoted-text-item) [*多行引用文本*](#multiline-quoted-text)可选 > +> ###### multiline-quoted-text-item {# multiline-quoted-text-item} +> +> *多行引用文本项* [*转义字符*](#escaped-character)可选 +> +> ###### multiline-quoted-text {# multiline-quoted-text} +> +> *多行引用文本* → 除了 **\** 以外的任何Unicode标量值 +> +> *多行引用文本* → [*转义换行*](#escaped-newline) +> +> ###### interpolated-string-literal {# interpolated-string-literal} +> +> *插值字符串字面量* → [*字符串开分隔定界符*](#extended-string-literal-delimiter) [*插值文本*](#interpolated-text)可选 [*字符串闭分隔定界符*](#extended-string-literal-delimiter) +> +> *插值字符串字面量* → [*多行字符串开分隔定界符*](#extended-string-literal-delimiter) [*插值文本*](#interpolated-text)可选 [*多行字符串闭分隔定界符*](#extended-string-literal-delimiter) +> +> ###### interpolated-text {# interpolated-text} +> > *插值文本* → [*插值文本项*](#interpolated-text-item) [*插值文本*](#interpolated-text)可选 -> -> ###### interpolated-text-item {#interpolated-text-item} -> +> +> ###### interpolated-text-item {# interpolated-text-item} +> > *插值文本项* → **\\****(**[*表达式*](./04_Expressions.md)**)** | [*引用文本项*](#quoted-text-item) > - -###### escaped-character {#escaped-character} -> *转义字符* → **\\****0** | **\\****\\** | **\t** | **\n** | **\r** | **\\"** | **\\'** +> *多行插值文本* → [*多行插值文本项*](#multiline-quoted-text-item) [*多行插值文本*](#multiline-quoted-text)可选 > -> *转义字符* → **\u {** [*unicode 标量数字*](#unicode-scalar-digits) **}** +> *多行插值文本项* → **\\(** [表达式](./04_Expressions.md) **)** | [多行引用文本项](#multiline-quoted-text-item) > -> ###### unicode-scalar-digits {#unicode-scalar-digits} +> ###### escape-sequence {# escape-sequence} > +> *转义序列* → **\\** [字符串扩展分隔符](#extended-string-literal-delimiter) +> +> ###### escaped-character {# escaped-character} +> +> *转义字符* → [*转义序列*](#escape-sequence) **0** | [*转义序列*](#escape-sequence) **\\** | [*转义序列*](#escape-sequence) **t** | [*转义序列*](#escape-sequence) **n** | [*转义序列*](#escape-sequence) **r** | [*转义序列*](#escape-sequence) **\"** | [*转义序列*](#escape-sequence) **'** +> +> *转义字符* → [*转义序列*](#escape-sequence) **u {** [*unicode 标量数字*](#unicode-scalar-digits) **}** +> +> ###### unicode-scalar-digits {# unicode-scalar-digits} +> > *unicode 标量数字* → 一到八位的十六进制数字 > +> ###### escaped-newline {# escaped-newline} +> +> *转义换行符* → [*转义序列*](#escape-sequence) [*空白*](#whitespace)可选 [*断行符*](#line-break) -## 运算符 {#operators} + +## 运算符 {# operator} Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基础运算符](../chapter2/02_Basic_Operators.md) 和 [高级运算符](../chapter2/26_Advanced_Operators.md) 中进行了阐述。这一小节将描述哪些字符能用于自定义运算符。 @@ -430,7 +486,6 @@ Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基 > 注意 > > 以下这些标记 `=`、`->`、`//`、`/*`、`*/`、`.`、`<`(前缀运算符)、`&`、`?`、`?`(中缀运算符)、`>`(后缀运算符)、`!` 、`?` 是被系统保留的。这些符号不能被重载,也不能用于自定义运算符。 -> 运算符两侧的空白被用来区分该运算符是否为前缀运算符、后缀运算符或二元运算符。规则总结如下: @@ -449,13 +504,12 @@ Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基 > 运算符语法 > -###### operator {#operator} > *运算符* → [*头部运算符*](#operator-head) [*运算符字符组*](#operator-characters)可选 > -> *运算符* → [*头部点运算符*](#dot-operator-head) [*点运算符字符组*](#dot-operator-characters)可选 -> - -###### operator-head {#operator-head} +> *运算符* → [*头部点运算符*](#dot-operator-head) [*点运算符字符组*](#dot-operator-characters) +> +> ###### operator-head {# operator-head} +> > *头部运算符* → **/** | **=** | **-** | **+** | **!** | __*__ | **%** | **<** | **>** | **&** | **|** | **^** | **~** | **?** > > *头部运算符* → U+00A1–U+00A7 @@ -486,8 +540,8 @@ Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基 > > *头部运算符* → U+3008–U+3030 > - -###### operator-character {#operator-character} +> ###### operator-character {# operator-character} +> > *运算符字符* → [*头部运算符*](#operator-head) > > *运算符字符* → U+0300–U+036F @@ -501,32 +555,25 @@ Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基 > *运算符字符* → U+FE20–U+FE2F > > *运算符字符* → U+E0100–U+E01EF -> -> ###### operator-characters {#operator-characters} -> +> +> ###### operator-characters {# operator-characters} +> > *运算符字符组* → [*运算符字符*](#operator-character) [*运算符字符组*](#operator-characters)可选 > - -###### dot-operator-head {#dot-operator-head} +> ###### dot-operator-head {# dot-operator-head} +> > *头部点运算符* → **..** > -> ###### dot-operator-character {#dot-operator-character} +> ###### dot-operator-character {# dot-operator-character} > > *点运算符字符* → **.** | [*运算符字符*](#operator-character) > -> ###### dot-operator-characters {#dot-operator-characters} +> ###### dot-operator-characters {# dot-operator-characters} > > *点运算符字符组* → [*点运算符字符*](#dot-operator-character) [*点运算符字符组*](#dot-operator-characters)可选 -> - -###### binary-operator {#binary-operator} +> > *二元运算符* → [*运算符*](#operator) -> -> ###### prefix-operator {#prefix-operator} -> +> > *前缀运算符* → [*运算符*](#operator) -> -> ###### postfix-operator {#postfix-operator} -> +> > *后缀运算符* → [*运算符*](#operator) -> From 835959d62bd49ec60bfbbecac2902627aa710afb Mon Sep 17 00:00:00 2001 From: Zhou Fang Date: Fri, 29 Mar 2019 20:46:15 +0800 Subject: [PATCH 070/107] 05_Statements (#909) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 修复文章排版问题 * 修复图片饮用链接失效问题 * 增加缺失的标点 * 初次修改 * 修改 链接文件格式 --- source/chapter3/05_Statements.md | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/source/chapter3/05_Statements.md b/source/chapter3/05_Statements.md index 8a0c6413..ebf002f0 100755 --- a/source/chapter3/05_Statements.md +++ b/source/chapter3/05_Statements.md @@ -1,4 +1,5 @@ -# 语句(Statements) {#statement_statements} +# 语句(Statements){#statement_statements} + 在 Swift 中,有三种类型的语句:简单语句、编译器控制语句和控制流语句。简单语句是最常见的,用于构造表达式或者声明。编译器控制语句允许程序改变编译器的行为,包含编译配置语句和行控制语句。 控制流语句则用于控制程序执行的流程,Swift 中有多种类型的控制流语句:循环语句、分支语句和控制转移语句。循环语句用于重复执行代码块;分支语句用于执行满足特定条件的代码块;控制转移语句则用于改变代码的执行顺序。另外,Swift 提供了 `do` 语句,用于构建局部作用域,还用于错误的捕获和处理;还提供了 `defer` 语句,用于退出当前作用域之前执行清理操作。 @@ -47,7 +48,8 @@ > ### For-In 语句 {#for-in_statements} -`for-in` 语句会为集合(或实现了 `SequenceType` 协议的任意类型)中的每一项执行一次代码块。 + +`for-in` 语句会为集合(或实现了 [Sequence](https://developer.apple.com/documentation/swift/sequence) 协议的任意类型)中的每一项执行一次代码块。 `for-in` 语句的形式如下: @@ -57,7 +59,7 @@ for item in collection { } ``` -`for-in` 语句在循环开始前会调用集合表达式(`collection expression`)的 `makeIterator()` 方法来获取一个实现了 `IteratorProtocol` 协议的迭代器类型。接下来循环开始,反复调用该迭代器的 `next()` 方法。如果其返回值不是 `nil`,它将会被赋给 `item`,然后执行循环体语句,执行完毕后回到循环开始处,继续重复这一过程;否则,既不会赋值也不会执行循环体语句,`for-in` 语句至此执行完毕。 +`for-in` 语句在循环开始前会调用集合表达式(`collection expression`)的 `makeIterator()` 方法来获取一个实现了 [IteratorProtocol](https://developer.apple.com/documentation/swift/iteratorprotocol) 协议的迭代器类型。接下来循环开始,反复调用该迭代器的 `next()` 方法。如果其返回值不是 `nil`,它将会被赋给 `item`,然后执行循环体语句,执行完毕后回到循环开始处,继续重复这一过程;否则,既不会赋值也不会执行循环体语句,`for-in` 语句至此执行完毕。 > for-in 语句语法 > @@ -90,7 +92,7 @@ while condition { > > ###### while-statement {#while-statement} -> *while 语句* → **while** [*条件子句*](#condition-clause) [*代码块*](05_Declarations.md#code-block) +> *while 语句* → **while** [*条件子句*](#condition-clause) [*代码块*](./05_Declarations.md#code-block) > ###### condition-clause {#condition-clause} @@ -270,7 +272,7 @@ case let (x, y) where x == y: #### 对未来枚举的 `case` 进行 `switch` {#future-case} 非冻结枚举(`nonfronzen enumeration`)是一种特殊的枚举类型,它可能在未来会增加新的枚举 `case`,即使这时候你已经编译并且发布了你的应用,所以在 switch 非冻结枚举前需要深思熟虑。当一个库的作者们把一个枚举标记为非冻结的,这意味着他们保留了增加新的枚举 `case` 的权利,并且任何和这个枚举交互的代码都要在不需要重新编译的条件下能够处理那些未来可能新加入的 `case` 。只有那些标准库,比如用 Swift 实现的苹果的一些框架,C 以及 Objective-C 代码才能够声明非冻结枚举。你在 Swift 中声明的枚举不能是非冻结的。 -当你对未来枚举进行 switch 时,你总是需要有一个 `default case`,即使每种枚举类型都已经有对应的 `case` 了。你可以在 default 前标注 `@unknown` ,意思是这个 `case` 应该只匹配未来加入的枚举 `case` 。如果你的 `default case` 中匹配了任何在编译时就能确定的枚举 `case` ,Swift 会抛出一个警告。这可以很好地提醒你库的作者已经新增了一种 `case` ,并且你还没有去处理。 +当你对未来枚举进行 switch 时,你总是需要有一个 `default case`,即使每种枚举类型都已经有对应的 `case` 了。你可以在 default 前标注 `@unknown`,意思是这个 `case` 应该只匹配未来加入的枚举 `case`。如果你的 `default case` 中匹配了任何在编译时就能确定的枚举 `case`,Swift 会抛出一个警告。这可以很好地提醒你库的作者已经新增了一种 `case`,并且你还没有去处理。 以下就是一个例子,我们对标准库的 [Mirror.AncestorRepresentation](https://developer.apple.com/documentation/swift/mirror/ancestorrepresentation) 枚举进行 switch 操作。每当有新的 `case` 加入,我们会得到一个警告,提示我们要去处理它。 @@ -451,7 +453,7 @@ case .suppressed: 使用 `return` 语句时,可以只写 `return` 这个关键词,也可以在 `return` 后面跟上表达式,像下面这样: > return -> +> > return `expression` > @@ -469,8 +471,9 @@ case .suppressed: > > ###### return-statement {#return-statement} -> *return 语句* → **return** [*表达式*](./04_Expressions.md#expression)可选 -> +> *return 语句* → **return** [*表达式*](./04_Expressions.html#expression)可选 + +### Throw 语句 {#throw_statements} ### Throw 语句 {#throw_statements} `throw` 语句出现在抛出函数或者抛出方法体内,或者类型被 `throws` 关键字标记的闭包表达式体内。 @@ -616,9 +619,9 @@ print("Compiled in Swift 4.2 mode or later") #if compiler(>=5) && swift(<5) print("Compiled with the Swift 5 compiler or later in a Swift mode earlier than 5") #endif -// Prints "Compiled with the Swift 5 compiler or later" -// Prints "Compiled in Swift 4.2 mode or later" -// Prints "Compiled with the Swift 5 compiler or later in a Swift mode earlier than 5" +// 打印 "Compiled with the Swift 5 compiler or later" +// 打印 "Compiled in Swift 4.2 mode or later" +// 打印 "Compiled with the Swift 5 compiler or later in a Swift mode earlier than 5" ``` `canImport()` 后面跟的变量是模块的名字,这里这个模块可能并不是每个平台上都存在的。使用它来检测是否可以导入这个模块,如果模块存在就返回 `true` 否则返回 `false` 。 From 9ee236335284596bd8adc3146e86d28ddd9223f5 Mon Sep 17 00:00:00 2001 From: Luo Adolf Date: Sat, 30 Mar 2019 13:47:42 +0800 Subject: [PATCH 071/107] =?UTF-8?q?10=5FSummary=5Fof=5Fthe=5FGrammar(from?= =?UTF-8?q?=20Lexical=20Structure=20->=20Types)=E7=9A=84=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...rammar(from Lexical Structure -> Types).md | 426 ++++++++++++++++++ 1 file changed, 426 insertions(+) create mode 100644 source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md diff --git a/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md b/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md new file mode 100644 index 00000000..5cb6fc4c --- /dev/null +++ b/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md @@ -0,0 +1,426 @@ +# 语法总结(Summary of the Grammar) + +## 词法结构 {#lexical_structure} + +> 空白字符语法 +> +> *空白字符* → [空白字符项](./02_Lexical_Structure.md#whitespace-item) [空白字符](./02_Lexical_Structure.md#whitespace)可选 +> +> *空白字符项* → [换行符](./02_Lexical_Structure.md#line-break) +> +> *空白字符项* → [注释](./02_Lexical_Structure.md#comment) +> +> *空白字符项* → [多行注释](./02_Lexical_Structure.md#multiline-comment) +> +> *空白字符项* → U+0000,U+0009,U+000B,U+000C 或 U+0020 +> +> +> +> 换行符* → U+000A +> +> *换行符* → U+000D +> +> *换行符* → U+000D 后面是 U+000A +> +> *注释* → **//** [单行内容注释](./02_Lexical_Structure.md#comment-text line-break) +> +> *注释* → **/*** [多行内容注释](./02_Lexical_Structure.md#comment-text line-break) ***/** +> +> +> +> *注释内容* → [注释内容项](./02_Lexical_Structure.md#comment-text-item) [注释内容](./02_Lexical_Structure.md#comment-text)可选 +> +> *注释内容项* → 除 U+000A 或 U+000D 外的任何 Unicode 标量值 +> +> +> +> *多行注释内容* → [多行注释内容项](./02_Lexical_Structure.md#multiline-comment-text-item) [多行注释内容](./02_Lexical_Structure.md#multiline-comment-text)可选 +> +> *多行注释内容项* → [多行内容](./02_Lexical_Structure.md#multiline-comment) +> +> *多行注释内容项* → [注释内容项](./02_Lexical_Structure.md#comment-text-item) +> +> *多行注释内容项* → 除 **/*** 或 ***/** 外的任何 Unicode 标量值 +> + + + +> 标识符语法 +> +> *标识符* → [标识符头(Head)](./02_Lexical_Structure.md#identifier_head) [标识符字符集](./02_Lexical_Structure.md#identifier_characters)可选 +> +> *标识符* → [标识符头(Head)](./02_Lexical_Structure.md#identifier_head) [标识符字符集](./02_Lexical_Structure.md#identifier_characters)可选 +> +> *标识符* → [隐式参数名](./02_Lexical_Structure.md#implicit_parameter_name) +> +> *标识符集* → [标识符](./02_Lexical_Structure.md#identifier) | [标识符](./02_Lexical_Structure.md#identifier) **,** [标识符集](./02_Lexical_Structure.md#identifier_list) +> +> *标识符头(Head)* → 大写或者小写字母 A 到 Z +> +> *标识符头(Head)* → _ +> +> *标识符头(Head)* → U+00A8, U+00AA, U+00AD, U+00AF, U+00B2–U+00B5, or U+00B7–U+00BA +> +> *标识符头(Head)* → U+00BC–U+00BE, U+00C0–U+00D6, U+00D8–U+00F6, or U+00F8–U+00FF +> +> *标识符头(Head)* → U+0100–U+02FF, U+0370–U+167F, U+1681–U+180D, or U+180F–U+1DBF +> +> *标识符头(Head)* → U+1E00–U+1FFF +> +> *标识符头(Head)* → U+200B–U+200D, U+202A–U+202E, U+203F–U+2040, U+2054, or U+2060–U+206F +> +> *标识符头(Head)* → U+2070–U+20CF, U+2100–U+218F, U+2460–U+24FF, or U+2776–U+2793 +> +> *标识符头(Head)* → U+2C00–U+2DFF or U+2E80–U+2FFF +> +> *标识符头(Head)* → U+3004–U+3007, U+3021–U+302F, U+3031–U+303F, or U+3040–U+D7FF +> +> *标识符头(Head)* → U+F900–U+FD3D, U+FD40–U+FDCF, U+FDF0–U+FE1F, or U+FE30–U+FE44 +> +> *标识符头(Head)* → U+FE47–U+FFFD +> +> *标识符头(Head)* → U+10000–U+1FFFD, U+20000–U+2FFFD, U+30000–U+3FFFD, or U+40000–U+4FFFD +> +> *标识符头(Head)* → U+50000–U+5FFFD, U+60000–U+6FFFD, U+70000–U+7FFFD, or U+80000–U+8FFFD +> +> *标识符头(Head)* → U+90000–U+9FFFD, U+A0000–U+AFFFD, U+B0000–U+BFFFD, or U+C0000–U+CFFFD +> +> *标识符头(Head)* → U+D0000–U+DFFFD or U+E0000–U+EFFFD +> +> *标识符字符* → 数值 0 到 9 +> +> *标识符字符* → U+0300–U+036F, U+1DC0–U+1DFF, U+20D0–U+20FF, or U+FE20–U+FE2F +> +> *标识符字符* → [标识符头(Head)](./02_Lexical_Structure.md#identifier_head) +> +> *标识符字符集* → [标识符字符](./02_Lexical_Structure.md#identifier_character) [标识符字符集](./02_Lexical_Structure.md#identifier_characters)可选 +> +> *隐式参数名* → **$** [十进制数字集](./02_Lexical_Structure.md#decimal_digits) + + + +> 字面量语法 +> +> *字面量* → [数值型字面量](./02_Lexical_Structure.md#numeric-literal) | [字符串字面量](./02_Lexical_Structure.md#string-literal) | [布尔字面量](./02_Lexical_Structure.md#boolean-literal) | [空字面量](./02_Lexical_Structure.md#nil-literal) +> +> *数值型字面量* → **-**可选[整形字面量](./02_Lexical_Structure.md#integer_literal) | **-**可选[浮点型字面量](./02_Lexical_Structure.md#floating-point-literal) +> +> *布尔字面量* → **true** | **false** +> +> *空字面量* → **nil** +> + + + +> 整型字面量语法 +> +> *整型字面量* → [二进制字面量](./02_Lexical_Structure.md#binary_literal) +> +> *整型字面量* → [八进制字面量](./02_Lexical_Structure.md#octal_literal) +> +> *整型字面量* → [十进制字面量](./02_Lexical_Structure.md#decimal_literal) +> +> *整型字面量* → [十六进制字面量](./02_Lexical_Structure.md#hexadecimal_literal) +> +> *二进制字面量* → **0b** [二进制数字](./02_Lexical_Structure.md#binary_digit) [二进制字面量字符集](./02_Lexical_Structure.md#binary_literal_characters)可选 +> +> *二进制数字* → 数值 0 到 1 +> +> *二进制字面量字符* → [二进制数字](./02_Lexical_Structure.md#binary_digit) | **_** +> +> *二进制字面量字符集* → [二进制字面量字符](./02_Lexical_Structure.md#binary_literal_character) [二进制字面量字符集](./02_Lexical_Structure.md#binary_literal_characters)可选 +> +> *八进制字面量* → **0o** [八进制数字](./02_Lexical_Structure.md#octal_digit) [八进制字符集](./02_Lexical_Structure.md#octal_literal_characters)可选 +> +> *八进字数字* → 数值 0 到 7 +> +> *八进制字符* → [八进制数字](./02_Lexical_Structure.md#octal_digit) | **_** +> +> *八进制字符集* → [八进制字符](./02_Lexical_Structure.md#octal_literal_character) [八进制字符集](./02_Lexical_Structure.md#octal_literal_characters)可选 +> +> *十进制字面量* → [十进制数字](./02_Lexical_Structure.md#decimal_digit) [十进制字符集](./02_Lexical_Structure.md#decimal_literal_characters)可选 +> +> *十进制数字* → 数值 0 到 9 +> +> *十进制数字集* → [十进制数字](./02_Lexical_Structure.md#decimal_digit) [十进制数字集](./02_Lexical_Structure.md#decimal_digits)可选 +> +> *十进制字面量字符* → [十进制数字](./02_Lexical_Structure.md#decimal_digit) | **_** +> +> *十进制字面量字符集* → [十进制字面量字符](./02_Lexical_Structure.md#decimal_literal_character) [十进制字面量字符集](./02_Lexical_Structure.md#decimal_literal_characters)可选 +> +> *十六进制字面量* → **0x** [十六进制数字](./02_Lexical_Structure.md#hexadecimal_digit) [十六进制字面量字符集](./02_Lexical_Structure.md#hexadecimal_literal_characters)可选 +> +> *十六进制数字* → 数值 0 到 9,a 到 f,或者 A 到 F +> +> *十六进制字符* → [十六进制数字](./02_Lexical_Structure.md#hexadecimal_digit) | **_** +> +> *十六进制字面量字符集* → [十六进制字符](./02_Lexical_Structure.md#hexadecimal_literal_character) [十六进制字面量字符集](./02_Lexical_Structure.md#hexadecimal_literal_characters)可选 +> + + + +> 浮点型字面量语法 +> +> *浮点数字面量* → [十进制字面量](./02_Lexical_Structure.md#decimal_literal) [十进制分数](./02_Lexical_Structure.md#decimal_fraction)可选[十进制指数](./02_Lexical_Structure.md#decimal_exponent)可选 +> +> *浮点数字面量* → [十六进制字面量](./02_Lexical_Structure.md#hexadecimal_literal) [十六进制分数](./02_Lexical_Structure.md#hexadecimal_fraction)可选[十六进制指数](./02_Lexical_Structure.md#hexadecimal_exponent) +> +> *十进制分数* → **.** [十进制字面量](./02_Lexical_Structure.md#decimal_literal) +> +> *十进制指数* → [浮点数 e](./02_Lexical_Structure.md#floating_point_e) [正负号](./02_Lexical_Structure.md#sign)可选[十进制字面量](./02_Lexical_Structure.md#decimal_literal) +> +> *十六进制分数* → **.** [十六进制数](./02_Lexical_Structure.md#hexadecimal_literal) +> +> *十六进制指数* → [浮点数 p](./02_Lexical_Structure.md#floating_point_p) [正负号](./02_Lexical_Structure.md#sign)可选[十六进制字面量](./02_Lexical_Structure.md#hexadecimal_literal) +> +> *浮点数 e* → **e** | **E** +> +> *浮点数 p* → **p** | **P** +> +> *正负号* → **+** | **-** +> + + + +> 字符串型字面量语法 + +> *字符串字面量* → [静态字符串字面量](./02_Lexical_Structure.md#static-string-literal) | [插值字符串字面量](./02_Lexical_Structure.md#interpolated-string-literal) +> +> *字符串开分隔定界符* → [字符串扩展分隔符](./02_Lexical_Structure.md#extended-string-literal-delimiter) **"** +> +> *字符串闭分隔定界符* → **"** [字符串扩展分隔符](./02_Lexical_Structure.md#extended-string-literal-delimiter)可选 +> +> *静态字符串字面量* → [字符串开分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) [引用文本](./02_Lexical_Structure.md#quoted-text)可选 [字符串闭分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) +> +> *静态字符串字面量* → [多行字符串开分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) [多行引用文本](./02_Lexical_Structure.md#multiline-quoted-text)可选 [多行字符串闭分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) +> +> *多行字符串开分隔定界符* → [字符串扩展分隔符](./02_Lexical_Structure.md#extended-string-literal-delimiter) **"""** +> +> *多行字符串闭分隔定界符* → **"""** [字符串扩展分隔符](./02_Lexical_Structure.md#extended-string-literal-delimiter) +> +> *字符串扩展分隔符* → **#** [字符串扩展分隔符](./02_Lexical_Structure.md#extended-string-literal-delimiter)可选 +> +> *引用文本* → [引用文本项](./02_Lexical_Structure.md#quoted-text-item) [引用文本](#quoted-text)可选 +> +> *引用文本项* → [转义字符](./02_Lexical_Structure.md#escaped-character) +> +> *引用文本项* → 除了 **"**、**\\**、U+000A、U+000D 以外的所有 Unicode 字符 +> +> *多行引用文本* → [多行引用文本项](./02_Lexical_Structure.md#multiline-quoted-text-item) [多行引用文本](./02_Lexical_Structure.md#multiline-quoted-text)可选 +> +> *多行引用文本项* [转义字符](./02_Lexical_Structure.md#escaped-character)可选 +> +> *多行引用文本* → 除了 **\** 以外的任何Unicode标量值 +> +> *多行引用文本* → [转义换行](./02_Lexical_Structure.md#escaped-newline) +> +> *插值字符串字面量* → [字符串开分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) [插值文本](./02_Lexical_Structure.md#interpolated-text)可选 [字符串闭分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) +> +> *插值字符串字面量* → [多行字符串开分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) [插值文本](./02_Lexical_Structure.md#interpolated-text)可选 [多行字符串闭分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) +> +> *插值文本* → [插值文本项](./02_Lexical_Structure.md#interpolated-text-item) [插值文本](./02_Lexical_Structure.md#interpolated-text)可选 +> +> *插值文本项* → **\\**(**[表达式](./04_Expressions.md)**) | [引用文本项](./02_Lexical_Structure.md#quoted-text-item) +> +> *多行插值文本* → [多行插值文本项](./02_Lexical_Structure.md#multiline-quoted-text-item) [多行插值文本](./02_Lexical_Structure.md#multiline-quoted-text)可选 +> +> *多行插值文本项* → **\\(** [表达式](./04_Expressions.md) **)** | [多行引用文本项](./02_Lexical_Structure.md#multiline-quoted-text-item) +> +> *转义序列* → **\\** [字符串扩展分隔符](./02_Lexical_Structure.md#extended-string-literal-delimiter) +> +> *转义字符* → [转义序列](./02_Lexical_Structure.md#escape-sequence) **0** | [转义序列](./02_Lexical_Structure.md#escape-sequence) **\\** | [转义序列](./02_Lexical_Structure.md#escape-sequence) **t** | [转义序列](#escape-sequence) **n** | [转义序列](./02_Lexical_Structure.md#escape-sequence) **r** | [转义序列](./02_Lexical_Structure.md#escape-sequence) **\"** | [转义序列](./02_Lexical_Structure.md#escape-sequence) **'** +> +> *转义字符* → [转义序列](./02_Lexical_Structure.md#escape-sequence) **u {** [unicode 标量数字](./02_Lexical_Structure.md#unicode-scalar-digits) **}** +> +> *unicode 标量数字* → 一到八位的十六进制数字 +> +> *转义换行符* → [转义序列](./02_Lexical_Structure.md#escape-sequence) [空白](./02_Lexical_Structure.md#whitespace)可选 [断行符](./02_Lexical_Structure.md#line-break) + + + + +> 运算符语法语法 +> +> *运算符* → [运算符头](./02_Lexical_Structure.md#operator_character) [运算符字符集](./02_Lexical_Structure.md#operator)可选 +> +> *运算符* → [点运算符头](./02_Lexical_Structure.md#dot-operator-head) [点运算符字符集](./02_Lexical_Structure.md#dot-operator-characters)可选 +> +> *运算符字符* → **/** | **=** | **-** | **+** | **!** | ***** | **%** | **<** | **>** | **&** | **|** | **^** | **~** | **?** +> +> *运算符头* → U+00A1–U+00A7 +> +> *运算符头* → U+00A9 or U+00AB +> +> *运算符头* → U+00AC or U+00AE +> +> *运算符头* → U+00B0–U+00B1, U+00B6, U+00BB, U+00BF, U+00D7, or U+00F7 +> +> *运算符头* → U+2016–U+2017 or U+2020–U+2027 +> +> *运算符头* → U+2030–U+203E +> +> *运算符头* → U+2041–U+2053 +> +> *运算符头* → U+2055–U+205E +> +> *运算符头* → U+2190–U+23FF +> +> *运算符头* → U+2500–U+2775 +> +> *运算符头* → U+2794–U+2BFF +> +> *运算符头* → U+2E00–U+2E7F +> +> *运算符头* → U+3001–U+3003 +> +> *运算符头* → U+3008–U+3030 +> +> *运算符字符* → [运算符头](./02_Lexical_Structure.md#operator-head) +> +> *运算符字符* → U+0300–U+036F +> +> *运算符字符* → U+1DC0–U+1DFF +> +> *运算符字符* → U+20D0–U+20FF +> +> *运算符字符* → U+FE00–U+FE0F +> +> *运算符字符* → U+FE20–U+FE2F +> +> *运算符字符* → U+E0100–U+E01EF +> +> *运算符字符集* → [运算符字符](./02_Lexical_Structure.md#operator-character) [运算符字符集](./02_Lexical_Structure.md#operator-characters)可选 +> +> *点运算符头* → **..** +> +> *点运算符字符* → **.** | [运算符字符](./02_Lexical_Structure.md#operator-character) +> +> *点运算符字符集* → [点运算符字符](./02_Lexical_Structure.md#dot-operator-character) [点运算符字符集](./02_Lexical_Structure.md#dot-operator-characters)可选 +> +> *二元运算符* → [运算符](./02_Lexical_Structure.md#operator) +> +> *前置运算符* → [运算符](./02_Lexical_Structure.md#operator) +> +> *后置运算符* → [运算符](./02_Lexical_Structure.md#operator) +> + +## 类型 {#types} + +> 类型语法 +> +> *类型* → [数组类型](./03_Types.md#array_type) +> +> *类型* → [字典类型](./03_Types.md#dictionary-type) +> +> *类型* → [函数类型](./03_Types.md#function_type) +> +> *类型* → [类型标识符](./03_Types.md#type_identifier) +> +> *类型* → [元组类型](./03_Types.md./03_Types.md#tuple_type) +> +> *类型* → [可选类型](./03_Types.md#optional_type) +> +> *类型* → [隐式解析可选类型](./03_Types.md#implicitly_unwrapped_optional_type) +> +> *类型* → [协议合成类型](./03_Types.md#protocol_composition_type) +> +> *类型* → **Any** +> +> *类型* → **Self** +> +> *类型* → **(** [type](./03_Types.md#metatype_type) **)** + + + +> 类型注解语法 +> +> *类型注解* → **:** [属性(Attributes)集](./07_Attributes.md#attributes)可选[类型](./03_Types.md#type) + + + +> 类型标识语法 +> +> *类型标识* → [类型名称](./03_Types.md#type_name) [泛型参数从句](./09_Generic_Parameters_and_Arguments.md#generic_argument_clause)可选| [类型名称](./03_Types.md#type_name) [泛型参数从句](./09_Generic_Parameters_and_Arguments.md#generic_argument_clause)可选**.** [类型标识符](./03_Types.md#type_identifier) +> +> *类型名* → [标识符](./02_Lexical_Structure.md#identifier) +> + + + +> 元组类型语法 +> +> *元组类型* → **(** **)** | **(** [元组类型元素](./03_Types.md#tuple-type-element) **,** [元组类型元素列表](./03_Types.md#tuple-type-element-list) **)** +> +> *元组类型元素列表* → [元组类型元素](./03_Types.md#tuple-type-element) | [元组类型元素](./03_Types.md#tuple-type-element) **,** [元组类型元素列表](./03_Types.md#tuple-type-element-list) +> +> *元组类型元素* → [元素名](./03_Types.md#element-name) [类型注解](./03_Types.md#type-annotation) | [类型](./03_Types.md#type) +> +> *元素名* → [标识符](./02_Lexical_Structure.md#identifier) + + + +> 函数类型语法 +> +> *函数类型* → [类型](./03_Types.md#type) **throws**可选**->** [类型](./03_Types.md#type) +> +> *函数类型* → [类型](./03_Types.md#) **rethrows** **->** [类型](./03_Types.md#) +> +> *函数类型子句* → **(**­ **)**­ +> +> *函数类型子句* → **(** [函数类型参数列表](./03_Types.md#function-type-argument-list) *...*­可选 **)** +> +> *函数类型参数列表* → [函数类型参数](./03_Types.md#function-type-argument) | [函数类型参数](function-type-argument), [函数类型参数列表](./03_Types.md#function-type-argument-list) +> +> *函数类型参数* → [特性列表](./07_Attributes.md#attributes)可选 **输入输出参数**可选 [类型](#type) | [参数标签](#argument-label) [类型注解](#type-annotation) +> +> *参数标签* → [标识符](./02_Lexical_Structure.md#identifier) + + + +> 数组类型语法 +> +> *数组类型* → **[** [*类型*](./03_Types.md#array_type) **]** + + +> 字典类型语法 +> +> *字典类型* → **[** [类型 **:** 类型](./03_Types.md#type) **]** + + + +> 可选类型语法 +> +> *可选类型* → [类型](./03_Types.md#type) **?** +> + + + +> 隐式解析可选类型(Implicitly Unwrapped Optional Type)语法 +> +> *隐式解析可选类型* → [类型](./03_Types.md#type) **!** +> + + + +> 协议合成类型语法 +> +> *协议合成类型* → [类型标识符](./03_Types.md#type_identifier) | [协议合成延续](./03_Types.md#protocol-composition-continuation) +> +> *协议持续延续* → [类型标识符](./03_Types.md#type_identifier) | [协议合成类型](./03_Types.md#protocol-composition-type) + + + +> 元(Metatype)类型语法 +> +> *元类型* → [类型](./03_Types.md#type) **.** **Type** | [类型](./03_Types.md#type) **.** **Protocol** + + + +> 类型继承从句语法 +> +> *类型继承从句* → **:** [类型继承集](./03_Types.md#type_inheritance_list) +> +> *类型继承集* → [类型标识符](./03_Types.md#type_identifier) | [类型标识符](./03_Types.md#type_identifier) **,** [类型继承集](./03_Types.md#type_inheritance_list) +> +> *类条件* → **class** + From 44c325d3cec005a316bdaee307d2bdb343d2ff7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=BD=97?= Date: Sat, 30 Mar 2019 17:45:18 +0800 Subject: [PATCH 072/107] Update 10_Summary_of_the_Grammar(from Lexical Structure -> Types).md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 更新添加转义字符 2. 格式修正 --- ...mary_of_the_Grammar(from Lexical Structure -> Types).md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md b/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md index 5cb6fc4c..6e20eca7 100644 --- a/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md +++ b/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md @@ -96,6 +96,7 @@ > *标识符字符集* → [标识符字符](./02_Lexical_Structure.md#identifier_character) [标识符字符集](./02_Lexical_Structure.md#identifier_characters)可选 > > *隐式参数名* → **$** [十进制数字集](./02_Lexical_Structure.md#decimal_digits) +> @@ -204,16 +205,16 @@ > > *引用文本项* → [转义字符](./02_Lexical_Structure.md#escaped-character) > -> *引用文本项* → 除了 **"**、**\\**、U+000A、U+000D 以外的所有 Unicode 字符 +> *引用文本项* → 除了 **"**、**\\\**、U+000A、U+000D 以外的所有 Unicode 字符 > > *多行引用文本* → [多行引用文本项](./02_Lexical_Structure.md#multiline-quoted-text-item) [多行引用文本](./02_Lexical_Structure.md#multiline-quoted-text)可选 > > *多行引用文本项* [转义字符](./02_Lexical_Structure.md#escaped-character)可选 > -> *多行引用文本* → 除了 **\** 以外的任何Unicode标量值 +> *多行引用文本* → 除了 **\\** 以外的任何 Unicode 标量值 > > *多行引用文本* → [转义换行](./02_Lexical_Structure.md#escaped-newline) -> + > *插值字符串字面量* → [字符串开分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) [插值文本](./02_Lexical_Structure.md#interpolated-text)可选 [字符串闭分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) > > *插值字符串字面量* → [多行字符串开分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) [插值文本](./02_Lexical_Structure.md#interpolated-text)可选 [多行字符串闭分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) From 3e2520a893b701069dd736f88f9e9ccf633f421d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=BD=97?= Date: Sat, 30 Mar 2019 17:50:05 +0800 Subject: [PATCH 073/107] Update 10_Summary_of_the_Grammar(from Lexical Structure -> Types).md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 调整格式 --- ...Summary_of_the_Grammar(from Lexical Structure -> Types).md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md b/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md index 6e20eca7..f6b24c2c 100644 --- a/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md +++ b/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md @@ -24,7 +24,7 @@ > > *注释* → **//** [单行内容注释](./02_Lexical_Structure.md#comment-text line-break) > -> *注释* → **/*** [多行内容注释](./02_Lexical_Structure.md#comment-text line-break) ***/** +> *注释* → **//*** [多行内容注释](./02_Lexical_Structure.md#comment-text line-break) **/*/** > > > @@ -366,7 +366,7 @@ > > *函数类型* → [类型](./03_Types.md#) **rethrows** **->** [类型](./03_Types.md#) > -> *函数类型子句* → **(**­ **)**­ +> *函数类型子句* → **(** **)** > > *函数类型子句* → **(** [函数类型参数列表](./03_Types.md#function-type-argument-list) *...*­可选 **)** > From 212b685b245caf95c9d2b129a2a04585f6b9b4cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=BD=97?= Date: Sat, 30 Mar 2019 20:01:04 +0800 Subject: [PATCH 074/107] Update 10_Summary_of_the_Grammar(from Lexical Structure -> Types).md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 修改转义 --- ...0_Summary_of_the_Grammar(from Lexical Structure -> Types).md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md b/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md index f6b24c2c..b5a85031 100644 --- a/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md +++ b/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md @@ -24,7 +24,7 @@ > > *注释* → **//** [单行内容注释](./02_Lexical_Structure.md#comment-text line-break) > -> *注释* → **//*** [多行内容注释](./02_Lexical_Structure.md#comment-text line-break) **/*/** +> *注释* → **/*** [多行内容注释](./02_Lexical_Structure.md#comment-text line-break) ***/** > > > From 4ef5e74cbb1734bbc05b7d2419704f8d97cc73f2 Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Sat, 30 Mar 2019 07:05:57 -0500 Subject: [PATCH 075/107] Update 10_Summary_of_the_Grammar(from Lexical Structure -> Types).md --- ...0_Summary_of_the_Grammar(from Lexical Structure -> Types).md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md b/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md index b5a85031..9126e31d 100644 --- a/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md +++ b/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md @@ -24,7 +24,7 @@ > > *注释* → **//** [单行内容注释](./02_Lexical_Structure.md#comment-text line-break) > -> *注释* → **/*** [多行内容注释](./02_Lexical_Structure.md#comment-text line-break) ***/** +> *注释* → **/\*** [多行内容注释](./02_Lexical_Structure.md#comment-text line-break) **\*/** > > > From 10bc54af00918ff8a04c8acecf94ac8b9237165c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=BD=97?= Date: Sat, 30 Mar 2019 20:09:50 +0800 Subject: [PATCH 076/107] Update 10_Summary_of_the_Grammar(from Lexical Structure -> Types).md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 修正转义 --- ...0_Summary_of_the_Grammar(from Lexical Structure -> Types).md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md b/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md index 9126e31d..cbd86993 100644 --- a/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md +++ b/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md @@ -40,7 +40,7 @@ > > *多行注释内容项* → [注释内容项](./02_Lexical_Structure.md#comment-text-item) > -> *多行注释内容项* → 除 **/*** 或 ***/** 外的任何 Unicode 标量值 +> *多行注释内容项* → 除 **/\*** 或 **\*/** 外的任何 Unicode 标量值 > From cd435f5a288fabec0c52bf5391db8ef3f71e9258 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=BD=97?= Date: Sat, 30 Mar 2019 20:18:14 +0800 Subject: [PATCH 077/107] Update 10_Summary_of_the_Grammar(from Lexical Structure -> Types).md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.修正多行注释 --- ...0_Summary_of_the_Grammar(from Lexical Structure -> Types).md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md b/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md index cbd86993..33bee25e 100644 --- a/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md +++ b/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md @@ -24,7 +24,7 @@ > > *注释* → **//** [单行内容注释](./02_Lexical_Structure.md#comment-text line-break) > -> *注释* → **/\*** [多行内容注释](./02_Lexical_Structure.md#comment-text line-break) **\*/** +> *注释* → **/\*** [多行内容注释](./02_Lexical_Structure.md#multiline-comment-text) **\*/** > > > From 2b4fddc0494b9aa0a885d11b691a63745a376f1d Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Sat, 30 Mar 2019 10:37:58 -0500 Subject: [PATCH 078/107] Update 10_Summary_of_the_Grammar(from Lexical Structure -> Types).md --- ...Summary_of_the_Grammar(from Lexical Structure -> Types).md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md b/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md index 33bee25e..7f335cf8 100644 --- a/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md +++ b/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md @@ -22,7 +22,7 @@ > > *换行符* → U+000D 后面是 U+000A > -> *注释* → **//** [单行内容注释](./02_Lexical_Structure.md#comment-text line-break) +> *注释* → **//** [单行内容注释](./02_Lexical_Structure.md#comment-text) [换行符](./02_Lexical_Structure.md#line-break) > > *注释* → **/\*** [多行内容注释](./02_Lexical_Structure.md#multiline-comment-text) **\*/** > @@ -235,7 +235,7 @@ > > *unicode 标量数字* → 一到八位的十六进制数字 > -> *转义换行符* → [转义序列](./02_Lexical_Structure.md#escape-sequence) [空白](./02_Lexical_Structure.md#whitespace)可选 [断行符](./02_Lexical_Structure.md#line-break) +> *转义换行符* → [转义序列](./02_Lexical_Structure.md#escape-sequence) [空白](./02_Lexical_Structure.md#whitespace)可选 [换行符](./02_Lexical_Structure.md#line-break) From 4d6ef27d545f14c44f6ba081af1cd11bf0f70eca Mon Sep 17 00:00:00 2001 From: Chen Jia Date: Sun, 31 Mar 2019 06:32:56 +0800 Subject: [PATCH 079/107] =?UTF-8?q?=E7=AC=AC=E4=B8=89=E7=AB=A0=2010=5FSumm?= =?UTF-8?q?ary=5Fof=5Fthe=5FGrammar=EF=BC=88=E4=BB=8E=20Declarations=20?= =?UTF-8?q?=E5=88=B0=20Generic=20Parameters=20and=20Arguments=EF=BC=89=20(?= =?UTF-8?q?#910)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 第三章 10_Summary_of_the_Grammar(从 Declarations 到 Generic Parameters and Arguments) * 10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments)的翻译 (#911) --- ...ns -> Generic Parameters and Arguments).md | 569 ++++++++ source/chapter3/10_Summary_of_the_Grammar.md | 1204 +++++------------ 2 files changed, 908 insertions(+), 865 deletions(-) create mode 100644 source/chapter3/10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments).md diff --git a/source/chapter3/10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments).md b/source/chapter3/10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments).md new file mode 100644 index 00000000..529ba6bc --- /dev/null +++ b/source/chapter3/10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments).md @@ -0,0 +1,569 @@ +## 声明 {#declarations} + +> 声明语法 +> +> *声明* → [导入声明](./06_Declarations.md#import_declaration) +> +> *声明* → [常量声明](./06_Declarations.md#constant_declaration) +> +> *声明* → [变量声明](./06_Declarations.md#variable_declaration) +> +> *声明* → [类型别名声明](./06_Declarations.md#typealias_declaration) +> +> *声明* → [函数声明](./06_Declarations.md#function_declaration) +> +> *声明* → [枚举声明](./06_Declarations.md#enum_declaration) +> +> *声明* → [结构体声明](./06_Declarations.md#struct_declaration) +> +> *声明* → [类声明](./06_Declarations.md#class_declaration) +> +> *声明* → [协议声明](./06_Declarations.md#protocol_declaration) +> +> *声明* → [构造器声明](./06_Declarations.md#initializer_declaration) +> +> *声明* → [析构器声明](./06_Declarations.md#deinitializer_declaration) +> +> *声明* → [扩展声明](./06_Declarations.md#extension_declaration) +> +> *声明* → [下标声明](./06_Declarations.md#subscript_declaration) +> +> *声明* → [运算符声明](./06_Declarations.md#operator_declaration) +> +> *声明* → [优先级组声明](./06_Declarations.md#precedence_group_declaration) +> +> *声明集* → [声明](./06_Declarations.md#declaration) [声明集](./06_Declarations.md#declarations) 可选 +> + + + + +> 顶级声明语法 +> +> *顶级声明* → [多条语句](./05_Statements.md#statements) 可选 +> + + + +> 代码块语法 +> +> *代码块* → **{** [多条语句](./05_Statements.md#statements) 可选 **}** +> + + + +> 导入声明语法 +> +> *导入声明* → [属性集](./07_Attributes.md#attributes) 可选 **import** [导入类型](./06_Declarations.md#import_kind) 可选 [导入路径](./06_Declarations.md#import_path) +> +> *导入类型* → **typealias** | **struct** | **class** | **enum** | **protocol** | **let** | **var** | **func** +> +> *导入路径* → [导入路径标识符](./06_Declarations.md#import_path_identifier) | [导入路径标识符](./06_Declarations.md#import_path_identifier) **.** [导入路径](./06_Declarations.md#import_path) +> +> *导入路径标识符* → [标识符](./02_Lexical_Structure.md#identifier) | [运算符](./02_Lexical_Structure.md#operator) +> + + + +> 常数声明语法 +> +> *常量声明* → [属性集](./07_Attributes.md#attributes) 可选 [声明修饰符集](./06_Declarations.md#declaration_specifiers) 可选 **let** [模式构造器集](./06_Declarations.md#pattern_initializer_list) +> +> *模式构造器集* → [模式构造器](./06_Declarations.md#pattern_initializer) | [模式构造器](./06_Declarations.md#pattern_initializer) **,** [模式构造器集](./06_Declarations.md#pattern_initializer_list) +> +> *模式构造器* → [模式](./08_Patterns.md#pattern) [构造器](./06_Declarations.md#initializer) 可选 +> +> *构造器* → **=** [表达式](./04_Expressions.md#expression) +> + + + +> 变量声明语法 +> +> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [模式构造器集](./06_Declarations.md#pattern_initializer_list) +> +> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [代码块](./06_Declarations.md#code_block) +> +> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [getter-setter 块](./06_Declarations.md#getter_setter_block) +> +> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [getter-setter 关键字块](./06_Declarations.md#getter_setter_keyword_block) +> +> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [构造器](./06_Declarations.md#initializer) 可选 [willSet-didSet 代码块](./06_Declarations.md#willSet_didSet_block) +> +> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [构造器](./06_Declarations.md#initializer) 可选 [willSet-didSet 代码块](./06_Declarations.md#willSet_didSet_block) +> +> *变量声明头* → [属性集](./07_Attributes.md#attributes) 可选 [声明修饰符集](./06_Declarations.md#declaration_specifiers) 可选 **var** +> +> *变量名称* → [标识符](./02_Lexical_Structure.md#identifier) +> +> *getter-setter 块* → [代码块](./06_Declarations.md#code_block) +> +> *getter-setter 块* → **{** [getter 子句](./06_Declarations.md#getter_clause) [setter 子句](./06_Declarations.md#setter_clause) 可选 **}** +> +> *getter-setter 块* → **{** [setter 子句](./06_Declarations.md#setter_clause) [getter 子句](./06_Declarations.md#getter_clause) **}** +> +> *getter 子句* → [属性集](./07_Attributes.md#attributes) 可选 [可变性修饰符](./06_Declarations.md#mutation-modifier) 可选 **get** [代码块](./06_Declarations.md#code_block) +> +> *setter 子句* → [属性集](./07_Attributes.md#attributes) 可选 [可变性修饰符](./06_Declarations.md#mutation-modifier) 可选 **set** [setter 名称](./06_Declarations.md#setter_name) 可选 [代码块](./06_Declarations.md#code_block) +> +> *setter 名称* → **(** [标识符](./02_Lexical_Structure.md#identifier) **)** +> +> *getter-setter 关键字(Keyword)块* → **{** [getter 关键字子句](./06_Declarations.md#getter_keyword_clause) [setter 关键字子句](./06_Declarations.md#setter_keyword_clause) 可选 **}** +> +> *getter-setter 关键字(Keyword)块* → **{** [setter 关键字子句](./06_Declarations.md#setter_keyword_clause) [getter 关键字子句](./06_Declarations.md#getter_keyword_clause) **}** +> +> *getter 关键字(Keyword)子句* → [属性集](./07_Attributes.md#attributes) 可选 [可变性修饰符](./06_Declarations.md#mutation-modifier) 可选 **get** +> +> *setter 关键字(Keyword)子句* → [属性集](./07_Attributes.md#attributes) 可选 [可变性修饰符](./06_Declarations.md#mutation-modifier) 可选 **set** +> +> *willSet-didSet 代码块* → **{** [willSet 子句](./06_Declarations.md#willSet_clause) [didSet 子句](./06_Declarations.md#didSet_clause) 可选 **}** +> +> *willSet-didSet 代码块* → **{** [didSet 子句](./06_Declarations.md#didSet_clause) [willSet 子句](./06_Declarations.md#willSet_clause) 可选 **}** +> +> *willSet 子句* → [属性集](./07_Attributes.md#attributes) 可选 **willSet** [setter 名称](./06_Declarations.md#setter_name) 可选 [代码块](./06_Declarations.md#code_block) +> +> *didSet 子句* → [属性集](./07_Attributes.md#attributes) 可选 +> + **didSet** [setter 名称](./06_Declarations.md#setter_name) 可选 [代码块](./06_Declarations.md#code_block) + + + +> 类型别名声明语法 +> +> *类型别名声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) **typealias** [类型别名名称](./06_Declarations.md#typealias_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [类型别名赋值](./06_Declarations.md#typealias_assignment) +> +> *类型别名名称* → [标识符](./02_Lexical_Structure.md#identifier) +> +> *类型别名赋值* → **=** [类型](./03_Types.md#type) +> + + + +> 函数声明语法 +> +> *函数声明* → [函数头](./06_Declarations.md#function_head) [函数名](./06_Declarations.md#function_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [函数签名](./06_Declarations.md#function_signature) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [函数体](./06_Declarations.md#function_body) 可选 +> +> *函数头* → [属性集](./07_Attributes.md#attributes) 可选 [声明描述符集](./06_Declarations.md#declaration_specifiers) 可选 **func** +> +> *函数名* → [标识符](./02_Lexical_Structure.md#identifier) | [运算符](./02_Lexical_Structure.md#operator) +> +> *函数签名* → [参数子句](./06_Declarations.md#parameter_clause) **throws** 可选 [函数结果](./06_Declarations.md#function_result) 可选 +> + +> *函数签名* → [参数子句](./06_Declarations.md#parameter_clause) **rethrows** [函数结果](./06_Declarations.md#function_result) 可选 +> +> *函数结果* → **->** [属性集](./07_Attributes.md#attributes) 可选 [类型](./03_Types.md#type) +> +> *函数体* → [代码块](./06_Declarations.md#code_block) +> +> *参数子句* → **(** **)** | **(** [参数集](./06_Declarations.md#parameter_list) **)** +> +> *参数集* → [参数](./06_Declarations.md#parameter) | [参数](./06_Declarations.md#parameter) **,** [参数集](./06_Declarations.md#parameter_list) +> +> *参数* → [外部参数名](./06_Declarations.md#parameter_name) 可选 [本地参数名](./06_Declarations.md#local_parameter_name) [类型注解](./03_Types.md#type_annotation) [默认参数子句](./06_Declarations.md#default_argument_clause) 可选 +> +> *参数* → [外部参数名](./06_Declarations.md#parameter_name) 可选 [本地参数名](./06_Declarations.md#local_parameter_name) [类型注解](./03_Types.md#type_annotation) +> +> *参数* → [外部参数名](./06_Declarations.md#parameter_name) 可选 [本地参数名](./06_Declarations.md#local_parameter_name) [类型注解](./03_Types.md#type_annotation) **...** +> +> *外部参数名* → [标识符](./02_Lexical_Structure.md#identifier) +> +> *本地参数名* → [标识符](./02_Lexical_Structure.md#identifier) +> +> *默认参数子句* → **=** [表达式](./04_Expressions.md#expression) +> + + + +> 枚举声明语法 +> +> *枚举声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 [联合式枚举](./06_Declarations.md#union_style_enum) +> +> *枚举声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 [原始值式枚举](./06_Declarations.md#raw-value-style-enum) +> +> *联合式枚举* → **indirect** 可选 **enum** [枚举名](./06_Declarations.md#enum_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [类型继承子句](./03_Types.md#type-inheritance-clause) 可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 **{** [联合式枚举成员](./06_Declarations.md#union_style_enum_members) 可选 **}** +> +> *联合式枚举成员集* → [联合式枚举成员](./06_Declarations.md#union_style_enum_member) [联合样式枚举成员集](./06_Declarations.md#union_style_enum_members) 可选 +> +> *联合样式枚举成员* → [声明](./06_Declarations.md#declaration) | [联合式枚举 case 子句](./06_Declarations.md#union_style_enum_case_clause) | [编译控制语句](./05_Statements.md#compiler-control-statement) +> +> *联合式枚举 case 子句* → [属性集](./07_Attributes.md#attributes) 可选 **indirect** 可选 **case** [联合式枚举 case 集](./06_Declarations.md#union_style_enum_case_list) +> +> *联合式枚举 case 集* → [联合式枚举 case](./06_Declarations.md#union_style_enum_case) | [联合式枚举 case](./06_Declarations.md#union_style_enum_case) **,** [联合式枚举 case 集](./06_Declarations.md#union_style_enum_case_list) +> +> *联合式枚举 case* → [枚举的 case 名](./06_Declarations.md#enum_case_name) [元组类型](./03_Types.md#tuple_type) 可选 +> +> *枚举名* → [标识符](./02_Lexical_Structure.md#identifier) +> +> *枚举的 case 名* → [标识符](./02_Lexical_Structure.md#identifier) +> +> *原始值式枚举* → **enum** [枚举名](./06_Declarations.md#enum_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [类型继承子句](./03_Types.md#type-inheritance-clause) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 **{** [原始值式枚举成员集](./06_Declarations.md#raw_value_style_enum_members) **}** +> +> *原始值式枚举成员集* → [原始值式枚举成员](./06_Declarations.md#raw_value_style_enum_member) [原始值式枚举成员集](./06_Declarations.md#raw_value_style_enum_members) 可选 +> +> *原始值式枚举成员* → [声明](./06_Declarations.md#declaration) | [原始值式枚举 case 子句](./06_Declarations.md#raw_value_style_enum_case_clause) | [编译控制语句](./05_Statements.md#compiler-control-statement) +> +> *原始值式枚举 case 子句* → [属性集](./07_Attributes.md#attributes) 可选 **case** [原始值式枚举 case 集](./06_Declarations.md#raw_value_style_enum_case_list) +> +> *原始值式枚举 case 集* → [原始值式枚举 case](./06_Declarations.md#raw_value_style_enum_case) | [原始值式枚举 case](./06_Declarations.md#raw_value_style_enum_case) **,** [原始值式枚举 case 集](./06_Declarations.md#raw_value_style_enum_case_list) +> +> *原始值式枚举 case* → [枚举的 case 名](./06_Declarations.md#enum_case_name) [原始值赋值](./06_Declarations.md#raw_value_assignment) 可选 +> +> *原始值赋值* → **=** [原始值字面量](./02_Lexical_Structure.md#literal) +> +> *原始值字面量(raw-value-literal)* → [数值字面量](./02_Lexical_Structure.md#literal) | [静态字符串字面量](./02_Lexical_Structure.md#literal) | [布尔字面量](./02_Lexical_Structure.md#literal) +> + + + +> 结构体声明语法 +> +> *结构体声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 **struct** [结构体名称](./06_Declarations.md#struct_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [类型继承子句](./03_Types.md#type_inheritance_clause) 可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [结构体主体](./06_Declarations.md#struct_body) +> +> *结构体名称* → [标识符](./02_Lexical_Structure.md#identifier) +> +> *结构体主体* → **{** [结构体成员集](./06_Declarations.md#declarations) 可选 **}** +> +> *结构体成员集* → [结构体成员](./06_Declarations.md#declarations) [结构体成员集](./06_Declarations.md#declarations) 可选 +> +> *结构体成员* → [声明集](./06_Declarations.md#declarations) | [编译控制语句](./05_Statements.md#compiler-control-statement) +> + + + +> 类声明语法 +> +> *类声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 **final** 可选 **class** [类名](./06_Declarations.md#class_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [类型继承子句](./03_Types.md#type_inheritance_clause) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [类主体](./06_Declarations.md#class_body) +> +> *类声明* → [属性集](./07_Attributes.md#attributes) 可选 **final** [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 **class** [类名](./06_Declarations.md#class_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [类型继承子句](./03_Types.md#type_inheritance_clause) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [类主体](./06_Declarations.md#class_body) +> +> *类名* → [标识符](./02_Lexical_Structure.md#identifier) +> +> *类主体* → **{** [类成员集](./06_Declarations.md#declarations) 可选 **}** +> +> *类成员集* → [类成员](./06_Declarations.md#declarations) [类成员集](./06_Declarations.md#declarations) 可选 +> +> *类成员* → [声明集](./06_Declarations.md#declarations) | [编译控制语句](./05_Statements.md#compiler-control-statement) +> + + + +> 协议声明语法 +> +> *协议声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 **protocol** [协议名](./06_Declarations.md#protocol_name) [类型继承子句](./03_Types.md#type_inheritance_clause) 可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [协议主体](./06_Declarations.md#protocol_body) +> +> *协议名* → [标识符](./02_Lexical_Structure.md#identifier) +> +> *协议主体* → **{** [协议成员集](./06_Declarations.md#protocol_member_declarations) 可选 **}** +> +> *协议成员集* → [协议成员](./06_Declarations.md#declarations) [协议成员集](./06_Declarations.md#declarations) 可选 +> +> *协议成员* → [协议成员声明](./06_Declarations.md#declarations) | [编译控制语句](./05_Statements.md#compiler-control-statement) +> +> *协议成员声明* → [协议属性声明](./06_Declarations.md#protocol_property_declaration) +> +> *协议成员声明* → [协议方法声明](./06_Declarations.md#protocol_method_declaration) +> +> *协议成员声明* → [协议构造器声明](./06_Declarations.md#protocol_initializer_declaration) +> +> *协议成员声明* → [协议下标声明](./06_Declarations.md#protocol_subscript_declaration) +> +> *协议成员声明* → [协议关联类型声明](./06_Declarations.md#protocol_associated_type_declaration) +> +> *协议成员声明* → [类型别名声明](./06_Declarations.md#typealias_declaration) +> + + + +> 协议属性声明语法 +> +> *协议属性声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [getter-setter 关键字块](./06_Declarations.md#getter_setter_keyword_block) +> + + + +> 协议方法声明语法 +> +> *协议方法声明* → [函数头](./06_Declarations.md#function_head) [函数名](./06_Declarations.md#function_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [函数签名](./06_Declarations.md#function_signature) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 +> + + + +> 协议构造器声明语法 +> +> *协议构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [参数子句](./06_Declarations.md#parameter_clause) **throws** 可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 +> +> *协议构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [参数子句](./06_Declarations.md#parameter_clause) **rethrows** [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 +> + + + +> 协议下标声明语法 +> +> *协议下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [getter-setter 关键字块](./06_Declarations.md#getter_setter_keyword_block) +> + + + +> 协议关联类型声明语法 +> +> *协议关联类型声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 **associatedtype** [类型别名](./06_Declarations.md#typealias_name) [类型继承子句](./03_Types.md#type_inheritance_clause) 可选 [类型别名赋值](./06_Declarations.md#typealias_assignment) 可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 +> + + + +> 构造器声明语法 +> +> *构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [参数子句](./06_Declarations.md#parameter_clause) **throws** 可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [构造器主体](./06_Declarations.md#initializer_body) +> +> *构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [参数子句](./06_Declarations.md#parameter_clause) **rethrows** [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [构造器主体](./06_Declarations.md#initializer_body) +> +> *构造器头(Head)* → [属性集](./07_Attributes.md#attributes) 可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers) 可选 **init** +> +> *构造器头(Head)* → [属性集](./07_Attributes.md#attributes) 可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers) 可选 **init ?** +> +> *构造器头(Head)* → [属性集](./07_Attributes.md#attributes) 可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers) 可选 **init !** +> +> *构造器主体* → [代码块](./06_Declarations.md#code_block) +> + + + +> 析构器声明语法 +> +> *析构器声明* → [属性集](./07_Attributes.md#attributes) 可选 **deinit** [代码块](./06_Declarations.md#code_block) +> + + + +> 扩展声明语法 +> +> *扩展声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 **extension** [类型标识](./03_Types.md#type_identifier) [类型继承子句](./03_Types.md#type_inheritance_clause) 可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [扩展主体](./06_Declarations.md#extension_body) +> +> *扩展主体* → **{** [扩展成员集](./06_Declarations.md#declarations) 可选 **}** +> +> *扩展成员集* → [扩展成员](./06_Declarations.md#declarations) [扩展成员集](./06_Declarations.md#declarations) 可选 +> +> *扩展成员* → [声明集](./06_Declarations.md#declarations) | [编译控制语句](./05_Statements.md#compiler-control-statement) +> + + + +> 下标声明语法 +> +> *下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [代码块](./06_Declarations.md#code_block) +> +> *下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [getter-setter 块](./06_Declarations.md#getter_setter_block) +> +> *下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [getter-setter 关键字块](./06_Declarations.md#getter_setter_keyword_block) +> +> *下标头(Head)* → [属性集](./07_Attributes.md#attributes) 可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers) 可选 **subscript** [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [参数子句](./06_Declarations.md#parameter_clause) +> +> *下标结果(Result)* → **->** [属性集](./07_Attributes.md#attributes) 可选 [类型](./03_Types.md#type) +> + + + +> 运算符声明语法 +> +> *运算符声明* → [前置运算符声明](./06_Declarations.md#prefix_operator_declaration) | [后置运算符声明](./06_Declarations.md#postfix_operator_declaration) | [中置运算符声明](./06_Declarations.md#infix_operator_declaration) +> +> *前置运算符声明* → **prefix** **operator** [运算符](./02_Lexical_Structure.md#operator) +> +> *后置运算符声明* → **postfix** **operator** [运算符](./02_Lexical_Structure.md#operator) +> +> *中置运算符声明* → **infix** **operator** [运算符](./02_Lexical_Structure.md#operator) [中置运算符属性集](./06_Declarations.md#infix_operator_attributes) 可选 +> +> *中置运算符属性集* → [优先级组名](./06_Declarations.md#precedence_group_name) +> + +> 优先级组声明语法 +> +> *优先级组声明* → **precedencegroup** [优先级组名](./06_Declarations.md#precedence_group_name) **{** [优先级组属性集](./06_Declarations.md#precedence_group_attributes) 可选 **}** +> +> *优先级组属性集* → [优先级组属性](./06_Declarations.md#declarations) [优先级组属性集](./06_Declarations.md#declarations) 可选 +> +> *优先级组属性* → [优先级组关系](./06_Declarations.md#declarations) +> +> *优先级组属性* → [优先级组赋值](./06_Declarations.md#declarations) +> +> *优先级组属性* → [优先级组结合](./06_Declarations.md#declarations) +> +> *优先级组关系* → **higherThan :** [优先级组名集](./06_Declarations.md#declarations) +> +> *优先级组关系* → **lowerThan :** [优先级组名集](./06_Declarations.md#declarations) +> +> *优先级组赋值* → **assignment :** [布尔字面量](./02_Lexical_Structure.md#string_literal) +> +> *优先级组结合* → **associativity : left** +> +> *优先级组结合* → **associativity : right** +> +> *优先级组结合* → **associativity : none** +> +> *优先级组名集* → [优先级组名](./06_Declarations.md#declarations) | [优先级组名](./06_Declarations.md#declarations) **,** [优先级组名集](./06_Declarations.md#declarations) +> +> *优先级组名* → [标识符](./02_Lexical_Structure.md#identifier) +> + + +> 声明修饰符语法 +> +> *声明修饰符* → **class** | **convenience** | **dynamic** | **final** | **infix** | **lazy** | **optional** | **override** | **postfix** | **prefix** | **required** | **static** | **unowned** | **unowned(safe)** | **unowned(unsafe)** | **weak** +> +> *声明修饰符* → [访问级别修饰符](./07_Attributes.md#access-level-modifier) +> +> *声明修饰符* → [可变性修饰符](./07_Attributes.md#mutation-modifier) +> +> *声明修饰符集* → [声明修饰符](./06_Declarations.md#declaration_modifier) [声明修饰符集](./06_Declarations.md#declaration_modifiers) 可选 +> +> *访问级别修饰符* → **private** | **private(set)** +> +> *访问级别修饰符* → **fileprivate** | **fileprivate(set)** +> +> *访问级别修饰符* → **internal** | **internal(set)** +> +> *访问级别修饰符* → **public** | **public(set)** +> +> *访问级别修饰符* → **open** | **open(set)** +> +> *可变性修饰符* → **mutating** | **nonmutating** +> + +## 属性 {#attributes} + +> 属性语法 +> +> *属性* → **@** [属性名](./07_Attributes.md#attribute_name) [属性参数子句](./07_Attributes.md#attribute_argument_clause) 可选 +> +> *属性名* → [标识符](./02_Lexical_Structure.md#identifier) +> +> *属性参数子句* → **{** [平衡令牌集](./07_Attributes.md#balanced_tokens) 可选 **}** +> +> *属性(Attributes)集* → [属性](./07_Attributes.md#attribute) [属性集](./07_Attributes.md#attributes) 可选 +> +> *平衡令牌集* → [平衡令牌](./07_Attributes.md#balanced_token) [平衡令牌集](./07_Attributes.md#balanced_tokens) 可选 +> +> *平衡令牌* → **(** [平衡令牌集](./07_Attributes.md#balanced_tokens) 可选 **)** +> +> *平衡令牌* → **[** [平衡令牌集](./07_Attributes.md#balanced_tokens) 可选 **]** +> +> *平衡令牌* → **{** [平衡令牌集](./07_Attributes.md#balanced_tokens) 可选 **}** +> +> *平衡令牌* → 任意标识符、关键字、字面量或运算符 +> +> *平衡令牌* → 除 **(** 、**)**、**[**、**]**、**{**、**}** 外的任意标点符号 +> +> + +## 模式 {#patterns} + +> 模式语法 +> +> *模式* → [通配符模式](./08_Patterns.md#wildcard_pattern) [类型注解](./03_Types.md#type_annotation) 可选 +> +> *模式* → [标识符模式](./08_Patterns.md#identifier_pattern) [类型注解](./03_Types.md#type_annotati Value Bindingon ) 可选 +> +> *模式* → [值绑定模式](./08_Patterns.md#value_binding_pattern) +> +> *模式* → [元组模式](./08_Patterns.md#tuple_pattern) [类型注解](./03_Types.md#type_annotation) 可选 +> +> *模式* → [枚举 case 模式](./08_Patterns.md#enum_case_pattern) +> +> *模式* → [可选模式](./08_Patterns.md#optional_pattern) +> +> *模式* → [类型转换模式](./08_Patterns.md#type_casting_pattern) +> +> *模式* → [表达式模式](./08_Patterns.md#expression_pattern) +> + + + +> 通配符模式语法 +> +> *通配符模式* → **_** +> + + + +> 标识符模式语法 +> +> *标识符模式* → [标识符](./02_Lexical_Structure.md#identifier) +> + + + +> 值绑定模式语法 +> +> *值绑定模式* → **var** [模式](./08_Patterns.md#pattern) | **let** [模式](./08_Patterns.md#pattern) +> + + + +> 元组模式语法 +> +> *元组模式* → **(** [元组模式元素集](./08_Patterns.md#tuple_pattern_element_list) 可选 **)** +> +> *元组模式元素集* → [元组模式元素](./08_Patterns.md#tuple_pattern_element) | [元组模式元素](./08_Patterns.md#tuple_pattern_element) **,** [元组模式元素集](./08_Patterns.md#tuple_pattern_element_list) +> +> *元组模式元素* → [模式](./08_Patterns.md#pattern) | [标识符](./02_Lexical_Structure.md#identifier) **:** [模式](./08_Patterns.md#pattern) +> + + + +> 枚举 case 模式语法 +> +> *enum-case-pattern* → [类型标识](./03_Types.md#type_identifier) 可选 **.** [枚举 case 名](./06_Declarations.md#enum_case_name) [元组模式](./08_Patterns.md#tuple_pattern) 可选 +> + + +> 可选模式语法 +> +> *可选模式* → [标识符模式](./02_Lexical_Structure.md#identifier) **?** +> + + + +> 类型转换模式语法 +> +> *类型转换模式* → [is 模式](./08_Patterns.md#is_pattern) | [as 模式](./08_Patterns.md#as_pattern) +> +> *is 模式* → **is** [类型](./03_Types.md#type) +> +> *as 模式* → [模式](./08_Patterns.md#pattern) **as** [类型](./03_Types.md#type) +> + + + +> 表达式模式语法 +> +> *表达式模式* → [表达式](./04_Expressions.md#expression) +> + +## 泛型参数 {#generic_parameters_and_arguments} + +> 泛型形参子句语法 +> +> +> *泛型参数子句* → **<** [泛型参数集](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list) **>** +> +> *泛型参数集* → [泛型参数](./09_Generic_Parameters_and_Arguments.md#generic_parameter) | [泛形参数](./09_Generic_Parameters_and_Arguments.md#generic_parameter) **,** [泛型参数集](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list) +> +> *泛形参数* → [类型名称](./03_Types.md#type_name) +> +> *泛形参数* → [类型名称](./03_Types.md#type_name) **:** [类型标识](./03_Types.md#type_identifier) +> +> *泛形参数* → [类型名称](./03_Types.md#type_name) **:** [协议合成类型](./03_Types.md#protocol_composition_type) +> +> *泛型 where 子句* → **where** [约束集](./09_Generic_Parameters_and_Arguments.md#requirement_list) +> +> *约束集* → [约束](./09_Generic_Parameters_and_Arguments.md#requirement) | [约束](./09_Generic_Parameters_and_Arguments.md#requirement) **,** [约束集](./09_Generic_Parameters_and_Arguments.md#requirement_list) +> +> *约束* → [一致性约束](./09_Generic_Parameters_and_Arguments.md#conformance_requirement) | [同类型约束](./09_Generic_Parameters_and_Arguments.md#same_type_requirement) +> +> *一致性约束* → [类型标识](./03_Types.md#type_identifier) **:** [类型标识](./03_Types.md#type_identifier) +> +> *一致性约束* → [类型标识](./03_Types.md#type_identifier) **:** [协议合成类型](./03_Types.md#protocol_composition_type) +> +> *同类型约束* → [类型标识](./03_Types.md#type_identifier) **==** [类型](./03_Types.md#type_identifier) +> diff --git a/source/chapter3/10_Summary_of_the_Grammar.md b/source/chapter3/10_Summary_of_the_Grammar.md index 279ca9c8..19d9db9a 100755 --- a/source/chapter3/10_Summary_of_the_Grammar.md +++ b/source/chapter3/10_Summary_of_the_Grammar.md @@ -59,17 +59,17 @@ > While 循环语法 -> -> *while 语句* → **while** [*条件从句*](./05_Statements.md#while_condition) [*代码块*](./06_Declarations.md#code_block) -> -> *条件从句* → [*表达式*](TODO) -> -> *条件从句* → [*表达式*](TODO) *,* [*表达式集*]() -> -> *条件从句* → [*表达式集*](TODO) -> -> *条件从句* → [*可用条件(availability-condition*)](TODO) *|* [*表达式集*]() -> +> +> *while 语句* → **while** [*条件子句*](./05_Statements.md#while_condition) [*代码块*](./06_Declarations.md#code_block) +> +> *条件子句* → [*表达式*](TODO) +> +> *条件子句* → [*表达式*](TODO) *,* [*表达式集*]() +> +> *条件子句* → [*表达式集*](TODO) +> +> *条件子句* → [*可用条件(availability-condition*)](TODO) *|* [*表达式集*]() +> > *条件集* → [*条件*](TODO) *|* [*条件*](TODO) *,* [*条件集*]() > > *条件* → [*可用条件(availability-condition)*](TODO) *|* [*个例条件(case-condition)*](TODO) *|* [*可选绑定条件(optional-binding-condition)*](TODO) @@ -104,17 +104,17 @@ > If 语句语法 -> -> *if 语句* → **if** [*条件从句*](TODO) [*代码块*](TODO) [*else 从句(Clause)*](TODO) _可选_ -> -> *else 从句(Clause)* → **else** [*代码块*](./06_Declarations.md#code_block) | **else** [*if 语句*](./05_Statements.md#if_statement) -> +> +> *if 语句* → **if** [*条件子句*](TODO) [*代码块*](TODO) [*else 子句(Clause)*](TODO) _可选_ +> +> *else 子句(Clause)* → **else** [*代码块*](./06_Declarations.md#code_block) | **else** [*if 语句*](./05_Statements.md#if_statement) +> > Guard 语句语法 -> -> *guard 语句* → **guard** [*条件从句*](TODO) **else** [*代码块*](TODO) -> +> +> *guard 语句* → **guard** [*条件子句*](TODO) **else** [*代码块*](TODO) +> @@ -134,9 +134,9 @@ > *case 项集* → [*模式*](./08_Patterns.md#pattern) [*where-clause*](./05_Statements.md#guard_clause) _可选_ | [*模式*](./08_Patterns.md#pattern) [*where-clause*](./05_Statements.md#guard_clause) _可选_ **,** [*case 项集*](./05_Statements.md#case_item_list) > > *default 标签* → **default** **:** -> -> *where 从句* → **where** [*where 表达式*](TODO) -> +> +> *where 子句* → **where** [*where 表达式*](TODO) +> > *where 表达式* → [*表达式*](TODO) > @@ -244,11 +244,11 @@ ## 泛型参数 {#generic_parameters_and_arguments} -> 泛型形参从句(Generic Parameter Clause)语法 -> +> 泛型形参子句(Generic Parameter Clause)语法 +> +> +> *泛型参数子句* → **<** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list) [*约束子句*](./09_Generic_Parameters_and_Arguments.md#requirement_clause) _可选_ **>** > -> *泛型参数从句* → **<** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list) [*约束从句*](./09_Generic_Parameters_and_Arguments.md#requirement_clause) _可选_ **>** -> > *泛型参数集* → [*泛形参数*](./09_Generic_Parameters_and_Arguments.md#generic_parameter) | [*泛形参数*](./09_Generic_Parameters_and_Arguments.md#generic_parameter) **,** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list) > > *泛形参数* → [*类型名称*](./03_Types.md#type_name) @@ -256,9 +256,9 @@ > *泛形参数* → [*类型名称*](./03_Types.md#type_name) **:** [*类型标识*](./03_Types.md#type_identifier) > > *泛形参数* → [*类型名称*](./03_Types.md#type_name) **:** [*协议合成类型*](./03_Types.md#protocol_composition_type) -> -> *约束从句* → **where** [*约束集*](./09_Generic_Parameters_and_Arguments.md#requirement_list) -> +> +> *约束子句* → **where** [*约束集*](./09_Generic_Parameters_and_Arguments.md#requirement_list) +> > *约束集* → [*约束*](./09_Generic_Parameters_and_Arguments.md#requirement) | [*约束*](./09_Generic_Parameters_and_Arguments.md#requirement) **,** [*约束集*](./09_Generic_Parameters_and_Arguments.md#requirement_list) > > *约束* → [*一致性约束*](./09_Generic_Parameters_and_Arguments.md#conformance_requirement) | [*同类型约束*](./09_Generic_Parameters_and_Arguments.md#same_type_requirement) @@ -272,10 +272,10 @@ -> 泛型实参从句语法 -> -> *(泛型参数从句 Generic Argument Clause)* → **<** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_argument_list) **>** -> +> 泛型实参子句语法 +> +> *(泛型参数子句 Generic Argument Clause)* → **<** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_argument_list) **>** +> > *泛型参数集* → [*泛型参数*](./09_Generic_Parameters_and_Arguments.md#generic_argument) | [*泛型参数*](./09_Generic_Parameters_and_Arguments.md#generic_argument) **,** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_argument_list) > > *泛型参数* → [*类型*](./03_Types.md#type) @@ -313,6 +313,8 @@ > > *声明* → [*运算符声明*](./06_Declarations.md#operator_declaration) > +> *声明* → [*优先级组声明*](./06_Declarations.md#precedence_group_declaration) +> > *声明(Declarations)集* → [*声明*](./06_Declarations.md#declaration) [*声明(Declarations)集*](./06_Declarations.md#declarations) _可选_ > @@ -336,9 +338,9 @@ > 导入(Import)声明语法 > > *导入声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **import** [*导入类型*](./06_Declarations.md#import_kind) _可选_ [*导入路径*](./06_Declarations.md#import_path) -> -> *导入类型* → **typealias** | **struct** | **class** | **enum** | **protocol** | **var** | **func** -> +> +> *导入类型* → **typealias** | **struct** | **class** | **enum** | **protocol** | **let** | **var** | **func** +> > *导入路径* → [*导入路径标识符*](./06_Declarations.md#import_path_identifier) | [*导入路径标识符*](./06_Declarations.md#import_path_identifier) **.** [*导入路径*](./06_Declarations.md#import_path) > > *导入路径标识符* → [*标识符*](./02_Lexical_Structure.md#identifier) | [*运算符*](./02_Lexical_Structure.md#operator) @@ -347,9 +349,9 @@ > 常数声明语法 -> -> *常量声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修改符(Modifiers)集*](./06_Declarations.md#declaration_specifiers) _可选_ **let** [*模式构造器集*](./06_Declarations.md#pattern_initializer_list) -> +> +> *常量声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修饰符(Modifiers)集*](./06_Declarations.md#declaration_specifiers) _可选_ **let** [*模式构造器集*](./06_Declarations.md#pattern_initializer_list) +> > *模式构造器集* → [*模式构造器*](./06_Declarations.md#pattern_initializer) | [*模式构造器*](./06_Declarations.md#pattern_initializer) **,** [*模式构造器集*](./06_Declarations.md#pattern_initializer_list) > > *模式构造器* → [*模式*](./08_Patterns.md#pattern) [*构造器*](./06_Declarations.md#initializer) _可选_ @@ -369,48 +371,50 @@ > > *变量声明* → [*变量声明头(Head)*](./06_Declarations.md#variable_declaration_head) [*变量名*](./06_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*getter-setter 关键字(Keyword)块*](./06_Declarations.md#getter_setter_keyword_block) > +> *变量声明* → [*变量声明头(Head)*](./06_Declarations.md#variable_declaration_head) [*变量名*](./06_Declarations.md#variable_name) [*构造器*](./06_Declarations.md#initializer) _可选_ [*willSet-didSet 代码块*](./06_Declarations.md#willSet_didSet_block) +> > *变量声明* → [*变量声明头(Head)*](./06_Declarations.md#variable_declaration_head) [*变量名*](./06_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*构造器*](./06_Declarations.md#initializer) _可选_ [*willSet-didSet 代码块*](./06_Declarations.md#willSet_didSet_block) -> -> *变量声明头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修改符(Modifers)集*](./06_Declarations.md#declaration_specifiers) _可选_ **var** -> +> +> *变量声明头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修饰符(Modifers)集*](./06_Declarations.md#declaration_specifiers) _可选_ **var** +> > *变量名称* → [*标识符*](./02_Lexical_Structure.md#identifier) -> -> *getter-setter 块* → **{** [*getter 从句*](./06_Declarations.md#getter_clause) [*setter 从句*](./06_Declarations.md#setter_clause) _可选_ **}** -> -> *getter-setter 块* → **{** [*setter 从句*](./06_Declarations.md#setter_clause) [*getter 从句*](./06_Declarations.md#getter_clause) **}** -> -> *getter 从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **get** [*代码块*](./06_Declarations.md#code_block) -> -> *setter 从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **set** [*setter 名称*](./06_Declarations.md#setter_name) _可选_ [*代码块*](./06_Declarations.md#code_block) -> +> +> *getter-setter 块* → [*代码块*](./06_Declarations.md#code_block) +> +> *getter-setter 块* → **{** [*getter 子句*](./06_Declarations.md#getter_clause) [*setter 子句*](./06_Declarations.md#setter_clause) _可选_ **}** +> +> *getter-setter 块* → **{** [*setter 子句*](./06_Declarations.md#setter_clause) [*getter 子句*](./06_Declarations.md#getter_clause) **}** +> +> *getter 子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*可变性修饰符(mutation-modifier)*](./06_Declarations.md#mutation-modifier) _可选_ **get** [*代码块*](./06_Declarations.md#code_block) +> +> *setter 子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*可变性修饰符(mutation-modifier)*](./06_Declarations.md#mutation-modifier) _可选_ **set** [*setter 名称*](./06_Declarations.md#setter_name) _可选_ [*代码块*](./06_Declarations.md#code_block) +> > *setter 名称* → **(** [*标识符*](./02_Lexical_Structure.md#identifier) **)** -> -> *getter-setter 关键字(Keyword)块* → **{** [*getter 关键字(Keyword)从句*](./06_Declarations.md#getter_keyword_clause) [*setter 关键字(Keyword)从句*](./06_Declarations.md#setter_keyword_clause) _可选_ **}** -> -> *getter-setter 关键字(Keyword)块* → **{** [*setter 关键字(Keyword)从句*](./06_Declarations.md#setter_keyword_clause) [*getter 关键字(Keyword)从句*](./06_Declarations.md#getter_keyword_clause) **}** -> -> *getter 关键字(Keyword)从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **get** -> -> *setter 关键字(Keyword)从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **set** -> -> *willSet-didSet 代码块* → **{** [*willSet 从句*](./06_Declarations.md#willSet_clause) [*didSet 从句*](./06_Declarations.md#didSet_clause) _可选_ **}** -> -> *willSet-didSet 代码块* → **{** [*didSet 从句*](./06_Declarations.md#didSet_clause) [*willSet 从句*](./06_Declarations.md#willSet_clause) **}** -> -> *willSet 从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **willSet** [*setter 名称*](./06_Declarations.md#setter_name) _可选_ [*代码块*](./06_Declarations.md#code_block) -> -> *didSet 从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ -> +> +> *getter-setter 关键字(Keyword)块* → **{** [*getter 关键字(Keyword)子句*](./06_Declarations.md#getter_keyword_clause) [*setter 关键字(Keyword)子句*](./06_Declarations.md#setter_keyword_clause) _可选_ **}** +> +> *getter-setter 关键字(Keyword)块* → **{** [*setter 关键字(Keyword)子句*](./06_Declarations.md#setter_keyword_clause) [*getter 关键字(Keyword)子句*](./06_Declarations.md#getter_keyword_clause) **}** +> +> *getter 关键字(Keyword)子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*可变性修饰符(mutation-modifier)*](./06_Declarations.md#mutation-modifier) _可选_ **get** +> +> *setter 关键字(Keyword)子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*可变性修饰符(mutation-modifier)*](./06_Declarations.md#mutation-modifier) _可选_ **set** +> +> *willSet-didSet 代码块* → **{** [*willSet 子句*](./06_Declarations.md#willSet_clause) [*didSet 子句*](./06_Declarations.md#didSet_clause) _可选_ **}** +> +> *willSet-didSet 代码块* → **{** [*didSet 子句*](./06_Declarations.md#didSet_clause) [*willSet 子句*](./06_Declarations.md#willSet_clause) _可选_ **}** +> +> *willSet 子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **willSet** [*setter 名称*](./06_Declarations.md#setter_name) _可选_ [*代码块*](./06_Declarations.md#code_block) +> +> *didSet 子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ +> **didSet** [*setter 名称*](./06_Declarations.md#setter_name) _可选_ [*代码块*](./06_Declarations.md#code_block) > 类型别名声明语法 -> -> *类型别名声明* → [*类型别名头(Head)*](./06_Declarations.md#typealias_head) [*类型别名赋值*](./06_Declarations.md#typealias_assignment) -> -> *类型别名头(Head)* → [*属性*](TODO) _可选_ [*访问级别修改符(access-level-modifier)*](TODO) **typealias** [*类型别名名称*](./06_Declarations.md#typealias_name) -> +> +> *类型别名声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) **typealias** [*类型别名名称*](./06_Declarations.md#typealias_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型别名赋值*](./06_Declarations.md#typealias_assignment) +> > *类型别名名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > > *类型别名赋值* → **=** [*类型*](./03_Types.md#type) @@ -419,114 +423,126 @@ > 函数声明语法 -> -> *函数声明* → [*函数头*](./06_Declarations.md#function_head) [*函数名*](./06_Declarations.md#function_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*函数签名(Signature)*](./06_Declarations.md#function_signature) [*函数体*](./06_Declarations.md#function_body) -> +> +> *函数声明* → [*函数头*](./06_Declarations.md#function_head) [*函数名*](./06_Declarations.md#function_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*函数签名(Signature)*](./06_Declarations.md#function_signature) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*函数体*](./06_Declarations.md#function_body) _可选_ +> > *函数头* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明描述符(Specifiers)集*](./06_Declarations.md#declaration_specifiers) _可选_ **func** > > *函数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | [*运算符*](./02_Lexical_Structure.md#operator) -> -> *函数签名(Signature)* → [*parameter-clauses*](./06_Declarations.md#parameter_clauses) **throws** _可选_ [*函数结果*](./06_Declarations.md#function_result) _可选_ -> +> +> *函数签名(Signature)* → [*参数子句*](./06_Declarations.md#parameter_clause) **throws** _可选_ [*函数结果*](./06_Declarations.md#function_result) _可选_ +> -> *函数签名(Signature)* → [*parameter-clauses*](./06_Declarations.md#parameter_clauses) **rethrows** [*函数结果*](./06_Declarations.md#function_result) _可选_ -> +> *函数签名(Signature)* → [*参数子句*](./06_Declarations.md#parameter_clause) **rethrows** [*函数结果*](./06_Declarations.md#function_result) _可选_ +> > *函数结果* → **->** [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*类型*](./03_Types.md#type) > > *函数体* → [*代码块*](./06_Declarations.md#code_block) -> -> *参数从句* → [*参数从句*](./06_Declarations.md#parameter_clause) [*parameter-clauses*](./06_Declarations.md#parameter_clauses) _可选_ -> -> *参数从句* → **(** **)** | **(** [*参数集*](./06_Declarations.md#parameter_list) **...** _可选_ **)** -> +> +> *参数子句* → **(** **)** | **(** [*参数集*](./06_Declarations.md#parameter_list) **)** +> > *参数集* → [*参数*](./06_Declarations.md#parameter) | [*参数*](./06_Declarations.md#parameter) **,** [*参数集*](./06_Declarations.md#parameter_list) -> -> *参数* → **inout** _可选_ **let** _可选_ [*外部参数名*](./06_Declarations.md#parameter_name) _可选_ [*本地参数名*](./06_Declarations.md#local_parameter_name) _可选_ [*类型注解*](./03_Types.md#type_annotation) [*默认参数从句*](./06_Declarations.md#default_argument_clause) _可选_ -> -> *参数* → **inout** _可选_ **var** [*外部参数名*](./06_Declarations.md#parameter_name) [*本地参数名*](./06_Declarations.md#local_parameter_name) _可选_ [*类型注解*](./03_Types.md#type_annotation) [*默认参数从句*](./06_Declarations.md#default_argument_clause) _可选_ -> -> *参数* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*类型*](./03_Types.md#type) -> -> *外部参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | **_** -> -> *本地参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | **_** -> -> *默认参数从句* → **=** [*表达式*](./04_Expressions.md#expression) -> +> +> *参数* → [*外部参数名*](./06_Declarations.md#parameter_name) _可选_ [*本地参数名*](./06_Declarations.md#local_parameter_name) [*类型注解*](./03_Types.md#type_annotation) [*默认参数子句*](./06_Declarations.md#default_argument_clause) _可选_ +> +> *参数* → [*外部参数名*](./06_Declarations.md#parameter_name) _可选_ [*本地参数名*](./06_Declarations.md#local_parameter_name) [*类型注解*](./03_Types.md#type_annotation) +> +> *参数* → [*外部参数名*](./06_Declarations.md#parameter_name) _可选_ [*本地参数名*](./06_Declarations.md#local_parameter_name) [*类型注解*](./03_Types.md#type_annotation) **...** +> +> *外部参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) +> +> *本地参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) +> +> *默认参数子句* → **=** [*表达式*](./04_Expressions.md#expression) +> > 枚举声明语法 -> -> *枚举声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](TODO) _可选_ [*联合式枚举*](./06_Declarations.md#union_style_enum) -> -> *枚举声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](TODO) _可选_ [*原始值式枚举(raw-value-style-enum)*](TODO) -> -> *联合式枚举* → **enum** [*枚举名*](./06_Declarations.md#enum_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承从句(type-inheritance-clause)*](TODO) _可选_ **{** [*联合样式枚举成员*](./06_Declarations.md#union_style_enum_members) _可选_ **}** -> -> *联合样式枚举成员* → [*union-style-enum-member*](./06_Declarations.md#union_style_enum_member) [*联合样式枚举成员*](./06_Declarations.md#union_style_enum_members) _可选_ -> -> *联合样式枚举成员* → [*声明*](./06_Declarations.md#declaration) | [*联合式(Union Style)的枚举 case 从句*](./06_Declarations.md#union_style_enum_case_clause) -> -> *联合式(Union Style)的枚举 case 从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **case** [*联合式(Union Style)的枚举 case 集*](./06_Declarations.md#union_style_enum_case_list) -> -> *联合式(Union Style)的枚举 case 集* → [*联合式(Union Style)的 case*](./06_Declarations.md#union_style_enum_case) | [*联合式(Union Style)的 case*](./06_Declarations.md#union_style_enum_case) **,** [*联合式(Union Style)的枚举 case 集*](./06_Declarations.md#union_style_enum_case_list) -> -> *联合式(Union Style)的枚举 case* → [*枚举的 case 名*](./06_Declarations.md#enum_case_name) [*元组类型*](./03_Types.md#tuple_type) _可选_ -> +> +> *枚举声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ [*联合式枚举*(union_style_enum)](./06_Declarations.md#union_style_enum) +> +> *枚举声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ [*原始值式枚举(raw-value-style-enum)*](./06_Declarations.md#raw-value-style-enum) +> +> *联合式枚举* → **indirect** _可选_ **enum** [*枚举名*](./06_Declarations.md#enum_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承子句(type-inheritance-clause)*](./03_Types.md#type-inheritance-clause) _可选_ [*泛型 where 子句(generic-where-clause)*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ **{** [*联合样式枚举成员*](./06_Declarations.md#union_style_enum_members) _可选_ **}** +> +> *联合式枚举成员集* → [*联合式枚举成员*](./06_Declarations.md#union_style_enum_member) [*联合样式枚举成员集*](./06_Declarations.md#union_style_enum_members) _可选_ +> +> *联合样式枚举成员* → [*声明*](./06_Declarations.md#declaration) | [*联合式(Union Style)枚举 case 子句*](./06_Declarations.md#union_style_enum_case_clause) | [*编译控制语句*](./05_Statements.md#compiler-control-statement) +> +> *联合式(Union Style)枚举 case 子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **indirect** _可选_ **case** [*联合式(Union Style)枚举 case 集*](./06_Declarations.md#union_style_enum_case_list) +> +> *联合式(Union Style)枚举 case 集* → [*联合式(Union Style)枚举 case*](./06_Declarations.md#union_style_enum_case) | [*联合式(Union Style)枚举 case*](./06_Declarations.md#union_style_enum_case) **,** [*联合式(Union Style)枚举 case 集*](./06_Declarations.md#union_style_enum_case_list) +> +> *联合式(Union Style)枚举 case* → [*枚举的 case 名*](./06_Declarations.md#enum_case_name) [*元组类型*](./03_Types.md#tuple_type) _可选_ +> > *枚举名* → [*标识符*](./02_Lexical_Structure.md#identifier) > > *枚举的 case 名* → [*标识符*](./02_Lexical_Structure.md#identifier) -> -> *原始值式枚举* → **enum** [*枚举名*](./06_Declarations.md#enum_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ **:** [*类型标识*](./03_Types.md#type_identifier) **{** [*原始值式枚举成员集*](./06_Declarations.md#raw_value_style_enum_members) _可选_ **}** -> +> +> *原始值式枚举* → **enum** [*枚举名*](./06_Declarations.md#enum_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承子句*](./03_Types.md#type-inheritance-clause) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ **{** [*原始值式枚举成员集*](./06_Declarations.md#raw_value_style_enum_members) **}** +> > *原始值式枚举成员集* → [*原始值式枚举成员*](./06_Declarations.md#raw_value_style_enum_member) [*原始值式枚举成员集*](./06_Declarations.md#raw_value_style_enum_members) _可选_ -> -> *原始值式枚举成员* → [*声明*](./06_Declarations.md#declaration) | [*原始值式枚举 case 从句*](./06_Declarations.md#raw_value_style_enum_case_clause) -> -> *原始值式枚举 case 从句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **case** [*原始值式枚举 case 集*](./06_Declarations.md#raw_value_style_enum_case_list) -> +> +> *原始值式枚举成员* → [*声明*](./06_Declarations.md#declaration) | [*原始值式枚举 case 子句*](./06_Declarations.md#raw_value_style_enum_case_clause) | [*编译控制语句*](./05_Statements.md#compiler-control-statement) +> +> *原始值式枚举 case 子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **case** [*原始值式枚举 case 集*](./06_Declarations.md#raw_value_style_enum_case_list) +> > *原始值式枚举 case 集* → [*原始值式枚举 case*](./06_Declarations.md#raw_value_style_enum_case) | [*原始值式枚举 case*](./06_Declarations.md#raw_value_style_enum_case) **,** [*原始值式枚举 case 集*](./06_Declarations.md#raw_value_style_enum_case_list) > > *原始值式枚举 case* → [*枚举的 case 名*](./06_Declarations.md#enum_case_name) [*原始值赋值*](./06_Declarations.md#raw_value_assignment) _可选_ -> -> *原始值赋值* → **=** [*字面量*](./02_Lexical_Structure.md#literal) -> -> *原始值字面量(raw-value-literal)* → [*数值字面量*](TODO) | [*字符串字面量*](TODO) | [*布尔字面量*](TODO) -> +> +> *原始值赋值* → **=** [*原始值字面量*](./02_Lexical_Structure.md#literal) +> +> *原始值字面量(raw-value-literal)* → [*数值字面量*](./02_Lexical_Structure.md#literal) | [*静态字符串字面量*](./02_Lexical_Structure.md#literal) | [*布尔字面量*](./02_Lexical_Structure.md#literal) +> > 结构体声明语法 -> -> *结构体声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](TODO) _可选_ **struct** [*结构体名称*](./06_Declarations.md#struct_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*结构体主体*](./06_Declarations.md#struct_body) -> +> +> *结构体声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ **struct** [*结构体名称*](./06_Declarations.md#struct_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承子句*](./03_Types.md#type_inheritance_clause) _可选_ [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*结构体主体*](./06_Declarations.md#struct_body) +> > *结构体名称* → [*标识符*](./02_Lexical_Structure.md#identifier) -> -> *结构体主体* → **{** [*声明(Declarations)集*](./06_Declarations.md#declarations) _可选_ **}** -> +> +> *结构体主体* → **{** [*结构体成员集*](./06_Declarations.md#declarations) _可选_ **}** +> +> *结构体成员集* → [*结构体成员*](./06_Declarations.md#declarations) [*结构体成员集*](./06_Declarations.md#declarations) _可选_ +> +> *结构体成员* → [*声明集*](./06_Declarations.md#declarations) | [*编译控制语句*](./05_Statements.md#compiler-control-statement) +> > 类声明语法 -> -> *类声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修改器(access-level-modifier)*](TODO) **class** [*类名*](./06_Declarations.md#class_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*类主体*](./06_Declarations.md#class_body) -> +> +> *类声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ **final** _可选_ **class** [*类名*](./06_Declarations.md#class_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承子句*](./03_Types.md#type_inheritance_clause) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*类主体*](./06_Declarations.md#class_body) +> +> *类声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **final** [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ **class** [*类名*](./06_Declarations.md#class_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承子句*](./03_Types.md#type_inheritance_clause) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*类主体*](./06_Declarations.md#class_body) +> > *类名* → [*标识符*](./02_Lexical_Structure.md#identifier) -> -> *类主体* → **{** [*声明(Declarations)集*](./06_Declarations.md#declarations) _可选_ **}** -> +> +> *类主体* → **{** [*类成员集*](./06_Declarations.md#declarations) _可选_ **}** +> +> *类成员集* → [*类成员*](./06_Declarations.md#declarations) [*类成员集*](./06_Declarations.md#declarations) _可选_ +> +> *类成员* → [*声明集*](./06_Declarations.md#declarations) | [*编译控制语句*](./05_Statements.md#compiler-control-statement) +> > 协议(Protocol)声明语法 -> -> *协议声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_[*访问级别修改器(access-level-modifier)*](TODO) **protocol** [*协议名*](./06_Declarations.md#protocol_name) [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*协议主体*](./06_Declarations.md#protocol_body) -> +> +> *协议声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ **protocol** [*协议名*](./06_Declarations.md#protocol_name) [*类型继承子句*](./03_Types.md#type_inheritance_clause) _可选_ [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*协议主体*](./06_Declarations.md#protocol_body) +> > *协议名* → [*标识符*](./02_Lexical_Structure.md#identifier) -> -> *协议主体* → **{** [*协议成员声明(Declarations)集*](./06_Declarations.md#protocol_member_declarations) _可选_ **}** -> +> +> *协议主体* → **{** [*协议成员集*](./06_Declarations.md#protocol_member_declarations) _可选_ **}** +> +> *协议成员集* → [*协议成员*](./06_Declarations.md#declarations) [*协议成员集*](./06_Declarations.md#declarations) _可选_ +> +> *协议成员* → [*协议成员声明*](./06_Declarations.md#declarations) | [*编译控制语句*](./05_Statements.md#compiler-control-statement) +> > *协议成员声明* → [*协议属性声明*](./06_Declarations.md#protocol_property_declaration) > > *协议成员声明* → [*协议方法声明*](./06_Declarations.md#protocol_method_declaration) @@ -536,9 +552,9 @@ > *协议成员声明* → [*协议下标声明*](./06_Declarations.md#protocol_subscript_declaration) > > *协议成员声明* → [*协议关联类型声明*](./06_Declarations.md#protocol_associated_type_declaration) -> -> *协议成员声明(Declarations)集* → [*协议成员声明*](./06_Declarations.md#protocol_member_declaration) [*协议成员声明(Declarations)集*](./06_Declarations.md#protocol_member_declarations) _可选_ -> +> +> *协议成员声明* → [*类型别名声明*](./06_Declarations.md#typealias_declaration) +> @@ -550,43 +566,47 @@ > 协议方法声明语法 -> -> *协议方法声明* → [*函数头*](./06_Declarations.md#function_head) [*函数名*](./06_Declarations.md#function_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*函数签名(Signature)*](./06_Declarations.md#function_signature) -> +> +> *协议方法声明* → [*函数头*](./06_Declarations.md#function_head) [*函数名*](./06_Declarations.md#function_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*函数签名(Signature)*](./06_Declarations.md#function_signature) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ +> > 协议构造器声明语法 -> -> *协议构造器声明* → [*构造器头(Head)*](./06_Declarations.md#initializer_head) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*参数从句*](./06_Declarations.md#parameter_clause) -> +> +> *协议构造器声明* → [*构造器头(Head)*](./06_Declarations.md#initializer_head) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*参数子句*](./06_Declarations.md#parameter_clause) **throws** _可选_ [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ +> +> *协议构造器声明* → [*构造器头(Head)*](./06_Declarations.md#initializer_head) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*参数子句*](./06_Declarations.md#parameter_clause) **rethrows** [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ +> > 协议下标声明语法 -> -> *协议下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*getter-setter 关键字(Keyword)块*](./06_Declarations.md#getter_setter_keyword_block) -> +> +> *协议下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*getter-setter 关键字(Keyword)块*](./06_Declarations.md#getter_setter_keyword_block) +> > 协议关联类型声明语法 -> -> *协议关联类型声明* → [*类型别名头(Head)*](./06_Declarations.md#typealias_head) [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*类型别名赋值*](./06_Declarations.md#typealias_assignment) _可选_ -> +> +> *协议关联类型声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ **associatedtype** [*类型别名*](./06_Declarations.md#typealias_name) [*类型继承子句*](./03_Types.md#type_inheritance_clause) _可选_ [*类型别名赋值*](./06_Declarations.md#typealias_assignment) _可选_ [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ +> > 构造器声明语法 -> -> *构造器声明* → [*构造器头(Head)*](./06_Declarations.md#initializer_head) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*参数从句*](./06_Declarations.md#parameter_clause) [*构造器主体*](./06_Declarations.md#initializer_body) -> -> *构造器头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修改器集(declaration-modifiers)*](TODO) _可选_ **init** -> -> *构造器头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修改器集(declaration-modifiers)*](TODO) _可选_ **init ?** -> -> *构造器头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修改器集(declaration-modifiers)*](TODO) _可选_ **init !** -> +> +> *构造器声明* → [*构造器头(Head)*](./06_Declarations.md#initializer_head) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*参数子句*](./06_Declarations.md#parameter_clause) **throws** _可选_ [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*构造器主体*](./06_Declarations.md#initializer_body) +> +> *构造器声明* → [*构造器头(Head)*](./06_Declarations.md#initializer_head) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*参数子句*](./06_Declarations.md#parameter_clause) **rethrows** [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*构造器主体*](./06_Declarations.md#initializer_body) +> +> *构造器头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修饰符集(declaration-modifiers)*](./06_Declarations.md#declaration_modifiers) _可选_ **init** +> +> *构造器头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修饰符集(declaration-modifiers)*](./06_Declarations.md#declaration_modifiers) _可选_ **init ?** +> +> *构造器头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修饰符集(declaration-modifiers)*](./06_Declarations.md#declaration_modifiers) _可选_ **init !** +> > *构造器主体* → [*代码块*](./06_Declarations.md#code_block) > @@ -600,24 +620,28 @@ > 扩展(Extension)声明语法 -> -> *扩展声明* → [*访问级别修改器*](TODO) _可选_ **extension** [*类型标识*](./03_Types.md#type_identifier) [*类型继承从句*](./03_Types.md#type_inheritance_clause) _可选_ [*extension-body*](./06_Declarations.md#extension_body) -> -> *extension-body* → **{** [*声明(Declarations)集*](./06_Declarations.md#declarations) _可选_ **}** -> +> +> *扩展声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ **extension** [*类型标识*](./03_Types.md#type_identifier) [*类型继承子句*](./03_Types.md#type_inheritance_clause) _可选_ [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*扩展主体*](./06_Declarations.md#extension_body) +> +> *扩展主体* → **{** [*扩展成员集*](./06_Declarations.md#declarations) _可选_ **}** +> +> *扩展成员集* → [*扩展成员*](./06_Declarations.md#declarations) [*扩展成员集*](./06_Declarations.md#declarations) _可选_ +> +> *扩展成员* → [*声明集*](./06_Declarations.md#declarations) | [*编译控制语句*](./05_Statements.md#compiler-control-statement) +> > 下标声明语法 -> -> *下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*代码块*](./06_Declarations.md#code_block) -> -> *下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*getter-setter 块*](./06_Declarations.md#getter_setter_block) -> -> *下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*getter-setter 关键字(Keyword)块*](./06_Declarations.md#getter_setter_keyword_block) -> -> *下标头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修改器(declaration-modifiers)*](TODO) _可选_ **subscript** [*参数从句*](./06_Declarations.md#parameter_clause) -> +> +> *下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*代码块*](./06_Declarations.md#code_block) +> +> *下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*getter-setter 块*](./06_Declarations.md#getter_setter_block) +> +> *下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*getter-setter 关键字(Keyword)块*](./06_Declarations.md#getter_setter_keyword_block) +> +> *下标头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修饰符集(declaration-modifiers)*](./06_Declarations.md#declaration_modifiers) _可选_ **subscript** [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*参数子句*](./06_Declarations.md#parameter_clause) +> > *下标结果(Result)* → **->** [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*类型*](./03_Types.md#type) > @@ -626,42 +650,94 @@ > 运算符声明语法 > > *运算符声明* → [*前置运算符声明*](./06_Declarations.md#prefix_operator_declaration) | [*后置运算符声明*](./06_Declarations.md#postfix_operator_declaration) | [*中置运算符声明*](./06_Declarations.md#infix_operator_declaration) -> -> *前置运算符声明* → **prefix** **运算符** [*运算符*](./02_Lexical_Structure.md#operator) **{** **}** -> -> *后置运算符声明* → **postfix** **运算符** [*运算符*](./02_Lexical_Structure.md#operator) **{** **}** -> -> *中置运算符声明* → **infix** **运算符** [*运算符*](./02_Lexical_Structure.md#operator) **{** [*中置运算符属性集*](./06_Declarations.md#infix_operator_attributes) _可选_ **}** -> -> *中置运算符属性集* → [*优先级从句*](./06_Declarations.md#precedence_clause) _可选_ [*结和性从句*](./06_Declarations.md#associativity_clause) _可选_ -> -> *优先级从句* → **precedence** [*优先级水平*](./06_Declarations.md#precedence_level) -> -> *优先级水平* → 数值 0 到 255,首末项包括在内 -> -> *结和性从句* → **associativity** [*结和性*](./06_Declarations.md#associativity) -> -> *结和性* → **left** | **right** | **none** -> +> +> *前置运算符声明* → **prefix** **operator** [*运算符*](./02_Lexical_Structure.md#operator) +> +> *后置运算符声明* → **postfix** **operator** [*运算符*](./02_Lexical_Structure.md#operator) +> +> *中置运算符声明* → **infix** **operator** [*运算符*](./02_Lexical_Structure.md#operator) [*中置运算符属性集*](./06_Declarations.md#infix_operator_attributes) _可选_ +> +> *中置运算符属性集* → [*优先级组名*](./06_Declarations.md#precedence_group_name) +> + +> 优先级组声明语法 +> +> *优先级组声明* → **precedencegroup** [*优先级组名*](./06_Declarations.md#precedence_group_name) **{** [*优先级组属性集*](./06_Declarations.md#precedence_group_attributes) _可选_ **}** +> +> *优先级组属性集* → [*优先级组属性*](./06_Declarations.md#declarations) [*优先级组属性集*](./06_Declarations.md#declarations) _可选_ +> +> *优先级组属性* → [*优先级组关系*](./06_Declarations.md#declarations) +> +> *优先级组属性* → [*优先级组赋值*](./06_Declarations.md#declarations) +> +> *优先级组属性* → [*优先级组结合*](./06_Declarations.md#declarations) +> +> *优先级组关系* → **higherThan :** [*优先级组名集*](./06_Declarations.md#declarations) +> +> *优先级组关系* → **lowerThan :** [*优先级组名集*](./06_Declarations.md#declarations) +> +> *优先级组赋值* → **assignment :** [*布尔字面量*](./02_Lexical_Structure.md#string_literal) +> +> *优先级组结合* → **associativity : left** +> +> *优先级组结合* → **associativity : right** +> +> *优先级组结合* → **associativity : none** +> +> *优先级组名集* → [*优先级组名*](./06_Declarations.md#declarations) | [*优先级组名*](./06_Declarations.md#declarations) **,** [*优先级组名集*](./06_Declarations.md#declarations) +> +> *优先级组名* → [*标识符*](./02_Lexical_Structure.md#identifier) +> -> 声明修改器语法 -> -> *声明修改器* → **类** | **便捷(convenience)** | **动态(dynamic)** | **final** | **中置(infix)** | **lazy** | **可变(mutating)** | **不可变(nonmutating)** | **可选(optional)** | **改写(override)** | **后置** | **前置** | **required** | **static** | **unowned** | **unowned(safe)** | **unowned(unsafe)** | **弱(weak)** -> -> *声明修改器* → [*访问级别声明器(access-level-modifier)*](TODO) -> -> *声明修改集* → [*声明修改器*](TODO) [*声明修改器集*](TODO) _可选_ -> -> *访问级别修改器* → **内部的** | **内部的(set)** -> -> *访问级别修改器* → **私有的** | **私有的(set)** -> -> *访问级别修改器* → **公共的** -> -| **公共的(set)** -> *访问级别修改器集* →[*访问级别修改器*](TODO) [*访问级别修改器集*](TODO) _可选_ -> +> 声明修饰符语法 +> +> *声明修饰符* → **class** | **convenience** | **dynamic** | **final** | **infix** | **lazy** | **optional** | **override** | **postfix** | **prefix** | **required** | **static** | **unowned** | **unowned(safe)** | **unowned(unsafe)** | **weak** +> +> *声明修饰符* → [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) +> +> *声明修饰符* → [*可变性修饰符(mutation-modifier)*](./07_Attributes.md#mutation-modifier) +> +> *声明修饰符集* → [*声明修饰符(declaration-modifier)*](./06_Declarations.md#declaration_modifier) [*声明修饰符集(declaration-modifiers)*](./06_Declarations.md#declaration_modifiers) _可选_ +> +> *访问级别修饰符* → **private** | **private(set)** +> +> *访问级别修饰符* → **fileprivate** | **fileprivate(set)** +> +> *访问级别修饰符* → **internal** | **internal(set)** +> +> *访问级别修饰符* → **public** | **public(set)** +> +> *访问级别修饰符* → **open** | **open(set)** +> +> *可变性修饰符* → **mutating** | **nonmutating** +> + +## 属性 {#attributes} + +> 属性语法 +> +> *属性* → **@** [*属性名*](./07_Attributes.md#attribute_name) [*属性参数子句*](./07_Attributes.md#attribute_argument_clause) _可选_ +> +> *属性名* → [*标识符*](./02_Lexical_Structure.md#identifier) +> +> *属性参数子句* → **{** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **}** +> +> *属性(Attributes)集* → [*属性*](./07_Attributes.md#attribute) [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ +> +> *平衡令牌集* → [*平衡令牌*](./07_Attributes.md#balanced_token) [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ +> +> *平衡令牌* → **(** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **)** +> +> *平衡令牌* → **[** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **]** +> +> *平衡令牌* → **{** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **}** +> +> *平衡令牌* → 任意标识符、关键字、字面量或运算符 +> +> *平衡令牌* → 除 **(** 、**)**、**[**、**]**、**{**、**}** 外的任意标点符号 +> +> ## 模式 {#patterns} @@ -674,11 +750,11 @@ > *模式* → [*值绑定模式*](./08_Patterns.md#value_binding_pattern) > > *模式* → [*元组模式*](./08_Patterns.md#tuple_pattern) [*类型注解*](./03_Types.md#type_annotation) _可选_ -> -> *模式* → [*枚举个例模式*](./08_Patterns.md#enum_case_pattern) -> -> *模式* → [*可选模式*](TODO) -> +> +> *模式* → [*枚举 case 模式*](./08_Patterns.md#enum_case_pattern) +> +> *模式* → [*可选模式*](./08_Patterns.md#optional_pattern) +> > *模式* → [*类型转换模式*](./08_Patterns.md#type_casting_pattern) > > *模式* → [*表达式模式*](./08_Patterns.md#expression_pattern) @@ -712,22 +788,22 @@ > *元组模式* → **(** [*元组模式元素集*](./08_Patterns.md#tuple_pattern_element_list) _可选_ **)** > > *元组模式元素集* → [*元组模式元素*](./08_Patterns.md#tuple_pattern_element) | [*元组模式元素*](./08_Patterns.md#tuple_pattern_element) **,** [*元组模式元素集*](./08_Patterns.md#tuple_pattern_element_list) -> -> *元组模式元素* → [*模式*](./08_Patterns.md#pattern) -> +> +> *元组模式元素* → [*模式*](./08_Patterns.md#pattern) | [*标识符*](./02_Lexical_Structure.md#identifier) **:** [*模式*](./08_Patterns.md#pattern) +> -> 枚举用例模式语法 -> -> *enum-case-pattern* → [*类型标识*](./03_Types.md#type_identifier) _可选_ **.** [*枚举的 case 名*](./06_Declarations.md#enum_case_name) [*元组模式*](./08_Patterns.md#tuple_pattern) _可选_ -> +> 枚举 case 模式语法 +> +> *enum-case-pattern* → [*类型标识*](./03_Types.md#type_identifier) _可选_ **.** [*枚举 case 名*](./06_Declarations.md#enum_case_name) [*元组模式*](./08_Patterns.md#tuple_pattern) _可选_ +> > 可选模式语法 -> -> *可选模式* → [*识别符模式*](TODO) **?** -> +> +> *可选模式* → [*标识符模式*](./02_Lexical_Structure.md#identifier) **?** +> @@ -745,634 +821,32 @@ > 表达式模式语法 > > *表达式模式* → [*表达式*](./04_Expressions.md#expression) -> - -## 属性 {#attributes} - -> 属性语法 -> -> *属性* → **@** [*属性名*](./07_Attributes.md#attribute_name) [*属性参数从句*](./07_Attributes.md#attribute_argument_clause) _可选_ -> -> *属性名* → [*标识符*](./02_Lexical_Structure.md#identifier) -> -> *属性参数从句* → **(** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **)** -> -> *属性(Attributes)集* → [*属性*](./07_Attributes.md#attribute) [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ -> -> *平衡令牌集* → [*平衡令牌*](./07_Attributes.md#balanced_token) [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ -> -> *平衡令牌* → **(** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **)** -> -> *平衡令牌* → **[** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **]** -> -> *平衡令牌* → **{** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **}** -> -> *平衡令牌* → **任意标识符、关键字、字面量或运算符** -> -> *平衡令牌* → **任意标点除了(、)、[、]、{ 或 }** -> - -## 表达式 {#expressions} - -> 表达式语法 -> -> *表达式* → [*try-operator*](TODO) _可选_ [*前置表达式*](./04_Expressions.md#prefix_expression) [*二元表达式集*](./04_Expressions.md#binary_expressions) _可选_ -> -> *表达式集* → [*表达式*](./04_Expressions.md#expression) | [*表达式*](./04_Expressions.md#expression) **,** [*表达式集*](./04_Expressions.md#expression_list) -> - - - -> 前置表达式语法 -> -> *前置表达式* → [*前置运算符*](./02_Lexical_Structure.md#prefix_operator) _可选_ [*后置表达式*](./04_Expressions.md#postfix_expression) -> -> *前置表达式* → [*写入写出(in-out)表达式*](./04_Expressions.md#in_out_expression) -> -> *写入写出(in-out)表达式* → **&** [*标识符*](./02_Lexical_Structure.md#identifier) -> - - -> try 表达式语法 -> -> *try-operator* → **try** | **try !** -> - - - -> 二元表达式语法 -> -> *二元表达式* → [*二元运算符*](./02_Lexical_Structure.md#binary_operator) [*前置表达式*](./04_Expressions.md#prefix_expression) -> -> *二元表达式* → [*赋值运算符*](./04_Expressions.md#assignment_operator) [*try 运算符*](TODO) _可选_ [*前置表达式*](./04_Expressions.md#prefix_expression) -> -> *二元表达式* → [*条件运算符*](./04_Expressions.md#conditional_operator) [*try 运算符*](TODO) _可选_ [*前置表达式*](./04_Expressions.md#prefix_expression) -> -> *二元表达式* → [*类型转换运算符*](./04_Expressions.md#type_casting_operator) -> -> *二元表达式集* → [*二元表达式*](./04_Expressions.md#binary_expression) [*二元表达式集*](./04_Expressions.md#binary_expressions) _可选_ -> - - - -> 赋值运算符语法 -> -> *赋值运算符* → **=** -> - - - -> 三元条件运算符语法 -> -> *三元条件运算符* → **?** [*表达式*](./04_Expressions.md#expression) **:** -> - - - -> 类型转换运算符语法 -> -> *类型转换运算符* → **is** [*类型*](./03_Types.md#type) -> -> *类型转换运算符* → **as** [*类型*](./03_Types.md#type) -> -> *类型转换运算符* → **as ?** [*类型*](./03_Types.md#type) -> -> *类型转换运算符* → **as !** [*类型*](./03_Types.md#type) -> - - - -> 主表达式语法 -> -> *主表达式* → [*标识符*](./02_Lexical_Structure.md#identifier) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_argument_clause) _可选_ -> -> *主表达式* → [*字面量表达式*](./04_Expressions.md#literal_expression) -> -> *主表达式* → [*self 表达式*](./04_Expressions.md#self_expression) -> -> *主表达式* → [*超类表达式*](./04_Expressions.md#superclass_expression) -> -> *主表达式* → [*闭包表达式*](./04_Expressions.md#closure_expression) -> -> *主表达式* → [*圆括号表达式*](./04_Expressions.md#parenthesized_expression) -> -> *主表达式* → [*隐式成员表达式*](./04_Expressions.md#implicit_member_expression) -> -> *主表达式* → [*通配符表达式*](./04_Expressions.md#wildcard_expression) -> - - - -> 字面量表达式语法 -> -> *字面量表达式* → [*字面量*](./02_Lexical_Structure.md#literal) -> -> *字面量表达式* → [*数组字面量*](./04_Expressions.md#array_literal) | [*字典字面量*](./04_Expressions.md#dictionary_literal) -> -> *字面量表达式* → **__FILE__** | **__LINE__** | **__COLUMN__** | **__FUNCTION__** -> -> *数组字面量* → **[** [*数组字面量项集*](./04_Expressions.md#array_literal_items) _可选_ **]** -> -> *数组字面量项集* → [*数组字面量项*](./04_Expressions.md#array_literal_item) **,** _可选_ | [*数组字面量项*](./04_Expressions.md#array_literal_item) **,** [*数组字面量项集*](./04_Expressions.md#array_literal_items) -> -> *数组字面量项* → [*表达式*](./04_Expressions.md#expression) -> -> *字典字面量* → **[** [*字典字面量项集*](./04_Expressions.md#dictionary_literal_items) **]** | **[** **:** **]** -> -> *字典字面量项集* → [*字典字面量项*](./04_Expressions.md#dictionary_literal_item) **,** _可选_ | [*字典字面量项*](./04_Expressions.md#dictionary_literal_item) **,** [*字典字面量项集*](./04_Expressions.md#dictionary_literal_items) -> -> *字典字面量项* → [*表达式*](./04_Expressions.md#expression) **:** [*表达式*](./04_Expressions.md#expression) -> - - - -> Self 表达式语法 -> -> *self 表达式* → **self** -> -> *self 表达式* → **self** **.** [*标识符*](./02_Lexical_Structure.md#identifier) -> -> *self 表达式* → **self** **[** [*表达式*](./04_Expressions.md#expression) **]** -> -> *self 表达式* → **self** **.** **init** -> - - - -> 超类表达式语法 -> -> *超类表达式* → [*超类方法表达式*](./04_Expressions.md#superclass_method_expression) | [*超类下标表达式*](./04_Expressions.md#超类下标表达式) | [*超类构造器表达式*](./04_Expressions.md#superclass_initializer_expression) -> -> *超类方法表达式* → **super** **.** [*标识符*](./02_Lexical_Structure.md#identifier) -> -> *超类下标表达式* → **super** **[** [*表达式*](./04_Expressions.md#expression) **]** -> -> *超类构造器表达式* → **super** **.** **init** -> - - - -> 闭包表达式语法 -> -> *闭包表达式* → **{** [*闭包签名(Signational)*](./04_Expressions.md#closure_signature) _可选_ [*多条语句(Statements)*](./05_Statements.md#statements) **}** -> -> *闭包签名(Signational)* → [*参数从句*](./06_Declarations.md#parameter_clause) [*函数结果*](./06_Declarations.md#function_result) _可选_ **in** -> -> *闭包签名(Signational)* → [*标识符集*](./02_Lexical_Structure.md#identifier_list) [*函数结果*](./06_Declarations.md#function_result) _可选_ **in** -> -> *闭包签名(Signational)* → [*捕获(Capature)集*](./04_Expressions.md#capture_list) [*参数从句*](./06_Declarations.md#parameter_clause) [*函数结果*](./06_Declarations.md#function_result) _可选_ **in** -> -> *闭包签名(Signational)* → [*捕获(Capature)集*](./04_Expressions.md#capture_list) [*标识符集*](./02_Lexical_Structure.md#identifier_list) [*函数结果*](./06_Declarations.md#function_result) _可选_ **in** -> -> *闭包签名(Signational)* → [*捕获(Capature)集*](./04_Expressions.md#capture_list) **in** -> -> *捕获(Capature)集* → **[** [*捕获(Capature)说明符*](./04_Expressions.md#capture_specifier) [*表达式*](./04_Expressions.md#expression) **]** -> -> *捕获(Capature)说明符* → **weak** | **unowned** | **unowned(safe)** | **unowned(unsafe)** -> - - - -> 隐式成员表达式语法 -> -> *隐式成员表达式* → **.** [*标识符*](./02_Lexical_Structure.md#identifier) -> - - - -> 圆括号表达式(Parenthesized Expression)语法 -> -> *圆括号表达式* → **(** [*表达式元素集*](./04_Expressions.md#expression_element_list) _可选_ **)** -> -> *表达式元素集* → [*表达式元素*](./04_Expressions.md#expression_element) | [*表达式元素*](./04_Expressions.md#expression_element) **,** [*表达式元素集*](./04_Expressions.md#expression_element_list) -> -> *表达式元素* → [*表达式*](./04_Expressions.md#expression) | [*标识符*](./02_Lexical_Structure.md#identifier) **:** [*表达式*](./04_Expressions.md#expression) -> - - - -> 通配符表达式语法 -> -> *通配符表达式* → **_** -> - - - -> 后置表达式语法 -> -> *后置表达式* → [*主表达式*](./04_Expressions.md#primary_expression) -> -> *后置表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) [*后置运算符*](./02_Lexical_Structure.md#postfix_operator) -> -> *后置表达式* → [*函数调用表达式*](./04_Expressions.md#function_call_expression) -> -> *后置表达式* → [*构造器表达式*](./04_Expressions.md#initializer_expression) -> -> *后置表达式* → [*显示成员表达式*](./04_Expressions.md#explicit_member_expression) -> -> *后置表达式* → [*后置 self 表达式*](./04_Expressions.md#postfix_self_expression) -> -> *后置表达式* → [*动态类型表达式*](./04_Expressions.md#dynamic_type_expression) -> -> *后置表达式* → [*下标表达式*](./04_Expressions.md#subscript_expression) -> -> *后置表达式* → [*强制取值(Forced Value)表达式*](./04_Expressions.md#forced_value_expression) -> -> *后置表达式* → [*可选链(Optional Chaining)表达式*](./04_Expressions.md#optional_chaining_expression) -> - - - -> 函数调用表达式语法 -> -> *函数调用表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) [*圆括号表达式*](./04_Expressions.md#parenthesized_expression) -> -> *函数调用表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) [*圆括号表达式*](./04_Expressions.md#parenthesized_expression) _可选_ [*后置闭包(Trailing Closure)*](./04_Expressions.md#trailing_closure) -> -> *后置闭包(Trailing Closure)* → [*闭包表达式*](./04_Expressions.md#closure_expression) -> - - - -> 构造器表达式语法 -> -> *构造器表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **.** **init** -> - - - -> 显式成员表达式语法 -> -> *显示成员表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **.** [*十进制数字*](./02_Lexical_Structure.md#decimal_digit) -> -> *显示成员表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **.** [*标识符*](./02_Lexical_Structure.md#identifier) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_argument_clause) _可选_ -> - - - -> 后置 Self 表达式语法 -> -> *后置 self 表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **.** **self** -> - - - -> 动态类型表达式语法 -> -> *动态类型表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **.** **dynamicType** -> - - - -> 附属脚本表达式语法 -> -> *附属脚本表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **[** [*表达式集*](./04_Expressions.md#expression_list) **]** -> - - - -> 强制取值(Forced Value)语法 -> -> *强制取值(Forced Value)表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **!** -> - - - -> 可选链表达式语法 -> -> *可选链表达式* → [*后置表达式*](./04_Expressions.md#postfix_expression) **?** -> - -## 词法结构 {#lexical_structure} - -> 标识符语法 -> -> *标识符* → [*标识符头(Head)*](./02_Lexical_Structure.md#identifier_head) [*标识符字符集*](./02_Lexical_Structure.md#identifier_characters) _可选_ -> -> *标识符* → [*标识符头(Head)*](./02_Lexical_Structure.md#identifier_head) [*标识符字符集*](./02_Lexical_Structure.md#identifier_characters) _可选_ -> -> *标识符* → [*隐式参数名*](./02_Lexical_Structure.md#implicit_parameter_name) -> -> *标识符集* → [*标识符*](./02_Lexical_Structure.md#identifier) | [*标识符*](./02_Lexical_Structure.md#identifier) **,** [*标识符集*](./02_Lexical_Structure.md#identifier_list) -> -> *标识符头(Head)* → Upper- or lowercase letter A through Z -> -> *标识符头(Head)* → _ -> -> *标识符头(Head)* → U+00A8, U+00AA, U+00AD, U+00AF, U+00B2–U+00B5, or U+00B7–U+00BA -> -> *标识符头(Head)* → U+00BC–U+00BE, U+00C0–U+00D6, U+00D8–U+00F6, or U+00F8–U+00FF -> -> *标识符头(Head)* → U+0100–U+02FF, U+0370–U+167F, U+1681–U+180D, or U+180F–U+1DBF -> -> *标识符头(Head)* → U+1E00–U+1FFF -> -> *标识符头(Head)* → U+200B–U+200D, U+202A–U+202E, U+203F–U+2040, U+2054, or U+2060–U+206F -> -> *标识符头(Head)* → U+2070–U+20CF, U+2100–U+218F, U+2460–U+24FF, or U+2776–U+2793 -> -> *标识符头(Head)* → U+2C00–U+2DFF or U+2E80–U+2FFF -> -> *标识符头(Head)* → U+3004–U+3007, U+3021–U+302F, U+3031–U+303F, or U+3040–U+D7FF -> -> *标识符头(Head)* → U+F900–U+FD3D, U+FD40–U+FDCF, U+FDF0–U+FE1F, or U+FE30–U+FE44 -> -> *标识符头(Head)* → U+FE47–U+FFFD -> -> *标识符头(Head)* → U+10000–U+1FFFD, U+20000–U+2FFFD, U+30000–U+3FFFD, or U+40000–U+4FFFD -> -> *标识符头(Head)* → U+50000–U+5FFFD, U+60000–U+6FFFD, U+70000–U+7FFFD, or U+80000–U+8FFFD -> -> *标识符头(Head)* → U+90000–U+9FFFD, U+A0000–U+AFFFD, U+B0000–U+BFFFD, or U+C0000–U+CFFFD -> -> *标识符头(Head)* → U+D0000–U+DFFFD or U+E0000–U+EFFFD -> -> *标识符字符* → 数值 0 到 9 -> -> *标识符字符* → U+0300–U+036F, U+1DC0–U+1DFF, U+20D0–U+20FF, or U+FE20–U+FE2F -> -> *标识符字符* → [*标识符头(Head)*](./02_Lexical_Structure.md#identifier_head) -> -> *标识符字符集* → [*标识符字符*](./02_Lexical_Structure.md#identifier_character) [*标识符字符集*](./02_Lexical_Structure.md#identifier_characters) _可选_ -> -> *隐式参数名* → **$** [*十进制数字集*](./02_Lexical_Structure.md#decimal_digits) -> - - - -> 字面量语法 -> -> *字面量* → [*数值型字面量*](./02_Lexical_Structure.md#integer_literal) | [*字符串字面量*](./02_Lexical_Structure.md#floating_point_literal) | [*布尔字面量*](./02_Lexical_Structure.md#string_literal) | [*空字面量*](TODO) -> -> *数值型字面量* → **-** _可选_ [*整形字面量*](TODO) | **-** _可选_ [*浮点型字面量*](TODO) -> -> *布尔字面量* → **true** | **false** -> -> *空字面量* → **nil** -> - - - -> 整型字面量语法 -> -> *整型字面量* → [*二进制字面量*](./02_Lexical_Structure.md#binary_literal) -> -> *整型字面量* → [*八进制字面量*](./02_Lexical_Structure.md#octal_literal) -> -> *整型字面量* → [*十进制字面量*](./02_Lexical_Structure.md#decimal_literal) -> -> *整型字面量* → [*十六进制字面量*](./02_Lexical_Structure.md#hexadecimal_literal) -> -> *二进制字面量* → **0b** [*二进制数字*](./02_Lexical_Structure.md#binary_digit) [*二进制字面量字符集*](./02_Lexical_Structure.md#binary_literal_characters) _可选_ -> -> *二进制数字* → 数值 0 到 1 -> -> *二进制字面量字符* → [*二进制数字*](./02_Lexical_Structure.md#binary_digit) | **_** -> -> *二进制字面量字符集* → [*二进制字面量字符*](./02_Lexical_Structure.md#binary_literal_character) [*二进制字面量字符集*](./02_Lexical_Structure.md#binary_literal_characters) _可选_ -> -> *八进制字面量* → **0o** [*八进制数字*](./02_Lexical_Structure.md#octal_digit) [*八进制字符集*](./02_Lexical_Structure.md#octal_literal_characters) _可选_ -> -> *八进字数字* → 数值 0 到 7 -> -> *八进制字符* → [*八进制数字*](./02_Lexical_Structure.md#octal_digit) | **_** -> -> *八进制字符集* → [*八进制字符*](./02_Lexical_Structure.md#octal_literal_character) [*八进制字符集*](./02_Lexical_Structure.md#octal_literal_characters) _可选_ -> -> *十进制字面量* → [*十进制数字*](./02_Lexical_Structure.md#decimal_digit) [*十进制字符集*](./02_Lexical_Structure.md#decimal_literal_characters) _可选_ -> -> *十进制数字* → 数值 0 到 9 -> -> *十进制数字集* → [*十进制数字*](./02_Lexical_Structure.md#decimal_digit) [*十进制数字集*](./02_Lexical_Structure.md#decimal_digits) _可选_ -> -> *十进制字面量字符* → [*十进制数字*](./02_Lexical_Structure.md#decimal_digit) | **_** -> -> *十进制字面量字符集* → [*十进制字面量字符*](./02_Lexical_Structure.md#decimal_literal_character) [*十进制字面量字符集*](./02_Lexical_Structure.md#decimal_literal_characters) _可选_ -> -> *十六进制字面量* → **0x** [*十六进制数字*](./02_Lexical_Structure.md#hexadecimal_digit) [*十六进制字面量字符集*](./02_Lexical_Structure.md#hexadecimal_literal_characters) _可选_ -> -> *十六进制数字* → 数值 0 到 9, a through f, or A through F -> -> *十六进制字符* → [*十六进制数字*](./02_Lexical_Structure.md#hexadecimal_digit) | **_** -> -> *十六进制字面量字符集* → [*十六进制字符*](./02_Lexical_Structure.md#hexadecimal_literal_character) [*十六进制字面量字符集*](./02_Lexical_Structure.md#hexadecimal_literal_characters) _可选_ -> - - - -> 浮点型字面量语法 -> -> *浮点数字面量* → [*十进制字面量*](./02_Lexical_Structure.md#decimal_literal) [*十进制分数*](./02_Lexical_Structure.md#decimal_fraction) _可选_ [*十进制指数*](./02_Lexical_Structure.md#decimal_exponent) _可选_ -> -> *浮点数字面量* → [*十六进制字面量*](./02_Lexical_Structure.md#hexadecimal_literal) [*十六进制分数*](./02_Lexical_Structure.md#hexadecimal_fraction) _可选_ [*十六进制指数*](./02_Lexical_Structure.md#hexadecimal_exponent) -> -> *十进制分数* → **.** [*十进制字面量*](./02_Lexical_Structure.md#decimal_literal) -> -> *十进制指数* → [*浮点数 e*](./02_Lexical_Structure.md#floating_point_e) [*正负号*](./02_Lexical_Structure.md#sign) _可选_ [*十进制字面量*](./02_Lexical_Structure.md#decimal_literal) -> -> *十六进制分数* → **.** [*十六进制数*](./02_Lexical_Structure.md#hexadecimal_literal) -> - [*十六进制字面量字符集*](TODO)_可选_ -> *十六进制指数* → [*浮点数 p*](./02_Lexical_Structure.md#floating_point_p) [*正负号*](./02_Lexical_Structure.md#sign) _可选_ [*十六进制字面量*](./02_Lexical_Structure.md#hexadecimal_literal) -> -> *浮点数 e* → **e** | **E** -> -> *浮点数 p* → **p** | **P** -> -> *正负号* → **+** | **-** -> - - - -> 字符串型字面量语法 -> -> *字符串字面量* → **"** [*引用文本*](./02_Lexical_Structure.md#quoted_text) **"** -> -> *引用文本* → [*引用文本条目*](./02_Lexical_Structure.md#quoted_text_item) [*引用文本*](./02_Lexical_Structure.md#quoted_text) _可选_ -> -> *引用文本条目* → [*转义字符*](./02_Lexical_Structure.md#escaped_character) -> -> *引用文本条目* → **(** [*表达式*](./04_Expressions.md#expression) **)** -> -> *引用文本条目* → 除了"­, \­, U+000A, or U+000D 的所有 Unicode 的字符 -> -> *转义字符* → **/0** | **\\** | **\t** | **\n** | **\r** | **\"** | **\'** -> -> *转义字符* → **\u** **{** [*十六进制标量数字集*](TODO) **}** -> -> *unicode 标量数字集* → Between one and eight hexadecimal digits -> - - - -> 运算符语法语法 -> -> *运算符* → [*运算符头*](./02_Lexical_Structure.md#operator_character) [*运算符字符集*](./02_Lexical_Structure.md#operator) _可选_ -> -> *运算符* → [*点运算符头*](TODO) [*点运算符字符集*](TODO) _可选_ -> -> *运算符字符* → **/** | **=** | **-** | **+** | **!** | ***** | **%** | **<** | **>** | **&** | **|** | **^** | **~** | **?** -> -> *运算符头* → U+00A1–U+00A7 -> -> *运算符头* → U+00A9 or U+00AB -> -> *运算符头* → U+00AC or U+00AE -> -> *运算符头* → U+00B0–U+00B1, U+00B6, U+00BB, U+00BF, U+00D7, or U+00F7 -> -> *运算符头* → U+2016–U+2017 or U+2020–U+2027 -> -> *运算符头* → U+2030–U+203E -> -> *运算符头* → U+2041–U+2053 -> -> *运算符头* → U+2055–U+205E -> -> *运算符头* → U+2190–U+23FF -> -> *运算符头* → U+2500–U+2775 -> -> *运算符头* → U+2794–U+2BFF -> -> *运算符头* → U+2E00–U+2E7F -> -> *运算符头* → U+3001–U+3003 -> -> *运算符头* → U+3008–U+3030 -> -> *运算符字符* → [*运算符头*](TODO) -> -> *运算符字符* → U+0300–U+036F -> -> *运算符字符* → U+1DC0–U+1DFF -> -> *运算符字符* → U+20D0–U+20FF -> -> *运算符字符* → U+FE00–U+FE0F -> -> *运算符字符* → U+FE20–U+FE2F -> -> *运算符字符* → U+E0100–U+E01EF -> -> *运算符字符集* → [*运算符字符*](TODO) [*运算符字符集*](TODO)_可选_ -> -> *点运算符头* → **..** -> -> *点运算符字符* → **.** | [*运算符字符*](TODO) -> -> *点运算符字符集* → [*点运算符字符*](TODO) [*点运算符字符集*](TODO) _可选_ -> -> *二元运算符* → [*运算符*](./02_Lexical_Structure.md#operator) -> -> *前置运算符* → [*运算符*](./02_Lexical_Structure.md#operator) -> -> *后置运算符* → [*运算符*](./02_Lexical_Structure.md#operator) -> - -## 类型 {#types} - -> 类型语法 -> -> *类型* → [*数组类型*](./03_Types.md#array_type) | [*字典类型*](TODO) | [*函数类型*](./03_Types.md#function_type) | [*类型标识符*](./03_Types.md#type_identifier) | [*元组类型*](./03_Types.md#tuple_type) | [*可选类型*](./03_Types.md#optional_type) | [*隐式解析可选类型*](./03_Types.md#implicitly_unwrapped_optional_type) | [*协议合成类型*](./03_Types.md#protocol_composition_type) | [*元型类型*](./03_Types.md#metatype_type) -> - - - -> 类型注解语法 -> -> *类型注解* → **:** [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*类型*](./03_Types.md#type) -> - - - -> 类型标识语法 -> -> *类型标识* → [*类型名称*](./03_Types.md#type_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_argument_clause) _可选_ | [*类型名称*](./03_Types.md#type_name) [*泛型参数从句*](./09_Generic_Parameters_and_Arguments.md#generic_argument_clause) _可选_ **.** [*类型标识符*](./03_Types.md#type_identifier) -> -> *类型名* → [*标识符*](./02_Lexical_Structure.md#identifier) -> - - - -> 元组类型语法 -> -> *元组类型* → **(** [*元组类型主体*](./03_Types.md#tuple_type_body) _可选_ **)** -> -> *元组类型主体* → [*元组类型的元素集*](./03_Types.md#tuple_type_element_list) **...** _可选_ -> -> *元组类型的元素集* → [*元组类型的元素*](./03_Types.md#tuple_type_element) | [*元组类型的元素*](./03_Types.md#tuple_type_element) **,** [*元组类型的元素集*](./03_Types.md#tuple_type_element_list) -> -> *元组类型的元素* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **inout** _可选_ [*类型*](./03_Types.md#type) | **inout** _可选_ [*元素名*](./03_Types.md#element_name) [*类型注解*](./03_Types.md#type_annotation) -> -> *元素名* → [*标识符*](./02_Lexical_Structure.md#identifier) -> - - - -> 函数类型语法 -> -> *函数类型* → [*类型*](./03_Types.md#type) **throws** _可选_ **->** [*类型*](./03_Types.md#type) -> -> *函数类型* → [*类型*](TODO) **rethrows** **->** [*类型*](TODO) -> - - - -> 数组类型语法 -> -> *数组类型* → **[** [*类型*](./03_Types.md#array_type) **]** -> - - -> 字典类型语法 -> -> *字典类型* → **[** [*类型 **:** 类型*](TODO) **]** -> - - - -> 可选类型语法 -> -> *可选类型* → [*类型*](./03_Types.md#type) **?** -> - - - -> 隐式解析可选类型(Implicitly Unwrapped Optional Type)语法 -> -> *隐式解析可选类型* → [*类型*](./03_Types.md#type) **!** -> - - - -> 协议合成类型语法 -> -> *协议合成类型* → **protocol** **<** [*协议标识符集*](./03_Types.md#protocol_identifier_list) _可选_ **>** -> -> *协议标识符集* → [*协议标识符*](./03_Types.md#protocol_identifier) | [*协议标识符*](./03_Types.md#protocol_identifier) **,** [*协议标识符集*](./03_Types.md#protocol_identifier_list) -> -> *协议标识符* → [*类型标识符*](./03_Types.md#type_identifier) -> - - - -> 元(Metatype)类型语法 -> -> *元类型* → [*类型*](./03_Types.md#type) **.** **Type** | [*类型*](./03_Types.md#type) **.** **Protocol** -> - - - -> 类型继承从句语法 -> -> *类型继承从句* → **:** [*类条件(class-requirement))*](TODO) **,** [*类型继承集*](./03_Types.md#type_inheritance_list) -> -> *类型继承从句* → **:** [*类条件(class-requirement))*](TODO) -> -> *类型继承从句* → **:** [*类型继承集*](TODO) -> -> *类型继承集* → [*类型标识符*](./03_Types.md#type_identifier) | [*类型标识符*](./03_Types.md#type_identifier) **,** [*类型继承集*](./03_Types.md#type_inheritance_list) -> -> *类条件* → **class** -> +> + +## 泛型参数 {#generic_parameters_and_arguments} + +> 泛型形参子句(Generic Parameter Clause)语法 +> +> +> *泛型参数子句* → **<** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list) **>** +> +> *泛型参数集* → [*泛形参数*](./09_Generic_Parameters_and_Arguments.md#generic_parameter) | [*泛形参数*](./09_Generic_Parameters_and_Arguments.md#generic_parameter) **,** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list) +> +> *泛形参数* → [*类型名称*](./03_Types.md#type_name) +> +> *泛形参数* → [*类型名称*](./03_Types.md#type_name) **:** [*类型标识*](./03_Types.md#type_identifier) +> +> *泛形参数* → [*类型名称*](./03_Types.md#type_name) **:** [*协议合成类型*](./03_Types.md#protocol_composition_type) +> +> *泛型 where 子句* → **where** [*约束集*](./09_Generic_Parameters_and_Arguments.md#requirement_list) +> +> *约束集* → [*约束*](./09_Generic_Parameters_and_Arguments.md#requirement) | [*约束*](./09_Generic_Parameters_and_Arguments.md#requirement) **,** [*约束集*](./09_Generic_Parameters_and_Arguments.md#requirement_list) +> +> *约束* → [*一致性约束*](./09_Generic_Parameters_and_Arguments.md#conformance_requirement) | [*同类型约束*](./09_Generic_Parameters_and_Arguments.md#same_type_requirement) +> +> *一致性约束* → [*类型标识*](./03_Types.md#type_identifier) **:** [*类型标识*](./03_Types.md#type_identifier) +> +> *一致性约束* → [*类型标识*](./03_Types.md#type_identifier) **:** [*协议合成类型*](./03_Types.md#protocol_composition_type) +> +> *同类型约束* → [*类型标识*](./03_Types.md#type_identifier) **==** [*类型*](./03_Types.md#type_identifier) +> From 307ddedd43990d49729fc694003b8b4a10489b97 Mon Sep 17 00:00:00 2001 From: Chen Jia Date: Sun, 31 Mar 2019 10:57:16 +0800 Subject: [PATCH 080/107] =?UTF-8?q?=E6=9B=B4=E6=96=B010=5FSummary=5Fof=5Ft?= =?UTF-8?q?he=5FGrammar(from=20Lexical=20Structure=20->=20Types).md=20(#91?= =?UTF-8?q?3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 第三章 10_Summary_of_the_Grammar(从 Declarations 到 Generic Parameters and Arguments) * 10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments)的翻译 (#911) * Update 10_Summary_of_the_Grammar(from Lexical Structure -> Types).md. 去掉"可选"前的空格 --- ...ns -> Generic Parameters and Arguments).md | 168 +++++++++--------- 1 file changed, 84 insertions(+), 84 deletions(-) diff --git a/source/chapter3/10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments).md b/source/chapter3/10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments).md index 529ba6bc..6ee594a0 100644 --- a/source/chapter3/10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments).md +++ b/source/chapter3/10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments).md @@ -32,7 +32,7 @@ > > *声明* → [优先级组声明](./06_Declarations.md#precedence_group_declaration) > -> *声明集* → [声明](./06_Declarations.md#declaration) [声明集](./06_Declarations.md#declarations) 可选 +> *声明集* → [声明](./06_Declarations.md#declaration) [声明集](./06_Declarations.md#declarations)可选 > @@ -40,21 +40,21 @@ > 顶级声明语法 > -> *顶级声明* → [多条语句](./05_Statements.md#statements) 可选 +> *顶级声明* → [多条语句](./05_Statements.md#statements)可选 > > 代码块语法 > -> *代码块* → **{** [多条语句](./05_Statements.md#statements) 可选 **}** +> *代码块* → **{** [多条语句](./05_Statements.md#statements)可选 **}** > > 导入声明语法 > -> *导入声明* → [属性集](./07_Attributes.md#attributes) 可选 **import** [导入类型](./06_Declarations.md#import_kind) 可选 [导入路径](./06_Declarations.md#import_path) +> *导入声明* → [属性集](./07_Attributes.md#attributes)可选 **import** [导入类型](./06_Declarations.md#import_kind)可选 [导入路径](./06_Declarations.md#import_path) > > *导入类型* → **typealias** | **struct** | **class** | **enum** | **protocol** | **let** | **var** | **func** > @@ -67,11 +67,11 @@ > 常数声明语法 > -> *常量声明* → [属性集](./07_Attributes.md#attributes) 可选 [声明修饰符集](./06_Declarations.md#declaration_specifiers) 可选 **let** [模式构造器集](./06_Declarations.md#pattern_initializer_list) +> *常量声明* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_specifiers)可选 **let** [模式构造器集](./06_Declarations.md#pattern_initializer_list) > > *模式构造器集* → [模式构造器](./06_Declarations.md#pattern_initializer) | [模式构造器](./06_Declarations.md#pattern_initializer) **,** [模式构造器集](./06_Declarations.md#pattern_initializer_list) > -> *模式构造器* → [模式](./08_Patterns.md#pattern) [构造器](./06_Declarations.md#initializer) 可选 +> *模式构造器* → [模式](./08_Patterns.md#pattern) [构造器](./06_Declarations.md#initializer)可选 > > *构造器* → **=** [表达式](./04_Expressions.md#expression) > @@ -88,49 +88,49 @@ > > *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [getter-setter 关键字块](./06_Declarations.md#getter_setter_keyword_block) > -> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [构造器](./06_Declarations.md#initializer) 可选 [willSet-didSet 代码块](./06_Declarations.md#willSet_didSet_block) +> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [构造器](./06_Declarations.md#initializer)可选 [willSet-didSet 代码块](./06_Declarations.md#willSet_didSet_block) > -> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [构造器](./06_Declarations.md#initializer) 可选 [willSet-didSet 代码块](./06_Declarations.md#willSet_didSet_block) +> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [构造器](./06_Declarations.md#initializer)可选 [willSet-didSet 代码块](./06_Declarations.md#willSet_didSet_block) > -> *变量声明头* → [属性集](./07_Attributes.md#attributes) 可选 [声明修饰符集](./06_Declarations.md#declaration_specifiers) 可选 **var** +> *变量声明头* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_specifiers)可选 **var** > > *变量名称* → [标识符](./02_Lexical_Structure.md#identifier) > > *getter-setter 块* → [代码块](./06_Declarations.md#code_block) > -> *getter-setter 块* → **{** [getter 子句](./06_Declarations.md#getter_clause) [setter 子句](./06_Declarations.md#setter_clause) 可选 **}** +> *getter-setter 块* → **{** [getter 子句](./06_Declarations.md#getter_clause) [setter 子句](./06_Declarations.md#setter_clause)可选 **}** > > *getter-setter 块* → **{** [setter 子句](./06_Declarations.md#setter_clause) [getter 子句](./06_Declarations.md#getter_clause) **}** > -> *getter 子句* → [属性集](./07_Attributes.md#attributes) 可选 [可变性修饰符](./06_Declarations.md#mutation-modifier) 可选 **get** [代码块](./06_Declarations.md#code_block) +> *getter 子句* → [属性集](./07_Attributes.md#attributes)可选 [可变性修饰符](./06_Declarations.md#mutation-modifier)可选 **get** [代码块](./06_Declarations.md#code_block) > -> *setter 子句* → [属性集](./07_Attributes.md#attributes) 可选 [可变性修饰符](./06_Declarations.md#mutation-modifier) 可选 **set** [setter 名称](./06_Declarations.md#setter_name) 可选 [代码块](./06_Declarations.md#code_block) +> *setter 子句* → [属性集](./07_Attributes.md#attributes)可选 [可变性修饰符](./06_Declarations.md#mutation-modifier)可选 **set** [setter 名称](./06_Declarations.md#setter_name)可选 [代码块](./06_Declarations.md#code_block) > > *setter 名称* → **(** [标识符](./02_Lexical_Structure.md#identifier) **)** > -> *getter-setter 关键字(Keyword)块* → **{** [getter 关键字子句](./06_Declarations.md#getter_keyword_clause) [setter 关键字子句](./06_Declarations.md#setter_keyword_clause) 可选 **}** +> *getter-setter 关键字(Keyword)块* → **{** [getter 关键字子句](./06_Declarations.md#getter_keyword_clause) [setter 关键字子句](./06_Declarations.md#setter_keyword_clause)可选 **}** > > *getter-setter 关键字(Keyword)块* → **{** [setter 关键字子句](./06_Declarations.md#setter_keyword_clause) [getter 关键字子句](./06_Declarations.md#getter_keyword_clause) **}** > -> *getter 关键字(Keyword)子句* → [属性集](./07_Attributes.md#attributes) 可选 [可变性修饰符](./06_Declarations.md#mutation-modifier) 可选 **get** +> *getter 关键字(Keyword)子句* → [属性集](./07_Attributes.md#attributes)可选 [可变性修饰符](./06_Declarations.md#mutation-modifier)可选 **get** > -> *setter 关键字(Keyword)子句* → [属性集](./07_Attributes.md#attributes) 可选 [可变性修饰符](./06_Declarations.md#mutation-modifier) 可选 **set** +> *setter 关键字(Keyword)子句* → [属性集](./07_Attributes.md#attributes)可选 [可变性修饰符](./06_Declarations.md#mutation-modifier)可选 **set** > -> *willSet-didSet 代码块* → **{** [willSet 子句](./06_Declarations.md#willSet_clause) [didSet 子句](./06_Declarations.md#didSet_clause) 可选 **}** +> *willSet-didSet 代码块* → **{** [willSet 子句](./06_Declarations.md#willSet_clause) [didSet 子句](./06_Declarations.md#didSet_clause)可选 **}** > -> *willSet-didSet 代码块* → **{** [didSet 子句](./06_Declarations.md#didSet_clause) [willSet 子句](./06_Declarations.md#willSet_clause) 可选 **}** +> *willSet-didSet 代码块* → **{** [didSet 子句](./06_Declarations.md#didSet_clause) [willSet 子句](./06_Declarations.md#willSet_clause)可选 **}** > -> *willSet 子句* → [属性集](./07_Attributes.md#attributes) 可选 **willSet** [setter 名称](./06_Declarations.md#setter_name) 可选 [代码块](./06_Declarations.md#code_block) +> *willSet 子句* → [属性集](./07_Attributes.md#attributes)可选 **willSet** [setter 名称](./06_Declarations.md#setter_name)可选 [代码块](./06_Declarations.md#code_block) > -> *didSet 子句* → [属性集](./07_Attributes.md#attributes) 可选 +> *didSet 子句* → [属性集](./07_Attributes.md#attributes)可选 > - **didSet** [setter 名称](./06_Declarations.md#setter_name) 可选 [代码块](./06_Declarations.md#code_block) + **didSet** [setter 名称](./06_Declarations.md#setter_name)可选 [代码块](./06_Declarations.md#code_block) > 类型别名声明语法 > -> *类型别名声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) **typealias** [类型别名名称](./06_Declarations.md#typealias_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [类型别名赋值](./06_Declarations.md#typealias_assignment) +> *类型别名声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) **typealias** [类型别名名称](./06_Declarations.md#typealias_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型别名赋值](./06_Declarations.md#typealias_assignment) > > *类型别名名称* → [标识符](./02_Lexical_Structure.md#identifier) > @@ -141,18 +141,18 @@ > 函数声明语法 > -> *函数声明* → [函数头](./06_Declarations.md#function_head) [函数名](./06_Declarations.md#function_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [函数签名](./06_Declarations.md#function_signature) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [函数体](./06_Declarations.md#function_body) 可选 +> *函数声明* → [函数头](./06_Declarations.md#function_head) [函数名](./06_Declarations.md#function_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [函数签名](./06_Declarations.md#function_signature) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [函数体](./06_Declarations.md#function_body)可选 > -> *函数头* → [属性集](./07_Attributes.md#attributes) 可选 [声明描述符集](./06_Declarations.md#declaration_specifiers) 可选 **func** +> *函数头* → [属性集](./07_Attributes.md#attributes)可选 [声明描述符集](./06_Declarations.md#declaration_specifiers)可选 **func** > > *函数名* → [标识符](./02_Lexical_Structure.md#identifier) | [运算符](./02_Lexical_Structure.md#operator) > -> *函数签名* → [参数子句](./06_Declarations.md#parameter_clause) **throws** 可选 [函数结果](./06_Declarations.md#function_result) 可选 +> *函数签名* → [参数子句](./06_Declarations.md#parameter_clause) **throws**可选 [函数结果](./06_Declarations.md#function_result)可选 > -> *函数签名* → [参数子句](./06_Declarations.md#parameter_clause) **rethrows** [函数结果](./06_Declarations.md#function_result) 可选 +> *函数签名* → [参数子句](./06_Declarations.md#parameter_clause) **rethrows** [函数结果](./06_Declarations.md#function_result)可选 > -> *函数结果* → **->** [属性集](./07_Attributes.md#attributes) 可选 [类型](./03_Types.md#type) +> *函数结果* → **->** [属性集](./07_Attributes.md#attributes)可选 [类型](./03_Types.md#type) > > *函数体* → [代码块](./06_Declarations.md#code_block) > @@ -160,11 +160,11 @@ > > *参数集* → [参数](./06_Declarations.md#parameter) | [参数](./06_Declarations.md#parameter) **,** [参数集](./06_Declarations.md#parameter_list) > -> *参数* → [外部参数名](./06_Declarations.md#parameter_name) 可选 [本地参数名](./06_Declarations.md#local_parameter_name) [类型注解](./03_Types.md#type_annotation) [默认参数子句](./06_Declarations.md#default_argument_clause) 可选 +> *参数* → [外部参数名](./06_Declarations.md#parameter_name)可选 [本地参数名](./06_Declarations.md#local_parameter_name) [类型注解](./03_Types.md#type_annotation) [默认参数子句](./06_Declarations.md#default_argument_clause)可选 > -> *参数* → [外部参数名](./06_Declarations.md#parameter_name) 可选 [本地参数名](./06_Declarations.md#local_parameter_name) [类型注解](./03_Types.md#type_annotation) +> *参数* → [外部参数名](./06_Declarations.md#parameter_name)可选 [本地参数名](./06_Declarations.md#local_parameter_name) [类型注解](./03_Types.md#type_annotation) > -> *参数* → [外部参数名](./06_Declarations.md#parameter_name) 可选 [本地参数名](./06_Declarations.md#local_parameter_name) [类型注解](./03_Types.md#type_annotation) **...** +> *参数* → [外部参数名](./06_Declarations.md#parameter_name)可选 [本地参数名](./06_Declarations.md#local_parameter_name) [类型注解](./03_Types.md#type_annotation) **...** > > *外部参数名* → [标识符](./02_Lexical_Structure.md#identifier) > @@ -177,37 +177,37 @@ > 枚举声明语法 > -> *枚举声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 [联合式枚举](./06_Declarations.md#union_style_enum) +> *枚举声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 [联合式枚举](./06_Declarations.md#union_style_enum) > -> *枚举声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 [原始值式枚举](./06_Declarations.md#raw-value-style-enum) +> *枚举声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 [原始值式枚举](./06_Declarations.md#raw-value-style-enum) > -> *联合式枚举* → **indirect** 可选 **enum** [枚举名](./06_Declarations.md#enum_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [类型继承子句](./03_Types.md#type-inheritance-clause) 可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 **{** [联合式枚举成员](./06_Declarations.md#union_style_enum_members) 可选 **}** +> *联合式枚举* → **indirect**可选 **enum** [枚举名](./06_Declarations.md#enum_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型继承子句](./03_Types.md#type-inheritance-clause)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 **{** [联合式枚举成员](./06_Declarations.md#union_style_enum_members)可选 **}** > -> *联合式枚举成员集* → [联合式枚举成员](./06_Declarations.md#union_style_enum_member) [联合样式枚举成员集](./06_Declarations.md#union_style_enum_members) 可选 +> *联合式枚举成员集* → [联合式枚举成员](./06_Declarations.md#union_style_enum_member) [联合样式枚举成员集](./06_Declarations.md#union_style_enum_members)可选 > > *联合样式枚举成员* → [声明](./06_Declarations.md#declaration) | [联合式枚举 case 子句](./06_Declarations.md#union_style_enum_case_clause) | [编译控制语句](./05_Statements.md#compiler-control-statement) > -> *联合式枚举 case 子句* → [属性集](./07_Attributes.md#attributes) 可选 **indirect** 可选 **case** [联合式枚举 case 集](./06_Declarations.md#union_style_enum_case_list) +> *联合式枚举 case 子句* → [属性集](./07_Attributes.md#attributes)可选 **indirect**可选 **case** [联合式枚举 case 集](./06_Declarations.md#union_style_enum_case_list) > > *联合式枚举 case 集* → [联合式枚举 case](./06_Declarations.md#union_style_enum_case) | [联合式枚举 case](./06_Declarations.md#union_style_enum_case) **,** [联合式枚举 case 集](./06_Declarations.md#union_style_enum_case_list) > -> *联合式枚举 case* → [枚举的 case 名](./06_Declarations.md#enum_case_name) [元组类型](./03_Types.md#tuple_type) 可选 +> *联合式枚举 case* → [枚举的 case 名](./06_Declarations.md#enum_case_name) [元组类型](./03_Types.md#tuple_type)可选 > > *枚举名* → [标识符](./02_Lexical_Structure.md#identifier) > > *枚举的 case 名* → [标识符](./02_Lexical_Structure.md#identifier) > -> *原始值式枚举* → **enum** [枚举名](./06_Declarations.md#enum_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [类型继承子句](./03_Types.md#type-inheritance-clause) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 **{** [原始值式枚举成员集](./06_Declarations.md#raw_value_style_enum_members) **}** +> *原始值式枚举* → **enum** [枚举名](./06_Declarations.md#enum_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型继承子句](./03_Types.md#type-inheritance-clause) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 **{** [原始值式枚举成员集](./06_Declarations.md#raw_value_style_enum_members) **}** > -> *原始值式枚举成员集* → [原始值式枚举成员](./06_Declarations.md#raw_value_style_enum_member) [原始值式枚举成员集](./06_Declarations.md#raw_value_style_enum_members) 可选 +> *原始值式枚举成员集* → [原始值式枚举成员](./06_Declarations.md#raw_value_style_enum_member) [原始值式枚举成员集](./06_Declarations.md#raw_value_style_enum_members)可选 > > *原始值式枚举成员* → [声明](./06_Declarations.md#declaration) | [原始值式枚举 case 子句](./06_Declarations.md#raw_value_style_enum_case_clause) | [编译控制语句](./05_Statements.md#compiler-control-statement) > -> *原始值式枚举 case 子句* → [属性集](./07_Attributes.md#attributes) 可选 **case** [原始值式枚举 case 集](./06_Declarations.md#raw_value_style_enum_case_list) +> *原始值式枚举 case 子句* → [属性集](./07_Attributes.md#attributes)可选 **case** [原始值式枚举 case 集](./06_Declarations.md#raw_value_style_enum_case_list) > > *原始值式枚举 case 集* → [原始值式枚举 case](./06_Declarations.md#raw_value_style_enum_case) | [原始值式枚举 case](./06_Declarations.md#raw_value_style_enum_case) **,** [原始值式枚举 case 集](./06_Declarations.md#raw_value_style_enum_case_list) > -> *原始值式枚举 case* → [枚举的 case 名](./06_Declarations.md#enum_case_name) [原始值赋值](./06_Declarations.md#raw_value_assignment) 可选 +> *原始值式枚举 case* → [枚举的 case 名](./06_Declarations.md#enum_case_name) [原始值赋值](./06_Declarations.md#raw_value_assignment)可选 > > *原始值赋值* → **=** [原始值字面量](./02_Lexical_Structure.md#literal) > @@ -218,13 +218,13 @@ > 结构体声明语法 > -> *结构体声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 **struct** [结构体名称](./06_Declarations.md#struct_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [类型继承子句](./03_Types.md#type_inheritance_clause) 可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [结构体主体](./06_Declarations.md#struct_body) +> *结构体声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **struct** [结构体名称](./06_Declarations.md#struct_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型继承子句](./03_Types.md#type_inheritance_clause)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [结构体主体](./06_Declarations.md#struct_body) > > *结构体名称* → [标识符](./02_Lexical_Structure.md#identifier) > -> *结构体主体* → **{** [结构体成员集](./06_Declarations.md#declarations) 可选 **}** +> *结构体主体* → **{** [结构体成员集](./06_Declarations.md#declarations)可选 **}** > -> *结构体成员集* → [结构体成员](./06_Declarations.md#declarations) [结构体成员集](./06_Declarations.md#declarations) 可选 +> *结构体成员集* → [结构体成员](./06_Declarations.md#declarations) [结构体成员集](./06_Declarations.md#declarations)可选 > > *结构体成员* → [声明集](./06_Declarations.md#declarations) | [编译控制语句](./05_Statements.md#compiler-control-statement) > @@ -233,15 +233,15 @@ > 类声明语法 > -> *类声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 **final** 可选 **class** [类名](./06_Declarations.md#class_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [类型继承子句](./03_Types.md#type_inheritance_clause) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [类主体](./06_Declarations.md#class_body) +> *类声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **final**可选 **class** [类名](./06_Declarations.md#class_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型继承子句](./03_Types.md#type_inheritance_clause) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [类主体](./06_Declarations.md#class_body) > -> *类声明* → [属性集](./07_Attributes.md#attributes) 可选 **final** [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 **class** [类名](./06_Declarations.md#class_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [类型继承子句](./03_Types.md#type_inheritance_clause) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [类主体](./06_Declarations.md#class_body) +> *类声明* → [属性集](./07_Attributes.md#attributes)可选 **final** [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **class** [类名](./06_Declarations.md#class_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型继承子句](./03_Types.md#type_inheritance_clause) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [类主体](./06_Declarations.md#class_body) > > *类名* → [标识符](./02_Lexical_Structure.md#identifier) > -> *类主体* → **{** [类成员集](./06_Declarations.md#declarations) 可选 **}** +> *类主体* → **{** [类成员集](./06_Declarations.md#declarations)可选 **}** > -> *类成员集* → [类成员](./06_Declarations.md#declarations) [类成员集](./06_Declarations.md#declarations) 可选 +> *类成员集* → [类成员](./06_Declarations.md#declarations) [类成员集](./06_Declarations.md#declarations)可选 > > *类成员* → [声明集](./06_Declarations.md#declarations) | [编译控制语句](./05_Statements.md#compiler-control-statement) > @@ -250,13 +250,13 @@ > 协议声明语法 > -> *协议声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 **protocol** [协议名](./06_Declarations.md#protocol_name) [类型继承子句](./03_Types.md#type_inheritance_clause) 可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [协议主体](./06_Declarations.md#protocol_body) +> *协议声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **protocol** [协议名](./06_Declarations.md#protocol_name) [类型继承子句](./03_Types.md#type_inheritance_clause)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [协议主体](./06_Declarations.md#protocol_body) > > *协议名* → [标识符](./02_Lexical_Structure.md#identifier) > -> *协议主体* → **{** [协议成员集](./06_Declarations.md#protocol_member_declarations) 可选 **}** +> *协议主体* → **{** [协议成员集](./06_Declarations.md#protocol_member_declarations)可选 **}** > -> *协议成员集* → [协议成员](./06_Declarations.md#declarations) [协议成员集](./06_Declarations.md#declarations) 可选 +> *协议成员集* → [协议成员](./06_Declarations.md#declarations) [协议成员集](./06_Declarations.md#declarations)可选 > > *协议成员* → [协议成员声明](./06_Declarations.md#declarations) | [编译控制语句](./05_Statements.md#compiler-control-statement) > @@ -284,45 +284,45 @@ > 协议方法声明语法 > -> *协议方法声明* → [函数头](./06_Declarations.md#function_head) [函数名](./06_Declarations.md#function_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [函数签名](./06_Declarations.md#function_signature) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 +> *协议方法声明* → [函数头](./06_Declarations.md#function_head) [函数名](./06_Declarations.md#function_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [函数签名](./06_Declarations.md#function_signature) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 > > 协议构造器声明语法 > -> *协议构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [参数子句](./06_Declarations.md#parameter_clause) **throws** 可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 +> *协议构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [参数子句](./06_Declarations.md#parameter_clause) **throws**可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 > -> *协议构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [参数子句](./06_Declarations.md#parameter_clause) **rethrows** [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 +> *协议构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [参数子句](./06_Declarations.md#parameter_clause) **rethrows** [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 > > 协议下标声明语法 > -> *协议下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [getter-setter 关键字块](./06_Declarations.md#getter_setter_keyword_block) +> *协议下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [getter-setter 关键字块](./06_Declarations.md#getter_setter_keyword_block) > > 协议关联类型声明语法 > -> *协议关联类型声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 **associatedtype** [类型别名](./06_Declarations.md#typealias_name) [类型继承子句](./03_Types.md#type_inheritance_clause) 可选 [类型别名赋值](./06_Declarations.md#typealias_assignment) 可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 +> *协议关联类型声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **associatedtype** [类型别名](./06_Declarations.md#typealias_name) [类型继承子句](./03_Types.md#type_inheritance_clause)可选 [类型别名赋值](./06_Declarations.md#typealias_assignment)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 > > 构造器声明语法 > -> *构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [参数子句](./06_Declarations.md#parameter_clause) **throws** 可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [构造器主体](./06_Declarations.md#initializer_body) +> *构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [参数子句](./06_Declarations.md#parameter_clause) **throws**可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [构造器主体](./06_Declarations.md#initializer_body) > -> *构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [参数子句](./06_Declarations.md#parameter_clause) **rethrows** [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [构造器主体](./06_Declarations.md#initializer_body) +> *构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [参数子句](./06_Declarations.md#parameter_clause) **rethrows** [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [构造器主体](./06_Declarations.md#initializer_body) > -> *构造器头(Head)* → [属性集](./07_Attributes.md#attributes) 可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers) 可选 **init** +> *构造器头(Head)* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers)可选 **init** > -> *构造器头(Head)* → [属性集](./07_Attributes.md#attributes) 可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers) 可选 **init ?** +> *构造器头(Head)* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers)可选 **init ?** > -> *构造器头(Head)* → [属性集](./07_Attributes.md#attributes) 可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers) 可选 **init !** +> *构造器头(Head)* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers)可选 **init !** > > *构造器主体* → [代码块](./06_Declarations.md#code_block) > @@ -331,18 +331,18 @@ > 析构器声明语法 > -> *析构器声明* → [属性集](./07_Attributes.md#attributes) 可选 **deinit** [代码块](./06_Declarations.md#code_block) +> *析构器声明* → [属性集](./07_Attributes.md#attributes)可选 **deinit** [代码块](./06_Declarations.md#code_block) > > 扩展声明语法 > -> *扩展声明* → [属性集](./07_Attributes.md#attributes) 可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) 可选 **extension** [类型标识](./03_Types.md#type_identifier) [类型继承子句](./03_Types.md#type_inheritance_clause) 可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [扩展主体](./06_Declarations.md#extension_body) +> *扩展声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **extension** [类型标识](./03_Types.md#type_identifier) [类型继承子句](./03_Types.md#type_inheritance_clause)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [扩展主体](./06_Declarations.md#extension_body) > -> *扩展主体* → **{** [扩展成员集](./06_Declarations.md#declarations) 可选 **}** +> *扩展主体* → **{** [扩展成员集](./06_Declarations.md#declarations)可选 **}** > -> *扩展成员集* → [扩展成员](./06_Declarations.md#declarations) [扩展成员集](./06_Declarations.md#declarations) 可选 +> *扩展成员集* → [扩展成员](./06_Declarations.md#declarations) [扩展成员集](./06_Declarations.md#declarations)可选 > > *扩展成员* → [声明集](./06_Declarations.md#declarations) | [编译控制语句](./05_Statements.md#compiler-control-statement) > @@ -351,15 +351,15 @@ > 下标声明语法 > -> *下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [代码块](./06_Declarations.md#code_block) +> *下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [代码块](./06_Declarations.md#code_block) > -> *下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [getter-setter 块](./06_Declarations.md#getter_setter_block) +> *下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [getter-setter 块](./06_Declarations.md#getter_setter_block) > -> *下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) 可选 [getter-setter 关键字块](./06_Declarations.md#getter_setter_keyword_block) +> *下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [getter-setter 关键字块](./06_Declarations.md#getter_setter_keyword_block) > -> *下标头(Head)* → [属性集](./07_Attributes.md#attributes) 可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers) 可选 **subscript** [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) 可选 [参数子句](./06_Declarations.md#parameter_clause) +> *下标头(Head)* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers)可选 **subscript** [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [参数子句](./06_Declarations.md#parameter_clause) > -> *下标结果(Result)* → **->** [属性集](./07_Attributes.md#attributes) 可选 [类型](./03_Types.md#type) +> *下标结果(Result)* → **->** [属性集](./07_Attributes.md#attributes)可选 [类型](./03_Types.md#type) > @@ -372,16 +372,16 @@ > > *后置运算符声明* → **postfix** **operator** [运算符](./02_Lexical_Structure.md#operator) > -> *中置运算符声明* → **infix** **operator** [运算符](./02_Lexical_Structure.md#operator) [中置运算符属性集](./06_Declarations.md#infix_operator_attributes) 可选 +> *中置运算符声明* → **infix** **operator** [运算符](./02_Lexical_Structure.md#operator) [中置运算符属性集](./06_Declarations.md#infix_operator_attributes)可选 > > *中置运算符属性集* → [优先级组名](./06_Declarations.md#precedence_group_name) > > 优先级组声明语法 > -> *优先级组声明* → **precedencegroup** [优先级组名](./06_Declarations.md#precedence_group_name) **{** [优先级组属性集](./06_Declarations.md#precedence_group_attributes) 可选 **}** +> *优先级组声明* → **precedencegroup** [优先级组名](./06_Declarations.md#precedence_group_name) **{** [优先级组属性集](./06_Declarations.md#precedence_group_attributes)可选 **}** > -> *优先级组属性集* → [优先级组属性](./06_Declarations.md#declarations) [优先级组属性集](./06_Declarations.md#declarations) 可选 +> *优先级组属性集* → [优先级组属性](./06_Declarations.md#declarations) [优先级组属性集](./06_Declarations.md#declarations)可选 > > *优先级组属性* → [优先级组关系](./06_Declarations.md#declarations) > @@ -415,7 +415,7 @@ > > *声明修饰符* → [可变性修饰符](./07_Attributes.md#mutation-modifier) > -> *声明修饰符集* → [声明修饰符](./06_Declarations.md#declaration_modifier) [声明修饰符集](./06_Declarations.md#declaration_modifiers) 可选 +> *声明修饰符集* → [声明修饰符](./06_Declarations.md#declaration_modifier) [声明修饰符集](./06_Declarations.md#declaration_modifiers)可选 > > *访问级别修饰符* → **private** | **private(set)** > @@ -434,21 +434,21 @@ > 属性语法 > -> *属性* → **@** [属性名](./07_Attributes.md#attribute_name) [属性参数子句](./07_Attributes.md#attribute_argument_clause) 可选 +> *属性* → **@** [属性名](./07_Attributes.md#attribute_name) [属性参数子句](./07_Attributes.md#attribute_argument_clause)可选 > > *属性名* → [标识符](./02_Lexical_Structure.md#identifier) > -> *属性参数子句* → **{** [平衡令牌集](./07_Attributes.md#balanced_tokens) 可选 **}** +> *属性参数子句* → **{** [平衡令牌集](./07_Attributes.md#balanced_tokens)可选 **}** > -> *属性(Attributes)集* → [属性](./07_Attributes.md#attribute) [属性集](./07_Attributes.md#attributes) 可选 +> *属性(Attributes)集* → [属性](./07_Attributes.md#attribute) [属性集](./07_Attributes.md#attributes)可选 > -> *平衡令牌集* → [平衡令牌](./07_Attributes.md#balanced_token) [平衡令牌集](./07_Attributes.md#balanced_tokens) 可选 +> *平衡令牌集* → [平衡令牌](./07_Attributes.md#balanced_token) [平衡令牌集](./07_Attributes.md#balanced_tokens)可选 > -> *平衡令牌* → **(** [平衡令牌集](./07_Attributes.md#balanced_tokens) 可选 **)** +> *平衡令牌* → **(** [平衡令牌集](./07_Attributes.md#balanced_tokens)可选 **)** > -> *平衡令牌* → **[** [平衡令牌集](./07_Attributes.md#balanced_tokens) 可选 **]** +> *平衡令牌* → **[** [平衡令牌集](./07_Attributes.md#balanced_tokens)可选 **]** > -> *平衡令牌* → **{** [平衡令牌集](./07_Attributes.md#balanced_tokens) 可选 **}** +> *平衡令牌* → **{** [平衡令牌集](./07_Attributes.md#balanced_tokens)可选 **}** > > *平衡令牌* → 任意标识符、关键字、字面量或运算符 > @@ -460,13 +460,13 @@ > 模式语法 > -> *模式* → [通配符模式](./08_Patterns.md#wildcard_pattern) [类型注解](./03_Types.md#type_annotation) 可选 +> *模式* → [通配符模式](./08_Patterns.md#wildcard_pattern) [类型注解](./03_Types.md#type_annotation)可选 > -> *模式* → [标识符模式](./08_Patterns.md#identifier_pattern) [类型注解](./03_Types.md#type_annotati Value Bindingon ) 可选 +> *模式* → [标识符模式](./08_Patterns.md#identifier_pattern) [类型注解](./03_Types.md#type_annotati Value Bindingon )可选 > > *模式* → [值绑定模式](./08_Patterns.md#value_binding_pattern) > -> *模式* → [元组模式](./08_Patterns.md#tuple_pattern) [类型注解](./03_Types.md#type_annotation) 可选 +> *模式* → [元组模式](./08_Patterns.md#tuple_pattern) [类型注解](./03_Types.md#type_annotation)可选 > > *模式* → [枚举 case 模式](./08_Patterns.md#enum_case_pattern) > @@ -502,7 +502,7 @@ > 元组模式语法 > -> *元组模式* → **(** [元组模式元素集](./08_Patterns.md#tuple_pattern_element_list) 可选 **)** +> *元组模式* → **(** [元组模式元素集](./08_Patterns.md#tuple_pattern_element_list)可选 **)** > > *元组模式元素集* → [元组模式元素](./08_Patterns.md#tuple_pattern_element) | [元组模式元素](./08_Patterns.md#tuple_pattern_element) **,** [元组模式元素集](./08_Patterns.md#tuple_pattern_element_list) > @@ -513,7 +513,7 @@ > 枚举 case 模式语法 > -> *enum-case-pattern* → [类型标识](./03_Types.md#type_identifier) 可选 **.** [枚举 case 名](./06_Declarations.md#enum_case_name) [元组模式](./08_Patterns.md#tuple_pattern) 可选 +> *enum-case-pattern* → [类型标识](./03_Types.md#type_identifier)可选 **.** [枚举 case 名](./06_Declarations.md#enum_case_name) [元组模式](./08_Patterns.md#tuple_pattern)可选 > From 37bcb2969aa16bd70f9aab5a76680d253d1827e9 Mon Sep 17 00:00:00 2001 From: Chen Jia Date: Tue, 2 Apr 2019 04:21:40 +0800 Subject: [PATCH 081/107] =?UTF-8?q?=E6=9B=B4=E6=96=B010=5FSummary=5Fof=5Ft?= =?UTF-8?q?he=5FGrammar(Satements)=20(#915)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 第三章 10_Summary_of_the_Grammar(从 Declarations 到 Generic Parameters and Arguments) * 10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments)的翻译 (#911) * Update 10_Summary_of_the_Grammar(from Lexical Structure -> Types).md. 去掉"可选"前的空格 * 更新10_Summary_of_the_Grammar(Satements),按原文顺序,追加在原10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments).md 前面并更名为10_Summary_of_the_Grammar(from Statements -> Generic Parameters and Arguments).md --- ...s -> Generic Parameters and Arguments).md} | 326 ++++++++++++++++++ 1 file changed, 326 insertions(+) rename source/chapter3/{10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments).md => 10_Summary_of_the_Grammar(from Statements -> Generic Parameters and Arguments).md} (69%) diff --git a/source/chapter3/10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments).md b/source/chapter3/10_Summary_of_the_Grammar(from Statements -> Generic Parameters and Arguments).md similarity index 69% rename from source/chapter3/10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments).md rename to source/chapter3/10_Summary_of_the_Grammar(from Statements -> Generic Parameters and Arguments).md index 6ee594a0..bb5454bf 100644 --- a/source/chapter3/10_Summary_of_the_Grammar(from Declarations -> Generic Parameters and Arguments).md +++ b/source/chapter3/10_Summary_of_the_Grammar(from Statements -> Generic Parameters and Arguments).md @@ -1,3 +1,329 @@ +## 语句 {#statements} + +> 语句语法 +> +> *语句* → [表达式](./04_Expressions.md#expression) **;**可选 +> +> *语句* → [声明](./06_Declarations.md#declaration) **;**可选 +> +> *语句* → [循环语句](./05_Statements.md#loop_statement) **;**可选 +> +> *语句* → [分支语句](./05_Statements.md#branch_statement) **;**可选 +> +> *语句* → [标签语句](./05_Statements.md#labeled_statement) **;**可选 +> +> *语句* → [控制转移语句](./05_Statements.md#control_transfer_statement) **;**可选 +> +> *语句* → [延迟语句](./05_Statements.md#defer_statement) **;**可选 +> +> *语句* → [执行语句](./05_Statements.md#do_statement) **;**可选 +> +> *语句* → [编译控制语句](./05_Statements.md#compiler_control_statement) +> +> *语句集* → [语句](./05_Statements.md#statement) [语句集](./05_Statements.md#statements)可选 +> + + + +> 循环语句语法 +> +> *循环语句* → [for-in 语句](./05_Statements.md#for_in_statement) +> +> *循环语句* → [while 语句](./05_Statements.md#wheetatype 类型 ile_statement) +> +> *循环语句* → [repeat-while 语句](./05_Statements.md#do_while_statement) +> + + + +> For-In 循环语法 +> +> *for-in 语句* → **for case**可选 [模式](./08_Patterns.md#pattern) **in** [表达式](./04_Expressions.md#expression) [where 子句](./05_Statements.md#where_clause)可选 [代码块](./06_Declarations.md#code_block) +> + + + +> While 循环语法 +> +> *while 语句* → **while** [条件集](./05_Statements.md#condition_list) [代码块](./06_Declarations.md#code_block) +> +> *条件集* → [条件](./05_Statements.md#condition) | [条件](./05_Statements.md#condition) **,** [条件集](./05_Statements.md#condition_list) +> *条件* → [表达式](./04_Expressions.md#expression) | [可用性条件](./05_Statements.md#availability_condition) | [case 条件](./05_Statements.md#case_condition) | [可选绑定条件](./05_Statements.md#optional_binding_condition) +> +> *case 条件* → **case** [模式](./08_Patterns.md#pattern) [构造器](./06_Declarations.md#initializer) +> +> *可选绑定条件* → **let** [模式](./08_Patterns.md#pattern) [构造器](./06_Declarations.md#initializer) | **var** [模式](./08_Patterns.md#pattern) [构造器](./06_Declarations.md#initializer) +> + + +> Repeat-While 语句语法 +> +*repeat-while-statement* → **repeat** [代码块](./06_Declarations.md#code_block) **while** [表达式](./04_Expressions.md#expression) + + + +> 分支语句语法 +> +> *分支语句* → [if 语句](./05_Statements.md#if_statement) +> +> *分支语句* → [guard 语句](./05_Statements.md#guard_statement) +> +> *分支语句* → [switch 语句](./05_Statements.md#switch_statement) +> + + + +> If 语句语法 +> +> *if 语句* → **if** [条件集](./05_Statements.md#condition_list) [代码块](./06_Declarations.md#code_block) [else 子句](./05_Statements.md#else_clause)可选 +> +> *else 子句* → **else** [代码块](./06_Declarations.md#code_block) | **else** [if 语句](./05_Statements.md#if_statement) +> + + +> Guard 语句语法 +> +> *guard 语句* → **guard** [条件集](./05_Statements.md#condition_list) **else** [代码块](./06_Declarations.md#code_block) +> + + + + +> Switch 语句语法 +> +> *switch 语句* → **switch** [表达式](./04_Expressions.md#expression) **{** [switch-case集](./05_Statements.md#switch_cases)可选 **}** +> +> *switch-case集* → [switch-case](./05_Statements.md#switch_case) [switch-case集](./05_Statements.md#switch_cases)可选 +> +> *switch-case* → [case 标签](./05_Statements.md#case_label) [语句集](./05_Statements.md#statements) +> +> *switch-case* → [default 标签](./05_Statements.md#default_label) [语句集](./05_Statements.md#statements) +> +> *switch-case* → [条件 switch-case](./05_Statements.md#conditional_switch_case) +> +> *case 标签* → [属性集](./07_Attributes.md#attributes)可选 **case** [case 项集](./05_Statements.md#case_item_list) **:** +> +> *case 项集* → [模式](./08_Patterns.md#pattern) [where 子句](./05_Statements.md#where_clause)可选 | [模式](./08_Patterns.md#pattern) [where 子句](./05_Statements.md#guard_clause)可选 **,** [case 项集](./05_Statements.md#case_item_list) +> +> *default 标签* → [属性集](./07_Attributes.md#attributes)可选 **default** **:** +> +> *where 子句* → **where** [where 表达式](./05_Statements.md#where_expression) +> +> *where 表达式* → [表达式](./04_Expressions.md#expression) +> +> *条件 switch-case* → [switch if 指令子句](./05_Statements.md#switch_if_directive_clause) [switch elseif 指令子句集](./05_Statements.md#switch_elseif_directive_clauses)可选 [switch else 指令子句](./05_Statements.md#switch_else_directive_clause)可选 [endif 指令](./05_Statements.md#endif_directive) +> +> *switch if 指令子句* → [if 指令](./05_Statements.md#if_directive) [编译条件](./05_Statements.md#compilation_condition) [switch-case集](./05_Statements.md#switch_cases)可选 +> +> *switch elseif 指令子句集* → [elseif 指令子句](./05_Statements.md#else_if_directive_clause) [switch elseif 指令子句集](./05_Statements.md#switch_elseif_directive_clauses)可选 +> +> *switch elseif 指令子句* → [elseif 指令](./05_Statements.md#elseif_directive) [编译条件](./05_Statements.md#compilation_condition) [switch-case集](./05_Statements.md#switch_cases)可选 +> +> *switch else 指令子句* → [else 指令](./05_Statements.md#else_directive) [switch-case集](./05_Statements.md#switch_cases)可选 +> + + + +> 标签语句语法 +> +> *标签语句* → [语句标签](./05_Statements.md#statement_label) [循环语句](./05_Statements.md#loop_statement) +> +> *标签语句* → [语句标签](./05_Statements.md#statement_label) [if 语句](./05_Statements.md#if_statement) +> +> *标签语句* → [语句标签](./05_Statements.md#statement_label) [switch 语句](./05_Statements.md#switch_statement) +> +> *标签语句* → [语句标签](./05_Statements.md#statement_label) [do 语句](./05_Statements.md#do_statement) +> +> *语句标签* → [标签名称](./05_Statements.md#label_name) **:** +> +> *标签名称* → [标识符](./02_Lexical_Structure.md#identifier) +> + + + +> 控制转移语句语法 +> +> *控制转移语句* → [break 语句](./05_Statements.md#break_statement) +> +> *控制转移语句* → [continue 语句](./05_Statements.md#continue_statement) +> +> *控制转移语句* → [fallthrough 语句](./05_Statements.md#fallthrough_statement) +> +> *控制转移语句* → [return 语句](./05_Statements.md#return_statement) +> +> *控制转移语句* → [throw 语句](./05_Statements.md#throw_statement) +> + + + +> Break 语句语法 +> +> *break 语句* → **break** [标签名称](./05_Statements.md#label_name)可选 +> + + + +> Continue 语句语法 +> +> *continue 语句* → **continue** [标签名称](./05_Statements.md#label_name)可选 +> + + + +> Fallthrough 语句语法 +> +> *fallthrough 语句* → **fallthrough** +> + + + +> Return 语句语法 +> +> *return 语句* → **return** [表达式](./04_Expressions.md#expression)可选 +> + + + +> Throw 语句语法 +> +> *throw 语句* → **throw** [表达式](./04_Expressions.md#expression) +> + + + +> Defer 语句语法 +> +> *defer 语句* → **defer** [代码块](./06_Declarations.md#code_block) +> + + +> Do 语句语法 +> +> *do 语句* → **do** [代码块](./06_Declarations.md#code_block) [catch 子句集](./05_Statements.md#catch_clauses)可选 +> +> *catch 子句集* → [catch 子句](./05_Statements.md#catch_clause) [catch 子句集](05_Statements.md#catch_clauses)可选 +> +> *catch 子句* → **catch** [模式](./08_Patterns.md#pattern)可选 [where 子句](./05_Statements.md#where_clause)可选 [代码块](./06_Declarations.md#code_block)可选 +> + + +> 编译控制语句 +> +> *编译控制语句* → [条件编译块](./05_Statements.md#conditional_complation_block) +> +> *编译控制语句* → [行控制语句](./05_Statements.md#line_control_statement) +> +> *编译控制语句* → [诊断语句](./05_Statements.md#diagnostic_statement) +> + + +> 条件编译块语法 +> +> *条件编译块* → [if 指令子句](./05_Statements.md#if_directive_clause) [elseif 指令子句集](./05_Statements.md#elseif_directive_clauses)可选 [else 指令子句](./05_Statements.md#else_directive_clause)可选 [endif 指令](./05_Statements.md#endif_directive) +> +> *if 指令子句* → [if 指令](./05_Statements.md#if_directive) [编译条件](./05_Statements.md#compilation_condition) [语句集](./05_Statements.md#statements)可选 +> +> *elseif 指令子句集* → [elseif 指令子句](./05_Statements.md#else_if_directive_clause) [elseif 指令子句集](./05_Statements.md#elseif_directive_clauses)可选 +> +> *elseif 指令子句* → [elseif 指令](./05_Statements.md#elseif_directive) [编译条件](./05_Statements.md#compilation_condition) [语句集](./05_Statements.md#statements)可选 +> +> *else 指令子句* → [else 指令](./05_Statements.md#else_directive) [语句集](./05_Statements.md#statements)可选 +> +> *if 指令* → **#if** +> +> *elseif 指令* → **#elseif** +> +> *else 指令* → **#else** +> +> *endif 指令* → **#endif** +> +> *编译条件* → [平台条件](./05_Statements.md#platform_condition) +> +> *编译条件* → [标识符](./02_Lexical_Structure.md#identifier) +> +> *编译条件* → [布尔字面量](./02_Lexical_Structure.md#boolean_literal) +> +> *编译条件* → **(** [编译条件](./05_Statements.md#compilation_condition) **)** +> +> *编译条件* → **!** [编译条件](./05_Statements.md#compilation_condition) +> +> *编译条件* → [编译条件](./05_Statements.md#compilation_condition) **&&** [编译条件](./05_Statements.md#compilation_condition) +> +> *编译条件* → [编译条件](./05_Statements.md#compilation_condition) **||** [编译条件](./05_Statements.md#compilation_condition) +> +> *平台条件* → **os** **(** [操作系统](./05_Statements.md#operating_system) **)** +> +> *平台条件* → **arch** **(** [架构](./05_Statements.md#architecture) **)** +> +> *平台条件* → **swift** **(** **>=** [swift 版本](./05_Statements.md#swift_version) **)** | **swift** **(** **<** [swift 版本](./05_Statements.md#swift_version) **)** +> +> *平台条件* → **compiler** **(** **>=** [swift 版本](./05_Statements.md#swift_version) **)** | **compiler** **(** **<** [swift 版本](./05_Statements.md#swift_version) **)** +> +> *平台条件* → **canImport** **(** [模块名](./05_Statements.md#module_name) **)** +> +> *平台条件* → **targetEnvironment** **(** [环境](./05_Statements.md#environment) **)** +> +> *操作系统* → **macOS** | **iOS** | **watchOS** | **tvOS** +> +> *架构* → **i386** | **x86_64** | **arm** | **arm64** +> +> *swift 版本* → [十进制数字集](./02_Lexical_Structure.md#decimal_digits) [swift 版本后缀](./05_Statements.md#swift_version_continuation)可选 +> +> *swift 版本后缀* → **.** [十进制数字集](./02_Lexical_Structure.md#decimal_digits) [swift 版本集](./05_Statements.md#swift_version_continuation)可选 +> +> *模块名* → [标识符](./02_Lexical_Structure.md#identifier) +> +> *环境* → **simulator** +> + + +> 行控制语句语法 +> +> *行控制语句* → **#sourceLocation** **(** **file:** [文件名](./05_Statements.md#file_name) **,** **line:** [行号](./05_Statements.md#line_number) **)** +> +> *行控制语句* → **#sourceLocation** **(** **)** +> +> *行号* → 一个大于 0 的十进制数字 +> +> *文件名* → [静态字符串字面量](./02_Lexical_Structure.md#static_string_literal) +> + + +> 编译期诊断语句语法 +> +> *诊断语句* → **#error** **(** [诊断信息](./05_Statements.md#diagnostic_message) **)** +> +> *诊断语句* → **#warning** **(** [诊断信息](./05_Statements.md#diagnostic_message) **)** +> +> *诊断信息* → [静态字符串字面量](./02_Lexical_Structure.md#static_string_literal) +> + + +> 可用性条件语法 +> +> *可用性条件* → **#available** **(** [可用性参数集](./05_Statements.md#availability_arguments) **)** +> +> *可用性参数集* → [可用性参数](./05_Statements.md#availability_argument) | [可用性参数](./05_Statements.md#availability_argument) , [可用性参数集)](./05_Statements.md#availability_arguments) +> +> *可用性参数* → [平台名](./05_Statements.md#platform_name) [平台版本](./05_Statements.md#platform_version) +> +> *可用性参数* → **\*** +> +> *平台名* → **iOS** | **iOSApplicationExtension** +> +> *平台名* → **macOS** | **macOSApplicationExtension** +> +> *平台名* → **watchOS** +> +> *平台名* → **tvOS** +> +> *平台版本* → [十进制数字集](./02_Lexical_Structure.md#decimal_digits) +> +> *平台版本* → [十进制数字集](./02_Lexical_Structure.md#decimal_digits) **.** [十进制数字集](./02_Lexical_Structure.md#decimal_digits) +> +> *平台版本* → [十进制数字集](./02_Lexical_Structure.md#decimal_digits) **.** [十进制数字集](./02_Lexical_Structure.md#decimal_digits) **.** [十进制数字集](./02_Lexical_Structure.md#decimal_digits) +> + ## 声明 {#declarations} > 声明语法 From 75e3d9d98d3c63f25e5aaf5c51c1d30517ef93f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B0=B4=E6=B0=B4?= Date: Tue, 2 Apr 2019 21:50:41 +0800 Subject: [PATCH 082/107] =?UTF-8?q?=E5=B7=B2=E5=AE=8C=E6=88=90=20Chapter3?= =?UTF-8?q?=20Expressions=20=E5=89=8D=E5=8D=8A=E9=83=A8=E5=88=86=20(#914)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 已完成 Chapter3 Expressions 前半部分 * 已完成 Chapter3 Expressions 部分 --- ...Grammar(from Expressions -> Statements).md | 339 ++++++++++++++++++ 1 file changed, 339 insertions(+) create mode 100644 source/chapter3/10_Summary_of_Grammar(from Expressions -> Statements).md diff --git a/source/chapter3/10_Summary_of_Grammar(from Expressions -> Statements).md b/source/chapter3/10_Summary_of_Grammar(from Expressions -> Statements).md new file mode 100644 index 00000000..5fcff3ef --- /dev/null +++ b/source/chapter3/10_Summary_of_Grammar(from Expressions -> Statements).md @@ -0,0 +1,339 @@ +## 表达式 {#expressions} + +> 表达式语法 +> +> *表达式* → [try 运算符](./04_Expressions.md#try-operator)可选 [前缀表达式](./04_Expressions.md#prefix-expression) [二元表达式列表](./04_Expressions.md#binary-expressions) +> +> *表达式列表* → [表达式](./04_Expressions.md#expression)|[表达式](./04_Expressions.md#expression), [表达式列表](./04_Expressions.md#expression-list) +> + + + +> 前缀表达式语法 +> +> *前缀表达式* → [前缀操作符]()可选 [前缀表达式](./04_Expressions.md#prefix-expression) +> +> *前缀表达式* → [输入输出表达式](./04_Expressions.md#in-out-expression) +> +> *输入输出表达式* → **&** [标识符](./02_Lexical_Structure.md#identifier) +> + + + +>try 表达式语法 +> +> *try 操作符* → **try** | **try ? ** | ** try ! ** +> + + + +> 二元表达式语法 +> +> *二元表达式* → [二元运算符](./02_Lexical_Structure.md#binary-operator) [前缀表达式](./04_Expressions.md#prefix-expression) +> +> *二元表达式* → [赋值操作符](./06_Declarations.md#class_declaration) [try 运算符](./04_Expressions.md#try_operator)可选 [前缀表达式](./04_Expressions.md#prefix-expression) +> +> *二元表达式* → [条件运算符](./04_Expressions.md#conditional-operator) [try 运算符](./04_Expressions.md#try_operator)可选 [前缀表达式](./04_Expressions.md#prefix-expression) +> +> *二元表达式* → [类型转换运算符](./04_Expressions.md#type-casting-operator) +> +> *二元表达式* → [二元表达式](./04_Expressions.md#binary-expression) [二元表达式列表](./04_Expressions.md#binary-expressions)可选 +> + + + +> 赋值操作符语法 +> +> *赋值运算符* → [=] +> + + + +> 条件运算符 +> +> *条件运算符* → [?] [表达式](./04_Expressions.md#expression): + +> 类型转换运算符语法 +> +> *类型转换运算符* → [is] [类型](./03_Types.md#type) +> +> *类型转换运算符* → [as] [类型](./03_Types.md#type) +> +> *类型转换运算符* → [as ?] [类型](./03_Types.md#type) +> +> *类型转换运算符* → [as !] [类型](./03_Types.md#type) +> + + + + +> 基础表达式语法 +> +> *基础表达式* → [标识符](./02_Lexical_Structure.md#identifier) [泛型实参子句](./09_Generic_Parameters_and_Arguments.md#generic-argument-clause)可选 +> +> *基础表达式* → [字面量表达式](./04_Expressions.md#literal-expression) +> +> *基础表达式* → [self 表达式](./04_Expressions.md#self-expression) +> +> *基础级表达式* → [父类表达式](./04_Expressions.md#superclass-expression) +> +> *基础表达式* → [闭包表达式](./04_Expressions.md#closure-expression) +> +> *基础表达式* → [圆括号表达式](./04_Expressions.md#parenthesized-expression) +> +> *基础表达式* → [元组表达式](./04_Expressions.md#Tuple_Expression) +> +> *基础表达式* → [隐式成员表达式](./04_Expressions.md#implicit-member-expression) +> +> *基础表达式* → [通配符表达式](./04_Expressions.md#wildcard-expression) +> +> *基础表达式* → [key-path表达式](./04_Expressions.md#key-path_expression) +> +> *基础表达式* → [选择器表达式](./04_Expressions.md#selector-expression) +> +> *基础表达式* → [key-path字符串表达式](./04_Expressions.md#key-patch-string-expression) +> + + + +> 字面量表达式语法 +> +> *字面量表达式* → [字面量](./04_Expressions.md#literal-expression) +> +> *字面量表达式* → [数组字面量](./04_Expressions.md#array-literal) | [字典字面量](./04_Expressions.md#dictionary-literal) | [练习场字面量](./04_Expressions.md#playground-literal) +> +> *字面量表达式* → **#file** | **#line** | **#column** | **#function** | **dsohandle** +> +> +> *数组字面量* → **[** [数组字面量项列表](./04_Expressions.md#array-literal-items)可选 **]** +> *数组字面量项列表* → [数组字面量项](./04_Expressions.md#array-literal-item)可选 | [数组字面量项](./04_Expressions.md#array-literal-item),[数组字面量项列表](./04_Expressions.md#array-literal-items) +> *数组字面量项* → [表达式](./04_Expressions.md#expression) +> +> +> *字典字面量* → [[字典字面量项列表](./04_Expressions.md#dictionary-literal-items) **]** | **[** **:** **]** +> +> +> *字典字面量项列表* → [字典字面量项](./04_Expressions.md#dictionary-literal-item) ,**可选 | [字典字面量项](./04_Expressions.md#dictionary-literal-item) ,[字典字面量项列表](./04_Expressions.md#dictionary-literal-items) +> +> *字典字面量项* → [表达式](./04_Expressions.md#expression) **:** [表达式](./04_Expressions.md#expression) +> +> +> *palyground 字面量* → **#colorLiteral ( red : [表达式](./04_Expressions.md#expression) , green :[表达式](./04_Expressions.md#expression), blue :[表达式](./04_Expressions.md#expression) , alpha : [表达式](./04_Expressions.md#expression) )** +> +> *playground 字面量* → **#fileLiteral ( resourceName : [表达式](#expression) )** +> +> *playground 字面量* → **#imageLiteral ( resourceName : [表达式](#expression) ) + + +> self 表达式语法 +> +> *self 表达式* → **self** | [self 方法表达式](./04_Expressions.md#self-method-expression) | [self 下标表达式](./04_Expressions.md#self-subscript-expression) | [self 构造器表达式](./04_Expressions.md#self-initializer-expression) +> +> +> *self 方法表达式* → **self** **.** [标识符](./02_Lexical_Structure.md#identifier) +> +> *self 下标表达式* → **self** **[** [函数调用参数表](./04_Expressions.md#function-call-argument-list­) **]** +> +> *self 构造器表达式* → **self** **.** **init** + + + +> 父类表达式语法 +> +> *父类表达式* → [父类方法表达式](./04_Expressions.md#superclass-method-expression) | [父类下标表达式](./04_Expressions.md#superclass-subscript-expression) | [父类构造器表达式](./04_Expressions.md#superclass-initializer-expression) +> +> *父类方法表达式* → **super** **.** [标识符](./02_Lexical_Structure.md#identifier) +> +> *父类下标表达式* → **super** [[函数调用参数表](./04_Expressions.md#function-call-argument-list­) **]** +> +> *父类构造器表达式* → **super** **.** **init** +> + + + + +> 闭包表达式语法 +> +> *闭包表达式* → **{** [闭包签名](./04_Expressions.md#closure-signature)可选 [语句](./04_Expressions.md#statements) **}** +> +> +> 闭包签名* → [参数子句](./04_Expressions.md#parameter-clause) [函数结果](05_Declarations.md#function-result)可选 **in** +> +> *闭包签名* → [标识符列表](./04_Expressions.md#identifier-list) [函数结果](05_Declarations.md#function-result)可选 **in** +> +> +> *闭包参数子句* **(** **)** | **(** [闭包参数列表](./04_Expressions.md#closure-parameter-list) | [标识符列表](./04_Expressions.md#identifier-list) **)** +> +> *闭包参数列表* [闭包参数](./04_Expressions.md#implicit-member-expression) | [闭包参数](./04_Expressions.md#implicit-member-expression), [闭包参数列表](./04_Expressions.md#implicit-member-expression) +> +> *闭包参数* [闭包参数名](./04_Expressions.md#implicit-member-expression) [类型声明](./03_Types.md#type-annotation) 可选 +> +> *闭包参数* [闭包参数名](./04_Expressions.md#implicit-member-expression) [类型声明](./03_Types.md#type-annotation) **...** +> +> *闭包参数名* [标识符](./02_Lexical_Structure.md#identifier) +> +> +> *捕获列表* → [捕获列表](./04_Expressions.md#capture-list) **[** [捕获列表项列表](./04_Expressions.md#capture-list-items) **]** +> +> *捕获列表项列表* → [捕获列表项](./04_Expressions.md#capture-list-item) | [捕获列表项](./04_Expressions.md#capture-list-item) **,** [捕获列表项列表](./04_Expressions.md#capture-list-items) +> +> *捕获列表项* → [捕获说明符](./04_Expressions.md#capture-specifier)可选 [*表达式*](./04_Expressions.md#expression) +> +> *捕获说明符* → **weak** | **unowned** | **unowned(safe)** | **unowned(unsafe)** +> + + + + +> 隐式成员表达式语法 +> +> *隐式成员表达式* → **.** [标识符](./02_Lexical_Structure.md#identifier) +> + + + +> 圆括号表达式语法 +> +> *圆括号表达式* → **( [表达式](./04_Expressions.md#expression) )** +> + + + +> 元组表达式语法 +> +> *元组表达式* → **( )** | **(**[元组元素](./04_Expressions.md#tuple-element), [元组元素列表](./04_Expressions.md#tuple-element-list) **)** +> +> *元组元素列表* → [元组元素](./04_Expressions.md#tuple-element) | [元组元素](./04_Expressions.md#tuple-element) **,** [元组元素列表](./04_Expressions.md#tuple-element-list) +> *元组元素* → [表达式](./04_Expressions.md#expression) | [标识符](./04_Expressions.md#identifier) **:** [表达式](./04_Expressions.md##expression) +> + + + +> 通配符表达式语法 +> +> *通配符表达式* → **_** +> + + + + +> key-path表达式语法 +> +> *key-path 表达式* → **\** [类型](./03_Types.md#type)可选 **.** [多个 key-path 组件] +> *多个 key-path 组件* → [key-path 组件](./04_Expressions.md#key-path-component) | [key-path 组件](./04_Expressions.md#key-path-component) **.** [多个 key-path 组件](./04_Expressions.md#key-path-components) +> *key-path 组件* → [标识符](./02_Lexical_Structure.md#identifier) [多个 key-path 后缀](./04_Expressions.md#key-path-postfixes)可选 | [多个 key-path 后缀](./04_Expressions.md#key-path-postfixes) +> *多个 key-path 后缀* → [key-path 后缀](./04_Expressions.md#key-path-postfix) [多个 key-path 后缀](./04_Expressions.md#key-path-postfixes)可选 key-path-postfixes {./04_Expressions.md#key-path-postfixes} +> +> *key-path 后缀* → **?** | **!** | **self** | **\[** [函数调用参数表](./04_Expressions.md#function-call-argument-list) **\]** +> + + + + +> 选择器表达式语法 +> +> *选择器表达式* → **#selector** **(** [*表达式*](./04_Expressions.md#expression) **)** +> +> *选择器表达式* → **#selector** **(** [*getter:表达式*](./04_Expressions.md#expression) **)** +> +> *选择器表达式* → **#selector** **(** [*setter:表达式*](./04_Expressions.md#expression) **)** +> + + + +> key-path 字符串表达式语法 +> *key-path 字符串表达式* → **#keyPath (** [表达式](./04_Expressions.md#expression) **)** +> + + + +> 后缀表达式表达式语法 +> +> *后缀表达式* → [基本表达式](./04_Expressions.md#primary-expression) +> +> *后缀表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) [后缀运算符](02_Lexical_Structure.md#postfix-operator) +> +> *后缀表达式* → [函数调用表达式](./04_Expressions.md#function-call-expression) +> +> *后缀表达式* → [构造器表达式](./04_Expressions.md#initializer-expression) +> +> *后缀表达式* → [显式成员表达式](./04_Expressions.md#explicit-member-expression) +> +> *后缀表达式* → [后缀 self 表达式](./04_Expressions.md#postfix-self-expression) +> +> *后缀表达式* → [下标表达式](./04_Expressions.md#subscript-expression) +> +> *后缀表达式* → [强制取值表达式](./04_Expressions.md#forced-value-expression) +> +> *后缀表达式* → [可选链表达式](./04_Expressions.md#optional-chaining-expression) +> + + + +> 函数调用表达式语法 +> +> *函数调用表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) [函数调用参数子句](./04_Expressions.md#function-call-argument-clause) +> +> *函数调用表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) [函数调用参数子句](./04_Expressions.md#function-call-argument-clause)可选 [尾随闭包](./04_Expressions.md#trailing-closure) +> +> *函数调用参数子句* → **(** **)** | **(** [函数调用参数表](./04_Expressions.md#function-call-argument-list) **)** +> +> *函数调用参数表* → [函数调用参数](./04_Expressions.md#function-call-argument) | [函数调用参数](./04_Expressions.md#function-call-argument) **,** [函数调用参数表](./04_Expressions.md#function-call-argument-list) +> +> *函数调用参数* → [表达式](./04_Expressions.md#expression) | [标识符](02_Lexical_Structure.md#identifier) **:** [表达式](./04_Expressions.md#expression) +> +> *函数调用参数* → [运算符](./02_Lexical_Structure.md#operator) | [标识符](./02_Lexical_Structure.md#identifier) **:** [运算符](./02_Lexical_Structure.md#operator) +> +> *尾随闭包* → [闭包表达式](./04_Expressions.md#closure-expression) +> + + + +> 初始化表达式语法 +> +> *构造器表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **.** **init** +> +> *构造器表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **.** **init** **(** [参数名称](./04_Expressions.md#argument-names) **)** +> + + + +> 显式成员表达式语法 +> +> *显式成员表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **.** [十进制数字] (02_Lexical_Structure.md#decimal-digit) +> +> *显式成员表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **.** [标识符](02_Lexical_Structure.md#identifier) [泛型实参子句](./09_Generic_Parameters_and_Arguments.md#generic-argument-clause)可选
+> +> *显式成员表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **.** [标识符] (02_Lexical_Structure.md#identifier) **(** [参数名称](./04_Expressions.md#argument-names) **)** +> +> *参数名称* → [参数名](./04_Expressions.md#argument-name) [参数名称](./04_Expressions.md#argument-names)可选
+> +> *参数名* → [标识符](./02_Lexical_Structure.md#identifier) **:** +> + + + +> 后缀 self 表达式语法 +> +> *后缀 self 表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **.** **self** +> + + + +> 下标表达式语法 +> +> *下标表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **[** [表达式列表](./04_Expressions.md#expression-list) **]** +> + + + +> 强制取值表达式语法 +> *强制取值表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **!** +> + + + + +> 可选链式表达式语法 +> *可选链表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **?** +> From 8c866e4435d32ff539d6d824d17f6e84959d5257 Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Tue, 2 Apr 2019 09:08:59 -0500 Subject: [PATCH 083/107] combine chapter3 article 10 --- ...Grammar(from Expressions -> Statements).md | 339 ---- ...rammar(from Lexical Structure -> Types).md | 427 ---- ...ts -> Generic Parameters and Arguments).md | 895 --------- source/chapter3/10_Summary_of_the_Grammar.md | 1739 ++++++++++++----- 4 files changed, 1278 insertions(+), 2122 deletions(-) delete mode 100644 source/chapter3/10_Summary_of_Grammar(from Expressions -> Statements).md delete mode 100644 source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md delete mode 100644 source/chapter3/10_Summary_of_the_Grammar(from Statements -> Generic Parameters and Arguments).md diff --git a/source/chapter3/10_Summary_of_Grammar(from Expressions -> Statements).md b/source/chapter3/10_Summary_of_Grammar(from Expressions -> Statements).md deleted file mode 100644 index 5fcff3ef..00000000 --- a/source/chapter3/10_Summary_of_Grammar(from Expressions -> Statements).md +++ /dev/null @@ -1,339 +0,0 @@ -## 表达式 {#expressions} - -> 表达式语法 -> -> *表达式* → [try 运算符](./04_Expressions.md#try-operator)可选 [前缀表达式](./04_Expressions.md#prefix-expression) [二元表达式列表](./04_Expressions.md#binary-expressions) -> -> *表达式列表* → [表达式](./04_Expressions.md#expression)|[表达式](./04_Expressions.md#expression), [表达式列表](./04_Expressions.md#expression-list) -> - - - -> 前缀表达式语法 -> -> *前缀表达式* → [前缀操作符]()可选 [前缀表达式](./04_Expressions.md#prefix-expression) -> -> *前缀表达式* → [输入输出表达式](./04_Expressions.md#in-out-expression) -> -> *输入输出表达式* → **&** [标识符](./02_Lexical_Structure.md#identifier) -> - - - ->try 表达式语法 -> -> *try 操作符* → **try** | **try ? ** | ** try ! ** -> - - - -> 二元表达式语法 -> -> *二元表达式* → [二元运算符](./02_Lexical_Structure.md#binary-operator) [前缀表达式](./04_Expressions.md#prefix-expression) -> -> *二元表达式* → [赋值操作符](./06_Declarations.md#class_declaration) [try 运算符](./04_Expressions.md#try_operator)可选 [前缀表达式](./04_Expressions.md#prefix-expression) -> -> *二元表达式* → [条件运算符](./04_Expressions.md#conditional-operator) [try 运算符](./04_Expressions.md#try_operator)可选 [前缀表达式](./04_Expressions.md#prefix-expression) -> -> *二元表达式* → [类型转换运算符](./04_Expressions.md#type-casting-operator) -> -> *二元表达式* → [二元表达式](./04_Expressions.md#binary-expression) [二元表达式列表](./04_Expressions.md#binary-expressions)可选 -> - - - -> 赋值操作符语法 -> -> *赋值运算符* → [=] -> - - - -> 条件运算符 -> -> *条件运算符* → [?] [表达式](./04_Expressions.md#expression): - -> 类型转换运算符语法 -> -> *类型转换运算符* → [is] [类型](./03_Types.md#type) -> -> *类型转换运算符* → [as] [类型](./03_Types.md#type) -> -> *类型转换运算符* → [as ?] [类型](./03_Types.md#type) -> -> *类型转换运算符* → [as !] [类型](./03_Types.md#type) -> - - - - -> 基础表达式语法 -> -> *基础表达式* → [标识符](./02_Lexical_Structure.md#identifier) [泛型实参子句](./09_Generic_Parameters_and_Arguments.md#generic-argument-clause)可选 -> -> *基础表达式* → [字面量表达式](./04_Expressions.md#literal-expression) -> -> *基础表达式* → [self 表达式](./04_Expressions.md#self-expression) -> -> *基础级表达式* → [父类表达式](./04_Expressions.md#superclass-expression) -> -> *基础表达式* → [闭包表达式](./04_Expressions.md#closure-expression) -> -> *基础表达式* → [圆括号表达式](./04_Expressions.md#parenthesized-expression) -> -> *基础表达式* → [元组表达式](./04_Expressions.md#Tuple_Expression) -> -> *基础表达式* → [隐式成员表达式](./04_Expressions.md#implicit-member-expression) -> -> *基础表达式* → [通配符表达式](./04_Expressions.md#wildcard-expression) -> -> *基础表达式* → [key-path表达式](./04_Expressions.md#key-path_expression) -> -> *基础表达式* → [选择器表达式](./04_Expressions.md#selector-expression) -> -> *基础表达式* → [key-path字符串表达式](./04_Expressions.md#key-patch-string-expression) -> - - - -> 字面量表达式语法 -> -> *字面量表达式* → [字面量](./04_Expressions.md#literal-expression) -> -> *字面量表达式* → [数组字面量](./04_Expressions.md#array-literal) | [字典字面量](./04_Expressions.md#dictionary-literal) | [练习场字面量](./04_Expressions.md#playground-literal) -> -> *字面量表达式* → **#file** | **#line** | **#column** | **#function** | **dsohandle** -> -> -> *数组字面量* → **[** [数组字面量项列表](./04_Expressions.md#array-literal-items)可选 **]** -> *数组字面量项列表* → [数组字面量项](./04_Expressions.md#array-literal-item)可选 | [数组字面量项](./04_Expressions.md#array-literal-item),[数组字面量项列表](./04_Expressions.md#array-literal-items) -> *数组字面量项* → [表达式](./04_Expressions.md#expression) -> -> -> *字典字面量* → [[字典字面量项列表](./04_Expressions.md#dictionary-literal-items) **]** | **[** **:** **]** -> -> -> *字典字面量项列表* → [字典字面量项](./04_Expressions.md#dictionary-literal-item) ,**可选 | [字典字面量项](./04_Expressions.md#dictionary-literal-item) ,[字典字面量项列表](./04_Expressions.md#dictionary-literal-items) -> -> *字典字面量项* → [表达式](./04_Expressions.md#expression) **:** [表达式](./04_Expressions.md#expression) -> -> -> *palyground 字面量* → **#colorLiteral ( red : [表达式](./04_Expressions.md#expression) , green :[表达式](./04_Expressions.md#expression), blue :[表达式](./04_Expressions.md#expression) , alpha : [表达式](./04_Expressions.md#expression) )** -> -> *playground 字面量* → **#fileLiteral ( resourceName : [表达式](#expression) )** -> -> *playground 字面量* → **#imageLiteral ( resourceName : [表达式](#expression) ) - - -> self 表达式语法 -> -> *self 表达式* → **self** | [self 方法表达式](./04_Expressions.md#self-method-expression) | [self 下标表达式](./04_Expressions.md#self-subscript-expression) | [self 构造器表达式](./04_Expressions.md#self-initializer-expression) -> -> -> *self 方法表达式* → **self** **.** [标识符](./02_Lexical_Structure.md#identifier) -> -> *self 下标表达式* → **self** **[** [函数调用参数表](./04_Expressions.md#function-call-argument-list­) **]** -> -> *self 构造器表达式* → **self** **.** **init** - - - -> 父类表达式语法 -> -> *父类表达式* → [父类方法表达式](./04_Expressions.md#superclass-method-expression) | [父类下标表达式](./04_Expressions.md#superclass-subscript-expression) | [父类构造器表达式](./04_Expressions.md#superclass-initializer-expression) -> -> *父类方法表达式* → **super** **.** [标识符](./02_Lexical_Structure.md#identifier) -> -> *父类下标表达式* → **super** [[函数调用参数表](./04_Expressions.md#function-call-argument-list­) **]** -> -> *父类构造器表达式* → **super** **.** **init** -> - - - - -> 闭包表达式语法 -> -> *闭包表达式* → **{** [闭包签名](./04_Expressions.md#closure-signature)可选 [语句](./04_Expressions.md#statements) **}** -> -> -> 闭包签名* → [参数子句](./04_Expressions.md#parameter-clause) [函数结果](05_Declarations.md#function-result)可选 **in** -> -> *闭包签名* → [标识符列表](./04_Expressions.md#identifier-list) [函数结果](05_Declarations.md#function-result)可选 **in** -> -> -> *闭包参数子句* **(** **)** | **(** [闭包参数列表](./04_Expressions.md#closure-parameter-list) | [标识符列表](./04_Expressions.md#identifier-list) **)** -> -> *闭包参数列表* [闭包参数](./04_Expressions.md#implicit-member-expression) | [闭包参数](./04_Expressions.md#implicit-member-expression), [闭包参数列表](./04_Expressions.md#implicit-member-expression) -> -> *闭包参数* [闭包参数名](./04_Expressions.md#implicit-member-expression) [类型声明](./03_Types.md#type-annotation) 可选 -> -> *闭包参数* [闭包参数名](./04_Expressions.md#implicit-member-expression) [类型声明](./03_Types.md#type-annotation) **...** -> -> *闭包参数名* [标识符](./02_Lexical_Structure.md#identifier) -> -> -> *捕获列表* → [捕获列表](./04_Expressions.md#capture-list) **[** [捕获列表项列表](./04_Expressions.md#capture-list-items) **]** -> -> *捕获列表项列表* → [捕获列表项](./04_Expressions.md#capture-list-item) | [捕获列表项](./04_Expressions.md#capture-list-item) **,** [捕获列表项列表](./04_Expressions.md#capture-list-items) -> -> *捕获列表项* → [捕获说明符](./04_Expressions.md#capture-specifier)可选 [*表达式*](./04_Expressions.md#expression) -> -> *捕获说明符* → **weak** | **unowned** | **unowned(safe)** | **unowned(unsafe)** -> - - - - -> 隐式成员表达式语法 -> -> *隐式成员表达式* → **.** [标识符](./02_Lexical_Structure.md#identifier) -> - - - -> 圆括号表达式语法 -> -> *圆括号表达式* → **( [表达式](./04_Expressions.md#expression) )** -> - - - -> 元组表达式语法 -> -> *元组表达式* → **( )** | **(**[元组元素](./04_Expressions.md#tuple-element), [元组元素列表](./04_Expressions.md#tuple-element-list) **)** -> -> *元组元素列表* → [元组元素](./04_Expressions.md#tuple-element) | [元组元素](./04_Expressions.md#tuple-element) **,** [元组元素列表](./04_Expressions.md#tuple-element-list) -> *元组元素* → [表达式](./04_Expressions.md#expression) | [标识符](./04_Expressions.md#identifier) **:** [表达式](./04_Expressions.md##expression) -> - - - -> 通配符表达式语法 -> -> *通配符表达式* → **_** -> - - - - -> key-path表达式语法 -> -> *key-path 表达式* → **\** [类型](./03_Types.md#type)可选 **.** [多个 key-path 组件] -> *多个 key-path 组件* → [key-path 组件](./04_Expressions.md#key-path-component) | [key-path 组件](./04_Expressions.md#key-path-component) **.** [多个 key-path 组件](./04_Expressions.md#key-path-components) -> *key-path 组件* → [标识符](./02_Lexical_Structure.md#identifier) [多个 key-path 后缀](./04_Expressions.md#key-path-postfixes)可选 | [多个 key-path 后缀](./04_Expressions.md#key-path-postfixes) -> *多个 key-path 后缀* → [key-path 后缀](./04_Expressions.md#key-path-postfix) [多个 key-path 后缀](./04_Expressions.md#key-path-postfixes)可选 key-path-postfixes {./04_Expressions.md#key-path-postfixes} -> -> *key-path 后缀* → **?** | **!** | **self** | **\[** [函数调用参数表](./04_Expressions.md#function-call-argument-list) **\]** -> - - - - -> 选择器表达式语法 -> -> *选择器表达式* → **#selector** **(** [*表达式*](./04_Expressions.md#expression) **)** -> -> *选择器表达式* → **#selector** **(** [*getter:表达式*](./04_Expressions.md#expression) **)** -> -> *选择器表达式* → **#selector** **(** [*setter:表达式*](./04_Expressions.md#expression) **)** -> - - - -> key-path 字符串表达式语法 -> *key-path 字符串表达式* → **#keyPath (** [表达式](./04_Expressions.md#expression) **)** -> - - - -> 后缀表达式表达式语法 -> -> *后缀表达式* → [基本表达式](./04_Expressions.md#primary-expression) -> -> *后缀表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) [后缀运算符](02_Lexical_Structure.md#postfix-operator) -> -> *后缀表达式* → [函数调用表达式](./04_Expressions.md#function-call-expression) -> -> *后缀表达式* → [构造器表达式](./04_Expressions.md#initializer-expression) -> -> *后缀表达式* → [显式成员表达式](./04_Expressions.md#explicit-member-expression) -> -> *后缀表达式* → [后缀 self 表达式](./04_Expressions.md#postfix-self-expression) -> -> *后缀表达式* → [下标表达式](./04_Expressions.md#subscript-expression) -> -> *后缀表达式* → [强制取值表达式](./04_Expressions.md#forced-value-expression) -> -> *后缀表达式* → [可选链表达式](./04_Expressions.md#optional-chaining-expression) -> - - - -> 函数调用表达式语法 -> -> *函数调用表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) [函数调用参数子句](./04_Expressions.md#function-call-argument-clause) -> -> *函数调用表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) [函数调用参数子句](./04_Expressions.md#function-call-argument-clause)可选 [尾随闭包](./04_Expressions.md#trailing-closure) -> -> *函数调用参数子句* → **(** **)** | **(** [函数调用参数表](./04_Expressions.md#function-call-argument-list) **)** -> -> *函数调用参数表* → [函数调用参数](./04_Expressions.md#function-call-argument) | [函数调用参数](./04_Expressions.md#function-call-argument) **,** [函数调用参数表](./04_Expressions.md#function-call-argument-list) -> -> *函数调用参数* → [表达式](./04_Expressions.md#expression) | [标识符](02_Lexical_Structure.md#identifier) **:** [表达式](./04_Expressions.md#expression) -> -> *函数调用参数* → [运算符](./02_Lexical_Structure.md#operator) | [标识符](./02_Lexical_Structure.md#identifier) **:** [运算符](./02_Lexical_Structure.md#operator) -> -> *尾随闭包* → [闭包表达式](./04_Expressions.md#closure-expression) -> - - - -> 初始化表达式语法 -> -> *构造器表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **.** **init** -> -> *构造器表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **.** **init** **(** [参数名称](./04_Expressions.md#argument-names) **)** -> - - - -> 显式成员表达式语法 -> -> *显式成员表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **.** [十进制数字] (02_Lexical_Structure.md#decimal-digit) -> -> *显式成员表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **.** [标识符](02_Lexical_Structure.md#identifier) [泛型实参子句](./09_Generic_Parameters_and_Arguments.md#generic-argument-clause)可选
-> -> *显式成员表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **.** [标识符] (02_Lexical_Structure.md#identifier) **(** [参数名称](./04_Expressions.md#argument-names) **)** -> -> *参数名称* → [参数名](./04_Expressions.md#argument-name) [参数名称](./04_Expressions.md#argument-names)可选
-> -> *参数名* → [标识符](./02_Lexical_Structure.md#identifier) **:** -> - - - -> 后缀 self 表达式语法 -> -> *后缀 self 表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **.** **self** -> - - - -> 下标表达式语法 -> -> *下标表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **[** [表达式列表](./04_Expressions.md#expression-list) **]** -> - - - -> 强制取值表达式语法 -> *强制取值表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **!** -> - - - - -> 可选链式表达式语法 -> *可选链表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **?** -> diff --git a/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md b/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md deleted file mode 100644 index 7f335cf8..00000000 --- a/source/chapter3/10_Summary_of_the_Grammar(from Lexical Structure -> Types).md +++ /dev/null @@ -1,427 +0,0 @@ -# 语法总结(Summary of the Grammar) - -## 词法结构 {#lexical_structure} - -> 空白字符语法 -> -> *空白字符* → [空白字符项](./02_Lexical_Structure.md#whitespace-item) [空白字符](./02_Lexical_Structure.md#whitespace)可选 -> -> *空白字符项* → [换行符](./02_Lexical_Structure.md#line-break) -> -> *空白字符项* → [注释](./02_Lexical_Structure.md#comment) -> -> *空白字符项* → [多行注释](./02_Lexical_Structure.md#multiline-comment) -> -> *空白字符项* → U+0000,U+0009,U+000B,U+000C 或 U+0020 -> -> -> -> 换行符* → U+000A -> -> *换行符* → U+000D -> -> *换行符* → U+000D 后面是 U+000A -> -> *注释* → **//** [单行内容注释](./02_Lexical_Structure.md#comment-text) [换行符](./02_Lexical_Structure.md#line-break) -> -> *注释* → **/\*** [多行内容注释](./02_Lexical_Structure.md#multiline-comment-text) **\*/** -> -> -> -> *注释内容* → [注释内容项](./02_Lexical_Structure.md#comment-text-item) [注释内容](./02_Lexical_Structure.md#comment-text)可选 -> -> *注释内容项* → 除 U+000A 或 U+000D 外的任何 Unicode 标量值 -> -> -> -> *多行注释内容* → [多行注释内容项](./02_Lexical_Structure.md#multiline-comment-text-item) [多行注释内容](./02_Lexical_Structure.md#multiline-comment-text)可选 -> -> *多行注释内容项* → [多行内容](./02_Lexical_Structure.md#multiline-comment) -> -> *多行注释内容项* → [注释内容项](./02_Lexical_Structure.md#comment-text-item) -> -> *多行注释内容项* → 除 **/\*** 或 **\*/** 外的任何 Unicode 标量值 -> - - - -> 标识符语法 -> -> *标识符* → [标识符头(Head)](./02_Lexical_Structure.md#identifier_head) [标识符字符集](./02_Lexical_Structure.md#identifier_characters)可选 -> -> *标识符* → [标识符头(Head)](./02_Lexical_Structure.md#identifier_head) [标识符字符集](./02_Lexical_Structure.md#identifier_characters)可选 -> -> *标识符* → [隐式参数名](./02_Lexical_Structure.md#implicit_parameter_name) -> -> *标识符集* → [标识符](./02_Lexical_Structure.md#identifier) | [标识符](./02_Lexical_Structure.md#identifier) **,** [标识符集](./02_Lexical_Structure.md#identifier_list) -> -> *标识符头(Head)* → 大写或者小写字母 A 到 Z -> -> *标识符头(Head)* → _ -> -> *标识符头(Head)* → U+00A8, U+00AA, U+00AD, U+00AF, U+00B2–U+00B5, or U+00B7–U+00BA -> -> *标识符头(Head)* → U+00BC–U+00BE, U+00C0–U+00D6, U+00D8–U+00F6, or U+00F8–U+00FF -> -> *标识符头(Head)* → U+0100–U+02FF, U+0370–U+167F, U+1681–U+180D, or U+180F–U+1DBF -> -> *标识符头(Head)* → U+1E00–U+1FFF -> -> *标识符头(Head)* → U+200B–U+200D, U+202A–U+202E, U+203F–U+2040, U+2054, or U+2060–U+206F -> -> *标识符头(Head)* → U+2070–U+20CF, U+2100–U+218F, U+2460–U+24FF, or U+2776–U+2793 -> -> *标识符头(Head)* → U+2C00–U+2DFF or U+2E80–U+2FFF -> -> *标识符头(Head)* → U+3004–U+3007, U+3021–U+302F, U+3031–U+303F, or U+3040–U+D7FF -> -> *标识符头(Head)* → U+F900–U+FD3D, U+FD40–U+FDCF, U+FDF0–U+FE1F, or U+FE30–U+FE44 -> -> *标识符头(Head)* → U+FE47–U+FFFD -> -> *标识符头(Head)* → U+10000–U+1FFFD, U+20000–U+2FFFD, U+30000–U+3FFFD, or U+40000–U+4FFFD -> -> *标识符头(Head)* → U+50000–U+5FFFD, U+60000–U+6FFFD, U+70000–U+7FFFD, or U+80000–U+8FFFD -> -> *标识符头(Head)* → U+90000–U+9FFFD, U+A0000–U+AFFFD, U+B0000–U+BFFFD, or U+C0000–U+CFFFD -> -> *标识符头(Head)* → U+D0000–U+DFFFD or U+E0000–U+EFFFD -> -> *标识符字符* → 数值 0 到 9 -> -> *标识符字符* → U+0300–U+036F, U+1DC0–U+1DFF, U+20D0–U+20FF, or U+FE20–U+FE2F -> -> *标识符字符* → [标识符头(Head)](./02_Lexical_Structure.md#identifier_head) -> -> *标识符字符集* → [标识符字符](./02_Lexical_Structure.md#identifier_character) [标识符字符集](./02_Lexical_Structure.md#identifier_characters)可选 -> -> *隐式参数名* → **$** [十进制数字集](./02_Lexical_Structure.md#decimal_digits) -> - - - -> 字面量语法 -> -> *字面量* → [数值型字面量](./02_Lexical_Structure.md#numeric-literal) | [字符串字面量](./02_Lexical_Structure.md#string-literal) | [布尔字面量](./02_Lexical_Structure.md#boolean-literal) | [空字面量](./02_Lexical_Structure.md#nil-literal) -> -> *数值型字面量* → **-**可选[整形字面量](./02_Lexical_Structure.md#integer_literal) | **-**可选[浮点型字面量](./02_Lexical_Structure.md#floating-point-literal) -> -> *布尔字面量* → **true** | **false** -> -> *空字面量* → **nil** -> - - - -> 整型字面量语法 -> -> *整型字面量* → [二进制字面量](./02_Lexical_Structure.md#binary_literal) -> -> *整型字面量* → [八进制字面量](./02_Lexical_Structure.md#octal_literal) -> -> *整型字面量* → [十进制字面量](./02_Lexical_Structure.md#decimal_literal) -> -> *整型字面量* → [十六进制字面量](./02_Lexical_Structure.md#hexadecimal_literal) -> -> *二进制字面量* → **0b** [二进制数字](./02_Lexical_Structure.md#binary_digit) [二进制字面量字符集](./02_Lexical_Structure.md#binary_literal_characters)可选 -> -> *二进制数字* → 数值 0 到 1 -> -> *二进制字面量字符* → [二进制数字](./02_Lexical_Structure.md#binary_digit) | **_** -> -> *二进制字面量字符集* → [二进制字面量字符](./02_Lexical_Structure.md#binary_literal_character) [二进制字面量字符集](./02_Lexical_Structure.md#binary_literal_characters)可选 -> -> *八进制字面量* → **0o** [八进制数字](./02_Lexical_Structure.md#octal_digit) [八进制字符集](./02_Lexical_Structure.md#octal_literal_characters)可选 -> -> *八进字数字* → 数值 0 到 7 -> -> *八进制字符* → [八进制数字](./02_Lexical_Structure.md#octal_digit) | **_** -> -> *八进制字符集* → [八进制字符](./02_Lexical_Structure.md#octal_literal_character) [八进制字符集](./02_Lexical_Structure.md#octal_literal_characters)可选 -> -> *十进制字面量* → [十进制数字](./02_Lexical_Structure.md#decimal_digit) [十进制字符集](./02_Lexical_Structure.md#decimal_literal_characters)可选 -> -> *十进制数字* → 数值 0 到 9 -> -> *十进制数字集* → [十进制数字](./02_Lexical_Structure.md#decimal_digit) [十进制数字集](./02_Lexical_Structure.md#decimal_digits)可选 -> -> *十进制字面量字符* → [十进制数字](./02_Lexical_Structure.md#decimal_digit) | **_** -> -> *十进制字面量字符集* → [十进制字面量字符](./02_Lexical_Structure.md#decimal_literal_character) [十进制字面量字符集](./02_Lexical_Structure.md#decimal_literal_characters)可选 -> -> *十六进制字面量* → **0x** [十六进制数字](./02_Lexical_Structure.md#hexadecimal_digit) [十六进制字面量字符集](./02_Lexical_Structure.md#hexadecimal_literal_characters)可选 -> -> *十六进制数字* → 数值 0 到 9,a 到 f,或者 A 到 F -> -> *十六进制字符* → [十六进制数字](./02_Lexical_Structure.md#hexadecimal_digit) | **_** -> -> *十六进制字面量字符集* → [十六进制字符](./02_Lexical_Structure.md#hexadecimal_literal_character) [十六进制字面量字符集](./02_Lexical_Structure.md#hexadecimal_literal_characters)可选 -> - - - -> 浮点型字面量语法 -> -> *浮点数字面量* → [十进制字面量](./02_Lexical_Structure.md#decimal_literal) [十进制分数](./02_Lexical_Structure.md#decimal_fraction)可选[十进制指数](./02_Lexical_Structure.md#decimal_exponent)可选 -> -> *浮点数字面量* → [十六进制字面量](./02_Lexical_Structure.md#hexadecimal_literal) [十六进制分数](./02_Lexical_Structure.md#hexadecimal_fraction)可选[十六进制指数](./02_Lexical_Structure.md#hexadecimal_exponent) -> -> *十进制分数* → **.** [十进制字面量](./02_Lexical_Structure.md#decimal_literal) -> -> *十进制指数* → [浮点数 e](./02_Lexical_Structure.md#floating_point_e) [正负号](./02_Lexical_Structure.md#sign)可选[十进制字面量](./02_Lexical_Structure.md#decimal_literal) -> -> *十六进制分数* → **.** [十六进制数](./02_Lexical_Structure.md#hexadecimal_literal) -> -> *十六进制指数* → [浮点数 p](./02_Lexical_Structure.md#floating_point_p) [正负号](./02_Lexical_Structure.md#sign)可选[十六进制字面量](./02_Lexical_Structure.md#hexadecimal_literal) -> -> *浮点数 e* → **e** | **E** -> -> *浮点数 p* → **p** | **P** -> -> *正负号* → **+** | **-** -> - - - -> 字符串型字面量语法 - -> *字符串字面量* → [静态字符串字面量](./02_Lexical_Structure.md#static-string-literal) | [插值字符串字面量](./02_Lexical_Structure.md#interpolated-string-literal) -> -> *字符串开分隔定界符* → [字符串扩展分隔符](./02_Lexical_Structure.md#extended-string-literal-delimiter) **"** -> -> *字符串闭分隔定界符* → **"** [字符串扩展分隔符](./02_Lexical_Structure.md#extended-string-literal-delimiter)可选 -> -> *静态字符串字面量* → [字符串开分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) [引用文本](./02_Lexical_Structure.md#quoted-text)可选 [字符串闭分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) -> -> *静态字符串字面量* → [多行字符串开分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) [多行引用文本](./02_Lexical_Structure.md#multiline-quoted-text)可选 [多行字符串闭分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) -> -> *多行字符串开分隔定界符* → [字符串扩展分隔符](./02_Lexical_Structure.md#extended-string-literal-delimiter) **"""** -> -> *多行字符串闭分隔定界符* → **"""** [字符串扩展分隔符](./02_Lexical_Structure.md#extended-string-literal-delimiter) -> -> *字符串扩展分隔符* → **#** [字符串扩展分隔符](./02_Lexical_Structure.md#extended-string-literal-delimiter)可选 -> -> *引用文本* → [引用文本项](./02_Lexical_Structure.md#quoted-text-item) [引用文本](#quoted-text)可选 -> -> *引用文本项* → [转义字符](./02_Lexical_Structure.md#escaped-character) -> -> *引用文本项* → 除了 **"**、**\\\**、U+000A、U+000D 以外的所有 Unicode 字符 -> -> *多行引用文本* → [多行引用文本项](./02_Lexical_Structure.md#multiline-quoted-text-item) [多行引用文本](./02_Lexical_Structure.md#multiline-quoted-text)可选 -> -> *多行引用文本项* [转义字符](./02_Lexical_Structure.md#escaped-character)可选 -> -> *多行引用文本* → 除了 **\\** 以外的任何 Unicode 标量值 -> -> *多行引用文本* → [转义换行](./02_Lexical_Structure.md#escaped-newline) - -> *插值字符串字面量* → [字符串开分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) [插值文本](./02_Lexical_Structure.md#interpolated-text)可选 [字符串闭分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) -> -> *插值字符串字面量* → [多行字符串开分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) [插值文本](./02_Lexical_Structure.md#interpolated-text)可选 [多行字符串闭分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) -> -> *插值文本* → [插值文本项](./02_Lexical_Structure.md#interpolated-text-item) [插值文本](./02_Lexical_Structure.md#interpolated-text)可选 -> -> *插值文本项* → **\\**(**[表达式](./04_Expressions.md)**) | [引用文本项](./02_Lexical_Structure.md#quoted-text-item) -> -> *多行插值文本* → [多行插值文本项](./02_Lexical_Structure.md#multiline-quoted-text-item) [多行插值文本](./02_Lexical_Structure.md#multiline-quoted-text)可选 -> -> *多行插值文本项* → **\\(** [表达式](./04_Expressions.md) **)** | [多行引用文本项](./02_Lexical_Structure.md#multiline-quoted-text-item) -> -> *转义序列* → **\\** [字符串扩展分隔符](./02_Lexical_Structure.md#extended-string-literal-delimiter) -> -> *转义字符* → [转义序列](./02_Lexical_Structure.md#escape-sequence) **0** | [转义序列](./02_Lexical_Structure.md#escape-sequence) **\\** | [转义序列](./02_Lexical_Structure.md#escape-sequence) **t** | [转义序列](#escape-sequence) **n** | [转义序列](./02_Lexical_Structure.md#escape-sequence) **r** | [转义序列](./02_Lexical_Structure.md#escape-sequence) **\"** | [转义序列](./02_Lexical_Structure.md#escape-sequence) **'** -> -> *转义字符* → [转义序列](./02_Lexical_Structure.md#escape-sequence) **u {** [unicode 标量数字](./02_Lexical_Structure.md#unicode-scalar-digits) **}** -> -> *unicode 标量数字* → 一到八位的十六进制数字 -> -> *转义换行符* → [转义序列](./02_Lexical_Structure.md#escape-sequence) [空白](./02_Lexical_Structure.md#whitespace)可选 [换行符](./02_Lexical_Structure.md#line-break) - - - - -> 运算符语法语法 -> -> *运算符* → [运算符头](./02_Lexical_Structure.md#operator_character) [运算符字符集](./02_Lexical_Structure.md#operator)可选 -> -> *运算符* → [点运算符头](./02_Lexical_Structure.md#dot-operator-head) [点运算符字符集](./02_Lexical_Structure.md#dot-operator-characters)可选 -> -> *运算符字符* → **/** | **=** | **-** | **+** | **!** | ***** | **%** | **<** | **>** | **&** | **|** | **^** | **~** | **?** -> -> *运算符头* → U+00A1–U+00A7 -> -> *运算符头* → U+00A9 or U+00AB -> -> *运算符头* → U+00AC or U+00AE -> -> *运算符头* → U+00B0–U+00B1, U+00B6, U+00BB, U+00BF, U+00D7, or U+00F7 -> -> *运算符头* → U+2016–U+2017 or U+2020–U+2027 -> -> *运算符头* → U+2030–U+203E -> -> *运算符头* → U+2041–U+2053 -> -> *运算符头* → U+2055–U+205E -> -> *运算符头* → U+2190–U+23FF -> -> *运算符头* → U+2500–U+2775 -> -> *运算符头* → U+2794–U+2BFF -> -> *运算符头* → U+2E00–U+2E7F -> -> *运算符头* → U+3001–U+3003 -> -> *运算符头* → U+3008–U+3030 -> -> *运算符字符* → [运算符头](./02_Lexical_Structure.md#operator-head) -> -> *运算符字符* → U+0300–U+036F -> -> *运算符字符* → U+1DC0–U+1DFF -> -> *运算符字符* → U+20D0–U+20FF -> -> *运算符字符* → U+FE00–U+FE0F -> -> *运算符字符* → U+FE20–U+FE2F -> -> *运算符字符* → U+E0100–U+E01EF -> -> *运算符字符集* → [运算符字符](./02_Lexical_Structure.md#operator-character) [运算符字符集](./02_Lexical_Structure.md#operator-characters)可选 -> -> *点运算符头* → **..** -> -> *点运算符字符* → **.** | [运算符字符](./02_Lexical_Structure.md#operator-character) -> -> *点运算符字符集* → [点运算符字符](./02_Lexical_Structure.md#dot-operator-character) [点运算符字符集](./02_Lexical_Structure.md#dot-operator-characters)可选 -> -> *二元运算符* → [运算符](./02_Lexical_Structure.md#operator) -> -> *前置运算符* → [运算符](./02_Lexical_Structure.md#operator) -> -> *后置运算符* → [运算符](./02_Lexical_Structure.md#operator) -> - -## 类型 {#types} - -> 类型语法 -> -> *类型* → [数组类型](./03_Types.md#array_type) -> -> *类型* → [字典类型](./03_Types.md#dictionary-type) -> -> *类型* → [函数类型](./03_Types.md#function_type) -> -> *类型* → [类型标识符](./03_Types.md#type_identifier) -> -> *类型* → [元组类型](./03_Types.md./03_Types.md#tuple_type) -> -> *类型* → [可选类型](./03_Types.md#optional_type) -> -> *类型* → [隐式解析可选类型](./03_Types.md#implicitly_unwrapped_optional_type) -> -> *类型* → [协议合成类型](./03_Types.md#protocol_composition_type) -> -> *类型* → **Any** -> -> *类型* → **Self** -> -> *类型* → **(** [type](./03_Types.md#metatype_type) **)** - - - -> 类型注解语法 -> -> *类型注解* → **:** [属性(Attributes)集](./07_Attributes.md#attributes)可选[类型](./03_Types.md#type) - - - -> 类型标识语法 -> -> *类型标识* → [类型名称](./03_Types.md#type_name) [泛型参数从句](./09_Generic_Parameters_and_Arguments.md#generic_argument_clause)可选| [类型名称](./03_Types.md#type_name) [泛型参数从句](./09_Generic_Parameters_and_Arguments.md#generic_argument_clause)可选**.** [类型标识符](./03_Types.md#type_identifier) -> -> *类型名* → [标识符](./02_Lexical_Structure.md#identifier) -> - - - -> 元组类型语法 -> -> *元组类型* → **(** **)** | **(** [元组类型元素](./03_Types.md#tuple-type-element) **,** [元组类型元素列表](./03_Types.md#tuple-type-element-list) **)** -> -> *元组类型元素列表* → [元组类型元素](./03_Types.md#tuple-type-element) | [元组类型元素](./03_Types.md#tuple-type-element) **,** [元组类型元素列表](./03_Types.md#tuple-type-element-list) -> -> *元组类型元素* → [元素名](./03_Types.md#element-name) [类型注解](./03_Types.md#type-annotation) | [类型](./03_Types.md#type) -> -> *元素名* → [标识符](./02_Lexical_Structure.md#identifier) - - - -> 函数类型语法 -> -> *函数类型* → [类型](./03_Types.md#type) **throws**可选**->** [类型](./03_Types.md#type) -> -> *函数类型* → [类型](./03_Types.md#) **rethrows** **->** [类型](./03_Types.md#) -> -> *函数类型子句* → **(** **)** -> -> *函数类型子句* → **(** [函数类型参数列表](./03_Types.md#function-type-argument-list) *...*­可选 **)** -> -> *函数类型参数列表* → [函数类型参数](./03_Types.md#function-type-argument) | [函数类型参数](function-type-argument), [函数类型参数列表](./03_Types.md#function-type-argument-list) -> -> *函数类型参数* → [特性列表](./07_Attributes.md#attributes)可选 **输入输出参数**可选 [类型](#type) | [参数标签](#argument-label) [类型注解](#type-annotation) -> -> *参数标签* → [标识符](./02_Lexical_Structure.md#identifier) - - - -> 数组类型语法 -> -> *数组类型* → **[** [*类型*](./03_Types.md#array_type) **]** - - -> 字典类型语法 -> -> *字典类型* → **[** [类型 **:** 类型](./03_Types.md#type) **]** - - - -> 可选类型语法 -> -> *可选类型* → [类型](./03_Types.md#type) **?** -> - - - -> 隐式解析可选类型(Implicitly Unwrapped Optional Type)语法 -> -> *隐式解析可选类型* → [类型](./03_Types.md#type) **!** -> - - - -> 协议合成类型语法 -> -> *协议合成类型* → [类型标识符](./03_Types.md#type_identifier) | [协议合成延续](./03_Types.md#protocol-composition-continuation) -> -> *协议持续延续* → [类型标识符](./03_Types.md#type_identifier) | [协议合成类型](./03_Types.md#protocol-composition-type) - - - -> 元(Metatype)类型语法 -> -> *元类型* → [类型](./03_Types.md#type) **.** **Type** | [类型](./03_Types.md#type) **.** **Protocol** - - - -> 类型继承从句语法 -> -> *类型继承从句* → **:** [类型继承集](./03_Types.md#type_inheritance_list) -> -> *类型继承集* → [类型标识符](./03_Types.md#type_identifier) | [类型标识符](./03_Types.md#type_identifier) **,** [类型继承集](./03_Types.md#type_inheritance_list) -> -> *类条件* → **class** - diff --git a/source/chapter3/10_Summary_of_the_Grammar(from Statements -> Generic Parameters and Arguments).md b/source/chapter3/10_Summary_of_the_Grammar(from Statements -> Generic Parameters and Arguments).md deleted file mode 100644 index bb5454bf..00000000 --- a/source/chapter3/10_Summary_of_the_Grammar(from Statements -> Generic Parameters and Arguments).md +++ /dev/null @@ -1,895 +0,0 @@ -## 语句 {#statements} - -> 语句语法 -> -> *语句* → [表达式](./04_Expressions.md#expression) **;**可选 -> -> *语句* → [声明](./06_Declarations.md#declaration) **;**可选 -> -> *语句* → [循环语句](./05_Statements.md#loop_statement) **;**可选 -> -> *语句* → [分支语句](./05_Statements.md#branch_statement) **;**可选 -> -> *语句* → [标签语句](./05_Statements.md#labeled_statement) **;**可选 -> -> *语句* → [控制转移语句](./05_Statements.md#control_transfer_statement) **;**可选 -> -> *语句* → [延迟语句](./05_Statements.md#defer_statement) **;**可选 -> -> *语句* → [执行语句](./05_Statements.md#do_statement) **;**可选 -> -> *语句* → [编译控制语句](./05_Statements.md#compiler_control_statement) -> -> *语句集* → [语句](./05_Statements.md#statement) [语句集](./05_Statements.md#statements)可选 -> - - - -> 循环语句语法 -> -> *循环语句* → [for-in 语句](./05_Statements.md#for_in_statement) -> -> *循环语句* → [while 语句](./05_Statements.md#wheetatype 类型 ile_statement) -> -> *循环语句* → [repeat-while 语句](./05_Statements.md#do_while_statement) -> - - - -> For-In 循环语法 -> -> *for-in 语句* → **for case**可选 [模式](./08_Patterns.md#pattern) **in** [表达式](./04_Expressions.md#expression) [where 子句](./05_Statements.md#where_clause)可选 [代码块](./06_Declarations.md#code_block) -> - - - -> While 循环语法 -> -> *while 语句* → **while** [条件集](./05_Statements.md#condition_list) [代码块](./06_Declarations.md#code_block) -> -> *条件集* → [条件](./05_Statements.md#condition) | [条件](./05_Statements.md#condition) **,** [条件集](./05_Statements.md#condition_list) -> *条件* → [表达式](./04_Expressions.md#expression) | [可用性条件](./05_Statements.md#availability_condition) | [case 条件](./05_Statements.md#case_condition) | [可选绑定条件](./05_Statements.md#optional_binding_condition) -> -> *case 条件* → **case** [模式](./08_Patterns.md#pattern) [构造器](./06_Declarations.md#initializer) -> -> *可选绑定条件* → **let** [模式](./08_Patterns.md#pattern) [构造器](./06_Declarations.md#initializer) | **var** [模式](./08_Patterns.md#pattern) [构造器](./06_Declarations.md#initializer) -> - - -> Repeat-While 语句语法 -> -*repeat-while-statement* → **repeat** [代码块](./06_Declarations.md#code_block) **while** [表达式](./04_Expressions.md#expression) - - - -> 分支语句语法 -> -> *分支语句* → [if 语句](./05_Statements.md#if_statement) -> -> *分支语句* → [guard 语句](./05_Statements.md#guard_statement) -> -> *分支语句* → [switch 语句](./05_Statements.md#switch_statement) -> - - - -> If 语句语法 -> -> *if 语句* → **if** [条件集](./05_Statements.md#condition_list) [代码块](./06_Declarations.md#code_block) [else 子句](./05_Statements.md#else_clause)可选 -> -> *else 子句* → **else** [代码块](./06_Declarations.md#code_block) | **else** [if 语句](./05_Statements.md#if_statement) -> - - -> Guard 语句语法 -> -> *guard 语句* → **guard** [条件集](./05_Statements.md#condition_list) **else** [代码块](./06_Declarations.md#code_block) -> - - - - -> Switch 语句语法 -> -> *switch 语句* → **switch** [表达式](./04_Expressions.md#expression) **{** [switch-case集](./05_Statements.md#switch_cases)可选 **}** -> -> *switch-case集* → [switch-case](./05_Statements.md#switch_case) [switch-case集](./05_Statements.md#switch_cases)可选 -> -> *switch-case* → [case 标签](./05_Statements.md#case_label) [语句集](./05_Statements.md#statements) -> -> *switch-case* → [default 标签](./05_Statements.md#default_label) [语句集](./05_Statements.md#statements) -> -> *switch-case* → [条件 switch-case](./05_Statements.md#conditional_switch_case) -> -> *case 标签* → [属性集](./07_Attributes.md#attributes)可选 **case** [case 项集](./05_Statements.md#case_item_list) **:** -> -> *case 项集* → [模式](./08_Patterns.md#pattern) [where 子句](./05_Statements.md#where_clause)可选 | [模式](./08_Patterns.md#pattern) [where 子句](./05_Statements.md#guard_clause)可选 **,** [case 项集](./05_Statements.md#case_item_list) -> -> *default 标签* → [属性集](./07_Attributes.md#attributes)可选 **default** **:** -> -> *where 子句* → **where** [where 表达式](./05_Statements.md#where_expression) -> -> *where 表达式* → [表达式](./04_Expressions.md#expression) -> -> *条件 switch-case* → [switch if 指令子句](./05_Statements.md#switch_if_directive_clause) [switch elseif 指令子句集](./05_Statements.md#switch_elseif_directive_clauses)可选 [switch else 指令子句](./05_Statements.md#switch_else_directive_clause)可选 [endif 指令](./05_Statements.md#endif_directive) -> -> *switch if 指令子句* → [if 指令](./05_Statements.md#if_directive) [编译条件](./05_Statements.md#compilation_condition) [switch-case集](./05_Statements.md#switch_cases)可选 -> -> *switch elseif 指令子句集* → [elseif 指令子句](./05_Statements.md#else_if_directive_clause) [switch elseif 指令子句集](./05_Statements.md#switch_elseif_directive_clauses)可选 -> -> *switch elseif 指令子句* → [elseif 指令](./05_Statements.md#elseif_directive) [编译条件](./05_Statements.md#compilation_condition) [switch-case集](./05_Statements.md#switch_cases)可选 -> -> *switch else 指令子句* → [else 指令](./05_Statements.md#else_directive) [switch-case集](./05_Statements.md#switch_cases)可选 -> - - - -> 标签语句语法 -> -> *标签语句* → [语句标签](./05_Statements.md#statement_label) [循环语句](./05_Statements.md#loop_statement) -> -> *标签语句* → [语句标签](./05_Statements.md#statement_label) [if 语句](./05_Statements.md#if_statement) -> -> *标签语句* → [语句标签](./05_Statements.md#statement_label) [switch 语句](./05_Statements.md#switch_statement) -> -> *标签语句* → [语句标签](./05_Statements.md#statement_label) [do 语句](./05_Statements.md#do_statement) -> -> *语句标签* → [标签名称](./05_Statements.md#label_name) **:** -> -> *标签名称* → [标识符](./02_Lexical_Structure.md#identifier) -> - - - -> 控制转移语句语法 -> -> *控制转移语句* → [break 语句](./05_Statements.md#break_statement) -> -> *控制转移语句* → [continue 语句](./05_Statements.md#continue_statement) -> -> *控制转移语句* → [fallthrough 语句](./05_Statements.md#fallthrough_statement) -> -> *控制转移语句* → [return 语句](./05_Statements.md#return_statement) -> -> *控制转移语句* → [throw 语句](./05_Statements.md#throw_statement) -> - - - -> Break 语句语法 -> -> *break 语句* → **break** [标签名称](./05_Statements.md#label_name)可选 -> - - - -> Continue 语句语法 -> -> *continue 语句* → **continue** [标签名称](./05_Statements.md#label_name)可选 -> - - - -> Fallthrough 语句语法 -> -> *fallthrough 语句* → **fallthrough** -> - - - -> Return 语句语法 -> -> *return 语句* → **return** [表达式](./04_Expressions.md#expression)可选 -> - - - -> Throw 语句语法 -> -> *throw 语句* → **throw** [表达式](./04_Expressions.md#expression) -> - - - -> Defer 语句语法 -> -> *defer 语句* → **defer** [代码块](./06_Declarations.md#code_block) -> - - -> Do 语句语法 -> -> *do 语句* → **do** [代码块](./06_Declarations.md#code_block) [catch 子句集](./05_Statements.md#catch_clauses)可选 -> -> *catch 子句集* → [catch 子句](./05_Statements.md#catch_clause) [catch 子句集](05_Statements.md#catch_clauses)可选 -> -> *catch 子句* → **catch** [模式](./08_Patterns.md#pattern)可选 [where 子句](./05_Statements.md#where_clause)可选 [代码块](./06_Declarations.md#code_block)可选 -> - - -> 编译控制语句 -> -> *编译控制语句* → [条件编译块](./05_Statements.md#conditional_complation_block) -> -> *编译控制语句* → [行控制语句](./05_Statements.md#line_control_statement) -> -> *编译控制语句* → [诊断语句](./05_Statements.md#diagnostic_statement) -> - - -> 条件编译块语法 -> -> *条件编译块* → [if 指令子句](./05_Statements.md#if_directive_clause) [elseif 指令子句集](./05_Statements.md#elseif_directive_clauses)可选 [else 指令子句](./05_Statements.md#else_directive_clause)可选 [endif 指令](./05_Statements.md#endif_directive) -> -> *if 指令子句* → [if 指令](./05_Statements.md#if_directive) [编译条件](./05_Statements.md#compilation_condition) [语句集](./05_Statements.md#statements)可选 -> -> *elseif 指令子句集* → [elseif 指令子句](./05_Statements.md#else_if_directive_clause) [elseif 指令子句集](./05_Statements.md#elseif_directive_clauses)可选 -> -> *elseif 指令子句* → [elseif 指令](./05_Statements.md#elseif_directive) [编译条件](./05_Statements.md#compilation_condition) [语句集](./05_Statements.md#statements)可选 -> -> *else 指令子句* → [else 指令](./05_Statements.md#else_directive) [语句集](./05_Statements.md#statements)可选 -> -> *if 指令* → **#if** -> -> *elseif 指令* → **#elseif** -> -> *else 指令* → **#else** -> -> *endif 指令* → **#endif** -> -> *编译条件* → [平台条件](./05_Statements.md#platform_condition) -> -> *编译条件* → [标识符](./02_Lexical_Structure.md#identifier) -> -> *编译条件* → [布尔字面量](./02_Lexical_Structure.md#boolean_literal) -> -> *编译条件* → **(** [编译条件](./05_Statements.md#compilation_condition) **)** -> -> *编译条件* → **!** [编译条件](./05_Statements.md#compilation_condition) -> -> *编译条件* → [编译条件](./05_Statements.md#compilation_condition) **&&** [编译条件](./05_Statements.md#compilation_condition) -> -> *编译条件* → [编译条件](./05_Statements.md#compilation_condition) **||** [编译条件](./05_Statements.md#compilation_condition) -> -> *平台条件* → **os** **(** [操作系统](./05_Statements.md#operating_system) **)** -> -> *平台条件* → **arch** **(** [架构](./05_Statements.md#architecture) **)** -> -> *平台条件* → **swift** **(** **>=** [swift 版本](./05_Statements.md#swift_version) **)** | **swift** **(** **<** [swift 版本](./05_Statements.md#swift_version) **)** -> -> *平台条件* → **compiler** **(** **>=** [swift 版本](./05_Statements.md#swift_version) **)** | **compiler** **(** **<** [swift 版本](./05_Statements.md#swift_version) **)** -> -> *平台条件* → **canImport** **(** [模块名](./05_Statements.md#module_name) **)** -> -> *平台条件* → **targetEnvironment** **(** [环境](./05_Statements.md#environment) **)** -> -> *操作系统* → **macOS** | **iOS** | **watchOS** | **tvOS** -> -> *架构* → **i386** | **x86_64** | **arm** | **arm64** -> -> *swift 版本* → [十进制数字集](./02_Lexical_Structure.md#decimal_digits) [swift 版本后缀](./05_Statements.md#swift_version_continuation)可选 -> -> *swift 版本后缀* → **.** [十进制数字集](./02_Lexical_Structure.md#decimal_digits) [swift 版本集](./05_Statements.md#swift_version_continuation)可选 -> -> *模块名* → [标识符](./02_Lexical_Structure.md#identifier) -> -> *环境* → **simulator** -> - - -> 行控制语句语法 -> -> *行控制语句* → **#sourceLocation** **(** **file:** [文件名](./05_Statements.md#file_name) **,** **line:** [行号](./05_Statements.md#line_number) **)** -> -> *行控制语句* → **#sourceLocation** **(** **)** -> -> *行号* → 一个大于 0 的十进制数字 -> -> *文件名* → [静态字符串字面量](./02_Lexical_Structure.md#static_string_literal) -> - - -> 编译期诊断语句语法 -> -> *诊断语句* → **#error** **(** [诊断信息](./05_Statements.md#diagnostic_message) **)** -> -> *诊断语句* → **#warning** **(** [诊断信息](./05_Statements.md#diagnostic_message) **)** -> -> *诊断信息* → [静态字符串字面量](./02_Lexical_Structure.md#static_string_literal) -> - - -> 可用性条件语法 -> -> *可用性条件* → **#available** **(** [可用性参数集](./05_Statements.md#availability_arguments) **)** -> -> *可用性参数集* → [可用性参数](./05_Statements.md#availability_argument) | [可用性参数](./05_Statements.md#availability_argument) , [可用性参数集)](./05_Statements.md#availability_arguments) -> -> *可用性参数* → [平台名](./05_Statements.md#platform_name) [平台版本](./05_Statements.md#platform_version) -> -> *可用性参数* → **\*** -> -> *平台名* → **iOS** | **iOSApplicationExtension** -> -> *平台名* → **macOS** | **macOSApplicationExtension** -> -> *平台名* → **watchOS** -> -> *平台名* → **tvOS** -> -> *平台版本* → [十进制数字集](./02_Lexical_Structure.md#decimal_digits) -> -> *平台版本* → [十进制数字集](./02_Lexical_Structure.md#decimal_digits) **.** [十进制数字集](./02_Lexical_Structure.md#decimal_digits) -> -> *平台版本* → [十进制数字集](./02_Lexical_Structure.md#decimal_digits) **.** [十进制数字集](./02_Lexical_Structure.md#decimal_digits) **.** [十进制数字集](./02_Lexical_Structure.md#decimal_digits) -> - -## 声明 {#declarations} - -> 声明语法 -> -> *声明* → [导入声明](./06_Declarations.md#import_declaration) -> -> *声明* → [常量声明](./06_Declarations.md#constant_declaration) -> -> *声明* → [变量声明](./06_Declarations.md#variable_declaration) -> -> *声明* → [类型别名声明](./06_Declarations.md#typealias_declaration) -> -> *声明* → [函数声明](./06_Declarations.md#function_declaration) -> -> *声明* → [枚举声明](./06_Declarations.md#enum_declaration) -> -> *声明* → [结构体声明](./06_Declarations.md#struct_declaration) -> -> *声明* → [类声明](./06_Declarations.md#class_declaration) -> -> *声明* → [协议声明](./06_Declarations.md#protocol_declaration) -> -> *声明* → [构造器声明](./06_Declarations.md#initializer_declaration) -> -> *声明* → [析构器声明](./06_Declarations.md#deinitializer_declaration) -> -> *声明* → [扩展声明](./06_Declarations.md#extension_declaration) -> -> *声明* → [下标声明](./06_Declarations.md#subscript_declaration) -> -> *声明* → [运算符声明](./06_Declarations.md#operator_declaration) -> -> *声明* → [优先级组声明](./06_Declarations.md#precedence_group_declaration) -> -> *声明集* → [声明](./06_Declarations.md#declaration) [声明集](./06_Declarations.md#declarations)可选 -> - - - - -> 顶级声明语法 -> -> *顶级声明* → [多条语句](./05_Statements.md#statements)可选 -> - - - -> 代码块语法 -> -> *代码块* → **{** [多条语句](./05_Statements.md#statements)可选 **}** -> - - - -> 导入声明语法 -> -> *导入声明* → [属性集](./07_Attributes.md#attributes)可选 **import** [导入类型](./06_Declarations.md#import_kind)可选 [导入路径](./06_Declarations.md#import_path) -> -> *导入类型* → **typealias** | **struct** | **class** | **enum** | **protocol** | **let** | **var** | **func** -> -> *导入路径* → [导入路径标识符](./06_Declarations.md#import_path_identifier) | [导入路径标识符](./06_Declarations.md#import_path_identifier) **.** [导入路径](./06_Declarations.md#import_path) -> -> *导入路径标识符* → [标识符](./02_Lexical_Structure.md#identifier) | [运算符](./02_Lexical_Structure.md#operator) -> - - - -> 常数声明语法 -> -> *常量声明* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_specifiers)可选 **let** [模式构造器集](./06_Declarations.md#pattern_initializer_list) -> -> *模式构造器集* → [模式构造器](./06_Declarations.md#pattern_initializer) | [模式构造器](./06_Declarations.md#pattern_initializer) **,** [模式构造器集](./06_Declarations.md#pattern_initializer_list) -> -> *模式构造器* → [模式](./08_Patterns.md#pattern) [构造器](./06_Declarations.md#initializer)可选 -> -> *构造器* → **=** [表达式](./04_Expressions.md#expression) -> - - - -> 变量声明语法 -> -> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [模式构造器集](./06_Declarations.md#pattern_initializer_list) -> -> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [代码块](./06_Declarations.md#code_block) -> -> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [getter-setter 块](./06_Declarations.md#getter_setter_block) -> -> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [getter-setter 关键字块](./06_Declarations.md#getter_setter_keyword_block) -> -> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [构造器](./06_Declarations.md#initializer)可选 [willSet-didSet 代码块](./06_Declarations.md#willSet_didSet_block) -> -> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [构造器](./06_Declarations.md#initializer)可选 [willSet-didSet 代码块](./06_Declarations.md#willSet_didSet_block) -> -> *变量声明头* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_specifiers)可选 **var** -> -> *变量名称* → [标识符](./02_Lexical_Structure.md#identifier) -> -> *getter-setter 块* → [代码块](./06_Declarations.md#code_block) -> -> *getter-setter 块* → **{** [getter 子句](./06_Declarations.md#getter_clause) [setter 子句](./06_Declarations.md#setter_clause)可选 **}** -> -> *getter-setter 块* → **{** [setter 子句](./06_Declarations.md#setter_clause) [getter 子句](./06_Declarations.md#getter_clause) **}** -> -> *getter 子句* → [属性集](./07_Attributes.md#attributes)可选 [可变性修饰符](./06_Declarations.md#mutation-modifier)可选 **get** [代码块](./06_Declarations.md#code_block) -> -> *setter 子句* → [属性集](./07_Attributes.md#attributes)可选 [可变性修饰符](./06_Declarations.md#mutation-modifier)可选 **set** [setter 名称](./06_Declarations.md#setter_name)可选 [代码块](./06_Declarations.md#code_block) -> -> *setter 名称* → **(** [标识符](./02_Lexical_Structure.md#identifier) **)** -> -> *getter-setter 关键字(Keyword)块* → **{** [getter 关键字子句](./06_Declarations.md#getter_keyword_clause) [setter 关键字子句](./06_Declarations.md#setter_keyword_clause)可选 **}** -> -> *getter-setter 关键字(Keyword)块* → **{** [setter 关键字子句](./06_Declarations.md#setter_keyword_clause) [getter 关键字子句](./06_Declarations.md#getter_keyword_clause) **}** -> -> *getter 关键字(Keyword)子句* → [属性集](./07_Attributes.md#attributes)可选 [可变性修饰符](./06_Declarations.md#mutation-modifier)可选 **get** -> -> *setter 关键字(Keyword)子句* → [属性集](./07_Attributes.md#attributes)可选 [可变性修饰符](./06_Declarations.md#mutation-modifier)可选 **set** -> -> *willSet-didSet 代码块* → **{** [willSet 子句](./06_Declarations.md#willSet_clause) [didSet 子句](./06_Declarations.md#didSet_clause)可选 **}** -> -> *willSet-didSet 代码块* → **{** [didSet 子句](./06_Declarations.md#didSet_clause) [willSet 子句](./06_Declarations.md#willSet_clause)可选 **}** -> -> *willSet 子句* → [属性集](./07_Attributes.md#attributes)可选 **willSet** [setter 名称](./06_Declarations.md#setter_name)可选 [代码块](./06_Declarations.md#code_block) -> -> *didSet 子句* → [属性集](./07_Attributes.md#attributes)可选 -> - **didSet** [setter 名称](./06_Declarations.md#setter_name)可选 [代码块](./06_Declarations.md#code_block) - - - -> 类型别名声明语法 -> -> *类型别名声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) **typealias** [类型别名名称](./06_Declarations.md#typealias_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型别名赋值](./06_Declarations.md#typealias_assignment) -> -> *类型别名名称* → [标识符](./02_Lexical_Structure.md#identifier) -> -> *类型别名赋值* → **=** [类型](./03_Types.md#type) -> - - - -> 函数声明语法 -> -> *函数声明* → [函数头](./06_Declarations.md#function_head) [函数名](./06_Declarations.md#function_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [函数签名](./06_Declarations.md#function_signature) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [函数体](./06_Declarations.md#function_body)可选 -> -> *函数头* → [属性集](./07_Attributes.md#attributes)可选 [声明描述符集](./06_Declarations.md#declaration_specifiers)可选 **func** -> -> *函数名* → [标识符](./02_Lexical_Structure.md#identifier) | [运算符](./02_Lexical_Structure.md#operator) -> -> *函数签名* → [参数子句](./06_Declarations.md#parameter_clause) **throws**可选 [函数结果](./06_Declarations.md#function_result)可选 -> - -> *函数签名* → [参数子句](./06_Declarations.md#parameter_clause) **rethrows** [函数结果](./06_Declarations.md#function_result)可选 -> -> *函数结果* → **->** [属性集](./07_Attributes.md#attributes)可选 [类型](./03_Types.md#type) -> -> *函数体* → [代码块](./06_Declarations.md#code_block) -> -> *参数子句* → **(** **)** | **(** [参数集](./06_Declarations.md#parameter_list) **)** -> -> *参数集* → [参数](./06_Declarations.md#parameter) | [参数](./06_Declarations.md#parameter) **,** [参数集](./06_Declarations.md#parameter_list) -> -> *参数* → [外部参数名](./06_Declarations.md#parameter_name)可选 [本地参数名](./06_Declarations.md#local_parameter_name) [类型注解](./03_Types.md#type_annotation) [默认参数子句](./06_Declarations.md#default_argument_clause)可选 -> -> *参数* → [外部参数名](./06_Declarations.md#parameter_name)可选 [本地参数名](./06_Declarations.md#local_parameter_name) [类型注解](./03_Types.md#type_annotation) -> -> *参数* → [外部参数名](./06_Declarations.md#parameter_name)可选 [本地参数名](./06_Declarations.md#local_parameter_name) [类型注解](./03_Types.md#type_annotation) **...** -> -> *外部参数名* → [标识符](./02_Lexical_Structure.md#identifier) -> -> *本地参数名* → [标识符](./02_Lexical_Structure.md#identifier) -> -> *默认参数子句* → **=** [表达式](./04_Expressions.md#expression) -> - - - -> 枚举声明语法 -> -> *枚举声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 [联合式枚举](./06_Declarations.md#union_style_enum) -> -> *枚举声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 [原始值式枚举](./06_Declarations.md#raw-value-style-enum) -> -> *联合式枚举* → **indirect**可选 **enum** [枚举名](./06_Declarations.md#enum_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型继承子句](./03_Types.md#type-inheritance-clause)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 **{** [联合式枚举成员](./06_Declarations.md#union_style_enum_members)可选 **}** -> -> *联合式枚举成员集* → [联合式枚举成员](./06_Declarations.md#union_style_enum_member) [联合样式枚举成员集](./06_Declarations.md#union_style_enum_members)可选 -> -> *联合样式枚举成员* → [声明](./06_Declarations.md#declaration) | [联合式枚举 case 子句](./06_Declarations.md#union_style_enum_case_clause) | [编译控制语句](./05_Statements.md#compiler-control-statement) -> -> *联合式枚举 case 子句* → [属性集](./07_Attributes.md#attributes)可选 **indirect**可选 **case** [联合式枚举 case 集](./06_Declarations.md#union_style_enum_case_list) -> -> *联合式枚举 case 集* → [联合式枚举 case](./06_Declarations.md#union_style_enum_case) | [联合式枚举 case](./06_Declarations.md#union_style_enum_case) **,** [联合式枚举 case 集](./06_Declarations.md#union_style_enum_case_list) -> -> *联合式枚举 case* → [枚举的 case 名](./06_Declarations.md#enum_case_name) [元组类型](./03_Types.md#tuple_type)可选 -> -> *枚举名* → [标识符](./02_Lexical_Structure.md#identifier) -> -> *枚举的 case 名* → [标识符](./02_Lexical_Structure.md#identifier) -> -> *原始值式枚举* → **enum** [枚举名](./06_Declarations.md#enum_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型继承子句](./03_Types.md#type-inheritance-clause) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 **{** [原始值式枚举成员集](./06_Declarations.md#raw_value_style_enum_members) **}** -> -> *原始值式枚举成员集* → [原始值式枚举成员](./06_Declarations.md#raw_value_style_enum_member) [原始值式枚举成员集](./06_Declarations.md#raw_value_style_enum_members)可选 -> -> *原始值式枚举成员* → [声明](./06_Declarations.md#declaration) | [原始值式枚举 case 子句](./06_Declarations.md#raw_value_style_enum_case_clause) | [编译控制语句](./05_Statements.md#compiler-control-statement) -> -> *原始值式枚举 case 子句* → [属性集](./07_Attributes.md#attributes)可选 **case** [原始值式枚举 case 集](./06_Declarations.md#raw_value_style_enum_case_list) -> -> *原始值式枚举 case 集* → [原始值式枚举 case](./06_Declarations.md#raw_value_style_enum_case) | [原始值式枚举 case](./06_Declarations.md#raw_value_style_enum_case) **,** [原始值式枚举 case 集](./06_Declarations.md#raw_value_style_enum_case_list) -> -> *原始值式枚举 case* → [枚举的 case 名](./06_Declarations.md#enum_case_name) [原始值赋值](./06_Declarations.md#raw_value_assignment)可选 -> -> *原始值赋值* → **=** [原始值字面量](./02_Lexical_Structure.md#literal) -> -> *原始值字面量(raw-value-literal)* → [数值字面量](./02_Lexical_Structure.md#literal) | [静态字符串字面量](./02_Lexical_Structure.md#literal) | [布尔字面量](./02_Lexical_Structure.md#literal) -> - - - -> 结构体声明语法 -> -> *结构体声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **struct** [结构体名称](./06_Declarations.md#struct_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型继承子句](./03_Types.md#type_inheritance_clause)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [结构体主体](./06_Declarations.md#struct_body) -> -> *结构体名称* → [标识符](./02_Lexical_Structure.md#identifier) -> -> *结构体主体* → **{** [结构体成员集](./06_Declarations.md#declarations)可选 **}** -> -> *结构体成员集* → [结构体成员](./06_Declarations.md#declarations) [结构体成员集](./06_Declarations.md#declarations)可选 -> -> *结构体成员* → [声明集](./06_Declarations.md#declarations) | [编译控制语句](./05_Statements.md#compiler-control-statement) -> - - - -> 类声明语法 -> -> *类声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **final**可选 **class** [类名](./06_Declarations.md#class_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型继承子句](./03_Types.md#type_inheritance_clause) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [类主体](./06_Declarations.md#class_body) -> -> *类声明* → [属性集](./07_Attributes.md#attributes)可选 **final** [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **class** [类名](./06_Declarations.md#class_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型继承子句](./03_Types.md#type_inheritance_clause) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [类主体](./06_Declarations.md#class_body) -> -> *类名* → [标识符](./02_Lexical_Structure.md#identifier) -> -> *类主体* → **{** [类成员集](./06_Declarations.md#declarations)可选 **}** -> -> *类成员集* → [类成员](./06_Declarations.md#declarations) [类成员集](./06_Declarations.md#declarations)可选 -> -> *类成员* → [声明集](./06_Declarations.md#declarations) | [编译控制语句](./05_Statements.md#compiler-control-statement) -> - - - -> 协议声明语法 -> -> *协议声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **protocol** [协议名](./06_Declarations.md#protocol_name) [类型继承子句](./03_Types.md#type_inheritance_clause)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [协议主体](./06_Declarations.md#protocol_body) -> -> *协议名* → [标识符](./02_Lexical_Structure.md#identifier) -> -> *协议主体* → **{** [协议成员集](./06_Declarations.md#protocol_member_declarations)可选 **}** -> -> *协议成员集* → [协议成员](./06_Declarations.md#declarations) [协议成员集](./06_Declarations.md#declarations)可选 -> -> *协议成员* → [协议成员声明](./06_Declarations.md#declarations) | [编译控制语句](./05_Statements.md#compiler-control-statement) -> -> *协议成员声明* → [协议属性声明](./06_Declarations.md#protocol_property_declaration) -> -> *协议成员声明* → [协议方法声明](./06_Declarations.md#protocol_method_declaration) -> -> *协议成员声明* → [协议构造器声明](./06_Declarations.md#protocol_initializer_declaration) -> -> *协议成员声明* → [协议下标声明](./06_Declarations.md#protocol_subscript_declaration) -> -> *协议成员声明* → [协议关联类型声明](./06_Declarations.md#protocol_associated_type_declaration) -> -> *协议成员声明* → [类型别名声明](./06_Declarations.md#typealias_declaration) -> - - - -> 协议属性声明语法 -> -> *协议属性声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [getter-setter 关键字块](./06_Declarations.md#getter_setter_keyword_block) -> - - - -> 协议方法声明语法 -> -> *协议方法声明* → [函数头](./06_Declarations.md#function_head) [函数名](./06_Declarations.md#function_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [函数签名](./06_Declarations.md#function_signature) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 -> - - - -> 协议构造器声明语法 -> -> *协议构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [参数子句](./06_Declarations.md#parameter_clause) **throws**可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 -> -> *协议构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [参数子句](./06_Declarations.md#parameter_clause) **rethrows** [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 -> - - - -> 协议下标声明语法 -> -> *协议下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [getter-setter 关键字块](./06_Declarations.md#getter_setter_keyword_block) -> - - - -> 协议关联类型声明语法 -> -> *协议关联类型声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **associatedtype** [类型别名](./06_Declarations.md#typealias_name) [类型继承子句](./03_Types.md#type_inheritance_clause)可选 [类型别名赋值](./06_Declarations.md#typealias_assignment)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 -> - - - -> 构造器声明语法 -> -> *构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [参数子句](./06_Declarations.md#parameter_clause) **throws**可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [构造器主体](./06_Declarations.md#initializer_body) -> -> *构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [参数子句](./06_Declarations.md#parameter_clause) **rethrows** [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [构造器主体](./06_Declarations.md#initializer_body) -> -> *构造器头(Head)* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers)可选 **init** -> -> *构造器头(Head)* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers)可选 **init ?** -> -> *构造器头(Head)* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers)可选 **init !** -> -> *构造器主体* → [代码块](./06_Declarations.md#code_block) -> - - - -> 析构器声明语法 -> -> *析构器声明* → [属性集](./07_Attributes.md#attributes)可选 **deinit** [代码块](./06_Declarations.md#code_block) -> - - - -> 扩展声明语法 -> -> *扩展声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **extension** [类型标识](./03_Types.md#type_identifier) [类型继承子句](./03_Types.md#type_inheritance_clause)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [扩展主体](./06_Declarations.md#extension_body) -> -> *扩展主体* → **{** [扩展成员集](./06_Declarations.md#declarations)可选 **}** -> -> *扩展成员集* → [扩展成员](./06_Declarations.md#declarations) [扩展成员集](./06_Declarations.md#declarations)可选 -> -> *扩展成员* → [声明集](./06_Declarations.md#declarations) | [编译控制语句](./05_Statements.md#compiler-control-statement) -> - - - -> 下标声明语法 -> -> *下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [代码块](./06_Declarations.md#code_block) -> -> *下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [getter-setter 块](./06_Declarations.md#getter_setter_block) -> -> *下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [getter-setter 关键字块](./06_Declarations.md#getter_setter_keyword_block) -> -> *下标头(Head)* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers)可选 **subscript** [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [参数子句](./06_Declarations.md#parameter_clause) -> -> *下标结果(Result)* → **->** [属性集](./07_Attributes.md#attributes)可选 [类型](./03_Types.md#type) -> - - - -> 运算符声明语法 -> -> *运算符声明* → [前置运算符声明](./06_Declarations.md#prefix_operator_declaration) | [后置运算符声明](./06_Declarations.md#postfix_operator_declaration) | [中置运算符声明](./06_Declarations.md#infix_operator_declaration) -> -> *前置运算符声明* → **prefix** **operator** [运算符](./02_Lexical_Structure.md#operator) -> -> *后置运算符声明* → **postfix** **operator** [运算符](./02_Lexical_Structure.md#operator) -> -> *中置运算符声明* → **infix** **operator** [运算符](./02_Lexical_Structure.md#operator) [中置运算符属性集](./06_Declarations.md#infix_operator_attributes)可选 -> -> *中置运算符属性集* → [优先级组名](./06_Declarations.md#precedence_group_name) -> - -> 优先级组声明语法 -> -> *优先级组声明* → **precedencegroup** [优先级组名](./06_Declarations.md#precedence_group_name) **{** [优先级组属性集](./06_Declarations.md#precedence_group_attributes)可选 **}** -> -> *优先级组属性集* → [优先级组属性](./06_Declarations.md#declarations) [优先级组属性集](./06_Declarations.md#declarations)可选 -> -> *优先级组属性* → [优先级组关系](./06_Declarations.md#declarations) -> -> *优先级组属性* → [优先级组赋值](./06_Declarations.md#declarations) -> -> *优先级组属性* → [优先级组结合](./06_Declarations.md#declarations) -> -> *优先级组关系* → **higherThan :** [优先级组名集](./06_Declarations.md#declarations) -> -> *优先级组关系* → **lowerThan :** [优先级组名集](./06_Declarations.md#declarations) -> -> *优先级组赋值* → **assignment :** [布尔字面量](./02_Lexical_Structure.md#string_literal) -> -> *优先级组结合* → **associativity : left** -> -> *优先级组结合* → **associativity : right** -> -> *优先级组结合* → **associativity : none** -> -> *优先级组名集* → [优先级组名](./06_Declarations.md#declarations) | [优先级组名](./06_Declarations.md#declarations) **,** [优先级组名集](./06_Declarations.md#declarations) -> -> *优先级组名* → [标识符](./02_Lexical_Structure.md#identifier) -> - - -> 声明修饰符语法 -> -> *声明修饰符* → **class** | **convenience** | **dynamic** | **final** | **infix** | **lazy** | **optional** | **override** | **postfix** | **prefix** | **required** | **static** | **unowned** | **unowned(safe)** | **unowned(unsafe)** | **weak** -> -> *声明修饰符* → [访问级别修饰符](./07_Attributes.md#access-level-modifier) -> -> *声明修饰符* → [可变性修饰符](./07_Attributes.md#mutation-modifier) -> -> *声明修饰符集* → [声明修饰符](./06_Declarations.md#declaration_modifier) [声明修饰符集](./06_Declarations.md#declaration_modifiers)可选 -> -> *访问级别修饰符* → **private** | **private(set)** -> -> *访问级别修饰符* → **fileprivate** | **fileprivate(set)** -> -> *访问级别修饰符* → **internal** | **internal(set)** -> -> *访问级别修饰符* → **public** | **public(set)** -> -> *访问级别修饰符* → **open** | **open(set)** -> -> *可变性修饰符* → **mutating** | **nonmutating** -> - -## 属性 {#attributes} - -> 属性语法 -> -> *属性* → **@** [属性名](./07_Attributes.md#attribute_name) [属性参数子句](./07_Attributes.md#attribute_argument_clause)可选 -> -> *属性名* → [标识符](./02_Lexical_Structure.md#identifier) -> -> *属性参数子句* → **{** [平衡令牌集](./07_Attributes.md#balanced_tokens)可选 **}** -> -> *属性(Attributes)集* → [属性](./07_Attributes.md#attribute) [属性集](./07_Attributes.md#attributes)可选 -> -> *平衡令牌集* → [平衡令牌](./07_Attributes.md#balanced_token) [平衡令牌集](./07_Attributes.md#balanced_tokens)可选 -> -> *平衡令牌* → **(** [平衡令牌集](./07_Attributes.md#balanced_tokens)可选 **)** -> -> *平衡令牌* → **[** [平衡令牌集](./07_Attributes.md#balanced_tokens)可选 **]** -> -> *平衡令牌* → **{** [平衡令牌集](./07_Attributes.md#balanced_tokens)可选 **}** -> -> *平衡令牌* → 任意标识符、关键字、字面量或运算符 -> -> *平衡令牌* → 除 **(** 、**)**、**[**、**]**、**{**、**}** 外的任意标点符号 -> -> - -## 模式 {#patterns} - -> 模式语法 -> -> *模式* → [通配符模式](./08_Patterns.md#wildcard_pattern) [类型注解](./03_Types.md#type_annotation)可选 -> -> *模式* → [标识符模式](./08_Patterns.md#identifier_pattern) [类型注解](./03_Types.md#type_annotati Value Bindingon )可选 -> -> *模式* → [值绑定模式](./08_Patterns.md#value_binding_pattern) -> -> *模式* → [元组模式](./08_Patterns.md#tuple_pattern) [类型注解](./03_Types.md#type_annotation)可选 -> -> *模式* → [枚举 case 模式](./08_Patterns.md#enum_case_pattern) -> -> *模式* → [可选模式](./08_Patterns.md#optional_pattern) -> -> *模式* → [类型转换模式](./08_Patterns.md#type_casting_pattern) -> -> *模式* → [表达式模式](./08_Patterns.md#expression_pattern) -> - - - -> 通配符模式语法 -> -> *通配符模式* → **_** -> - - - -> 标识符模式语法 -> -> *标识符模式* → [标识符](./02_Lexical_Structure.md#identifier) -> - - - -> 值绑定模式语法 -> -> *值绑定模式* → **var** [模式](./08_Patterns.md#pattern) | **let** [模式](./08_Patterns.md#pattern) -> - - - -> 元组模式语法 -> -> *元组模式* → **(** [元组模式元素集](./08_Patterns.md#tuple_pattern_element_list)可选 **)** -> -> *元组模式元素集* → [元组模式元素](./08_Patterns.md#tuple_pattern_element) | [元组模式元素](./08_Patterns.md#tuple_pattern_element) **,** [元组模式元素集](./08_Patterns.md#tuple_pattern_element_list) -> -> *元组模式元素* → [模式](./08_Patterns.md#pattern) | [标识符](./02_Lexical_Structure.md#identifier) **:** [模式](./08_Patterns.md#pattern) -> - - - -> 枚举 case 模式语法 -> -> *enum-case-pattern* → [类型标识](./03_Types.md#type_identifier)可选 **.** [枚举 case 名](./06_Declarations.md#enum_case_name) [元组模式](./08_Patterns.md#tuple_pattern)可选 -> - - -> 可选模式语法 -> -> *可选模式* → [标识符模式](./02_Lexical_Structure.md#identifier) **?** -> - - - -> 类型转换模式语法 -> -> *类型转换模式* → [is 模式](./08_Patterns.md#is_pattern) | [as 模式](./08_Patterns.md#as_pattern) -> -> *is 模式* → **is** [类型](./03_Types.md#type) -> -> *as 模式* → [模式](./08_Patterns.md#pattern) **as** [类型](./03_Types.md#type) -> - - - -> 表达式模式语法 -> -> *表达式模式* → [表达式](./04_Expressions.md#expression) -> - -## 泛型参数 {#generic_parameters_and_arguments} - -> 泛型形参子句语法 -> -> -> *泛型参数子句* → **<** [泛型参数集](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list) **>** -> -> *泛型参数集* → [泛型参数](./09_Generic_Parameters_and_Arguments.md#generic_parameter) | [泛形参数](./09_Generic_Parameters_and_Arguments.md#generic_parameter) **,** [泛型参数集](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list) -> -> *泛形参数* → [类型名称](./03_Types.md#type_name) -> -> *泛形参数* → [类型名称](./03_Types.md#type_name) **:** [类型标识](./03_Types.md#type_identifier) -> -> *泛形参数* → [类型名称](./03_Types.md#type_name) **:** [协议合成类型](./03_Types.md#protocol_composition_type) -> -> *泛型 where 子句* → **where** [约束集](./09_Generic_Parameters_and_Arguments.md#requirement_list) -> -> *约束集* → [约束](./09_Generic_Parameters_and_Arguments.md#requirement) | [约束](./09_Generic_Parameters_and_Arguments.md#requirement) **,** [约束集](./09_Generic_Parameters_and_Arguments.md#requirement_list) -> -> *约束* → [一致性约束](./09_Generic_Parameters_and_Arguments.md#conformance_requirement) | [同类型约束](./09_Generic_Parameters_and_Arguments.md#same_type_requirement) -> -> *一致性约束* → [类型标识](./03_Types.md#type_identifier) **:** [类型标识](./03_Types.md#type_identifier) -> -> *一致性约束* → [类型标识](./03_Types.md#type_identifier) **:** [协议合成类型](./03_Types.md#protocol_composition_type) -> -> *同类型约束* → [类型标识](./03_Types.md#type_identifier) **==** [类型](./03_Types.md#type_identifier) -> diff --git a/source/chapter3/10_Summary_of_the_Grammar.md b/source/chapter3/10_Summary_of_the_Grammar.md index 19d9db9a..1c5520d9 100755 --- a/source/chapter3/10_Summary_of_the_Grammar.md +++ b/source/chapter3/10_Summary_of_the_Grammar.md @@ -1,682 +1,1492 @@ # 语法总结(Summary of the Grammar) +## 词法结构 {#lexical_structure} + +> 空白字符语法 +> +> *空白字符* → [空白字符项](./02_Lexical_Structure.md#whitespace-item) [空白字符](./02_Lexical_Structure.md#whitespace)可选 +> +> *空白字符项* → [换行符](./02_Lexical_Structure.md#line-break) +> +> *空白字符项* → [注释](./02_Lexical_Structure.md#comment) +> +> *空白字符项* → [多行注释](./02_Lexical_Structure.md#multiline-comment) +> +> *空白字符项* → U+0000,U+0009,U+000B,U+000C 或 U+0020 +> +> +> +> 换行符* → U+000A +> +> *换行符* → U+000D +> +> *换行符* → U+000D 后面是 U+000A +> +> *注释* → **//** [单行内容注释](./02_Lexical_Structure.md#comment-text) [换行符](./02_Lexical_Structure.md#line-break) +> +> *注释* → **/\*** [多行内容注释](./02_Lexical_Structure.md#multiline-comment-text) **\*/** +> +> +> +> *注释内容* → [注释内容项](./02_Lexical_Structure.md#comment-text-item) [注释内容](./02_Lexical_Structure.md#comment-text)可选 +> +> *注释内容项* → 除 U+000A 或 U+000D 外的任何 Unicode 标量值 +> +> +> +> *多行注释内容* → [多行注释内容项](./02_Lexical_Structure.md#multiline-comment-text-item) [多行注释内容](./02_Lexical_Structure.md#multiline-comment-text)可选 +> +> *多行注释内容项* → [多行内容](./02_Lexical_Structure.md#multiline-comment) +> +> *多行注释内容项* → [注释内容项](./02_Lexical_Structure.md#comment-text-item) +> +> *多行注释内容项* → 除 **/\*** 或 **\*/** 外的任何 Unicode 标量值 +> + + + +> 标识符语法 +> +> *标识符* → [标识符头(Head)](./02_Lexical_Structure.md#identifier_head) [标识符字符集](./02_Lexical_Structure.md#identifier_characters)可选 +> +> *标识符* → [标识符头(Head)](./02_Lexical_Structure.md#identifier_head) [标识符字符集](./02_Lexical_Structure.md#identifier_characters)可选 +> +> *标识符* → [隐式参数名](./02_Lexical_Structure.md#implicit_parameter_name) +> +> *标识符集* → [标识符](./02_Lexical_Structure.md#identifier) | [标识符](./02_Lexical_Structure.md#identifier) **,** [标识符集](./02_Lexical_Structure.md#identifier_list) +> +> *标识符头(Head)* → 大写或者小写字母 A 到 Z +> +> *标识符头(Head)* → _ +> +> *标识符头(Head)* → U+00A8, U+00AA, U+00AD, U+00AF, U+00B2–U+00B5, or U+00B7–U+00BA +> +> *标识符头(Head)* → U+00BC–U+00BE, U+00C0–U+00D6, U+00D8–U+00F6, or U+00F8–U+00FF +> +> *标识符头(Head)* → U+0100–U+02FF, U+0370–U+167F, U+1681–U+180D, or U+180F–U+1DBF +> +> *标识符头(Head)* → U+1E00–U+1FFF +> +> *标识符头(Head)* → U+200B–U+200D, U+202A–U+202E, U+203F–U+2040, U+2054, or U+2060–U+206F +> +> *标识符头(Head)* → U+2070–U+20CF, U+2100–U+218F, U+2460–U+24FF, or U+2776–U+2793 +> +> *标识符头(Head)* → U+2C00–U+2DFF or U+2E80–U+2FFF +> +> *标识符头(Head)* → U+3004–U+3007, U+3021–U+302F, U+3031–U+303F, or U+3040–U+D7FF +> +> *标识符头(Head)* → U+F900–U+FD3D, U+FD40–U+FDCF, U+FDF0–U+FE1F, or U+FE30–U+FE44 +> +> *标识符头(Head)* → U+FE47–U+FFFD +> +> *标识符头(Head)* → U+10000–U+1FFFD, U+20000–U+2FFFD, U+30000–U+3FFFD, or U+40000–U+4FFFD +> +> *标识符头(Head)* → U+50000–U+5FFFD, U+60000–U+6FFFD, U+70000–U+7FFFD, or U+80000–U+8FFFD +> +> *标识符头(Head)* → U+90000–U+9FFFD, U+A0000–U+AFFFD, U+B0000–U+BFFFD, or U+C0000–U+CFFFD +> +> *标识符头(Head)* → U+D0000–U+DFFFD or U+E0000–U+EFFFD +> +> *标识符字符* → 数值 0 到 9 +> +> *标识符字符* → U+0300–U+036F, U+1DC0–U+1DFF, U+20D0–U+20FF, or U+FE20–U+FE2F +> +> *标识符字符* → [标识符头(Head)](./02_Lexical_Structure.md#identifier_head) +> +> *标识符字符集* → [标识符字符](./02_Lexical_Structure.md#identifier_character) [标识符字符集](./02_Lexical_Structure.md#identifier_characters)可选 +> +> *隐式参数名* → **$** [十进制数字集](./02_Lexical_Structure.md#decimal_digits) +> + + + +> 字面量语法 +> +> *字面量* → [数值型字面量](./02_Lexical_Structure.md#numeric-literal) | [字符串字面量](./02_Lexical_Structure.md#string-literal) | [布尔字面量](./02_Lexical_Structure.md#boolean-literal) | [空字面量](./02_Lexical_Structure.md#nil-literal) +> +> *数值型字面量* → **-**可选[整形字面量](./02_Lexical_Structure.md#integer_literal) | **-**可选[浮点型字面量](./02_Lexical_Structure.md#floating-point-literal) +> +> *布尔字面量* → **true** | **false** +> +> *空字面量* → **nil** +> + + + +> 整型字面量语法 +> +> *整型字面量* → [二进制字面量](./02_Lexical_Structure.md#binary_literal) +> +> *整型字面量* → [八进制字面量](./02_Lexical_Structure.md#octal_literal) +> +> *整型字面量* → [十进制字面量](./02_Lexical_Structure.md#decimal_literal) +> +> *整型字面量* → [十六进制字面量](./02_Lexical_Structure.md#hexadecimal_literal) +> +> *二进制字面量* → **0b** [二进制数字](./02_Lexical_Structure.md#binary_digit) [二进制字面量字符集](./02_Lexical_Structure.md#binary_literal_characters)可选 +> +> *二进制数字* → 数值 0 到 1 +> +> *二进制字面量字符* → [二进制数字](./02_Lexical_Structure.md#binary_digit) | **_** +> +> *二进制字面量字符集* → [二进制字面量字符](./02_Lexical_Structure.md#binary_literal_character) [二进制字面量字符集](./02_Lexical_Structure.md#binary_literal_characters)可选 +> +> *八进制字面量* → **0o** [八进制数字](./02_Lexical_Structure.md#octal_digit) [八进制字符集](./02_Lexical_Structure.md#octal_literal_characters)可选 +> +> *八进字数字* → 数值 0 到 7 +> +> *八进制字符* → [八进制数字](./02_Lexical_Structure.md#octal_digit) | **_** +> +> *八进制字符集* → [八进制字符](./02_Lexical_Structure.md#octal_literal_character) [八进制字符集](./02_Lexical_Structure.md#octal_literal_characters)可选 +> +> *十进制字面量* → [十进制数字](./02_Lexical_Structure.md#decimal_digit) [十进制字符集](./02_Lexical_Structure.md#decimal_literal_characters)可选 +> +> *十进制数字* → 数值 0 到 9 +> +> *十进制数字集* → [十进制数字](./02_Lexical_Structure.md#decimal_digit) [十进制数字集](./02_Lexical_Structure.md#decimal_digits)可选 +> +> *十进制字面量字符* → [十进制数字](./02_Lexical_Structure.md#decimal_digit) | **_** +> +> *十进制字面量字符集* → [十进制字面量字符](./02_Lexical_Structure.md#decimal_literal_character) [十进制字面量字符集](./02_Lexical_Structure.md#decimal_literal_characters)可选 +> +> *十六进制字面量* → **0x** [十六进制数字](./02_Lexical_Structure.md#hexadecimal_digit) [十六进制字面量字符集](./02_Lexical_Structure.md#hexadecimal_literal_characters)可选 +> +> *十六进制数字* → 数值 0 到 9,a 到 f,或者 A 到 F +> +> *十六进制字符* → [十六进制数字](./02_Lexical_Structure.md#hexadecimal_digit) | **_** +> +> *十六进制字面量字符集* → [十六进制字符](./02_Lexical_Structure.md#hexadecimal_literal_character) [十六进制字面量字符集](./02_Lexical_Structure.md#hexadecimal_literal_characters)可选 +> + + + +> 浮点型字面量语法 +> +> *浮点数字面量* → [十进制字面量](./02_Lexical_Structure.md#decimal_literal) [十进制分数](./02_Lexical_Structure.md#decimal_fraction)可选[十进制指数](./02_Lexical_Structure.md#decimal_exponent)可选 +> +> *浮点数字面量* → [十六进制字面量](./02_Lexical_Structure.md#hexadecimal_literal) [十六进制分数](./02_Lexical_Structure.md#hexadecimal_fraction)可选[十六进制指数](./02_Lexical_Structure.md#hexadecimal_exponent) +> +> *十进制分数* → **.** [十进制字面量](./02_Lexical_Structure.md#decimal_literal) +> +> *十进制指数* → [浮点数 e](./02_Lexical_Structure.md#floating_point_e) [正负号](./02_Lexical_Structure.md#sign)可选[十进制字面量](./02_Lexical_Structure.md#decimal_literal) +> +> *十六进制分数* → **.** [十六进制数](./02_Lexical_Structure.md#hexadecimal_literal) +> +> *十六进制指数* → [浮点数 p](./02_Lexical_Structure.md#floating_point_p) [正负号](./02_Lexical_Structure.md#sign)可选[十六进制字面量](./02_Lexical_Structure.md#hexadecimal_literal) +> +> *浮点数 e* → **e** | **E** +> +> *浮点数 p* → **p** | **P** +> +> *正负号* → **+** | **-** +> + + + +> 字符串型字面量语法 + +> *字符串字面量* → [静态字符串字面量](./02_Lexical_Structure.md#static-string-literal) | [插值字符串字面量](./02_Lexical_Structure.md#interpolated-string-literal) +> +> *字符串开分隔定界符* → [字符串扩展分隔符](./02_Lexical_Structure.md#extended-string-literal-delimiter) **"** +> +> *字符串闭分隔定界符* → **"** [字符串扩展分隔符](./02_Lexical_Structure.md#extended-string-literal-delimiter)可选 +> +> *静态字符串字面量* → [字符串开分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) [引用文本](./02_Lexical_Structure.md#quoted-text)可选 [字符串闭分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) +> +> *静态字符串字面量* → [多行字符串开分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) [多行引用文本](./02_Lexical_Structure.md#multiline-quoted-text)可选 [多行字符串闭分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) +> +> *多行字符串开分隔定界符* → [字符串扩展分隔符](./02_Lexical_Structure.md#extended-string-literal-delimiter) **"""** +> +> *多行字符串闭分隔定界符* → **"""** [字符串扩展分隔符](./02_Lexical_Structure.md#extended-string-literal-delimiter) +> +> *字符串扩展分隔符* → **#** [字符串扩展分隔符](./02_Lexical_Structure.md#extended-string-literal-delimiter)可选 +> +> *引用文本* → [引用文本项](./02_Lexical_Structure.md#quoted-text-item) [引用文本](#quoted-text)可选 +> +> *引用文本项* → [转义字符](./02_Lexical_Structure.md#escaped-character) +> +> *引用文本项* → 除了 **"**、**\\\**、U+000A、U+000D 以外的所有 Unicode 字符 +> +> *多行引用文本* → [多行引用文本项](./02_Lexical_Structure.md#multiline-quoted-text-item) [多行引用文本](./02_Lexical_Structure.md#multiline-quoted-text)可选 +> +> *多行引用文本项* [转义字符](./02_Lexical_Structure.md#escaped-character)可选 +> +> *多行引用文本* → 除了 **\\** 以外的任何 Unicode 标量值 +> +> *多行引用文本* → [转义换行](./02_Lexical_Structure.md#escaped-newline) + +> *插值字符串字面量* → [字符串开分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) [插值文本](./02_Lexical_Structure.md#interpolated-text)可选 [字符串闭分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) +> +> *插值字符串字面量* → [多行字符串开分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) [插值文本](./02_Lexical_Structure.md#interpolated-text)可选 [多行字符串闭分隔定界符](./02_Lexical_Structure.md#extended-string-literal-delimiter) +> +> *插值文本* → [插值文本项](./02_Lexical_Structure.md#interpolated-text-item) [插值文本](./02_Lexical_Structure.md#interpolated-text)可选 +> +> *插值文本项* → **\\**(**[表达式](./04_Expressions.md)**) | [引用文本项](./02_Lexical_Structure.md#quoted-text-item) +> +> *多行插值文本* → [多行插值文本项](./02_Lexical_Structure.md#multiline-quoted-text-item) [多行插值文本](./02_Lexical_Structure.md#multiline-quoted-text)可选 +> +> *多行插值文本项* → **\\(** [表达式](./04_Expressions.md) **)** | [多行引用文本项](./02_Lexical_Structure.md#multiline-quoted-text-item) +> +> *转义序列* → **\\** [字符串扩展分隔符](./02_Lexical_Structure.md#extended-string-literal-delimiter) +> +> *转义字符* → [转义序列](./02_Lexical_Structure.md#escape-sequence) **0** | [转义序列](./02_Lexical_Structure.md#escape-sequence) **\\** | [转义序列](./02_Lexical_Structure.md#escape-sequence) **t** | [转义序列](#escape-sequence) **n** | [转义序列](./02_Lexical_Structure.md#escape-sequence) **r** | [转义序列](./02_Lexical_Structure.md#escape-sequence) **\"** | [转义序列](./02_Lexical_Structure.md#escape-sequence) **'** +> +> *转义字符* → [转义序列](./02_Lexical_Structure.md#escape-sequence) **u {** [unicode 标量数字](./02_Lexical_Structure.md#unicode-scalar-digits) **}** +> +> *unicode 标量数字* → 一到八位的十六进制数字 +> +> *转义换行符* → [转义序列](./02_Lexical_Structure.md#escape-sequence) [空白](./02_Lexical_Structure.md#whitespace)可选 [换行符](./02_Lexical_Structure.md#line-break) + + + + +> 运算符语法语法 +> +> *运算符* → [运算符头](./02_Lexical_Structure.md#operator_character) [运算符字符集](./02_Lexical_Structure.md#operator)可选 +> +> *运算符* → [点运算符头](./02_Lexical_Structure.md#dot-operator-head) [点运算符字符集](./02_Lexical_Structure.md#dot-operator-characters)可选 +> +> *运算符字符* → **/** | **=** | **-** | **+** | **!** | ***** | **%** | **<** | **>** | **&** | **|** | **^** | **~** | **?** +> +> *运算符头* → U+00A1–U+00A7 +> +> *运算符头* → U+00A9 or U+00AB +> +> *运算符头* → U+00AC or U+00AE +> +> *运算符头* → U+00B0–U+00B1, U+00B6, U+00BB, U+00BF, U+00D7, or U+00F7 +> +> *运算符头* → U+2016–U+2017 or U+2020–U+2027 +> +> *运算符头* → U+2030–U+203E +> +> *运算符头* → U+2041–U+2053 +> +> *运算符头* → U+2055–U+205E +> +> *运算符头* → U+2190–U+23FF +> +> *运算符头* → U+2500–U+2775 +> +> *运算符头* → U+2794–U+2BFF +> +> *运算符头* → U+2E00–U+2E7F +> +> *运算符头* → U+3001–U+3003 +> +> *运算符头* → U+3008–U+3030 +> +> *运算符字符* → [运算符头](./02_Lexical_Structure.md#operator-head) +> +> *运算符字符* → U+0300–U+036F +> +> *运算符字符* → U+1DC0–U+1DFF +> +> *运算符字符* → U+20D0–U+20FF +> +> *运算符字符* → U+FE00–U+FE0F +> +> *运算符字符* → U+FE20–U+FE2F +> +> *运算符字符* → U+E0100–U+E01EF +> +> *运算符字符集* → [运算符字符](./02_Lexical_Structure.md#operator-character) [运算符字符集](./02_Lexical_Structure.md#operator-characters)可选 +> +> *点运算符头* → **..** +> +> *点运算符字符* → **.** | [运算符字符](./02_Lexical_Structure.md#operator-character) +> +> *点运算符字符集* → [点运算符字符](./02_Lexical_Structure.md#dot-operator-character) [点运算符字符集](./02_Lexical_Structure.md#dot-operator-characters)可选 +> +> *二元运算符* → [运算符](./02_Lexical_Structure.md#operator) +> +> *前置运算符* → [运算符](./02_Lexical_Structure.md#operator) +> +> *后置运算符* → [运算符](./02_Lexical_Structure.md#operator) +> + +## 类型 {#types} + +> 类型语法 +> +> *类型* → [数组类型](./03_Types.md#array_type) +> +> *类型* → [字典类型](./03_Types.md#dictionary-type) +> +> *类型* → [函数类型](./03_Types.md#function_type) +> +> *类型* → [类型标识符](./03_Types.md#type_identifier) +> +> *类型* → [元组类型](./03_Types.md./03_Types.md#tuple_type) +> +> *类型* → [可选类型](./03_Types.md#optional_type) +> +> *类型* → [隐式解析可选类型](./03_Types.md#implicitly_unwrapped_optional_type) +> +> *类型* → [协议合成类型](./03_Types.md#protocol_composition_type) +> +> *类型* → **Any** +> +> *类型* → **Self** +> +> *类型* → **(** [type](./03_Types.md#metatype_type) **)** + + + +> 类型注解语法 +> +> *类型注解* → **:** [属性(Attributes)集](./07_Attributes.md#attributes)可选[类型](./03_Types.md#type) + + + +> 类型标识语法 +> +> *类型标识* → [类型名称](./03_Types.md#type_name) [泛型参数从句](./09_Generic_Parameters_and_Arguments.md#generic_argument_clause)可选| [类型名称](./03_Types.md#type_name) [泛型参数从句](./09_Generic_Parameters_and_Arguments.md#generic_argument_clause)可选**.** [类型标识符](./03_Types.md#type_identifier) +> +> *类型名* → [标识符](./02_Lexical_Structure.md#identifier) +> + + + +> 元组类型语法 +> +> *元组类型* → **(** **)** | **(** [元组类型元素](./03_Types.md#tuple-type-element) **,** [元组类型元素列表](./03_Types.md#tuple-type-element-list) **)** +> +> *元组类型元素列表* → [元组类型元素](./03_Types.md#tuple-type-element) | [元组类型元素](./03_Types.md#tuple-type-element) **,** [元组类型元素列表](./03_Types.md#tuple-type-element-list) +> +> *元组类型元素* → [元素名](./03_Types.md#element-name) [类型注解](./03_Types.md#type-annotation) | [类型](./03_Types.md#type) +> +> *元素名* → [标识符](./02_Lexical_Structure.md#identifier) + + + +> 函数类型语法 +> +> *函数类型* → [类型](./03_Types.md#type) **throws**可选**->** [类型](./03_Types.md#type) +> +> *函数类型* → [类型](./03_Types.md#) **rethrows** **->** [类型](./03_Types.md#) +> +> *函数类型子句* → **(** **)** +> +> *函数类型子句* → **(** [函数类型参数列表](./03_Types.md#function-type-argument-list) *...*­可选 **)** +> +> *函数类型参数列表* → [函数类型参数](./03_Types.md#function-type-argument) | [函数类型参数](function-type-argument), [函数类型参数列表](./03_Types.md#function-type-argument-list) +> +> *函数类型参数* → [特性列表](./07_Attributes.md#attributes)可选 **输入输出参数**可选 [类型](#type) | [参数标签](#argument-label) [类型注解](#type-annotation) +> +> *参数标签* → [标识符](./02_Lexical_Structure.md#identifier) + + + +> 数组类型语法 +> +> *数组类型* → **[** [*类型*](./03_Types.md#array_type) **]** + + +> 字典类型语法 +> +> *字典类型* → **[** [类型 **:** 类型](./03_Types.md#type) **]** + + + +> 可选类型语法 +> +> *可选类型* → [类型](./03_Types.md#type) **?** +> + + + +> 隐式解析可选类型(Implicitly Unwrapped Optional Type)语法 +> +> *隐式解析可选类型* → [类型](./03_Types.md#type) **!** +> + + + +> 协议合成类型语法 +> +> *协议合成类型* → [类型标识符](./03_Types.md#type_identifier) | [协议合成延续](./03_Types.md#protocol-composition-continuation) +> +> *协议持续延续* → [类型标识符](./03_Types.md#type_identifier) | [协议合成类型](./03_Types.md#protocol-composition-type) + + + +> 元(Metatype)类型语法 +> +> *元类型* → [类型](./03_Types.md#type) **.** **Type** | [类型](./03_Types.md#type) **.** **Protocol** + + + +> 类型继承从句语法 +> +> *类型继承从句* → **:** [类型继承集](./03_Types.md#type_inheritance_list) +> +> *类型继承集* → [类型标识符](./03_Types.md#type_identifier) | [类型标识符](./03_Types.md#type_identifier) **,** [类型继承集](./03_Types.md#type_inheritance_list) +> +> *类条件* → **class** + +## 表达式 {#expressions} + +> 表达式语法 +> +> *表达式* → [try 运算符](./04_Expressions.md#try-operator)可选 [前缀表达式](./04_Expressions.md#prefix-expression) [二元表达式列表](./04_Expressions.md#binary-expressions) +> +> *表达式列表* → [表达式](./04_Expressions.md#expression)|[表达式](./04_Expressions.md#expression), [表达式列表](./04_Expressions.md#expression-list) +> + + + +> 前缀表达式语法 +> +> *前缀表达式* → [前缀操作符]()可选 [前缀表达式](./04_Expressions.md#prefix-expression) +> +> *前缀表达式* → [输入输出表达式](./04_Expressions.md#in-out-expression) +> +> *输入输出表达式* → **&** [标识符](./02_Lexical_Structure.md#identifier) +> + + + +>try 表达式语法 +> +> *try 操作符* → **try** | **try ? ** | ** try ! ** +> + + + +> 二元表达式语法 +> +> *二元表达式* → [二元运算符](./02_Lexical_Structure.md#binary-operator) [前缀表达式](./04_Expressions.md#prefix-expression) +> +> *二元表达式* → [赋值操作符](./06_Declarations.md#class_declaration) [try 运算符](./04_Expressions.md#try_operator)可选 [前缀表达式](./04_Expressions.md#prefix-expression) +> +> *二元表达式* → [条件运算符](./04_Expressions.md#conditional-operator) [try 运算符](./04_Expressions.md#try_operator)可选 [前缀表达式](./04_Expressions.md#prefix-expression) +> +> *二元表达式* → [类型转换运算符](./04_Expressions.md#type-casting-operator) +> +> *二元表达式* → [二元表达式](./04_Expressions.md#binary-expression) [二元表达式列表](./04_Expressions.md#binary-expressions)可选 +> + + + +> 赋值操作符语法 +> +> *赋值运算符* → [=] +> + + + +> 条件运算符 +> +> *条件运算符* → [?] [表达式](./04_Expressions.md#expression): + +> 类型转换运算符语法 +> +> *类型转换运算符* → [is] [类型](./03_Types.md#type) +> +> *类型转换运算符* → [as] [类型](./03_Types.md#type) +> +> *类型转换运算符* → [as ?] [类型](./03_Types.md#type) +> +> *类型转换运算符* → [as !] [类型](./03_Types.md#type) +> + + + + +> 基础表达式语法 +> +> *基础表达式* → [标识符](./02_Lexical_Structure.md#identifier) [泛型实参子句](./09_Generic_Parameters_and_Arguments.md#generic-argument-clause)可选 +> +> *基础表达式* → [字面量表达式](./04_Expressions.md#literal-expression) +> +> *基础表达式* → [self 表达式](./04_Expressions.md#self-expression) +> +> *基础级表达式* → [父类表达式](./04_Expressions.md#superclass-expression) +> +> *基础表达式* → [闭包表达式](./04_Expressions.md#closure-expression) +> +> *基础表达式* → [圆括号表达式](./04_Expressions.md#parenthesized-expression) +> +> *基础表达式* → [元组表达式](./04_Expressions.md#Tuple_Expression) +> +> *基础表达式* → [隐式成员表达式](./04_Expressions.md#implicit-member-expression) +> +> *基础表达式* → [通配符表达式](./04_Expressions.md#wildcard-expression) +> +> *基础表达式* → [key-path表达式](./04_Expressions.md#key-path_expression) +> +> *基础表达式* → [选择器表达式](./04_Expressions.md#selector-expression) +> +> *基础表达式* → [key-path字符串表达式](./04_Expressions.md#key-patch-string-expression) +> + + + +> 字面量表达式语法 +> +> *字面量表达式* → [字面量](./04_Expressions.md#literal-expression) +> +> *字面量表达式* → [数组字面量](./04_Expressions.md#array-literal) | [字典字面量](./04_Expressions.md#dictionary-literal) | [练习场字面量](./04_Expressions.md#playground-literal) +> +> *字面量表达式* → **#file** | **#line** | **#column** | **#function** | **dsohandle** +> +> +> *数组字面量* → **[** [数组字面量项列表](./04_Expressions.md#array-literal-items)可选 **]** +> *数组字面量项列表* → [数组字面量项](./04_Expressions.md#array-literal-item)可选 | [数组字面量项](./04_Expressions.md#array-literal-item),[数组字面量项列表](./04_Expressions.md#array-literal-items) +> *数组字面量项* → [表达式](./04_Expressions.md#expression) +> +> +> *字典字面量* → [[字典字面量项列表](./04_Expressions.md#dictionary-literal-items) **]** | **[** **:** **]** +> +> +> *字典字面量项列表* → [字典字面量项](./04_Expressions.md#dictionary-literal-item) ,**可选 | [字典字面量项](./04_Expressions.md#dictionary-literal-item) ,[字典字面量项列表](./04_Expressions.md#dictionary-literal-items) +> +> *字典字面量项* → [表达式](./04_Expressions.md#expression) **:** [表达式](./04_Expressions.md#expression) +> +> +> *palyground 字面量* → **#colorLiteral ( red : [表达式](./04_Expressions.md#expression) , green :[表达式](./04_Expressions.md#expression), blue :[表达式](./04_Expressions.md#expression) , alpha : [表达式](./04_Expressions.md#expression) )** +> +> *playground 字面量* → **#fileLiteral ( resourceName : [表达式](#expression) )** +> +> *playground 字面量* → **#imageLiteral ( resourceName : [表达式](#expression) ) + + +> self 表达式语法 +> +> *self 表达式* → **self** | [self 方法表达式](./04_Expressions.md#self-method-expression) | [self 下标表达式](./04_Expressions.md#self-subscript-expression) | [self 构造器表达式](./04_Expressions.md#self-initializer-expression) +> +> +> *self 方法表达式* → **self** **.** [标识符](./02_Lexical_Structure.md#identifier) +> +> *self 下标表达式* → **self** **[** [函数调用参数表](./04_Expressions.md#function-call-argument-list­) **]** +> +> *self 构造器表达式* → **self** **.** **init** + + + +> 父类表达式语法 +> +> *父类表达式* → [父类方法表达式](./04_Expressions.md#superclass-method-expression) | [父类下标表达式](./04_Expressions.md#superclass-subscript-expression) | [父类构造器表达式](./04_Expressions.md#superclass-initializer-expression) +> +> *父类方法表达式* → **super** **.** [标识符](./02_Lexical_Structure.md#identifier) +> +> *父类下标表达式* → **super** [[函数调用参数表](./04_Expressions.md#function-call-argument-list­) **]** +> +> *父类构造器表达式* → **super** **.** **init** +> + + + + +> 闭包表达式语法 +> +> *闭包表达式* → **{** [闭包签名](./04_Expressions.md#closure-signature)可选 [语句](./04_Expressions.md#statements) **}** +> +> +> 闭包签名* → [参数子句](./04_Expressions.md#parameter-clause) [函数结果](05_Declarations.md#function-result)可选 **in** +> +> *闭包签名* → [标识符列表](./04_Expressions.md#identifier-list) [函数结果](05_Declarations.md#function-result)可选 **in** +> +> +> *闭包参数子句* **(** **)** | **(** [闭包参数列表](./04_Expressions.md#closure-parameter-list) | [标识符列表](./04_Expressions.md#identifier-list) **)** +> +> *闭包参数列表* [闭包参数](./04_Expressions.md#implicit-member-expression) | [闭包参数](./04_Expressions.md#implicit-member-expression), [闭包参数列表](./04_Expressions.md#implicit-member-expression) +> +> *闭包参数* [闭包参数名](./04_Expressions.md#implicit-member-expression) [类型声明](./03_Types.md#type-annotation) 可选 +> +> *闭包参数* [闭包参数名](./04_Expressions.md#implicit-member-expression) [类型声明](./03_Types.md#type-annotation) **...** +> +> *闭包参数名* [标识符](./02_Lexical_Structure.md#identifier) +> +> +> *捕获列表* → [捕获列表](./04_Expressions.md#capture-list) **[** [捕获列表项列表](./04_Expressions.md#capture-list-items) **]** +> +> *捕获列表项列表* → [捕获列表项](./04_Expressions.md#capture-list-item) | [捕获列表项](./04_Expressions.md#capture-list-item) **,** [捕获列表项列表](./04_Expressions.md#capture-list-items) +> +> *捕获列表项* → [捕获说明符](./04_Expressions.md#capture-specifier)可选 [*表达式*](./04_Expressions.md#expression) +> +> *捕获说明符* → **weak** | **unowned** | **unowned(safe)** | **unowned(unsafe)** +> + + + + +> 隐式成员表达式语法 +> +> *隐式成员表达式* → **.** [标识符](./02_Lexical_Structure.md#identifier) +> + + + +> 圆括号表达式语法 +> +> *圆括号表达式* → **( [表达式](./04_Expressions.md#expression) )** +> + + + +> 元组表达式语法 +> +> *元组表达式* → **( )** | **(**[元组元素](./04_Expressions.md#tuple-element), [元组元素列表](./04_Expressions.md#tuple-element-list) **)** +> +> *元组元素列表* → [元组元素](./04_Expressions.md#tuple-element) | [元组元素](./04_Expressions.md#tuple-element) **,** [元组元素列表](./04_Expressions.md#tuple-element-list) +> *元组元素* → [表达式](./04_Expressions.md#expression) | [标识符](./04_Expressions.md#identifier) **:** [表达式](./04_Expressions.md##expression) +> + + + +> 通配符表达式语法 +> +> *通配符表达式* → **_** +> + + + + +> key-path表达式语法 +> +> *key-path 表达式* → **\** [类型](./03_Types.md#type)可选 **.** [多个 key-path 组件] +> *多个 key-path 组件* → [key-path 组件](./04_Expressions.md#key-path-component) | [key-path 组件](./04_Expressions.md#key-path-component) **.** [多个 key-path 组件](./04_Expressions.md#key-path-components) +> *key-path 组件* → [标识符](./02_Lexical_Structure.md#identifier) [多个 key-path 后缀](./04_Expressions.md#key-path-postfixes)可选 | [多个 key-path 后缀](./04_Expressions.md#key-path-postfixes) +> *多个 key-path 后缀* → [key-path 后缀](./04_Expressions.md#key-path-postfix) [多个 key-path 后缀](./04_Expressions.md#key-path-postfixes)可选 key-path-postfixes {./04_Expressions.md#key-path-postfixes} +> +> *key-path 后缀* → **?** | **!** | **self** | **\[** [函数调用参数表](./04_Expressions.md#function-call-argument-list) **\]** +> + + + + +> 选择器表达式语法 +> +> *选择器表达式* → **#selector** **(** [*表达式*](./04_Expressions.md#expression) **)** +> +> *选择器表达式* → **#selector** **(** [*getter:表达式*](./04_Expressions.md#expression) **)** +> +> *选择器表达式* → **#selector** **(** [*setter:表达式*](./04_Expressions.md#expression) **)** +> + + + +> key-path 字符串表达式语法 +> *key-path 字符串表达式* → **#keyPath (** [表达式](./04_Expressions.md#expression) **)** +> + + + +> 后缀表达式表达式语法 +> +> *后缀表达式* → [基本表达式](./04_Expressions.md#primary-expression) +> +> *后缀表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) [后缀运算符](02_Lexical_Structure.md#postfix-operator) +> +> *后缀表达式* → [函数调用表达式](./04_Expressions.md#function-call-expression) +> +> *后缀表达式* → [构造器表达式](./04_Expressions.md#initializer-expression) +> +> *后缀表达式* → [显式成员表达式](./04_Expressions.md#explicit-member-expression) +> +> *后缀表达式* → [后缀 self 表达式](./04_Expressions.md#postfix-self-expression) +> +> *后缀表达式* → [下标表达式](./04_Expressions.md#subscript-expression) +> +> *后缀表达式* → [强制取值表达式](./04_Expressions.md#forced-value-expression) +> +> *后缀表达式* → [可选链表达式](./04_Expressions.md#optional-chaining-expression) +> + + + +> 函数调用表达式语法 +> +> *函数调用表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) [函数调用参数子句](./04_Expressions.md#function-call-argument-clause) +> +> *函数调用表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) [函数调用参数子句](./04_Expressions.md#function-call-argument-clause)可选 [尾随闭包](./04_Expressions.md#trailing-closure) +> +> *函数调用参数子句* → **(** **)** | **(** [函数调用参数表](./04_Expressions.md#function-call-argument-list) **)** +> +> *函数调用参数表* → [函数调用参数](./04_Expressions.md#function-call-argument) | [函数调用参数](./04_Expressions.md#function-call-argument) **,** [函数调用参数表](./04_Expressions.md#function-call-argument-list) +> +> *函数调用参数* → [表达式](./04_Expressions.md#expression) | [标识符](02_Lexical_Structure.md#identifier) **:** [表达式](./04_Expressions.md#expression) +> +> *函数调用参数* → [运算符](./02_Lexical_Structure.md#operator) | [标识符](./02_Lexical_Structure.md#identifier) **:** [运算符](./02_Lexical_Structure.md#operator) +> +> *尾随闭包* → [闭包表达式](./04_Expressions.md#closure-expression) +> + + + +> 初始化表达式语法 +> +> *构造器表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **.** **init** +> +> *构造器表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **.** **init** **(** [参数名称](./04_Expressions.md#argument-names) **)** +> + + + +> 显式成员表达式语法 +> +> *显式成员表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **.** [十进制数字] (02_Lexical_Structure.md#decimal-digit) +> +> *显式成员表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **.** [标识符](02_Lexical_Structure.md#identifier) [泛型实参子句](./09_Generic_Parameters_and_Arguments.md#generic-argument-clause)可选
+> +> *显式成员表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **.** [标识符] (02_Lexical_Structure.md#identifier) **(** [参数名称](./04_Expressions.md#argument-names) **)** +> +> *参数名称* → [参数名](./04_Expressions.md#argument-name) [参数名称](./04_Expressions.md#argument-names)可选
+> +> *参数名* → [标识符](./02_Lexical_Structure.md#identifier) **:** +> + + + +> 后缀 self 表达式语法 +> +> *后缀 self 表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **.** **self** +> + + + +> 下标表达式语法 +> +> *下标表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **[** [表达式列表](./04_Expressions.md#expression-list) **]** +> + + + +> 强制取值表达式语法 +> *强制取值表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **!** +> + + + + +> 可选链式表达式语法 +> *可选链表达式* → [后缀表达式](./04_Expressions.md#postfix-expression) **?** +> + ## 语句 {#statements} > 语句语法 -> -> *语句* → [*表达式*](./04_Expressions.md#expression) **;** _可选_ -> -> *语句* → [*声明*](./06_Declarations.md#declaration) **;** _可选_ -> -> *语句* → [*循环语句*](./05_Statements.md#loop_statement) **;** _可选_ -> -> *语句* → [*分支语句*](./05_Statements.md#branch_statement) **;** _可选_ -> -> *语句* → [*标记语句(Labeled Statement)*](./05_Statements.md#labeled_statement) -> -> *语句* → [*控制转移语句*](./05_Statements.md#control_transfer_statement) **;** _可选_ -> -> *语句* → [*延迟语句*](TODO) **;** _可选_ -> - -> *语句* → [*执行语句*](TODO) **;** _可选_ -> - -> *多条语句(Statements)* → [*语句*](./05_Statements.md#statement) [*多条语句(Statements)*](./05_Statements.md#statements) _可选_ -> +> +> *语句* → [表达式](./04_Expressions.md#expression) **;**可选 +> +> *语句* → [声明](./06_Declarations.md#declaration) **;**可选 +> +> *语句* → [循环语句](./05_Statements.md#loop_statement) **;**可选 +> +> *语句* → [分支语句](./05_Statements.md#branch_statement) **;**可选 +> +> *语句* → [标签语句](./05_Statements.md#labeled_statement) **;**可选 +> +> *语句* → [控制转移语句](./05_Statements.md#control_transfer_statement) **;**可选 +> +> *语句* → [延迟语句](./05_Statements.md#defer_statement) **;**可选 +> +> *语句* → [执行语句](./05_Statements.md#do_statement) **;**可选 +> +> *语句* → [编译控制语句](./05_Statements.md#compiler_control_statement) +> +> *语句集* → [语句](./05_Statements.md#statement) [语句集](./05_Statements.md#statements)可选 +> > 循环语句语法 -> -> *循环语句* → [*for 语句*](./05_Statements.md#for_statement) -> -> *循环语句* → [*for-in 语句*](./05_Statements.md#for_in_statement) -> -> *循环语句* → [*while 语句*](./05_Statements.md#wheetatype 类型 ile_statement) -> -> *循环语句* → [*repeat-while 语句*](./05_Statements.md#do_while_statement) -> - - - -> For 循环语法 -> -> *for 语句* → **for** [*for 初始条件*](./05_Statements.md#for_init) _可选_ **;** [*表达式*](./04_Expressions.md#expression) _可选_ **;** [*表达式*](./04_Expressions.md#expression) _可选_ [*代码块*](./06_Declarations.md#code_block) -> -> *for 语句* → **for** **(** [*for 初始条件*](./05_Statements.md#for_init) _可选_ **;** [*表达式*](./04_Expressions.md#expression) _可选_ **;** [*表达式*](./04_Expressions.md#expression) _可选_ **)** [*代码块*](./06_Declarations.md#code_block) -> -> *for 初始条件* → [*变量声明*](./06_Declarations.md#variable_declaration) | [*表达式集*](./04_Expressions.md#expression_list) -> +> +> *循环语句* → [for-in 语句](./05_Statements.md#for_in_statement) +> +> *循环语句* → [while 语句](./05_Statements.md#wheetatype 类型 ile_statement) +> +> *循环语句* → [repeat-while 语句](./05_Statements.md#do_while_statement) +> > For-In 循环语法 -> -> *for-in 语句* → **for case** _可选_ [*模式*](./08_Patterns.md#pattern) **in** [*表达式*](./04_Expressions.md#expression) [*代码块*](./06_Declarations.md#code_block) [*where 从句*](TODO) _可选_ -> +> +> *for-in 语句* → **for case**可选 [模式](./08_Patterns.md#pattern) **in** [表达式](./04_Expressions.md#expression) [where 子句](./05_Statements.md#where_clause)可选 [代码块](./06_Declarations.md#code_block) +> > While 循环语法 > -> *while 语句* → **while** [*条件子句*](./05_Statements.md#while_condition) [*代码块*](./06_Declarations.md#code_block) +> *while 语句* → **while** [条件集](./05_Statements.md#condition_list) [代码块](./06_Declarations.md#code_block) > -> *条件子句* → [*表达式*](TODO) +> *条件集* → [条件](./05_Statements.md#condition) | [条件](./05_Statements.md#condition) **,** [条件集](./05_Statements.md#condition_list) +> *条件* → [表达式](./04_Expressions.md#expression) | [可用性条件](./05_Statements.md#availability_condition) | [case 条件](./05_Statements.md#case_condition) | [可选绑定条件](./05_Statements.md#optional_binding_condition) > -> *条件子句* → [*表达式*](TODO) *,* [*表达式集*]() +> *case 条件* → **case** [模式](./08_Patterns.md#pattern) [构造器](./06_Declarations.md#initializer) > -> *条件子句* → [*表达式集*](TODO) +> *可选绑定条件* → **let** [模式](./08_Patterns.md#pattern) [构造器](./06_Declarations.md#initializer) | **var** [模式](./08_Patterns.md#pattern) [构造器](./06_Declarations.md#initializer) > -> *条件子句* → [*可用条件(availability-condition*)](TODO) *|* [*表达式集*]() -> -> *条件集* → [*条件*](TODO) *|* [*条件*](TODO) *,* [*条件集*]() -> -> *条件* → [*可用条件(availability-condition)*](TODO) *|* [*个例条件(case-condition)*](TODO) *|* [*可选绑定条件(optional-binding-condition)*](TODO) -> -> *个例条件(case-condition)* → **case** [*模式*](TODO) [*构造器*](TODO) [*where 从句*](TODO)_可选_ -> -> *可选绑定条件(optional-binding-condition)* → [*可选绑定头(optional-binding-head)*](TODO) [*可选绑定连续集(optional-binding-continuation-list)*](TODO) _可选_ [*where 从句*](TODO) _可选_ -> -> *可选绑定头(optional-binding-head)* → **let** [*模式 构造器*](TODO) *|* **var** [*模式 构造器*](TODO) -> -> *可选绑定连续集(optional-binding-contiuation-list)* → [*可选绑定连续(optional-binding-contiuation)*](TODO) *|* [*可选绑定连续(optional-binding-contiuation)*](TODO) *,* [*可选绑定连续集(optional-binding-contiuation-list)*](TODO) -> -> *可选绑定连续(optional-binding-continuation)* → [*模式 构造器*](TODO) *|* [*可选绑定头(optional-binding-head)*](TODO) -> > Repeat-While 语句语法 -> -*repeat-while-statement* → **repeat** [*代码块*](TODO) **while** [*表达式*](TODO) +> +*repeat-while-statement* → **repeat** [代码块](./06_Declarations.md#code_block) **while** [表达式](./04_Expressions.md#expression) > 分支语句语法 -> -> *分支语句* → [*if 语句*](./05_Statements.md#if_statement) -> -> *分支语句* → [*guard 语句*](TODO) -> -> *分支语句* → [*switch 语句*](./05_Statements.md#switch_statement) -> +> +> *分支语句* → [if 语句](./05_Statements.md#if_statement) +> +> *分支语句* → [guard 语句](./05_Statements.md#guard_statement) +> +> *分支语句* → [switch 语句](./05_Statements.md#switch_statement) +> > If 语句语法 > -> *if 语句* → **if** [*条件子句*](TODO) [*代码块*](TODO) [*else 子句(Clause)*](TODO) _可选_ +> *if 语句* → **if** [条件集](./05_Statements.md#condition_list) [代码块](./06_Declarations.md#code_block) [else 子句](./05_Statements.md#else_clause)可选 > -> *else 子句(Clause)* → **else** [*代码块*](./06_Declarations.md#code_block) | **else** [*if 语句*](./05_Statements.md#if_statement) +> *else 子句* → **else** [代码块](./06_Declarations.md#code_block) | **else** [if 语句](./05_Statements.md#if_statement) > > Guard 语句语法 > -> *guard 语句* → **guard** [*条件子句*](TODO) **else** [*代码块*](TODO) +> *guard 语句* → **guard** [条件集](./05_Statements.md#condition_list) **else** [代码块](./06_Declarations.md#code_block) > > Switch 语句语法 -> -> *switch 语句* → **switch** [*表达式*](./04_Expressions.md#expression) **{** [*SwitchCase*](./05_Statements.md#switch_cases) _可选_ **}** -> -> *SwitchCase 集* → [*SwitchCase*](./05_Statements.md#switch_case) [*SwitchCase 集*](./05_Statements.md#switch_cases) _可选_ -> -> *SwitchCase* → [*case 标签*](./05_Statements.md#case_label) [*多条语句(Statements)*](./05_Statements.md#statements) | [*default 标签*](./05_Statements.md#default_label) [*多条语句(Statements)*](./05_Statements.md#statements) -> -> *SwitchCase* → [*case 标签*](./05_Statements.md#case_label) **;** | [*default 标签*](./05_Statements.md#default_label) **;** -> -> *case 标签* → **case** [*case 项集*](./05_Statements.md#case_item_list) **:** -> -> *case 项集* → [*模式*](./08_Patterns.md#pattern) [*where-clause*](./05_Statements.md#guard_clause) _可选_ | [*模式*](./08_Patterns.md#pattern) [*where-clause*](./05_Statements.md#guard_clause) _可选_ **,** [*case 项集*](./05_Statements.md#case_item_list) -> -> *default 标签* → **default** **:** > -> *where 子句* → **where** [*where 表达式*](TODO) +> *switch 语句* → **switch** [表达式](./04_Expressions.md#expression) **{** [switch-case集](./05_Statements.md#switch_cases)可选 **}** +> +> *switch-case集* → [switch-case](./05_Statements.md#switch_case) [switch-case集](./05_Statements.md#switch_cases)可选 +> +> *switch-case* → [case 标签](./05_Statements.md#case_label) [语句集](./05_Statements.md#statements) +> +> *switch-case* → [default 标签](./05_Statements.md#default_label) [语句集](./05_Statements.md#statements) +> +> *switch-case* → [条件 switch-case](./05_Statements.md#conditional_switch_case) +> +> *case 标签* → [属性集](./07_Attributes.md#attributes)可选 **case** [case 项集](./05_Statements.md#case_item_list) **:** +> +> *case 项集* → [模式](./08_Patterns.md#pattern) [where 子句](./05_Statements.md#where_clause)可选 | [模式](./08_Patterns.md#pattern) [where 子句](./05_Statements.md#guard_clause)可选 **,** [case 项集](./05_Statements.md#case_item_list) +> +> *default 标签* → [属性集](./07_Attributes.md#attributes)可选 **default** **:** +> +> *where 子句* → **where** [where 表达式](./05_Statements.md#where_expression) +> +> *where 表达式* → [表达式](./04_Expressions.md#expression) +> +> *条件 switch-case* → [switch if 指令子句](./05_Statements.md#switch_if_directive_clause) [switch elseif 指令子句集](./05_Statements.md#switch_elseif_directive_clauses)可选 [switch else 指令子句](./05_Statements.md#switch_else_directive_clause)可选 [endif 指令](./05_Statements.md#endif_directive) +> +> *switch if 指令子句* → [if 指令](./05_Statements.md#if_directive) [编译条件](./05_Statements.md#compilation_condition) [switch-case集](./05_Statements.md#switch_cases)可选 +> +> *switch elseif 指令子句集* → [elseif 指令子句](./05_Statements.md#else_if_directive_clause) [switch elseif 指令子句集](./05_Statements.md#switch_elseif_directive_clauses)可选 +> +> *switch elseif 指令子句* → [elseif 指令](./05_Statements.md#elseif_directive) [编译条件](./05_Statements.md#compilation_condition) [switch-case集](./05_Statements.md#switch_cases)可选 +> +> *switch else 指令子句* → [else 指令](./05_Statements.md#else_directive) [switch-case集](./05_Statements.md#switch_cases)可选 > -> *where 表达式* → [*表达式*](TODO) -> -> 标记语句语法 -> -> *标记语句(Labeled Statement)* → [*语句标签*](./05_Statements.md#statement_label) [*循环语句*](./05_Statements.md#loop_statement) | [*语句标签*](./05_Statements.md#statement_label) [*if 语句*](./05_Statements.md#switch_statement) | [*语句标签*](TODY) [*switch 语句*](TODY) -> -> *语句标签* → [*标签名称*](./05_Statements.md#label_name) **:** -> -> *标签名称* → [*标识符*](./02_Lexical_Structure.md#identifier) -> +> 标签语句语法 +> +> *标签语句* → [语句标签](./05_Statements.md#statement_label) [循环语句](./05_Statements.md#loop_statement) +> +> *标签语句* → [语句标签](./05_Statements.md#statement_label) [if 语句](./05_Statements.md#if_statement) +> +> *标签语句* → [语句标签](./05_Statements.md#statement_label) [switch 语句](./05_Statements.md#switch_statement) +> +> *标签语句* → [语句标签](./05_Statements.md#statement_label) [do 语句](./05_Statements.md#do_statement) +> +> *语句标签* → [标签名称](./05_Statements.md#label_name) **:** +> +> *标签名称* → [标识符](./02_Lexical_Structure.md#identifier) +> -> 控制传递语句(Control Transfer Statement)语法 -> -> *控制传递语句* → [*break 语句*](./05_Statements.md#break_statement) -> -> *控制传递语句* → [*continue 语句*](./05_Statements.md#continue_statement) -> -> *控制传递语句* → [*fallthrough 语句*](./05_Statements.md#fallthrough_statement) -> -> *控制传递语句* → [*return 语句*](./05_Statements.md#return_statement) -> -> *控制传递语句* → [*throw 语句*](TODO) -> +> 控制转移语句语法 +> +> *控制转移语句* → [break 语句](./05_Statements.md#break_statement) +> +> *控制转移语句* → [continue 语句](./05_Statements.md#continue_statement) +> +> *控制转移语句* → [fallthrough 语句](./05_Statements.md#fallthrough_statement) +> +> *控制转移语句* → [return 语句](./05_Statements.md#return_statement) +> +> *控制转移语句* → [throw 语句](./05_Statements.md#throw_statement) +> > Break 语句语法 -> -> *break 语句* → **break** [*标签名称*](./05_Statements.md#label_name) _可选_ -> +> +> *break 语句* → **break** [标签名称](./05_Statements.md#label_name)可选 +> > Continue 语句语法 -> -> *continue 语句* → **continue** [*标签名称*](./05_Statements.md#label_name) _可选_ -> +> +> *continue 语句* → **continue** [标签名称](./05_Statements.md#label_name)可选 +> > Fallthrough 语句语法 -> +> > *fallthrough 语句* → **fallthrough** -> +> > Return 语句语法 -> -> *return 语句* → **return** [*表达式*](./04_Expressions.md#expression) _可选_ -> +> +> *return 语句* → **return** [表达式](./04_Expressions.md#expression)可选 +> -> 可用条件(Availability Condition)语法 -> -> *可用条件(availability-condition)* → **#available** **(** [*多可用参数*(availability-arguments)](TODO) **)** -> -> *多可用参数(availability- arguments)* → [*可用参数(availability-argument)*](TODO)|[*可用参数(availability-argument)*](TODO) , [多可用参数(availability-arguments)](TODO) -> -> *可用参数(availability- argument)* → [*平台名(platform-name)*](TODO) [*平台版本(platform-version)*](TODO) -> -> *可用参数(availability- argument)* → * -> + +> Throw 语句语法 +> +> *throw 语句* → **throw** [表达式](./04_Expressions.md#expression) +> + + + +> Defer 语句语法 +> +> *defer 语句* → **defer** [代码块](./06_Declarations.md#code_block) +> + + +> Do 语句语法 +> +> *do 语句* → **do** [代码块](./06_Declarations.md#code_block) [catch 子句集](./05_Statements.md#catch_clauses)可选 +> +> *catch 子句集* → [catch 子句](./05_Statements.md#catch_clause) [catch 子句集](05_Statements.md#catch_clauses)可选 +> +> *catch 子句* → **catch** [模式](./08_Patterns.md#pattern)可选 [where 子句](./05_Statements.md#where_clause)可选 [代码块](./06_Declarations.md#code_block)可选 +> + + +> 编译控制语句 +> +> *编译控制语句* → [条件编译块](./05_Statements.md#conditional_complation_block) +> +> *编译控制语句* → [行控制语句](./05_Statements.md#line_control_statement) +> +> *编译控制语句* → [诊断语句](./05_Statements.md#diagnostic_statement) +> + + +> 条件编译块语法 +> +> *条件编译块* → [if 指令子句](./05_Statements.md#if_directive_clause) [elseif 指令子句集](./05_Statements.md#elseif_directive_clauses)可选 [else 指令子句](./05_Statements.md#else_directive_clause)可选 [endif 指令](./05_Statements.md#endif_directive) +> +> *if 指令子句* → [if 指令](./05_Statements.md#if_directive) [编译条件](./05_Statements.md#compilation_condition) [语句集](./05_Statements.md#statements)可选 +> +> *elseif 指令子句集* → [elseif 指令子句](./05_Statements.md#else_if_directive_clause) [elseif 指令子句集](./05_Statements.md#elseif_directive_clauses)可选 +> +> *elseif 指令子句* → [elseif 指令](./05_Statements.md#elseif_directive) [编译条件](./05_Statements.md#compilation_condition) [语句集](./05_Statements.md#statements)可选 +> +> *else 指令子句* → [else 指令](./05_Statements.md#else_directive) [语句集](./05_Statements.md#statements)可选 +> +> *if 指令* → **#if** +> +> *elseif 指令* → **#elseif** +> +> *else 指令* → **#else** +> +> *endif 指令* → **#endif** +> +> *编译条件* → [平台条件](./05_Statements.md#platform_condition) +> +> *编译条件* → [标识符](./02_Lexical_Structure.md#identifier) +> +> *编译条件* → [布尔字面量](./02_Lexical_Structure.md#boolean_literal) +> +> *编译条件* → **(** [编译条件](./05_Statements.md#compilation_condition) **)** +> +> *编译条件* → **!** [编译条件](./05_Statements.md#compilation_condition) +> +> *编译条件* → [编译条件](./05_Statements.md#compilation_condition) **&&** [编译条件](./05_Statements.md#compilation_condition) +> +> *编译条件* → [编译条件](./05_Statements.md#compilation_condition) **||** [编译条件](./05_Statements.md#compilation_condition) +> +> *平台条件* → **os** **(** [操作系统](./05_Statements.md#operating_system) **)** +> +> *平台条件* → **arch** **(** [架构](./05_Statements.md#architecture) **)** +> +> *平台条件* → **swift** **(** **>=** [swift 版本](./05_Statements.md#swift_version) **)** | **swift** **(** **<** [swift 版本](./05_Statements.md#swift_version) **)** +> +> *平台条件* → **compiler** **(** **>=** [swift 版本](./05_Statements.md#swift_version) **)** | **compiler** **(** **<** [swift 版本](./05_Statements.md#swift_version) **)** +> +> *平台条件* → **canImport** **(** [模块名](./05_Statements.md#module_name) **)** +> +> *平台条件* → **targetEnvironment** **(** [环境](./05_Statements.md#environment) **)** +> +> *操作系统* → **macOS** | **iOS** | **watchOS** | **tvOS** +> +> *架构* → **i386** | **x86_64** | **arm** | **arm64** +> +> *swift 版本* → [十进制数字集](./02_Lexical_Structure.md#decimal_digits) [swift 版本后缀](./05_Statements.md#swift_version_continuation)可选 +> +> *swift 版本后缀* → **.** [十进制数字集](./02_Lexical_Structure.md#decimal_digits) [swift 版本集](./05_Statements.md#swift_version_continuation)可选 +> +> *模块名* → [标识符](./02_Lexical_Structure.md#identifier) +> +> *环境* → **simulator** +> + + +> 行控制语句语法 +> +> *行控制语句* → **#sourceLocation** **(** **file:** [文件名](./05_Statements.md#file_name) **,** **line:** [行号](./05_Statements.md#line_number) **)** +> +> *行控制语句* → **#sourceLocation** **(** **)** +> +> *行号* → 一个大于 0 的十进制数字 +> +> *文件名* → [静态字符串字面量](./02_Lexical_Structure.md#static_string_literal) +> + + +> 编译期诊断语句语法 +> +> *诊断语句* → **#error** **(** [诊断信息](./05_Statements.md#diagnostic_message) **)** +> +> *诊断语句* → **#warning** **(** [诊断信息](./05_Statements.md#diagnostic_message) **)** +> +> *诊断信息* → [静态字符串字面量](./02_Lexical_Structure.md#static_string_literal) +> + + +> 可用性条件语法 +> +> *可用性条件* → **#available** **(** [可用性参数集](./05_Statements.md#availability_arguments) **)** +> +> *可用性参数集* → [可用性参数](./05_Statements.md#availability_argument) | [可用性参数](./05_Statements.md#availability_argument) , [可用性参数集)](./05_Statements.md#availability_arguments) +> +> *可用性参数* → [平台名](./05_Statements.md#platform_name) [平台版本](./05_Statements.md#platform_version) +> +> *可用性参数* → **\*** +> > *平台名* → **iOS** | **iOSApplicationExtension** -> -> *平台名* → **OSX** | **macOSApplicationExtension** -> +> +> *平台名* → **macOS** | **macOSApplicationExtension** +> > *平台名* → **watchOS** -> +> > *平台名* → **tvOS** -> -> *平台版本* → [*十进制数(decimal-digits)*](TODO) -> -> *平台版本* → [*十进制数(decimal-digits)*](TODO) . [*十进制数(decimal-digits)*](TODO) -> -> *平台版本* → [*十进制数(decimal-digits)*](TODO) **.** [*十进制数(decimal-digits)*](TODO) **.** [*十进制数(decimal-digits)*](TODO)) -> - - -> 抛出语句(Throw Statement)语法 -> -> *抛出语句(throw-statement)* → **throw** [*表达式(expression)*](TODO) -> - - -> 延迟语句(defer-statement)语法 -> -> *延迟语句(defer-statement)* → **defer** [*代码块*](TODO) -> - - -> 执行语句(do-statement)语法 -> -> *执行语句(do-statement)* → **do** [*代码块*](TODO) [*catch-clauses*](TODO) _可选_ -> -> *catch-clauses* → [*catch-clause*](TODO) [*catch-clauses*](TODO) _可选_ -> -> *catch-clauses* → **catch** [*模式(pattern)*](TODO) _可选_ [*where-clause*](TODO) _可选_ [*代码块(code-block)*](TODO) _可选_ -> - -## 泛型参数 {#generic_parameters_and_arguments} - -> 泛型形参子句(Generic Parameter Clause)语法 > +> *平台版本* → [十进制数字集](./02_Lexical_Structure.md#decimal_digits) > -> *泛型参数子句* → **<** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list) [*约束子句*](./09_Generic_Parameters_and_Arguments.md#requirement_clause) _可选_ **>** +> *平台版本* → [十进制数字集](./02_Lexical_Structure.md#decimal_digits) **.** [十进制数字集](./02_Lexical_Structure.md#decimal_digits) > -> *泛型参数集* → [*泛形参数*](./09_Generic_Parameters_and_Arguments.md#generic_parameter) | [*泛形参数*](./09_Generic_Parameters_and_Arguments.md#generic_parameter) **,** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list) -> -> *泛形参数* → [*类型名称*](./03_Types.md#type_name) -> -> *泛形参数* → [*类型名称*](./03_Types.md#type_name) **:** [*类型标识*](./03_Types.md#type_identifier) -> -> *泛形参数* → [*类型名称*](./03_Types.md#type_name) **:** [*协议合成类型*](./03_Types.md#protocol_composition_type) +> *平台版本* → [十进制数字集](./02_Lexical_Structure.md#decimal_digits) **.** [十进制数字集](./02_Lexical_Structure.md#decimal_digits) **.** [十进制数字集](./02_Lexical_Structure.md#decimal_digits) > -> *约束子句* → **where** [*约束集*](./09_Generic_Parameters_and_Arguments.md#requirement_list) -> -> *约束集* → [*约束*](./09_Generic_Parameters_and_Arguments.md#requirement) | [*约束*](./09_Generic_Parameters_and_Arguments.md#requirement) **,** [*约束集*](./09_Generic_Parameters_and_Arguments.md#requirement_list) -> -> *约束* → [*一致性约束*](./09_Generic_Parameters_and_Arguments.md#conformance_requirement) | [*同类型约束*](./09_Generic_Parameters_and_Arguments.md#same_type_requirement) -> -> *一致性约束* → [*类型标识*](./03_Types.md#type_identifier) **:** [*类型标识*](./03_Types.md#type_identifier) -> -> *一致性约束* → [*类型标识*](./03_Types.md#type_identifier) **:** [*协议合成类型*](./03_Types.md#protocol_composition_type) -> -> *同类型约束* → [*类型标识*](./03_Types.md#type_identifier) **==** [*类型*](./03_Types.md#type_identifier) -> - - -> 泛型实参子句语法 -> -> *(泛型参数子句 Generic Argument Clause)* → **<** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_argument_list) **>** -> -> *泛型参数集* → [*泛型参数*](./09_Generic_Parameters_and_Arguments.md#generic_argument) | [*泛型参数*](./09_Generic_Parameters_and_Arguments.md#generic_argument) **,** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_argument_list) -> -> *泛型参数* → [*类型*](./03_Types.md#type) -> - -## 声明(Declarations) {#declarations} +## 声明 {#declarations} > 声明语法 -> -> *声明* → [*导入声明*](./06_Declarations.md#import_declaration) -> -> *声明* → [*常量声明*](./06_Declarations.md#constant_declaration) -> -> *声明* → [*变量声明*](./06_Declarations.md#variable_declaration) -> -> *声明* → [*类型别名声明*](./06_Declarations.md#typealias_declaration) -> -> *声明* → [*函数声明*](./06_Declarations.md#function_declaration) -> -> *声明* → [*枚举声明*](./06_Declarations.md#enum_declaration) -> -> *声明* → [*结构体声明*](./06_Declarations.md#struct_declaration) -> -> *声明* → [*类声明*](./06_Declarations.md#class_declaration) -> -> *声明* → [*协议声明*](./06_Declarations.md#protocol_declaration) -> -> *声明* → [*构造器声明*](./06_Declarations.md#initializer_declaration) -> -> *声明* → [*析构器声明*](./06_Declarations.md#deinitializer_declaration) -> -> *声明* → [*扩展声明*](./06_Declarations.md#extension_declaration) -> -> *声明* → [*下标声明*](./06_Declarations.md#subscript_declaration) -> -> *声明* → [*运算符声明*](./06_Declarations.md#operator_declaration) -> -> *声明* → [*优先级组声明*](./06_Declarations.md#precedence_group_declaration) > -> *声明(Declarations)集* → [*声明*](./06_Declarations.md#declaration) [*声明(Declarations)集*](./06_Declarations.md#declarations) _可选_ -> +> *声明* → [导入声明](./06_Declarations.md#import_declaration) +> +> *声明* → [常量声明](./06_Declarations.md#constant_declaration) +> +> *声明* → [变量声明](./06_Declarations.md#variable_declaration) +> +> *声明* → [类型别名声明](./06_Declarations.md#typealias_declaration) +> +> *声明* → [函数声明](./06_Declarations.md#function_declaration) +> +> *声明* → [枚举声明](./06_Declarations.md#enum_declaration) +> +> *声明* → [结构体声明](./06_Declarations.md#struct_declaration) +> +> *声明* → [类声明](./06_Declarations.md#class_declaration) +> +> *声明* → [协议声明](./06_Declarations.md#protocol_declaration) +> +> *声明* → [构造器声明](./06_Declarations.md#initializer_declaration) +> +> *声明* → [析构器声明](./06_Declarations.md#deinitializer_declaration) +> +> *声明* → [扩展声明](./06_Declarations.md#extension_declaration) +> +> *声明* → [下标声明](./06_Declarations.md#subscript_declaration) +> +> *声明* → [运算符声明](./06_Declarations.md#operator_declaration) +> +> *声明* → [优先级组声明](./06_Declarations.md#precedence_group_declaration) +> +> *声明集* → [声明](./06_Declarations.md#declaration) [声明集](./06_Declarations.md#declarations)可选 +> -> 顶级(Top Level)声明语法 -> -> *顶级声明* → [*多条语句(Statements)*](./05_Statements.md#statements) _可选_ -> +> 顶级声明语法 +> +> *顶级声明* → [多条语句](./05_Statements.md#statements)可选 +> > 代码块语法 -> -> *代码块* → **{** [*多条语句(Statements)*](./05_Statements.md#statements) _可选_ **}** -> +> +> *代码块* → **{** [多条语句](./05_Statements.md#statements)可选 **}** +> -> 导入(Import)声明语法 -> -> *导入声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **import** [*导入类型*](./06_Declarations.md#import_kind) _可选_ [*导入路径*](./06_Declarations.md#import_path) +> 导入声明语法 +> +> *导入声明* → [属性集](./07_Attributes.md#attributes)可选 **import** [导入类型](./06_Declarations.md#import_kind)可选 [导入路径](./06_Declarations.md#import_path) > > *导入类型* → **typealias** | **struct** | **class** | **enum** | **protocol** | **let** | **var** | **func** > -> *导入路径* → [*导入路径标识符*](./06_Declarations.md#import_path_identifier) | [*导入路径标识符*](./06_Declarations.md#import_path_identifier) **.** [*导入路径*](./06_Declarations.md#import_path) -> -> *导入路径标识符* → [*标识符*](./02_Lexical_Structure.md#identifier) | [*运算符*](./02_Lexical_Structure.md#operator) -> +> *导入路径* → [导入路径标识符](./06_Declarations.md#import_path_identifier) | [导入路径标识符](./06_Declarations.md#import_path_identifier) **.** [导入路径](./06_Declarations.md#import_path) +> +> *导入路径标识符* → [标识符](./02_Lexical_Structure.md#identifier) | [运算符](./02_Lexical_Structure.md#operator) +> > 常数声明语法 > -> *常量声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修饰符(Modifiers)集*](./06_Declarations.md#declaration_specifiers) _可选_ **let** [*模式构造器集*](./06_Declarations.md#pattern_initializer_list) +> *常量声明* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_specifiers)可选 **let** [模式构造器集](./06_Declarations.md#pattern_initializer_list) +> +> *模式构造器集* → [模式构造器](./06_Declarations.md#pattern_initializer) | [模式构造器](./06_Declarations.md#pattern_initializer) **,** [模式构造器集](./06_Declarations.md#pattern_initializer_list) +> +> *模式构造器* → [模式](./08_Patterns.md#pattern) [构造器](./06_Declarations.md#initializer)可选 +> +> *构造器* → **=** [表达式](./04_Expressions.md#expression) > -> *模式构造器集* → [*模式构造器*](./06_Declarations.md#pattern_initializer) | [*模式构造器*](./06_Declarations.md#pattern_initializer) **,** [*模式构造器集*](./06_Declarations.md#pattern_initializer_list) -> -> *模式构造器* → [*模式*](./08_Patterns.md#pattern) [*构造器*](./06_Declarations.md#initializer) _可选_ -> -> *构造器* → **=** [*表达式*](./04_Expressions.md#expression) -> > 变量声明语法 -> -> *变量声明* → [*变量声明头(Head)*](./06_Declarations.md#variable_declaration_head) [*模式构造器集*](./06_Declarations.md#pattern_initializer_list) -> -> *变量声明* → [*变量声明头(Head)*](./06_Declarations.md#variable_declaration_head) [*变量名*](./06_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*代码块*](./06_Declarations.md#code_block) -> -> *变量声明* → [*变量声明头(Head)*](./06_Declarations.md#variable_declaration_head) [*变量名*](./06_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*getter-setter 块*](./06_Declarations.md#getter_setter_block) -> -> *变量声明* → [*变量声明头(Head)*](./06_Declarations.md#variable_declaration_head) [*变量名*](./06_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*getter-setter 关键字(Keyword)块*](./06_Declarations.md#getter_setter_keyword_block) -> -> *变量声明* → [*变量声明头(Head)*](./06_Declarations.md#variable_declaration_head) [*变量名*](./06_Declarations.md#variable_name) [*构造器*](./06_Declarations.md#initializer) _可选_ [*willSet-didSet 代码块*](./06_Declarations.md#willSet_didSet_block) > -> *变量声明* → [*变量声明头(Head)*](./06_Declarations.md#variable_declaration_head) [*变量名*](./06_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*构造器*](./06_Declarations.md#initializer) _可选_ [*willSet-didSet 代码块*](./06_Declarations.md#willSet_didSet_block) +> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [模式构造器集](./06_Declarations.md#pattern_initializer_list) > -> *变量声明头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修饰符(Modifers)集*](./06_Declarations.md#declaration_specifiers) _可选_ **var** +> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [代码块](./06_Declarations.md#code_block) > -> *变量名称* → [*标识符*](./02_Lexical_Structure.md#identifier) +> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [getter-setter 块](./06_Declarations.md#getter_setter_block) > -> *getter-setter 块* → [*代码块*](./06_Declarations.md#code_block) +> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [getter-setter 关键字块](./06_Declarations.md#getter_setter_keyword_block) > -> *getter-setter 块* → **{** [*getter 子句*](./06_Declarations.md#getter_clause) [*setter 子句*](./06_Declarations.md#setter_clause) _可选_ **}** +> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [构造器](./06_Declarations.md#initializer)可选 [willSet-didSet 代码块](./06_Declarations.md#willSet_didSet_block) > -> *getter-setter 块* → **{** [*setter 子句*](./06_Declarations.md#setter_clause) [*getter 子句*](./06_Declarations.md#getter_clause) **}** +> *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [构造器](./06_Declarations.md#initializer)可选 [willSet-didSet 代码块](./06_Declarations.md#willSet_didSet_block) > -> *getter 子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*可变性修饰符(mutation-modifier)*](./06_Declarations.md#mutation-modifier) _可选_ **get** [*代码块*](./06_Declarations.md#code_block) +> *变量声明头* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_specifiers)可选 **var** > -> *setter 子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*可变性修饰符(mutation-modifier)*](./06_Declarations.md#mutation-modifier) _可选_ **set** [*setter 名称*](./06_Declarations.md#setter_name) _可选_ [*代码块*](./06_Declarations.md#code_block) +> *变量名称* → [标识符](./02_Lexical_Structure.md#identifier) > -> *setter 名称* → **(** [*标识符*](./02_Lexical_Structure.md#identifier) **)** +> *getter-setter 块* → [代码块](./06_Declarations.md#code_block) > -> *getter-setter 关键字(Keyword)块* → **{** [*getter 关键字(Keyword)子句*](./06_Declarations.md#getter_keyword_clause) [*setter 关键字(Keyword)子句*](./06_Declarations.md#setter_keyword_clause) _可选_ **}** +> *getter-setter 块* → **{** [getter 子句](./06_Declarations.md#getter_clause) [setter 子句](./06_Declarations.md#setter_clause)可选 **}** > -> *getter-setter 关键字(Keyword)块* → **{** [*setter 关键字(Keyword)子句*](./06_Declarations.md#setter_keyword_clause) [*getter 关键字(Keyword)子句*](./06_Declarations.md#getter_keyword_clause) **}** +> *getter-setter 块* → **{** [setter 子句](./06_Declarations.md#setter_clause) [getter 子句](./06_Declarations.md#getter_clause) **}** > -> *getter 关键字(Keyword)子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*可变性修饰符(mutation-modifier)*](./06_Declarations.md#mutation-modifier) _可选_ **get** +> *getter 子句* → [属性集](./07_Attributes.md#attributes)可选 [可变性修饰符](./06_Declarations.md#mutation-modifier)可选 **get** [代码块](./06_Declarations.md#code_block) > -> *setter 关键字(Keyword)子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*可变性修饰符(mutation-modifier)*](./06_Declarations.md#mutation-modifier) _可选_ **set** +> *setter 子句* → [属性集](./07_Attributes.md#attributes)可选 [可变性修饰符](./06_Declarations.md#mutation-modifier)可选 **set** [setter 名称](./06_Declarations.md#setter_name)可选 [代码块](./06_Declarations.md#code_block) > -> *willSet-didSet 代码块* → **{** [*willSet 子句*](./06_Declarations.md#willSet_clause) [*didSet 子句*](./06_Declarations.md#didSet_clause) _可选_ **}** +> *setter 名称* → **(** [标识符](./02_Lexical_Structure.md#identifier) **)** > -> *willSet-didSet 代码块* → **{** [*didSet 子句*](./06_Declarations.md#didSet_clause) [*willSet 子句*](./06_Declarations.md#willSet_clause) _可选_ **}** +> *getter-setter 关键字(Keyword)块* → **{** [getter 关键字子句](./06_Declarations.md#getter_keyword_clause) [setter 关键字子句](./06_Declarations.md#setter_keyword_clause)可选 **}** > -> *willSet 子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **willSet** [*setter 名称*](./06_Declarations.md#setter_name) _可选_ [*代码块*](./06_Declarations.md#code_block) +> *getter-setter 关键字(Keyword)块* → **{** [setter 关键字子句](./06_Declarations.md#setter_keyword_clause) [getter 关键字子句](./06_Declarations.md#getter_keyword_clause) **}** > -> *didSet 子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ +> *getter 关键字(Keyword)子句* → [属性集](./07_Attributes.md#attributes)可选 [可变性修饰符](./06_Declarations.md#mutation-modifier)可选 **get** > - **didSet** [*setter 名称*](./06_Declarations.md#setter_name) _可选_ [*代码块*](./06_Declarations.md#code_block) +> *setter 关键字(Keyword)子句* → [属性集](./07_Attributes.md#attributes)可选 [可变性修饰符](./06_Declarations.md#mutation-modifier)可选 **set** +> +> *willSet-didSet 代码块* → **{** [willSet 子句](./06_Declarations.md#willSet_clause) [didSet 子句](./06_Declarations.md#didSet_clause)可选 **}** +> +> *willSet-didSet 代码块* → **{** [didSet 子句](./06_Declarations.md#didSet_clause) [willSet 子句](./06_Declarations.md#willSet_clause)可选 **}** +> +> *willSet 子句* → [属性集](./07_Attributes.md#attributes)可选 **willSet** [setter 名称](./06_Declarations.md#setter_name)可选 [代码块](./06_Declarations.md#code_block) +> +> *didSet 子句* → [属性集](./07_Attributes.md#attributes)可选 +> + **didSet** [setter 名称](./06_Declarations.md#setter_name)可选 [代码块](./06_Declarations.md#code_block) > 类型别名声明语法 > -> *类型别名声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) **typealias** [*类型别名名称*](./06_Declarations.md#typealias_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型别名赋值*](./06_Declarations.md#typealias_assignment) +> *类型别名声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) **typealias** [类型别名名称](./06_Declarations.md#typealias_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型别名赋值](./06_Declarations.md#typealias_assignment) +> +> *类型别名名称* → [标识符](./02_Lexical_Structure.md#identifier) +> +> *类型别名赋值* → **=** [类型](./03_Types.md#type) > -> *类型别名名称* → [*标识符*](./02_Lexical_Structure.md#identifier) -> -> *类型别名赋值* → **=** [*类型*](./03_Types.md#type) -> > 函数声明语法 > -> *函数声明* → [*函数头*](./06_Declarations.md#function_head) [*函数名*](./06_Declarations.md#function_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*函数签名(Signature)*](./06_Declarations.md#function_signature) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*函数体*](./06_Declarations.md#function_body) _可选_ +> *函数声明* → [函数头](./06_Declarations.md#function_head) [函数名](./06_Declarations.md#function_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [函数签名](./06_Declarations.md#function_signature) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [函数体](./06_Declarations.md#function_body)可选 > -> *函数头* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明描述符(Specifiers)集*](./06_Declarations.md#declaration_specifiers) _可选_ **func** -> -> *函数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | [*运算符*](./02_Lexical_Structure.md#operator) +> *函数头* → [属性集](./07_Attributes.md#attributes)可选 [声明描述符集](./06_Declarations.md#declaration_specifiers)可选 **func** > -> *函数签名(Signature)* → [*参数子句*](./06_Declarations.md#parameter_clause) **throws** _可选_ [*函数结果*](./06_Declarations.md#function_result) _可选_ +> *函数名* → [标识符](./02_Lexical_Structure.md#identifier) | [运算符](./02_Lexical_Structure.md#operator) +> +> *函数签名* → [参数子句](./06_Declarations.md#parameter_clause) **throws**可选 [函数结果](./06_Declarations.md#function_result)可选 > -> *函数签名(Signature)* → [*参数子句*](./06_Declarations.md#parameter_clause) **rethrows** [*函数结果*](./06_Declarations.md#function_result) _可选_ +> *函数签名* → [参数子句](./06_Declarations.md#parameter_clause) **rethrows** [函数结果](./06_Declarations.md#function_result)可选 > -> *函数结果* → **->** [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*类型*](./03_Types.md#type) -> -> *函数体* → [*代码块*](./06_Declarations.md#code_block) +> *函数结果* → **->** [属性集](./07_Attributes.md#attributes)可选 [类型](./03_Types.md#type) > -> *参数子句* → **(** **)** | **(** [*参数集*](./06_Declarations.md#parameter_list) **)** +> *函数体* → [代码块](./06_Declarations.md#code_block) > -> *参数集* → [*参数*](./06_Declarations.md#parameter) | [*参数*](./06_Declarations.md#parameter) **,** [*参数集*](./06_Declarations.md#parameter_list) +> *参数子句* → **(** **)** | **(** [参数集](./06_Declarations.md#parameter_list) **)** > -> *参数* → [*外部参数名*](./06_Declarations.md#parameter_name) _可选_ [*本地参数名*](./06_Declarations.md#local_parameter_name) [*类型注解*](./03_Types.md#type_annotation) [*默认参数子句*](./06_Declarations.md#default_argument_clause) _可选_ +> *参数集* → [参数](./06_Declarations.md#parameter) | [参数](./06_Declarations.md#parameter) **,** [参数集](./06_Declarations.md#parameter_list) > -> *参数* → [*外部参数名*](./06_Declarations.md#parameter_name) _可选_ [*本地参数名*](./06_Declarations.md#local_parameter_name) [*类型注解*](./03_Types.md#type_annotation) +> *参数* → [外部参数名](./06_Declarations.md#parameter_name)可选 [本地参数名](./06_Declarations.md#local_parameter_name) [类型注解](./03_Types.md#type_annotation) [默认参数子句](./06_Declarations.md#default_argument_clause)可选 > -> *参数* → [*外部参数名*](./06_Declarations.md#parameter_name) _可选_ [*本地参数名*](./06_Declarations.md#local_parameter_name) [*类型注解*](./03_Types.md#type_annotation) **...** +> *参数* → [外部参数名](./06_Declarations.md#parameter_name)可选 [本地参数名](./06_Declarations.md#local_parameter_name) [类型注解](./03_Types.md#type_annotation) > -> *外部参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) +> *参数* → [外部参数名](./06_Declarations.md#parameter_name)可选 [本地参数名](./06_Declarations.md#local_parameter_name) [类型注解](./03_Types.md#type_annotation) **...** > -> *本地参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) +> *外部参数名* → [标识符](./02_Lexical_Structure.md#identifier) > -> *默认参数子句* → **=** [*表达式*](./04_Expressions.md#expression) +> *本地参数名* → [标识符](./02_Lexical_Structure.md#identifier) +> +> *默认参数子句* → **=** [表达式](./04_Expressions.md#expression) > > 枚举声明语法 > -> *枚举声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ [*联合式枚举*(union_style_enum)](./06_Declarations.md#union_style_enum) +> *枚举声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 [联合式枚举](./06_Declarations.md#union_style_enum) > -> *枚举声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ [*原始值式枚举(raw-value-style-enum)*](./06_Declarations.md#raw-value-style-enum) +> *枚举声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 [原始值式枚举](./06_Declarations.md#raw-value-style-enum) > -> *联合式枚举* → **indirect** _可选_ **enum** [*枚举名*](./06_Declarations.md#enum_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承子句(type-inheritance-clause)*](./03_Types.md#type-inheritance-clause) _可选_ [*泛型 where 子句(generic-where-clause)*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ **{** [*联合样式枚举成员*](./06_Declarations.md#union_style_enum_members) _可选_ **}** +> *联合式枚举* → **indirect**可选 **enum** [枚举名](./06_Declarations.md#enum_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型继承子句](./03_Types.md#type-inheritance-clause)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 **{** [联合式枚举成员](./06_Declarations.md#union_style_enum_members)可选 **}** > -> *联合式枚举成员集* → [*联合式枚举成员*](./06_Declarations.md#union_style_enum_member) [*联合样式枚举成员集*](./06_Declarations.md#union_style_enum_members) _可选_ +> *联合式枚举成员集* → [联合式枚举成员](./06_Declarations.md#union_style_enum_member) [联合样式枚举成员集](./06_Declarations.md#union_style_enum_members)可选 > -> *联合样式枚举成员* → [*声明*](./06_Declarations.md#declaration) | [*联合式(Union Style)枚举 case 子句*](./06_Declarations.md#union_style_enum_case_clause) | [*编译控制语句*](./05_Statements.md#compiler-control-statement) +> *联合样式枚举成员* → [声明](./06_Declarations.md#declaration) | [联合式枚举 case 子句](./06_Declarations.md#union_style_enum_case_clause) | [编译控制语句](./05_Statements.md#compiler-control-statement) > -> *联合式(Union Style)枚举 case 子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **indirect** _可选_ **case** [*联合式(Union Style)枚举 case 集*](./06_Declarations.md#union_style_enum_case_list) +> *联合式枚举 case 子句* → [属性集](./07_Attributes.md#attributes)可选 **indirect**可选 **case** [联合式枚举 case 集](./06_Declarations.md#union_style_enum_case_list) > -> *联合式(Union Style)枚举 case 集* → [*联合式(Union Style)枚举 case*](./06_Declarations.md#union_style_enum_case) | [*联合式(Union Style)枚举 case*](./06_Declarations.md#union_style_enum_case) **,** [*联合式(Union Style)枚举 case 集*](./06_Declarations.md#union_style_enum_case_list) +> *联合式枚举 case 集* → [联合式枚举 case](./06_Declarations.md#union_style_enum_case) | [联合式枚举 case](./06_Declarations.md#union_style_enum_case) **,** [联合式枚举 case 集](./06_Declarations.md#union_style_enum_case_list) > -> *联合式(Union Style)枚举 case* → [*枚举的 case 名*](./06_Declarations.md#enum_case_name) [*元组类型*](./03_Types.md#tuple_type) _可选_ +> *联合式枚举 case* → [枚举的 case 名](./06_Declarations.md#enum_case_name) [元组类型](./03_Types.md#tuple_type)可选 > -> *枚举名* → [*标识符*](./02_Lexical_Structure.md#identifier) -> -> *枚举的 case 名* → [*标识符*](./02_Lexical_Structure.md#identifier) +> *枚举名* → [标识符](./02_Lexical_Structure.md#identifier) > -> *原始值式枚举* → **enum** [*枚举名*](./06_Declarations.md#enum_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承子句*](./03_Types.md#type-inheritance-clause) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ **{** [*原始值式枚举成员集*](./06_Declarations.md#raw_value_style_enum_members) **}** +> *枚举的 case 名* → [标识符](./02_Lexical_Structure.md#identifier) > -> *原始值式枚举成员集* → [*原始值式枚举成员*](./06_Declarations.md#raw_value_style_enum_member) [*原始值式枚举成员集*](./06_Declarations.md#raw_value_style_enum_members) _可选_ +> *原始值式枚举* → **enum** [枚举名](./06_Declarations.md#enum_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型继承子句](./03_Types.md#type-inheritance-clause) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 **{** [原始值式枚举成员集](./06_Declarations.md#raw_value_style_enum_members) **}** > -> *原始值式枚举成员* → [*声明*](./06_Declarations.md#declaration) | [*原始值式枚举 case 子句*](./06_Declarations.md#raw_value_style_enum_case_clause) | [*编译控制语句*](./05_Statements.md#compiler-control-statement) +> *原始值式枚举成员集* → [原始值式枚举成员](./06_Declarations.md#raw_value_style_enum_member) [原始值式枚举成员集](./06_Declarations.md#raw_value_style_enum_members)可选 > -> *原始值式枚举 case 子句* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **case** [*原始值式枚举 case 集*](./06_Declarations.md#raw_value_style_enum_case_list) +> *原始值式枚举成员* → [声明](./06_Declarations.md#declaration) | [原始值式枚举 case 子句](./06_Declarations.md#raw_value_style_enum_case_clause) | [编译控制语句](./05_Statements.md#compiler-control-statement) > -> *原始值式枚举 case 集* → [*原始值式枚举 case*](./06_Declarations.md#raw_value_style_enum_case) | [*原始值式枚举 case*](./06_Declarations.md#raw_value_style_enum_case) **,** [*原始值式枚举 case 集*](./06_Declarations.md#raw_value_style_enum_case_list) -> -> *原始值式枚举 case* → [*枚举的 case 名*](./06_Declarations.md#enum_case_name) [*原始值赋值*](./06_Declarations.md#raw_value_assignment) _可选_ +> *原始值式枚举 case 子句* → [属性集](./07_Attributes.md#attributes)可选 **case** [原始值式枚举 case 集](./06_Declarations.md#raw_value_style_enum_case_list) > -> *原始值赋值* → **=** [*原始值字面量*](./02_Lexical_Structure.md#literal) +> *原始值式枚举 case 集* → [原始值式枚举 case](./06_Declarations.md#raw_value_style_enum_case) | [原始值式枚举 case](./06_Declarations.md#raw_value_style_enum_case) **,** [原始值式枚举 case 集](./06_Declarations.md#raw_value_style_enum_case_list) > -> *原始值字面量(raw-value-literal)* → [*数值字面量*](./02_Lexical_Structure.md#literal) | [*静态字符串字面量*](./02_Lexical_Structure.md#literal) | [*布尔字面量*](./02_Lexical_Structure.md#literal) +> *原始值式枚举 case* → [枚举的 case 名](./06_Declarations.md#enum_case_name) [原始值赋值](./06_Declarations.md#raw_value_assignment)可选 +> +> *原始值赋值* → **=** [原始值字面量](./02_Lexical_Structure.md#literal) +> +> *原始值字面量(raw-value-literal)* → [数值字面量](./02_Lexical_Structure.md#literal) | [静态字符串字面量](./02_Lexical_Structure.md#literal) | [布尔字面量](./02_Lexical_Structure.md#literal) > > 结构体声明语法 > -> *结构体声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ **struct** [*结构体名称*](./06_Declarations.md#struct_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承子句*](./03_Types.md#type_inheritance_clause) _可选_ [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*结构体主体*](./06_Declarations.md#struct_body) +> *结构体声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **struct** [结构体名称](./06_Declarations.md#struct_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型继承子句](./03_Types.md#type_inheritance_clause)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [结构体主体](./06_Declarations.md#struct_body) > -> *结构体名称* → [*标识符*](./02_Lexical_Structure.md#identifier) +> *结构体名称* → [标识符](./02_Lexical_Structure.md#identifier) > -> *结构体主体* → **{** [*结构体成员集*](./06_Declarations.md#declarations) _可选_ **}** +> *结构体主体* → **{** [结构体成员集](./06_Declarations.md#declarations)可选 **}** > -> *结构体成员集* → [*结构体成员*](./06_Declarations.md#declarations) [*结构体成员集*](./06_Declarations.md#declarations) _可选_ +> *结构体成员集* → [结构体成员](./06_Declarations.md#declarations) [结构体成员集](./06_Declarations.md#declarations)可选 > -> *结构体成员* → [*声明集*](./06_Declarations.md#declarations) | [*编译控制语句*](./05_Statements.md#compiler-control-statement) +> *结构体成员* → [声明集](./06_Declarations.md#declarations) | [编译控制语句](./05_Statements.md#compiler-control-statement) > > 类声明语法 > -> *类声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ **final** _可选_ **class** [*类名*](./06_Declarations.md#class_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承子句*](./03_Types.md#type_inheritance_clause) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*类主体*](./06_Declarations.md#class_body) +> *类声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **final**可选 **class** [类名](./06_Declarations.md#class_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型继承子句](./03_Types.md#type_inheritance_clause) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [类主体](./06_Declarations.md#class_body) > -> *类声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **final** [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ **class** [*类名*](./06_Declarations.md#class_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*类型继承子句*](./03_Types.md#type_inheritance_clause) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*类主体*](./06_Declarations.md#class_body) +> *类声明* → [属性集](./07_Attributes.md#attributes)可选 **final** [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **class** [类名](./06_Declarations.md#class_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型继承子句](./03_Types.md#type_inheritance_clause) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [类主体](./06_Declarations.md#class_body) > -> *类名* → [*标识符*](./02_Lexical_Structure.md#identifier) +> *类名* → [标识符](./02_Lexical_Structure.md#identifier) > -> *类主体* → **{** [*类成员集*](./06_Declarations.md#declarations) _可选_ **}** +> *类主体* → **{** [类成员集](./06_Declarations.md#declarations)可选 **}** > -> *类成员集* → [*类成员*](./06_Declarations.md#declarations) [*类成员集*](./06_Declarations.md#declarations) _可选_ +> *类成员集* → [类成员](./06_Declarations.md#declarations) [类成员集](./06_Declarations.md#declarations)可选 > -> *类成员* → [*声明集*](./06_Declarations.md#declarations) | [*编译控制语句*](./05_Statements.md#compiler-control-statement) +> *类成员* → [声明集](./06_Declarations.md#declarations) | [编译控制语句](./05_Statements.md#compiler-control-statement) > -> 协议(Protocol)声明语法 +> 协议声明语法 > -> *协议声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ **protocol** [*协议名*](./06_Declarations.md#protocol_name) [*类型继承子句*](./03_Types.md#type_inheritance_clause) _可选_ [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*协议主体*](./06_Declarations.md#protocol_body) +> *协议声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **protocol** [协议名](./06_Declarations.md#protocol_name) [类型继承子句](./03_Types.md#type_inheritance_clause)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [协议主体](./06_Declarations.md#protocol_body) > -> *协议名* → [*标识符*](./02_Lexical_Structure.md#identifier) +> *协议名* → [标识符](./02_Lexical_Structure.md#identifier) > -> *协议主体* → **{** [*协议成员集*](./06_Declarations.md#protocol_member_declarations) _可选_ **}** +> *协议主体* → **{** [协议成员集](./06_Declarations.md#protocol_member_declarations)可选 **}** > -> *协议成员集* → [*协议成员*](./06_Declarations.md#declarations) [*协议成员集*](./06_Declarations.md#declarations) _可选_ +> *协议成员集* → [协议成员](./06_Declarations.md#declarations) [协议成员集](./06_Declarations.md#declarations)可选 > -> *协议成员* → [*协议成员声明*](./06_Declarations.md#declarations) | [*编译控制语句*](./05_Statements.md#compiler-control-statement) +> *协议成员* → [协议成员声明](./06_Declarations.md#declarations) | [编译控制语句](./05_Statements.md#compiler-control-statement) > -> *协议成员声明* → [*协议属性声明*](./06_Declarations.md#protocol_property_declaration) -> -> *协议成员声明* → [*协议方法声明*](./06_Declarations.md#protocol_method_declaration) -> -> *协议成员声明* → [*协议构造器声明*](./06_Declarations.md#protocol_initializer_declaration) -> -> *协议成员声明* → [*协议下标声明*](./06_Declarations.md#protocol_subscript_declaration) -> -> *协议成员声明* → [*协议关联类型声明*](./06_Declarations.md#protocol_associated_type_declaration) +> *协议成员声明* → [协议属性声明](./06_Declarations.md#protocol_property_declaration) > -> *协议成员声明* → [*类型别名声明*](./06_Declarations.md#typealias_declaration) +> *协议成员声明* → [协议方法声明](./06_Declarations.md#protocol_method_declaration) +> +> *协议成员声明* → [协议构造器声明](./06_Declarations.md#protocol_initializer_declaration) +> +> *协议成员声明* → [协议下标声明](./06_Declarations.md#protocol_subscript_declaration) +> +> *协议成员声明* → [协议关联类型声明](./06_Declarations.md#protocol_associated_type_declaration) +> +> *协议成员声明* → [类型别名声明](./06_Declarations.md#typealias_declaration) > > 协议属性声明语法 -> -> *协议属性声明* → [*变量声明头(Head)*](./06_Declarations.md#variable_declaration_head) [*变量名*](./06_Declarations.md#variable_name) [*类型注解*](./03_Types.md#type_annotation) [*getter-setter 关键字(Keyword)块*](./06_Declarations.md#getter_setter_keyword_block) -> +> +> *协议属性声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [getter-setter 关键字块](./06_Declarations.md#getter_setter_keyword_block) +> > 协议方法声明语法 > -> *协议方法声明* → [*函数头*](./06_Declarations.md#function_head) [*函数名*](./06_Declarations.md#function_name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*函数签名(Signature)*](./06_Declarations.md#function_signature) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ +> *协议方法声明* → [函数头](./06_Declarations.md#function_head) [函数名](./06_Declarations.md#function_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [函数签名](./06_Declarations.md#function_signature) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 > > 协议构造器声明语法 > -> *协议构造器声明* → [*构造器头(Head)*](./06_Declarations.md#initializer_head) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*参数子句*](./06_Declarations.md#parameter_clause) **throws** _可选_ [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ +> *协议构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [参数子句](./06_Declarations.md#parameter_clause) **throws**可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 > -> *协议构造器声明* → [*构造器头(Head)*](./06_Declarations.md#initializer_head) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*参数子句*](./06_Declarations.md#parameter_clause) **rethrows** [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ +> *协议构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [参数子句](./06_Declarations.md#parameter_clause) **rethrows** [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 > > 协议下标声明语法 > -> *协议下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*getter-setter 关键字(Keyword)块*](./06_Declarations.md#getter_setter_keyword_block) +> *协议下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [getter-setter 关键字块](./06_Declarations.md#getter_setter_keyword_block) > > 协议关联类型声明语法 > -> *协议关联类型声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ **associatedtype** [*类型别名*](./06_Declarations.md#typealias_name) [*类型继承子句*](./03_Types.md#type_inheritance_clause) _可选_ [*类型别名赋值*](./06_Declarations.md#typealias_assignment) _可选_ [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ +> *协议关联类型声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **associatedtype** [类型别名](./06_Declarations.md#typealias_name) [类型继承子句](./03_Types.md#type_inheritance_clause)可选 [类型别名赋值](./06_Declarations.md#typealias_assignment)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 > > 构造器声明语法 > -> *构造器声明* → [*构造器头(Head)*](./06_Declarations.md#initializer_head) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*参数子句*](./06_Declarations.md#parameter_clause) **throws** _可选_ [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*构造器主体*](./06_Declarations.md#initializer_body) +> *构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [参数子句](./06_Declarations.md#parameter_clause) **throws**可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [构造器主体](./06_Declarations.md#initializer_body) > -> *构造器声明* → [*构造器头(Head)*](./06_Declarations.md#initializer_head) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*参数子句*](./06_Declarations.md#parameter_clause) **rethrows** [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*构造器主体*](./06_Declarations.md#initializer_body) +> *构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [参数子句](./06_Declarations.md#parameter_clause) **rethrows** [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [构造器主体](./06_Declarations.md#initializer_body) > -> *构造器头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修饰符集(declaration-modifiers)*](./06_Declarations.md#declaration_modifiers) _可选_ **init** +> *构造器头(Head)* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers)可选 **init** > -> *构造器头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修饰符集(declaration-modifiers)*](./06_Declarations.md#declaration_modifiers) _可选_ **init ?** +> *构造器头(Head)* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers)可选 **init ?** > -> *构造器头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修饰符集(declaration-modifiers)*](./06_Declarations.md#declaration_modifiers) _可选_ **init !** +> *构造器头(Head)* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers)可选 **init !** +> +> *构造器主体* → [代码块](./06_Declarations.md#code_block) > -> *构造器主体* → [*代码块*](./06_Declarations.md#code_block) -> > 析构器声明语法 -> -> *析构器声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ **deinit** [*代码块*](./06_Declarations.md#code_block) -> +> +> *析构器声明* → [属性集](./07_Attributes.md#attributes)可选 **deinit** [代码块](./06_Declarations.md#code_block) +> -> 扩展(Extension)声明语法 +> 扩展声明语法 > -> *扩展声明* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) _可选_ **extension** [*类型标识*](./03_Types.md#type_identifier) [*类型继承子句*](./03_Types.md#type_inheritance_clause) _可选_ [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*扩展主体*](./06_Declarations.md#extension_body) +> *扩展声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **extension** [类型标识](./03_Types.md#type_identifier) [类型继承子句](./03_Types.md#type_inheritance_clause)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [扩展主体](./06_Declarations.md#extension_body) > -> *扩展主体* → **{** [*扩展成员集*](./06_Declarations.md#declarations) _可选_ **}** +> *扩展主体* → **{** [扩展成员集](./06_Declarations.md#declarations)可选 **}** > -> *扩展成员集* → [*扩展成员*](./06_Declarations.md#declarations) [*扩展成员集*](./06_Declarations.md#declarations) _可选_ +> *扩展成员集* → [扩展成员](./06_Declarations.md#declarations) [扩展成员集](./06_Declarations.md#declarations)可选 > -> *扩展成员* → [*声明集*](./06_Declarations.md#declarations) | [*编译控制语句*](./05_Statements.md#compiler-control-statement) +> *扩展成员* → [声明集](./06_Declarations.md#declarations) | [编译控制语句](./05_Statements.md#compiler-control-statement) > > 下标声明语法 > -> *下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*代码块*](./06_Declarations.md#code_block) +> *下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [代码块](./06_Declarations.md#code_block) > -> *下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*getter-setter 块*](./06_Declarations.md#getter_setter_block) +> *下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [getter-setter 块](./06_Declarations.md#getter_setter_block) > -> *下标声明* → [*下标头(Head)*](./06_Declarations.md#subscript_head) [*下标结果(Result)*](./06_Declarations.md#subscript_result) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic_where_clause) _可选_ [*getter-setter 关键字(Keyword)块*](./06_Declarations.md#getter_setter_keyword_block) +> *下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [getter-setter 关键字块](./06_Declarations.md#getter_setter_keyword_block) > -> *下标头(Head)* → [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*声明修饰符集(declaration-modifiers)*](./06_Declarations.md#declaration_modifiers) _可选_ **subscript** [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause) _可选_ [*参数子句*](./06_Declarations.md#parameter_clause) +> *下标头(Head)* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers)可选 **subscript** [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [参数子句](./06_Declarations.md#parameter_clause) +> +> *下标结果(Result)* → **->** [属性集](./07_Attributes.md#attributes)可选 [类型](./03_Types.md#type) > -> *下标结果(Result)* → **->** [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ [*类型*](./03_Types.md#type) -> > 运算符声明语法 -> -> *运算符声明* → [*前置运算符声明*](./06_Declarations.md#prefix_operator_declaration) | [*后置运算符声明*](./06_Declarations.md#postfix_operator_declaration) | [*中置运算符声明*](./06_Declarations.md#infix_operator_declaration) > -> *前置运算符声明* → **prefix** **operator** [*运算符*](./02_Lexical_Structure.md#operator) +> *运算符声明* → [前置运算符声明](./06_Declarations.md#prefix_operator_declaration) | [后置运算符声明](./06_Declarations.md#postfix_operator_declaration) | [中置运算符声明](./06_Declarations.md#infix_operator_declaration) > -> *后置运算符声明* → **postfix** **operator** [*运算符*](./02_Lexical_Structure.md#operator) +> *前置运算符声明* → **prefix** **operator** [运算符](./02_Lexical_Structure.md#operator) > -> *中置运算符声明* → **infix** **operator** [*运算符*](./02_Lexical_Structure.md#operator) [*中置运算符属性集*](./06_Declarations.md#infix_operator_attributes) _可选_ +> *后置运算符声明* → **postfix** **operator** [运算符](./02_Lexical_Structure.md#operator) > -> *中置运算符属性集* → [*优先级组名*](./06_Declarations.md#precedence_group_name) +> *中置运算符声明* → **infix** **operator** [运算符](./02_Lexical_Structure.md#operator) [中置运算符属性集](./06_Declarations.md#infix_operator_attributes)可选 +> +> *中置运算符属性集* → [优先级组名](./06_Declarations.md#precedence_group_name) > > 优先级组声明语法 > -> *优先级组声明* → **precedencegroup** [*优先级组名*](./06_Declarations.md#precedence_group_name) **{** [*优先级组属性集*](./06_Declarations.md#precedence_group_attributes) _可选_ **}** +> *优先级组声明* → **precedencegroup** [优先级组名](./06_Declarations.md#precedence_group_name) **{** [优先级组属性集](./06_Declarations.md#precedence_group_attributes)可选 **}** > -> *优先级组属性集* → [*优先级组属性*](./06_Declarations.md#declarations) [*优先级组属性集*](./06_Declarations.md#declarations) _可选_ +> *优先级组属性集* → [优先级组属性](./06_Declarations.md#declarations) [优先级组属性集](./06_Declarations.md#declarations)可选 > -> *优先级组属性* → [*优先级组关系*](./06_Declarations.md#declarations) +> *优先级组属性* → [优先级组关系](./06_Declarations.md#declarations) > -> *优先级组属性* → [*优先级组赋值*](./06_Declarations.md#declarations) +> *优先级组属性* → [优先级组赋值](./06_Declarations.md#declarations) > -> *优先级组属性* → [*优先级组结合*](./06_Declarations.md#declarations) +> *优先级组属性* → [优先级组结合](./06_Declarations.md#declarations) > -> *优先级组关系* → **higherThan :** [*优先级组名集*](./06_Declarations.md#declarations) +> *优先级组关系* → **higherThan :** [优先级组名集](./06_Declarations.md#declarations) > -> *优先级组关系* → **lowerThan :** [*优先级组名集*](./06_Declarations.md#declarations) +> *优先级组关系* → **lowerThan :** [优先级组名集](./06_Declarations.md#declarations) > -> *优先级组赋值* → **assignment :** [*布尔字面量*](./02_Lexical_Structure.md#string_literal) +> *优先级组赋值* → **assignment :** [布尔字面量](./02_Lexical_Structure.md#string_literal) > > *优先级组结合* → **associativity : left** > @@ -684,9 +1494,9 @@ > > *优先级组结合* → **associativity : none** > -> *优先级组名集* → [*优先级组名*](./06_Declarations.md#declarations) | [*优先级组名*](./06_Declarations.md#declarations) **,** [*优先级组名集*](./06_Declarations.md#declarations) +> *优先级组名集* → [优先级组名](./06_Declarations.md#declarations) | [优先级组名](./06_Declarations.md#declarations) **,** [优先级组名集](./06_Declarations.md#declarations) > -> *优先级组名* → [*标识符*](./02_Lexical_Structure.md#identifier) +> *优先级组名* → [标识符](./02_Lexical_Structure.md#identifier) > @@ -694,11 +1504,11 @@ > > *声明修饰符* → **class** | **convenience** | **dynamic** | **final** | **infix** | **lazy** | **optional** | **override** | **postfix** | **prefix** | **required** | **static** | **unowned** | **unowned(safe)** | **unowned(unsafe)** | **weak** > -> *声明修饰符* → [*访问级别修饰符(access-level-modifier)*](./07_Attributes.md#access-level-modifier) +> *声明修饰符* → [访问级别修饰符](./07_Attributes.md#access-level-modifier) > -> *声明修饰符* → [*可变性修饰符(mutation-modifier)*](./07_Attributes.md#mutation-modifier) +> *声明修饰符* → [可变性修饰符](./07_Attributes.md#mutation-modifier) > -> *声明修饰符集* → [*声明修饰符(declaration-modifier)*](./06_Declarations.md#declaration_modifier) [*声明修饰符集(declaration-modifiers)*](./06_Declarations.md#declaration_modifiers) _可选_ +> *声明修饰符集* → [声明修饰符](./06_Declarations.md#declaration_modifier) [声明修饰符集](./06_Declarations.md#declaration_modifiers)可选 > > *访问级别修饰符* → **private** | **private(set)** > @@ -717,21 +1527,21 @@ > 属性语法 > -> *属性* → **@** [*属性名*](./07_Attributes.md#attribute_name) [*属性参数子句*](./07_Attributes.md#attribute_argument_clause) _可选_ +> *属性* → **@** [属性名](./07_Attributes.md#attribute_name) [属性参数子句](./07_Attributes.md#attribute_argument_clause)可选 > -> *属性名* → [*标识符*](./02_Lexical_Structure.md#identifier) +> *属性名* → [标识符](./02_Lexical_Structure.md#identifier) > -> *属性参数子句* → **{** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **}** +> *属性参数子句* → **{** [平衡令牌集](./07_Attributes.md#balanced_tokens)可选 **}** > -> *属性(Attributes)集* → [*属性*](./07_Attributes.md#attribute) [*属性(Attributes)集*](./07_Attributes.md#attributes) _可选_ +> *属性(Attributes)集* → [属性](./07_Attributes.md#attribute) [属性集](./07_Attributes.md#attributes)可选 > -> *平衡令牌集* → [*平衡令牌*](./07_Attributes.md#balanced_token) [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ +> *平衡令牌集* → [平衡令牌](./07_Attributes.md#balanced_token) [平衡令牌集](./07_Attributes.md#balanced_tokens)可选 > -> *平衡令牌* → **(** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **)** +> *平衡令牌* → **(** [平衡令牌集](./07_Attributes.md#balanced_tokens)可选 **)** > -> *平衡令牌* → **[** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **]** +> *平衡令牌* → **[** [平衡令牌集](./07_Attributes.md#balanced_tokens)可选 **]** > -> *平衡令牌* → **{** [*平衡令牌集*](./07_Attributes.md#balanced_tokens) _可选_ **}** +> *平衡令牌* → **{** [平衡令牌集](./07_Attributes.md#balanced_tokens)可选 **}** > > *平衡令牌* → 任意标识符、关键字、字面量或运算符 > @@ -741,112 +1551,119 @@ ## 模式 {#patterns} -> 模式(Patterns)语法 -> -> *模式* → [*通配符模式*](./08_Patterns.md#wildcard_pattern) [*类型注解*](./03_Types.md#type_annotation) _可选_ -> -> *模式* → [*标识符模式*](./08_Patterns.md#identifier_pattern) [*类型注解*](./03_Types.md#type_annotati Value Bindingon ) _可选_ -> -> *模式* → [*值绑定模式*](./08_Patterns.md#value_binding_pattern) -> -> *模式* → [*元组模式*](./08_Patterns.md#tuple_pattern) [*类型注解*](./03_Types.md#type_annotation) _可选_ +> 模式语法 > -> *模式* → [*枚举 case 模式*](./08_Patterns.md#enum_case_pattern) +> *模式* → [通配符模式](./08_Patterns.md#wildcard_pattern) [类型注解](./03_Types.md#type_annotation)可选 > -> *模式* → [*可选模式*](./08_Patterns.md#optional_pattern) +> *模式* → [标识符模式](./08_Patterns.md#identifier_pattern) [类型注解](./03_Types.md#type_annotati Value Bindingon )可选 +> +> *模式* → [值绑定模式](./08_Patterns.md#value_binding_pattern) +> +> *模式* → [元组模式](./08_Patterns.md#tuple_pattern) [类型注解](./03_Types.md#type_annotation)可选 +> +> *模式* → [枚举 case 模式](./08_Patterns.md#enum_case_pattern) +> +> *模式* → [可选模式](./08_Patterns.md#optional_pattern) +> +> *模式* → [类型转换模式](./08_Patterns.md#type_casting_pattern) +> +> *模式* → [表达式模式](./08_Patterns.md#expression_pattern) > -> *模式* → [*类型转换模式*](./08_Patterns.md#type_casting_pattern) -> -> *模式* → [*表达式模式*](./08_Patterns.md#expression_pattern) -> > 通配符模式语法 -> +> > *通配符模式* → **_** -> +> > 标识符模式语法 -> -> *标识符模式* → [*标识符*](./02_Lexical_Structure.md#identifier) -> +> +> *标识符模式* → [标识符](./02_Lexical_Structure.md#identifier) +> -> 值绑定(Value Binding)模式语法 -> -> *值绑定模式* → **var** [*模式*](./08_Patterns.md#pattern) | **let** [*模式*](./08_Patterns.md#pattern) -> +> 值绑定模式语法 +> +> *值绑定模式* → **var** [模式](./08_Patterns.md#pattern) | **let** [模式](./08_Patterns.md#pattern) +> > 元组模式语法 -> -> *元组模式* → **(** [*元组模式元素集*](./08_Patterns.md#tuple_pattern_element_list) _可选_ **)** -> -> *元组模式元素集* → [*元组模式元素*](./08_Patterns.md#tuple_pattern_element) | [*元组模式元素*](./08_Patterns.md#tuple_pattern_element) **,** [*元组模式元素集*](./08_Patterns.md#tuple_pattern_element_list) > -> *元组模式元素* → [*模式*](./08_Patterns.md#pattern) | [*标识符*](./02_Lexical_Structure.md#identifier) **:** [*模式*](./08_Patterns.md#pattern) +> *元组模式* → **(** [元组模式元素集](./08_Patterns.md#tuple_pattern_element_list)可选 **)** +> +> *元组模式元素集* → [元组模式元素](./08_Patterns.md#tuple_pattern_element) | [元组模式元素](./08_Patterns.md#tuple_pattern_element) **,** [元组模式元素集](./08_Patterns.md#tuple_pattern_element_list) +> +> *元组模式元素* → [模式](./08_Patterns.md#pattern) | [标识符](./02_Lexical_Structure.md#identifier) **:** [模式](./08_Patterns.md#pattern) > > 枚举 case 模式语法 > -> *enum-case-pattern* → [*类型标识*](./03_Types.md#type_identifier) _可选_ **.** [*枚举 case 名*](./06_Declarations.md#enum_case_name) [*元组模式*](./08_Patterns.md#tuple_pattern) _可选_ +> *enum-case-pattern* → [类型标识](./03_Types.md#type_identifier)可选 **.** [枚举 case 名](./06_Declarations.md#enum_case_name) [元组模式](./08_Patterns.md#tuple_pattern)可选 > > 可选模式语法 > -> *可选模式* → [*标识符模式*](./02_Lexical_Structure.md#identifier) **?** +> *可选模式* → [标识符模式](./02_Lexical_Structure.md#identifier) **?** > > 类型转换模式语法 -> -> *类型转换模式(type-casting-pattern)* → [*is 模式*](./08_Patterns.md#is_pattern) | [*as 模式*](./08_Patterns.md#as_pattern) -> -> *is 模式* → **is** [*类型*](./03_Types.md#type) -> -> *as 模式* → [*模式*](./08_Patterns.md#pattern) **as** [*类型*](./03_Types.md#type) -> +> +> *类型转换模式* → [is 模式](./08_Patterns.md#is_pattern) | [as 模式](./08_Patterns.md#as_pattern) +> +> *is 模式* → **is** [类型](./03_Types.md#type) +> +> *as 模式* → [模式](./08_Patterns.md#pattern) **as** [类型](./03_Types.md#type) +> > 表达式模式语法 -> -> *表达式模式* → [*表达式*](./04_Expressions.md#expression) +> +> *表达式模式* → [表达式](./04_Expressions.md#expression) > ## 泛型参数 {#generic_parameters_and_arguments} -> 泛型形参子句(Generic Parameter Clause)语法 +> 泛型形参子句语法 > > -> *泛型参数子句* → **<** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list) **>** +> *泛型参数子句* → **<** [泛型参数集](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list) **>** > -> *泛型参数集* → [*泛形参数*](./09_Generic_Parameters_and_Arguments.md#generic_parameter) | [*泛形参数*](./09_Generic_Parameters_and_Arguments.md#generic_parameter) **,** [*泛型参数集*](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list) +> *泛型参数集* → [泛型参数](./09_Generic_Parameters_and_Arguments.md#generic_parameter) | [泛形参数](./09_Generic_Parameters_and_Arguments.md#generic_parameter) **,** [泛型参数集](./09_Generic_Parameters_and_Arguments.md#generic_parameter_list) > -> *泛形参数* → [*类型名称*](./03_Types.md#type_name) +> *泛形参数* → [类型名称](./03_Types.md#type_name) > -> *泛形参数* → [*类型名称*](./03_Types.md#type_name) **:** [*类型标识*](./03_Types.md#type_identifier) +> *泛形参数* → [类型名称](./03_Types.md#type_name) **:** [类型标识](./03_Types.md#type_identifier) > -> *泛形参数* → [*类型名称*](./03_Types.md#type_name) **:** [*协议合成类型*](./03_Types.md#protocol_composition_type) +> *泛形参数* → [类型名称](./03_Types.md#type_name) **:** [协议合成类型](./03_Types.md#protocol_composition_type) > -> *泛型 where 子句* → **where** [*约束集*](./09_Generic_Parameters_and_Arguments.md#requirement_list) +> *泛型 where 子句* → **where** [约束集](./09_Generic_Parameters_and_Arguments.md#requirement_list) > -> *约束集* → [*约束*](./09_Generic_Parameters_and_Arguments.md#requirement) | [*约束*](./09_Generic_Parameters_and_Arguments.md#requirement) **,** [*约束集*](./09_Generic_Parameters_and_Arguments.md#requirement_list) +> *约束集* → [约束](./09_Generic_Parameters_and_Arguments.md#requirement) | [约束](./09_Generic_Parameters_and_Arguments.md#requirement) **,** [约束集](./09_Generic_Parameters_and_Arguments.md#requirement_list) > -> *约束* → [*一致性约束*](./09_Generic_Parameters_and_Arguments.md#conformance_requirement) | [*同类型约束*](./09_Generic_Parameters_and_Arguments.md#same_type_requirement) +> *约束* → [一致性约束](./09_Generic_Parameters_and_Arguments.md#conformance_requirement) | [同类型约束](./09_Generic_Parameters_and_Arguments.md#same_type_requirement) > -> *一致性约束* → [*类型标识*](./03_Types.md#type_identifier) **:** [*类型标识*](./03_Types.md#type_identifier) +> *一致性约束* → [类型标识](./03_Types.md#type_identifier) **:** [类型标识](./03_Types.md#type_identifier) > -> *一致性约束* → [*类型标识*](./03_Types.md#type_identifier) **:** [*协议合成类型*](./03_Types.md#protocol_composition_type) +> *一致性约束* → [类型标识](./03_Types.md#type_identifier) **:** [协议合成类型](./03_Types.md#protocol_composition_type) > -> *同类型约束* → [*类型标识*](./03_Types.md#type_identifier) **==** [*类型*](./03_Types.md#type_identifier) +> *同类型约束* → [类型标识](./03_Types.md#type_identifier) **==** [类型](./03_Types.md#type_identifier) > +> 泛型实参子句语法 +> +> *泛型实参子句* → **<** [泛型实参集](./09_Generic_Parameters_and_Arguments.md#generic-argument-list) **>** +> +> *泛型实参集* → [泛型实参](./09_Generic_Parameters_and_Arguments.md#generic_argument) | [泛形实参](./09_Generic_Parameters_and_Arguments.md#generic_argument) **,** [泛型实参集](./09_Generic_Parameters_and_Arguments.md#generic-argument-list) +> +> *泛形实参* → [类型](./03_Types.md#type) \ No newline at end of file From 099837dbc6a4b0773416a70e75c436f70476599a Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Tue, 2 Apr 2019 09:30:07 -0500 Subject: [PATCH 084/107] test gitbook anchor --- source/chapter3/06_Declarations.md | 2 +- source/chapter3/10_Summary_of_the_Grammar.md | 74 ++++++++++---------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/source/chapter3/06_Declarations.md b/source/chapter3/06_Declarations.md index 43c347b4..d9d3523f 100755 --- a/source/chapter3/06_Declarations.md +++ b/source/chapter3/06_Declarations.md @@ -773,7 +773,7 @@ enum GamePlayMode: String { > *枚举用例名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > > -> ###### raw-value-style-enum {#raw-value-style-enum} +> ##### raw-value-style-enum {#raw-value-style-enum} > > > *原始值风格枚举* → **enum** [*枚举名称*](#enum-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause) **{** [*多个原始值风格枚举成员*](#raw-value-style-enum-members) **}** diff --git a/source/chapter3/10_Summary_of_the_Grammar.md b/source/chapter3/10_Summary_of_the_Grammar.md index 1c5520d9..cad60108 100755 --- a/source/chapter3/10_Summary_of_the_Grammar.md +++ b/source/chapter3/10_Summary_of_the_Grammar.md @@ -868,11 +868,11 @@ > > *switch-case* → [条件 switch-case](./05_Statements.md#conditional_switch_case) > -> *case 标签* → [属性集](./07_Attributes.md#attributes)可选 **case** [case 项集](./05_Statements.md#case_item_list) **:** +> *case 标签* → [特性](./07_Attributes.md#attributes)可选 **case** [case 项集](./05_Statements.md#case_item_list) **:** > > *case 项集* → [模式](./08_Patterns.md#pattern) [where 子句](./05_Statements.md#where_clause)可选 | [模式](./08_Patterns.md#pattern) [where 子句](./05_Statements.md#guard_clause)可选 **,** [case 项集](./05_Statements.md#case_item_list) > -> *default 标签* → [属性集](./07_Attributes.md#attributes)可选 **default** **:** +> *default 标签* → [特性](./07_Attributes.md#attributes)可选 **default** **:** > > *where 子句* → **where** [where 表达式](./05_Statements.md#where_expression) > @@ -1147,7 +1147,7 @@ > 导入声明语法 > -> *导入声明* → [属性集](./07_Attributes.md#attributes)可选 **import** [导入类型](./06_Declarations.md#import_kind)可选 [导入路径](./06_Declarations.md#import_path) +> *导入声明* → [特性](./07_Attributes.md#attributes)可选 **import** [导入类型](./06_Declarations.md#import_kind)可选 [导入路径](./06_Declarations.md#import_path) > > *导入类型* → **typealias** | **struct** | **class** | **enum** | **protocol** | **let** | **var** | **func** > @@ -1160,7 +1160,7 @@ > 常数声明语法 > -> *常量声明* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_specifiers)可选 **let** [模式构造器集](./06_Declarations.md#pattern_initializer_list) +> *常量声明* → [特性](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_specifiers)可选 **let** [模式构造器集](./06_Declarations.md#pattern_initializer_list) > > *模式构造器集* → [模式构造器](./06_Declarations.md#pattern_initializer) | [模式构造器](./06_Declarations.md#pattern_initializer) **,** [模式构造器集](./06_Declarations.md#pattern_initializer_list) > @@ -1185,19 +1185,19 @@ > > *变量声明* → [变量声明头](./06_Declarations.md#variable_declaration_head) [变量名](./06_Declarations.md#variable_name) [类型注解](./03_Types.md#type_annotation) [构造器](./06_Declarations.md#initializer)可选 [willSet-didSet 代码块](./06_Declarations.md#willSet_didSet_block) > -> *变量声明头* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_specifiers)可选 **var** +> *变量声明头* → [特性](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_specifiers)可选 **var** > > *变量名称* → [标识符](./02_Lexical_Structure.md#identifier) > > *getter-setter 块* → [代码块](./06_Declarations.md#code_block) > -> *getter-setter 块* → **{** [getter 子句](./06_Declarations.md#getter_clause) [setter 子句](./06_Declarations.md#setter_clause)可选 **}** +> *getter-setter 块* → **{** [getter 子句](./06_Declarations.md#getter_keyword_clause) [setter 子句](./06_Declarations.md#setter_keyword_clause)可选 **}** > -> *getter-setter 块* → **{** [setter 子句](./06_Declarations.md#setter_clause) [getter 子句](./06_Declarations.md#getter_clause) **}** +> *getter-setter 块* → **{** [setter 子句](./06_Declarations.md#setter_keyword_clause) [getter 子句](./06_Declarations.md#getter_keyword_clause) **}** > -> *getter 子句* → [属性集](./07_Attributes.md#attributes)可选 [可变性修饰符](./06_Declarations.md#mutation-modifier)可选 **get** [代码块](./06_Declarations.md#code_block) +> *getter 子句* → [特性](./07_Attributes.md#attributes)可选 [可变性修饰符](./06_Declarations.md#mutation-modifier)可选 **get** [代码块](./06_Declarations.md#code_block) > -> *setter 子句* → [属性集](./07_Attributes.md#attributes)可选 [可变性修饰符](./06_Declarations.md#mutation-modifier)可选 **set** [setter 名称](./06_Declarations.md#setter_name)可选 [代码块](./06_Declarations.md#code_block) +> *setter 子句* → [特性](./07_Attributes.md#attributes)可选 [可变性修饰符](./06_Declarations.md#mutation-modifier)可选 **set** [setter 名称](./06_Declarations.md#setter_name)可选 [代码块](./06_Declarations.md#code_block) > > *setter 名称* → **(** [标识符](./02_Lexical_Structure.md#identifier) **)** > @@ -1205,17 +1205,17 @@ > > *getter-setter 关键字(Keyword)块* → **{** [setter 关键字子句](./06_Declarations.md#setter_keyword_clause) [getter 关键字子句](./06_Declarations.md#getter_keyword_clause) **}** > -> *getter 关键字(Keyword)子句* → [属性集](./07_Attributes.md#attributes)可选 [可变性修饰符](./06_Declarations.md#mutation-modifier)可选 **get** +> *getter 关键字(Keyword)子句* → [特性](./07_Attributes.md#attributes)可选 [可变性修饰符](./06_Declarations.md#mutation-modifier)可选 **get** > -> *setter 关键字(Keyword)子句* → [属性集](./07_Attributes.md#attributes)可选 [可变性修饰符](./06_Declarations.md#mutation-modifier)可选 **set** +> *setter 关键字(Keyword)子句* → [特性](./07_Attributes.md#attributes)可选 [可变性修饰符](./06_Declarations.md#mutation-modifier)可选 **set** > > *willSet-didSet 代码块* → **{** [willSet 子句](./06_Declarations.md#willSet_clause) [didSet 子句](./06_Declarations.md#didSet_clause)可选 **}** > > *willSet-didSet 代码块* → **{** [didSet 子句](./06_Declarations.md#didSet_clause) [willSet 子句](./06_Declarations.md#willSet_clause)可选 **}** > -> *willSet 子句* → [属性集](./07_Attributes.md#attributes)可选 **willSet** [setter 名称](./06_Declarations.md#setter_name)可选 [代码块](./06_Declarations.md#code_block) +> *willSet 子句* → [特性](./07_Attributes.md#attributes)可选 **willSet** [setter 名称](./06_Declarations.md#setter_name)可选 [代码块](./06_Declarations.md#code_block) > -> *didSet 子句* → [属性集](./07_Attributes.md#attributes)可选 +> *didSet 子句* → [特性](./07_Attributes.md#attributes)可选 > **didSet** [setter 名称](./06_Declarations.md#setter_name)可选 [代码块](./06_Declarations.md#code_block) @@ -1223,7 +1223,7 @@ > 类型别名声明语法 > -> *类型别名声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) **typealias** [类型别名名称](./06_Declarations.md#typealias_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型别名赋值](./06_Declarations.md#typealias_assignment) +> *类型别名声明* → [特性](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier) **typealias** [类型别名名称](./06_Declarations.md#typealias_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型别名赋值](./06_Declarations.md#typealias_assignment) > > *类型别名名称* → [标识符](./02_Lexical_Structure.md#identifier) > @@ -1236,7 +1236,7 @@ > > *函数声明* → [函数头](./06_Declarations.md#function_head) [函数名](./06_Declarations.md#function_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [函数签名](./06_Declarations.md#function_signature) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [函数体](./06_Declarations.md#function_body)可选 > -> *函数头* → [属性集](./07_Attributes.md#attributes)可选 [声明描述符集](./06_Declarations.md#declaration_specifiers)可选 **func** +> *函数头* → [特性](./07_Attributes.md#attributes)可选 [声明描述符集](./06_Declarations.md#declaration_specifiers)可选 **func** > > *函数名* → [标识符](./02_Lexical_Structure.md#identifier) | [运算符](./02_Lexical_Structure.md#operator) > @@ -1245,7 +1245,7 @@ > *函数签名* → [参数子句](./06_Declarations.md#parameter_clause) **rethrows** [函数结果](./06_Declarations.md#function_result)可选 > -> *函数结果* → **->** [属性集](./07_Attributes.md#attributes)可选 [类型](./03_Types.md#type) +> *函数结果* → **->** [特性](./07_Attributes.md#attributes)可选 [类型](./03_Types.md#type) > > *函数体* → [代码块](./06_Declarations.md#code_block) > @@ -1270,9 +1270,9 @@ > 枚举声明语法 > -> *枚举声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 [联合式枚举](./06_Declarations.md#union_style_enum) +> *枚举声明* → [特性](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 [联合式枚举](./06_Declarations.md#union_style_enum) > -> *枚举声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 [原始值式枚举](./06_Declarations.md#raw-value-style-enum) +> *枚举声明* → [特性](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 [原始值式枚举](./06_Declarations.md#raw-value-style-enum) > > *联合式枚举* → **indirect**可选 **enum** [枚举名](./06_Declarations.md#enum_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型继承子句](./03_Types.md#type-inheritance-clause)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 **{** [联合式枚举成员](./06_Declarations.md#union_style_enum_members)可选 **}** > @@ -1280,7 +1280,7 @@ > > *联合样式枚举成员* → [声明](./06_Declarations.md#declaration) | [联合式枚举 case 子句](./06_Declarations.md#union_style_enum_case_clause) | [编译控制语句](./05_Statements.md#compiler-control-statement) > -> *联合式枚举 case 子句* → [属性集](./07_Attributes.md#attributes)可选 **indirect**可选 **case** [联合式枚举 case 集](./06_Declarations.md#union_style_enum_case_list) +> *联合式枚举 case 子句* → [特性](./07_Attributes.md#attributes)可选 **indirect**可选 **case** [联合式枚举 case 集](./06_Declarations.md#union_style_enum_case_list) > > *联合式枚举 case 集* → [联合式枚举 case](./06_Declarations.md#union_style_enum_case) | [联合式枚举 case](./06_Declarations.md#union_style_enum_case) **,** [联合式枚举 case 集](./06_Declarations.md#union_style_enum_case_list) > @@ -1296,7 +1296,7 @@ > > *原始值式枚举成员* → [声明](./06_Declarations.md#declaration) | [原始值式枚举 case 子句](./06_Declarations.md#raw_value_style_enum_case_clause) | [编译控制语句](./05_Statements.md#compiler-control-statement) > -> *原始值式枚举 case 子句* → [属性集](./07_Attributes.md#attributes)可选 **case** [原始值式枚举 case 集](./06_Declarations.md#raw_value_style_enum_case_list) +> *原始值式枚举 case 子句* → [特性](./07_Attributes.md#attributes)可选 **case** [原始值式枚举 case 集](./06_Declarations.md#raw_value_style_enum_case_list) > > *原始值式枚举 case 集* → [原始值式枚举 case](./06_Declarations.md#raw_value_style_enum_case) | [原始值式枚举 case](./06_Declarations.md#raw_value_style_enum_case) **,** [原始值式枚举 case 集](./06_Declarations.md#raw_value_style_enum_case_list) > @@ -1311,7 +1311,7 @@ > 结构体声明语法 > -> *结构体声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **struct** [结构体名称](./06_Declarations.md#struct_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型继承子句](./03_Types.md#type_inheritance_clause)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [结构体主体](./06_Declarations.md#struct_body) +> *结构体声明* → [特性](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **struct** [结构体名称](./06_Declarations.md#struct_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型继承子句](./03_Types.md#type_inheritance_clause)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [结构体主体](./06_Declarations.md#struct_body) > > *结构体名称* → [标识符](./02_Lexical_Structure.md#identifier) > @@ -1326,9 +1326,9 @@ > 类声明语法 > -> *类声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **final**可选 **class** [类名](./06_Declarations.md#class_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型继承子句](./03_Types.md#type_inheritance_clause) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [类主体](./06_Declarations.md#class_body) +> *类声明* → [特性](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **final**可选 **class** [类名](./06_Declarations.md#class_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型继承子句](./03_Types.md#type_inheritance_clause) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [类主体](./06_Declarations.md#class_body) > -> *类声明* → [属性集](./07_Attributes.md#attributes)可选 **final** [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **class** [类名](./06_Declarations.md#class_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型继承子句](./03_Types.md#type_inheritance_clause) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [类主体](./06_Declarations.md#class_body) +> *类声明* → [特性](./07_Attributes.md#attributes)可选 **final** [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **class** [类名](./06_Declarations.md#class_name) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [类型继承子句](./03_Types.md#type_inheritance_clause) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [类主体](./06_Declarations.md#class_body) > > *类名* → [标识符](./02_Lexical_Structure.md#identifier) > @@ -1343,7 +1343,7 @@ > 协议声明语法 > -> *协议声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **protocol** [协议名](./06_Declarations.md#protocol_name) [类型继承子句](./03_Types.md#type_inheritance_clause)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [协议主体](./06_Declarations.md#protocol_body) +> *协议声明* → [特性](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **protocol** [协议名](./06_Declarations.md#protocol_name) [类型继承子句](./03_Types.md#type_inheritance_clause)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [协议主体](./06_Declarations.md#protocol_body) > > *协议名* → [标识符](./02_Lexical_Structure.md#identifier) > @@ -1400,7 +1400,7 @@ > 协议关联类型声明语法 > -> *协议关联类型声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **associatedtype** [类型别名](./06_Declarations.md#typealias_name) [类型继承子句](./03_Types.md#type_inheritance_clause)可选 [类型别名赋值](./06_Declarations.md#typealias_assignment)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 +> *协议关联类型声明* → [特性](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **associatedtype** [类型别名](./06_Declarations.md#typealias_name) [类型继承子句](./03_Types.md#type_inheritance_clause)可选 [类型别名赋值](./06_Declarations.md#typealias_assignment)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 > @@ -1411,11 +1411,11 @@ > > *构造器声明* → [构造器头](./06_Declarations.md#initializer_head) [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [参数子句](./06_Declarations.md#parameter_clause) **rethrows** [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [构造器主体](./06_Declarations.md#initializer_body) > -> *构造器头(Head)* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers)可选 **init** +> *构造器头(Head)* → [特性](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers)可选 **init** > -> *构造器头(Head)* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers)可选 **init ?** +> *构造器头(Head)* → [特性](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers)可选 **init ?** > -> *构造器头(Head)* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers)可选 **init !** +> *构造器头(Head)* → [特性](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers)可选 **init !** > > *构造器主体* → [代码块](./06_Declarations.md#code_block) > @@ -1424,14 +1424,14 @@ > 析构器声明语法 > -> *析构器声明* → [属性集](./07_Attributes.md#attributes)可选 **deinit** [代码块](./06_Declarations.md#code_block) +> *析构器声明* → [特性](./07_Attributes.md#attributes)可选 **deinit** [代码块](./06_Declarations.md#code_block) > > 扩展声明语法 > -> *扩展声明* → [属性集](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **extension** [类型标识](./03_Types.md#type_identifier) [类型继承子句](./03_Types.md#type_inheritance_clause)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [扩展主体](./06_Declarations.md#extension_body) +> *扩展声明* → [特性](./07_Attributes.md#attributes)可选 [访问级别修饰符](./07_Attributes.md#access-level-modifier)可选 **extension** [类型标识](./03_Types.md#type_identifier) [类型继承子句](./03_Types.md#type_inheritance_clause)可选 [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [扩展主体](./06_Declarations.md#extension_body) > > *扩展主体* → **{** [扩展成员集](./06_Declarations.md#declarations)可选 **}** > @@ -1450,9 +1450,9 @@ > > *下标声明* → [下标头](./06_Declarations.md#subscript_head) [下标结果](./06_Declarations.md#subscript_result) [泛型 where 子句](./09_Generic_Parameters_and_Arguments.md#generic_where_clause)可选 [getter-setter 关键字块](./06_Declarations.md#getter_setter_keyword_block) > -> *下标头(Head)* → [属性集](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers)可选 **subscript** [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [参数子句](./06_Declarations.md#parameter_clause) +> *下标头(Head)* → [特性](./07_Attributes.md#attributes)可选 [声明修饰符集](./06_Declarations.md#declaration_modifiers)可选 **subscript** [泛型参数子句](./09_Generic_Parameters_and_Arguments.md#generic_parameter_clause)可选 [参数子句](./06_Declarations.md#parameter_clause) > -> *下标结果(Result)* → **->** [属性集](./07_Attributes.md#attributes)可选 [类型](./03_Types.md#type) +> *下标结果(Result)* → **->** [特性](./07_Attributes.md#attributes)可选 [类型](./03_Types.md#type) > @@ -1465,16 +1465,16 @@ > > *后置运算符声明* → **postfix** **operator** [运算符](./02_Lexical_Structure.md#operator) > -> *中置运算符声明* → **infix** **operator** [运算符](./02_Lexical_Structure.md#operator) [中置运算符属性集](./06_Declarations.md#infix_operator_attributes)可选 +> *中置运算符声明* → **infix** **operator** [运算符](./02_Lexical_Structure.md#operator) [中置运算符特性](./06_Declarations.md#infix_operator_attributes)可选 > -> *中置运算符属性集* → [优先级组名](./06_Declarations.md#precedence_group_name) +> *中置运算符特性* → [优先级组名](./06_Declarations.md#precedence_group_name) > > 优先级组声明语法 > -> *优先级组声明* → **precedencegroup** [优先级组名](./06_Declarations.md#precedence_group_name) **{** [优先级组属性集](./06_Declarations.md#precedence_group_attributes)可选 **}** +> *优先级组声明* → **precedencegroup** [优先级组名](./06_Declarations.md#precedence_group_name) **{** [优先级组特性](./06_Declarations.md#precedence_group_attributes)可选 **}** > -> *优先级组属性集* → [优先级组属性](./06_Declarations.md#declarations) [优先级组属性集](./06_Declarations.md#declarations)可选 +> *优先级组特性* → [优先级组属性](./06_Declarations.md#declarations) [优先级组特性](./06_Declarations.md#declarations)可选 > > *优先级组属性* → [优先级组关系](./06_Declarations.md#declarations) > @@ -1533,7 +1533,7 @@ > > *属性参数子句* → **{** [平衡令牌集](./07_Attributes.md#balanced_tokens)可选 **}** > -> *属性(Attributes)集* → [属性](./07_Attributes.md#attribute) [属性集](./07_Attributes.md#attributes)可选 +> *属性(Attributes)集* → [属性](./07_Attributes.md#attribute) [特性](./07_Attributes.md#attributes)可选 > > *平衡令牌集* → [平衡令牌](./07_Attributes.md#balanced_token) [平衡令牌集](./07_Attributes.md#balanced_tokens)可选 > From 61e3a3243f855b8a61cd193a61294aa4c5f2c724 Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Tue, 2 Apr 2019 09:36:19 -0500 Subject: [PATCH 085/107] test gitbook anchor --- source/chapter3/06_Declarations.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/chapter3/06_Declarations.md b/source/chapter3/06_Declarations.md index d9d3523f..49f5e91d 100755 --- a/source/chapter3/06_Declarations.md +++ b/source/chapter3/06_Declarations.md @@ -773,7 +773,7 @@ enum GamePlayMode: String { > *枚举用例名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > > -> ##### raw-value-style-enum {#raw-value-style-enum} +> #### raw-value-style-enum {#raw-value-style-enum} > > > *原始值风格枚举* → **enum** [*枚举名称*](#enum-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause) **{** [*多个原始值风格枚举成员*](#raw-value-style-enum-members) **}** From 5d3bf7bbcf885ff81738897a42a3e514c6466a15 Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Tue, 2 Apr 2019 09:40:12 -0500 Subject: [PATCH 086/107] update anchor --- source/chapter3/02_Lexical_Structure.md | 156 +++++--- source/chapter3/03_Types.md | 69 ++-- source/chapter3/04_Expressions.md | 183 ++++++--- source/chapter3/05_Statements.md | 213 +++++++---- source/chapter3/06_Declarations.md | 360 ++++++++++++------ source/chapter3/07_Attributes.md | 18 +- source/chapter3/08_Patterns.md | 39 +- .../09_Generic_Parameters_and_Arguments.md | 33 +- 8 files changed, 714 insertions(+), 357 deletions(-) diff --git a/source/chapter3/02_Lexical_Structure.md b/source/chapter3/02_Lexical_Structure.md index 9fb9d27a..b9c20e96 100755 --- a/source/chapter3/02_Lexical_Structure.md +++ b/source/chapter3/02_Lexical_Structure.md @@ -14,7 +14,8 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > > *空白* → [*空白项*](#whitespace-item) [*空白*](#whitespace)可选 > -> ###### whitespace-item {# whitespace-item} +> +#### whitespace-item {# whitespace-item} > > *空白项* → [*断行符*](#line-break) > @@ -24,7 +25,8 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > > *空白项* → U+0000,U+0009,U+000B,U+000C 或者 U+0020 > -> ###### line-break {# line-break} +> +#### line-break {# line-break} > > *断行符* → U+000A > @@ -32,23 +34,28 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > > *断行符* → U+000D 接着是 U+000A > -> ###### comment {# comment} +> +#### comment {# comment} > > *注释* → // [*注释内容*](#comment-text) [断行符*](#line-break) > -> ###### multiline-comment {# multiline-comment} +> +#### multiline-comment {# multiline-comment} > > *多行注释* → `/*` [*多行注释内容*](#multiline-commnet-text) `*/` > -> ###### comment-text {# comment-text} +> +#### comment-text {# comment-text} > > *注释内容* → [*注释内容项*](#comment-text-item) [*注释内容*](#comment-text)可选 > -> ###### comment-text-item {# comment-text-item} +> +#### comment-text-item {# comment-text-item} > > *注释内容项* → 任何 Unicode 标量值, 除了 U+000A 或者 U+000D > -> ###### multiline-commnet-text {# multiline-commnet-text} +> +#### multiline-commnet-text {# multiline-commnet-text} > > *多行注释内容* → [*多行注释内容项*](#multiline-comment-text-item) [*多行注释内容*](#multiline-comment-text)可选 > @@ -76,7 +83,8 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > > *标识符列表* → [*标识符*](#identifier) | [*标识符*](#identifier) **,** [*标识符列表*](#identifier) > -> ###### identifier-head {# identifier-head} +> +#### identifier-head {# identifier-head} > > *头部标识符* → 大写或小写字母 A - Z > @@ -112,17 +120,20 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > > *标识符字符* → 数值 0 - 9 > -> ###### identifier-character {# identifier-character} +> +#### identifier-character {# identifier-character} > > *标识符字符* → U+0300–U+036F,U+1DC0–U+1DFF,U+20D0–U+20FF,或者 U+FE20–U+FE2F > > *标识符字符* → [*头部标识符*](#identifier-head) > -> ###### identifier-characters {# identifier-characters} +> +#### identifier-characters {# identifier-characters} > > *标识符字符组* → [*标识符字符*](#identifier-character) [*标识符字符组*](#identifier-characters)可选 > -> ###### implicit-parameter-name {# implicit-parameter-name} +> +#### implicit-parameter-name {# implicit-parameter-name} > > *隐式参数名* → **$** [*十进制数字列表*](#decimal-digit) @@ -181,7 +192,8 @@ true // 布尔值字面量 > 整数字面量语法 > -> ###### integer-literal {# integer-literal} +> +#### integer-literal {# integer-literal} > > *整数字面量* → [*二进制字面量*](#binary-literal) > @@ -191,43 +203,52 @@ true // 布尔值字面量 > > *整数字面量* → [*十六进制字面量*](#hexadecimal-literal) > -> ###### binary-literal {# binary-literal} +> +#### binary-literal {# binary-literal} > > *二进制字面量* → **0b** [*二进制数字*](#binary-digit) [*二进制字面量字符组*](#binary-literal-characters)可选 > -> ###### binary-digit {# binary-digit} +> +#### binary-digit {# binary-digit} > > *二进制数字* → 数值 0 到 1 > > *二进制字面量字符* → [*二进制数字*](#binary-digit) | _ > -> ###### binary-literal-characters {# binary-literal-characters} +> +#### binary-literal-characters {# binary-literal-characters} > > *二进制字面量字符组* → [*二进制字面量字符*](#binary-literal-character) [*二进制字面量字符组*](#binary-literal-characters)可选 > -> ###### octal-literal {# octal-literal} +> +#### octal-literal {# octal-literal} > > *八进制字面量* → **0o** [*八进字数字*](#octal-digit) [*八进制字符组*](#octal-literal-characters)可选 > -> ###### octal-digit {# octal-digit} +> +#### octal-digit {# octal-digit} > > *八进字数字* → 数值 0 到 7 > > *八进制字符* → [*八进字数字*](#octal-digit) | _ > -> ###### octal-literal-characters {# octal-literal-characters} +> +#### octal-literal-characters {# octal-literal-characters} > > *八进制字符组* → [*八进制字符*](#octal-literal-character) [*八进制字符组*](#octal-literal-characters)可选 > -> ###### decimal-literal {# decimal-literal} +> +#### decimal-literal {# decimal-literal} > > *十进制字面量* → [*十进制数字*](#decimal-digit) [*十进制字符组*](#decimal-literal-characters)可选 > -> ###### decimal-digit {# decimal-digit} +> +#### decimal-digit {# decimal-digit} > > *十进制数字* → 数值 0 到 9 > -> ###### decimal-literal-characters {# decimal-literal-characters} +> +#### decimal-literal-characters {# decimal-literal-characters} > > *十进制数字组* → [*十进制数字*](#decimal-digit) [*十进制数字组*](#decimal-literal-characters)可选 > @@ -235,17 +256,20 @@ true // 布尔值字面量 > > *十进制字符组* → [*十进制字符*](#decimal-literal-characters) [*十进制字符组*](#decimal-literal-characters)可选 > -> ###### hexadecimal-literal {# hexadecimal-literal} +> +#### hexadecimal-literal {# hexadecimal-literal} > > *十六进制字面量* → **0x** [*十六进制数字*](#hexadecimal-digit) [*十六进制字面量字符组*](#hexadecimal-literal-characters)可选 > -> ###### hexadecimal-digit {# hexadecimal-digit} +> +#### hexadecimal-digit {# hexadecimal-digit} > > *十六进制数字* → 数值 0 到 9, 字母 a 到 f, 或 A 到 F > > *十六进制字符* → [*十六进制数字*](#hexadecimal-digit) | _ > -> ###### hexadecimal-literal-characters {# hexadecimal-literal-characters} +> +#### hexadecimal-literal-characters {# hexadecimal-literal-characters} > > *十六进制字面量字符组* → [*十六进制字符*](#hexadecimal-literal-characters) [*十六进制字面量字符组*](#hexadecimal-literal-characters)可选 @@ -267,37 +291,45 @@ true // 布尔值字面量 > 浮点数字面量语法 > -> ###### floating-point-literal {# floating-point-literal} +> +#### floating-point-literal {# floating-point-literal} > > *浮点数字面量* → [*十进制字面量*](#decimal-literal) [*十进制分数*](#decimal-fraction)可选 [*十进制指数*](#decimal-exponent)可选 > > *浮点数字面量* → [*十六进制字面量*](#hexadecimal-literal) [*十六进制分数*](#hexadecimal-fraction)可选 [*十六进制指数*](#hexadecimal-exponent) > -> ###### decimal-fraction {# decimal-fraction} +> +#### decimal-fraction {# decimal-fraction} > > *十进制分数* → **.** [*十进制字面量*](#decimal-literal) > -> ###### decimal-exponent {# decimal-exponent} +> +#### decimal-exponent {# decimal-exponent} > > *十进制指数* → [*十进制指数 e*](#floating-point-e) [*正负号*](#sign)可选 [*十进制字面量*](#decimal-literal) > -> ###### hexadecimal-fraction {# hexadecimal-fraction} +> +#### hexadecimal-fraction {# hexadecimal-fraction} > > *十六进制分数* → **.** [*十六进制数字*](#hexadecimal-digit) [*十六进制字面量字符组*](#hexadecimal-literal-characters)可选 > -> ###### hexadecimal-exponent {# hexadecimal-exponent} +> +#### hexadecimal-exponent {# hexadecimal-exponent} > > *十六进制指数* → [*十六进制指数 p*](#floating-point-p) [*正负号*](#sign)可选 [*十进制字面量*](#decimal-literal) > -> ###### floating-point-e {# floating-point-e} +> +#### floating-point-e {# floating-point-e} > > *十进制指数 e* → **e** | **E** > -> ###### floating-point-p {# floating-point-p} +> +#### floating-point-p {# floating-point-p} > > *十六进制指数 p* → **p** | **P** > -> ###### sign {# sign} +> +#### sign {# sign} > > *正负号* → **+** | **-** @@ -398,7 +430,8 @@ let textB = "Hello world" > > *字符串闭分隔定界符* → **"** [*字符串扩展分隔符*](#extended-string-literal-delimiter)可选 > -> ###### static-string-literal {# static-string-literal} +> +#### static-string-literal {# static-string-literal} > > *静态字符串字面量* → [*字符串开分隔定界符*](#extended-string-literal-delimiter) [*引用文本*](#quoted-text)可选 [*字符串闭分隔定界符*](#extended-string-literal-delimiter) > @@ -408,45 +441,54 @@ let textB = "Hello world" > > *多行字符串闭分隔定界符* → **"""** [*字符串扩展分隔符*](#extended-string-literal-delimiter) > -> ###### extended-string-literal-delimiter {# extended-string-literal-delimiter} +> +#### extended-string-literal-delimiter {# extended-string-literal-delimiter} > > *字符串扩展分隔符* → **#** [*字符串扩展分隔符*](#extended-string-literal-delimiter)可选 > -> ###### quoted-text {# quoted-text} +> +#### quoted-text {# quoted-text} > > *引用文本* → [*引用文本项*](#quoted-text-item) [*引用文本*](#quoted-text)可选 > -> ###### quoted-text-item {# quoted-text-item} +> +#### quoted-text-item {# quoted-text-item} > > *引用文本项* → [*转义字符*](#escaped-character) > > *引用文本项* → 除了 **"**、**\\**、U+000A、U+000D 以外的所有 Unicode 字符 > -> ###### multiline-quoted-text {# multiline-quoted-text} +> +#### multiline-quoted-text {# multiline-quoted-text} > > *多行引用文本* → [*多行引用文本项*](#multiline-quoted-text-item) [*多行引用文本*](#multiline-quoted-text)可选 > -> ###### multiline-quoted-text-item {# multiline-quoted-text-item} +> +#### multiline-quoted-text-item {# multiline-quoted-text-item} > > *多行引用文本项* [*转义字符*](#escaped-character)可选 > -> ###### multiline-quoted-text {# multiline-quoted-text} +> +#### multiline-quoted-text {# multiline-quoted-text} > > *多行引用文本* → 除了 **\** 以外的任何Unicode标量值 > > *多行引用文本* → [*转义换行*](#escaped-newline) > -> ###### interpolated-string-literal {# interpolated-string-literal} +> +#### interpolated-string-literal {# interpolated-string-literal} > > *插值字符串字面量* → [*字符串开分隔定界符*](#extended-string-literal-delimiter) [*插值文本*](#interpolated-text)可选 [*字符串闭分隔定界符*](#extended-string-literal-delimiter) > > *插值字符串字面量* → [*多行字符串开分隔定界符*](#extended-string-literal-delimiter) [*插值文本*](#interpolated-text)可选 [*多行字符串闭分隔定界符*](#extended-string-literal-delimiter) > -> ###### interpolated-text {# interpolated-text} +> +#### interpolated-text {# interpolated-text} > > *插值文本* → [*插值文本项*](#interpolated-text-item) [*插值文本*](#interpolated-text)可选 > -> ###### interpolated-text-item {# interpolated-text-item} +> +#### interpolated-text-item {# interpolated-text-item} > > *插值文本项* → **\\****(**[*表达式*](./04_Expressions.md)**)** | [*引用文本项*](#quoted-text-item) > @@ -454,21 +496,25 @@ let textB = "Hello world" > > *多行插值文本项* → **\\(** [表达式](./04_Expressions.md) **)** | [多行引用文本项](#multiline-quoted-text-item) > -> ###### escape-sequence {# escape-sequence} +> +#### escape-sequence {# escape-sequence} > > *转义序列* → **\\** [字符串扩展分隔符](#extended-string-literal-delimiter) > -> ###### escaped-character {# escaped-character} +> +#### escaped-character {# escaped-character} > > *转义字符* → [*转义序列*](#escape-sequence) **0** | [*转义序列*](#escape-sequence) **\\** | [*转义序列*](#escape-sequence) **t** | [*转义序列*](#escape-sequence) **n** | [*转义序列*](#escape-sequence) **r** | [*转义序列*](#escape-sequence) **\"** | [*转义序列*](#escape-sequence) **'** > > *转义字符* → [*转义序列*](#escape-sequence) **u {** [*unicode 标量数字*](#unicode-scalar-digits) **}** > -> ###### unicode-scalar-digits {# unicode-scalar-digits} +> +#### unicode-scalar-digits {# unicode-scalar-digits} > > *unicode 标量数字* → 一到八位的十六进制数字 > -> ###### escaped-newline {# escaped-newline} +> +#### escaped-newline {# escaped-newline} > > *转义换行符* → [*转义序列*](#escape-sequence) [*空白*](#whitespace)可选 [*断行符*](#line-break) @@ -508,7 +554,8 @@ Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基 > > *运算符* → [*头部点运算符*](#dot-operator-head) [*点运算符字符组*](#dot-operator-characters) > -> ###### operator-head {# operator-head} +> +#### operator-head {# operator-head} > > *头部运算符* → **/** | **=** | **-** | **+** | **!** | __*__ | **%** | **<** | **>** | **&** | **|** | **^** | **~** | **?** > @@ -540,7 +587,8 @@ Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基 > > *头部运算符* → U+3008–U+3030 > -> ###### operator-character {# operator-character} +> +#### operator-character {# operator-character} > > *运算符字符* → [*头部运算符*](#operator-head) > @@ -556,19 +604,23 @@ Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基 > > *运算符字符* → U+E0100–U+E01EF > -> ###### operator-characters {# operator-characters} +> +#### operator-characters {# operator-characters} > > *运算符字符组* → [*运算符字符*](#operator-character) [*运算符字符组*](#operator-characters)可选 > -> ###### dot-operator-head {# dot-operator-head} +> +#### dot-operator-head {# dot-operator-head} > > *头部点运算符* → **..** > -> ###### dot-operator-character {# dot-operator-character} +> +#### dot-operator-character {# dot-operator-character} > > *点运算符字符* → **.** | [*运算符字符*](#operator-character) > -> ###### dot-operator-characters {# dot-operator-characters} +> +#### dot-operator-characters {# dot-operator-characters} > > *点运算符字符组* → [*点运算符字符*](#dot-operator-character) [*点运算符字符组*](#dot-operator-characters)可选 > diff --git a/source/chapter3/03_Types.md b/source/chapter3/03_Types.md index 9d9962d0..252f2080 100644 --- a/source/chapter3/03_Types.md +++ b/source/chapter3/03_Types.md @@ -27,7 +27,8 @@ Swift 语言存在两种类型:命名型类型和复合型类型。*命名型 > 类型语法 > -###### type {#type} + +#### type {#type} > *类型* → [*数组类型*](#array-type) > > *类型* → [*字典类型*](#dictionary-type) @@ -67,7 +68,8 @@ func someFunction(a: Int) { /* ... */ } > 类型注解语法 > -###### type-annotation {#type-annotation} + +#### type-annotation {#type-annotation} > *类型注解* → **:** [*特性列表*](./07_Attributes.md#attributes)可选 **输入输出参数**可选 [*类型*](#type) > @@ -91,10 +93,12 @@ var someValue: ExampleModule.MyType > 类型标识符语法 > -###### type-identifier {#type-identifier} + +#### type-identifier {#type-identifier} > *类型标识符* → [*类型名称*](#type-name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_argument_clause)可选 | [*类型名称*](#type-name) [*泛型参数子句*](./09_Generic_Parameters_and_Arguments.md#generic_argument_clause)可选 **.** [*类型标识符*](#type-identifier) > -###### type-name {#type-name} + +#### type-name {#type-name} > *类型名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -116,16 +120,20 @@ someTuple = (left: 5, right: 5) // 错误:命名类型不匹配 > 元组类型语法 > -###### tuple-type {#tuple-type} + +#### tuple-type {#tuple-type} > *元组类型* → **(** **)** | **(** [*元组类型元素*](#tuple-type-element) **,** [*元组类型元素列表*](#tuple-type-element-list) **)** > -###### tuple-type-element-list {#tuple-type-element-list} + +#### tuple-type-element-list {#tuple-type-element-list} > *元组类型元素列表* → [*元组类型元素*](#tuple-type-element) | [*元组类型元素*](#tuple-type-element) **,** [*元组类型元素列表*](#tuple-type-element-list) > -###### tuple-type-element {#tuple-type-element} + +#### tuple-type-element {#tuple-type-element} > *元组类型元素* → [*元素名*](#element-name) [*类型注解*](#type-annotation) | [*类型*](#type) > -###### element-name {#element-name} + +#### element-name {#element-name} > *元素名* → [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -202,22 +210,27 @@ func takesTwoFunctions(first: (Any) -> Void, second: (Any) -> Void) { > 函数类型语法 > -###### function-type {#function-type} + +#### function-type {#function-type} > *函数类型* → [*特性列表*](./07_Attributes.md#attributes)可选 [*函数类型子句*](#function-type-argument-clause) **throws**可选 **->** [*类型*](#type) > > *函数类型* → [*特性列表*](./07_Attributes.md#attributes)可选 [*函数类型子句*](#function-type-argument-clause) **rethrows­** **->** [*类型*](#type) > -###### function-type-argument-clause {#function-type-argument-clause} + +#### function-type-argument-clause {#function-type-argument-clause} > *函数类型子句* → **(**­ **)**­ > *函数类型子句* → **(** [*函数类型参数列表*](#function-type-argument-list) *...*­ 可选 **)** > -###### function-type-argument-list {#function-type-argument-list} + +#### function-type-argument-list {#function-type-argument-list} > *函数类型参数列表* → [*函数类型参数*](function-type-argument) | [*函数类型参数*](function-type-argument), [*函数类型参数列表*](#function-type-argument-list) > -###### function-type-argument {#function-type-argument} + +#### function-type-argument {#function-type-argument} > *函数类型参数* → [*特性列表*](./07_Attributes.md#attributes)可选 **输入输出参数**可选 [*类型*](#type) | [*参数标签*](#argument-label) [*类型注解*](#type-annotation) > -###### argument-label {#argument-label} + +#### argument-label {#argument-label} > *参数标签* → [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -248,7 +261,8 @@ var array3D: [[[Int]]] = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]] > 数组类型语法 > -###### array-type {#array-type} + +#### array-type {#array-type} > *数组类型* → **[** [*类型*](#type) **]** > @@ -275,7 +289,8 @@ let someDictionary: Dictionary = ["Alex": 31, "Paul": 39] > 字典类型语法 > -###### dictionary-type {#dictionary-type} + +#### dictionary-type {#dictionary-type} > *字典类型* → **[** [*类型*](#type) **:** [*类型*](#type) **]** > @@ -306,7 +321,8 @@ optionalInteger! // 42 > 可选类型语法 > -###### optional-type {#optional-type} + +#### optional-type {#optional-type} > *可选类型* → [*类型*](#type) **?** > @@ -340,7 +356,8 @@ let implicitlyUnwrappedArray: [Int]! // 正确 > 隐式解析可选类型语法 > -###### implicitly-unwrapped-optional-type {#implicitly-unwrapped-optional-type} + +#### implicitly-unwrapped-optional-type {#implicitly-unwrapped-optional-type} > *隐式解析可选类型* → [*类型*](#type) **!** > @@ -369,10 +386,12 @@ typealias PQR = PQ & Q & R > 协议合成类型语法 > -###### protocol-composition-type {#protocol-composition-type} + +#### protocol-composition-type {#protocol-composition-type} > *协议合成类型* → [*协议标识符*](#protocol-identifier) & [*协议合成延续*](#protocol-composition-continuation) > -###### protocol-composition-continuation {#protocol-composition-continuation} + +#### protocol-composition-continuation {#protocol-composition-continuation} > *协议合成延续* → [*协议标识符*](#protocol-identifier) | [*协议合成类型*](#protocol-composition-type) > @@ -421,7 +440,8 @@ let anotherInstance = metatype.init(string: "some string") > 元类型语法 > -###### metatype-type {#metatype-type} + +#### metatype-type {#metatype-type} > *元类型* → [*类型*](#type) **.** **Type** | [*类型*](#type) **.** **Protocol** > @@ -436,13 +456,16 @@ let anotherInstance = metatype.init(string: "some string") > 类型继承子句语法 > -###### type_inheritance_clause {#type_inheritance_clause} + +#### type_inheritance_clause {#type_inheritance_clause} > *类型继承子句* → **:** [*类型继承列表*](#type-inheritance-list) > -###### type-inheritance-list {#type-inheritance-list} + +#### type-inheritance-list {#type-inheritance-list} > *类型继承列表* → [*类型标识符*](#type-identifier) | [*类型标识符*](#type-identifier) **,** [*类型继承列表*](#type-inheritance-list) > -###### class-requirement {#class-requirement} + +#### class-requirement {#class-requirement} ## 类型推断 {#type_inference} diff --git a/source/chapter3/04_Expressions.md b/source/chapter3/04_Expressions.md index 7ce3c7b7..9408459d 100644 --- a/source/chapter3/04_Expressions.md +++ b/source/chapter3/04_Expressions.md @@ -6,10 +6,12 @@ Swift 中存在四种表达式:前缀表达式,二元表达式,基本表 > 表达式语法 > -###### expression {#expression} + +#### expression {#expression} > *表达式* → [*try 运算符*](#try-operator)可选 [*前缀表达式*](#prefix-expression) [*二元表达式列表*](#binary-expressions)可选 > -###### expression-list {#expression-list} + +#### expression-list {#expression-list} > *表达式列表* → [*表达式*](#expression) | [*表达式*](#expression) **,** [*表达式列表*](#expression-list) > @@ -24,12 +26,14 @@ Swift 中存在四种表达式:前缀表达式,二元表达式,基本表 > 前缀表达式语法 > -###### prefix-expression {#prefix-expression} + +#### prefix-expression {#prefix-expression} > *前缀表达式* → [*前缀运算符*](./02_Lexical_Structure.md#prefix-operator)可选 [*后缀表达式*](#postfix-expression) > > *前缀表达式* → [*输入输出表达式*](#in-out-expression) > -###### in-out-expression {#in-out-expression} + +#### in-out-expression {#in-out-expression} > *输入输出表达式* → **&** [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -66,7 +70,8 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try 关于 `try`、`try?` 和 `try!` 的更多信息,以及该如何使用的例子,请参阅 [错误处理](../chapter2/17_Error_Handling.md)。 > Try 表达式语法 > -###### try-operator {#try-operator} + +#### try-operator {#try-operator} > *try 运算符* → **try** | **try?** | **try!** > @@ -85,7 +90,8 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try > 在解析时,一个二元表达式将作为一个扁平列表表示,然后根据运算符的优先级,再进一步进行组合。例如,`2 + 3 * 5` 首先被看作具有五个元素的列表,即 `2`、`+`、`3`、`*`、`5`,随后根据运算符优先级组合为 `(2 + (3 * 5))`。 > -###### binary-expression {#binary-expression} + +#### binary-expression {#binary-expression} > 二元表达式语法 > > *二元表达式* → [*二元运算符*](./02_Lexical_Structure.md#binary-operator) [*前缀表达式*](#prefix-expression) @@ -96,7 +102,8 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try > > *二元表达式* → [*类型转换运算符*](#type-casting-operator) > -###### binary-expressions {#binary-expressions} + +#### binary-expressions {#binary-expressions} > *二元表达式列表* → [*二元表达式*](#binary-expression) [*二元表达式列表*](#binary-expressions)可选 > @@ -117,7 +124,8 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try > 赋值运算符语法 > -###### assignment-operator {#assignment-operator} + +#### assignment-operator {#assignment-operator} > *赋值运算符* → **=** > @@ -133,7 +141,8 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try > 三元条件运算符语法 > -###### conditional-operator {#conditional-operator} + +#### conditional-operator {#conditional-operator} > *三元条件运算符* → **?** [*表达式*](#expression) **:** > @@ -176,7 +185,8 @@ f(x as Any) 关于类型转换的更多内容和例子,请参阅 [类型转换](../chapter2/18_Type_Casting.md)。 -###### type-casting-operator {#type-casting-operator} + +#### type-casting-operator {#type-casting-operator} > 类型转换运算符语法 > > *类型转换运算符* → **is** [*类型*](./03_Types.md#type) @@ -193,7 +203,8 @@ f(x as Any) > 基本表达式语法 > -###### primary-expression {#primary-expression} + +#### primary-expression {#primary-expression} > *基本表达式* → [*标识符*](./02_Lexical_Structure.md#identifier) [*泛型实参子句*](./09_Generic_Parameters_and_Arguments.md#generic-argument-clause)可选 > > *基本表达式* → [*字面量表达式*](#literal-expression) @@ -269,7 +280,8 @@ Xcode 使用 playground 字面量对程序编辑器中的颜色、文件或者 > 字面量表达式语法 > > -> ###### literal-expression {#literal-expression} +> +#### literal-expression {#literal-expression} > > *字面量表达式* → [*字面量*](./02_Lexical_Structure.md#literal) > @@ -279,38 +291,46 @@ Xcode 使用 playground 字面量对程序编辑器中的颜色、文件或者 > -> ###### array-literal {#array-literal} +> +#### array-literal {#array-literal} > > *数组字面量* → [[*数组字面量项列表*](#array-literal-items)可选 **]** > -> ###### array-literal-items {#array-literal-items} +> +#### array-literal-items {#array-literal-items} > > *数组字面量项列表* → [*数组字面量项*](#array-literal-item) **,**可选 | [*数组字面量项*](#array-literal-item) **,** [*数组字面量项列表*](#array-literal-items) > -> ###### array-literal-item {#array-literal-item} +> +#### array-literal-item {#array-literal-item} > > *数组字面量项* → [*表达式*](#expression) > > -> ###### dictionary-literal {#dictionary-literal} +> +#### dictionary-literal {#dictionary-literal} > > *字典字面量* → [[*字典字面量项列表*](#dictionary-literal-items) **]** | **[** **:** **]** > -> ###### dictionary-literal-items {#dictionary-literal-items} +> +#### dictionary-literal-items {#dictionary-literal-items} > > *字典字面量项列表* → [*字典字面量项*](#dictionary-literal-item) **,**可选 | [*字典字面量项*](#dictionary-literal-item) **,** [*字典字面量项列表*](#dictionary-literal-items) > -> ###### dictionary-literal-item {#dictionary-literal-item} +> +#### dictionary-literal-item {#dictionary-literal-item} > > *字典字面量项* → [*表达式*](#expression) **:** [*表达式*](#expression)。 > -> ###### playground-literal {#playground-literal} +> +#### playground-literal {#playground-literal} > > *playground 字面量* → **#colorLiteral ( red : [*表达式*](#expression) , green :[*表达式*](#expression) [*表达式*](#e[*表达式*](#expression) xpression) , blue :[*表达式*](#expression) , alpha : [*表达式*](#expression) )** > > *playground 字面量* → **#fileLiteral ( resourceName : [*表达式*](#expression) )** > -> ###### playground 字面量* → **#imageLiteral ( resourceName : [*表达式*](#expression) )**self_expression {#self_expression} +> +#### playground 字面量* → **#imageLiteral ( resourceName : [*表达式*](#expression) )**self_expression {#self_expression} > ### Self 表达式 @@ -354,17 +374,21 @@ struct Point { > Self 表达式语法 > -###### self-expression {#self-expression} + +#### self-expression {#self-expression} > *self 表达式* → **self** | [*self 方法表达式*](#self-method-expression) | [*self 下标表达式*](#self-subscript-expression) | [*self 构造器表达式*](#self-initializer-expression) > > -###### self-method-expression {#self-method-expression} + +#### self-method-expression {#self-method-expression} > *self 方法表达式* → **self** **.** [*标识符*](./02_Lexical_Structure.md#identifier) > -###### self-subscript-expression {#self-subscript-expression} + +#### self-subscript-expression {#self-subscript-expression} > *self 下标表达式* → **self** **[** [*函数调用参数表*](#function-call-argument-list­) **]** > -###### self-initializer-expression {#self-initializer-expression} + +#### self-initializer-expression {#self-initializer-expression} > *self 构造器表达式* → **self** **.** **init** > @@ -384,16 +408,20 @@ struct Point { > 父类表达式语法 > -###### superclass-expression {#superclass-expression} + +#### superclass-expression {#superclass-expression} > *父类表达式* → [*父类方法表达式*](#superclass-method-expression) | [*父类下标表达式*](#superclass-subscript-expression) | [*父类构造器表达式*](#superclass-initializer-expression) > -###### superclass-method-expression {#superclass-method-expression} + +#### superclass-method-expression {#superclass-method-expression} > *父类方法表达式* → **super** **.** [*标识符*](./02_Lexical_Structure.md#identifier) > -###### superclass-subscript-expression {#superclass-subscript-expression} + +#### superclass-subscript-expression {#superclass-subscript-expression} > *父类下标表达式* → **super** [[*函数调用参数表*](#function-call-argument-list­) **]** > -###### superclass-initializer-expression {#superclass-initializer-expression} + +#### superclass-initializer-expression {#superclass-initializer-expression} > *父类构造器表达式* → **super** **.** **init** > @@ -501,12 +529,14 @@ myFunction { [weak parent = self.parent] in print(parent!.title) } > 闭包表达式语法 > > -> ###### closure-expression {#closure-expression} +> +#### closure-expression {#closure-expression} > > *闭包表达式* → **{** [*闭包签名*](#closure-signature)可选 [*语句*](#statements) **}** > > -> ###### closure-signature {#closure-signature} +> +#### closure-signature {#closure-signature} > > > 闭包签名* → [*参数子句*](#parameter-clause) [*函数结果*](05_Declarations.md#function-result)可选 **in** @@ -520,20 +550,24 @@ myFunction { [weak parent = self.parent] in print(parent!.title) } > *闭包签名* → [*捕获列表*](#capture-list) **in** > > -> ###### capture-list {#capture-list} +> +#### capture-list {#capture-list} > > > 捕获列表* → [ [*捕获列表项列表*](#capture-list-items) **]** > -> ###### capture-list-items {#capture-list-items} +> +#### capture-list-items {#capture-list-items} > > *捕获列表项列表* → [*捕获列表项*](#capture-list-item) | [*捕获列表项*](#capture-list-item) **,** [*捕获列表项列表*](#capture-list-items) > -> ###### capture-list-item {#capture-list-item} +> +#### capture-list-item {#capture-list-item} > > *捕获列表项* → [*捕获说明符*](#capture-specifier)可选 [*表达式*](#expression) > -> ###### capture-specifier {#capture-specifier} +> +#### capture-specifier {#capture-specifier} > > *捕获说明符* → **weak** | **unowned** | **unowned(safe)** | **unowned(unsafe)** > @@ -553,7 +587,8 @@ x = .AnotherValue > 隐式成员表达式语法 > -###### implicit-member-expression {#implicit-member-expression} + +#### implicit-member-expression {#implicit-member-expression} > *隐式成员表达式* → **.** [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -562,7 +597,8 @@ x = .AnotherValue > 圆括号表达式语法 > -###### parenthesized-expression {#parenthesized-expression} + +#### parenthesized-expression {#parenthesized-expression} > *圆括号表达式* → **( [*表达式*](#expression) )** > @@ -583,13 +619,16 @@ x = .AnotherValue > 元组表达式语法 > -###### tuple-expression {#tuple-expression} + +#### tuple-expression {#tuple-expression} > *元组表达式* → **( )** | **(**[*元组元素*](#tuple-element), [*元组元素列表*](#tuple-element-list) **)** > -###### tuple-element-list {#tuple-element-list} + +#### tuple-element-list {#tuple-element-list} > *元组元素列表* → [*元组元素*](#tuple-element) | [*元组元素*](#tuple-element) **,** [*元组元素列表*](#tuple-element-list) > -###### tuple-element {#tuple-element} + +#### tuple-element {#tuple-element} > *元组元素* → [*表达式*](#expression) | [*标识符*](identifier) **:** [*表达式*](#expression) > @@ -603,7 +642,8 @@ x = .AnotherValue > 通配符表达式语法 > -###### wildcard-expression {#wildcard-expression} + +#### wildcard-expression {#wildcard-expression} > *通配符表达式* → **_** > @@ -740,21 +780,26 @@ print(interestingNumbers[keyPath: \[String: [Int]].["hexagonal"]!.count.bitWidth > key-path 表达式语法 > > -> ###### key-path-expression {#key-path-expression} +> +#### key-path-expression {#key-path-expression} > > *key-path 表达式* → **\\** [类型](./03_Types.md#type)可选 **.** [多个 key-path 组件](#key-path-components) > -> ###### key-path-components {#key-path-components} +> +#### key-path-components {#key-path-components} > > *多个 key-path 组件* → [key-path 组件](#key-path-component) | [key-path 组件](#key-path-component) **.** [多个 key-path 组件](#key-path-components) > -> ###### key-path-component {#key-path-component} +> +#### key-path-component {#key-path-component} > > *key-path 组件* → [标识符](./02_Lexical_Structure.md#identifier) [多个 key-path 后缀](#key-path-postfixes)可选 | [多个 key-path 后缀](#key-path-postfixes) > -> ###### key-path-postfixes {#key-path-postfixes} > -> ###### *多个 key-path 后缀* → [key-path 后缀](#key-path-postfix) [多个 key-path 后缀](#key-path-postfixes)可选 key-path-postfixes {#key-path-postfixes} +#### key-path-postfixes {#key-path-postfixes} +> +> +#### *多个 key-path 后缀* → [key-path 后缀](#key-path-postfix) [多个 key-path 后缀](#key-path-postfixes)可选 key-path-postfixes {#key-path-postfixes} > > *key-path 后缀* → **?** | **!** | **self** | **\[** [函数调用参数表](#function-call-argument-list) **\]** > @@ -809,7 +854,8 @@ let anotherSelector = #selector(SomeClass.doSomething(_:) as (SomeClass) -> (Str > 选择器表达式语法 > -###### selector-expression {#selector-expression} + +#### selector-expression {#selector-expression} > *选择器表达式* → __#selector__ **(** [*表达式*](#expression) **)** > > *选择器表达式* → __#selector__ **(** [*getter:表达式*](#expression) **)** @@ -867,7 +913,8 @@ print(keyPath == c.getSomeKeyPath()) > key-path 字符串表达式语法 > -> ###### key-path-string-expression {#key-path-string-expression} +> +#### key-path-string-expression {#key-path-string-expression} > > *key-path 字符串表达式* → **#keyPath (** [表达式](#expression) **)** > @@ -881,7 +928,8 @@ print(keyPath == c.getSomeKeyPath()) > 后缀表达式语法 > -###### postfix-expression {#postfix-expression} + +#### postfix-expression {#postfix-expression} > *后缀表达式* → [*基本表达式*](#primary-expression) > > *后缀表达式* → [*后缀表达式*](#postfix-expression) [*后缀运算符*](02_Lexical_Structure.md#postfix-operator) @@ -934,29 +982,34 @@ myData.someMethod {$0 == 13} > 函数调用表达式语法 > -> ###### function-call-expression {#function-call-expression} +> +#### function-call-expression {#function-call-expression} > > *函数调用表达式* → [*后缀表达式*](#postfix-expression) [*函数调用参数子句*](#function-call-argument-clause) > > *函数调用表达式* → [*后缀表达式*](#postfix-expression) [*函数调用参数子句*](#function-call-argument-clause)可选 [*尾随闭包*](#trailing-closure) > > -> ###### function-call-argument-clause {#function-call-argument-clause} +> +#### function-call-argument-clause {#function-call-argument-clause} > > *函数调用参数子句* → **(** **)** | **(** [*函数调用参数表*](#function-call-argument-list) **)** > -> ###### function-call-argument-list {#function-call-argument-list} +> +#### function-call-argument-list {#function-call-argument-list} > > *函数调用参数表* → [函数调用参数](#function-call-argument) | [函数调用参数](#function-call-argument) **,** [*函数调用参数表*](#function-call-argument-list) > -> ###### function-call-argument {#function-call-argument} +> +#### function-call-argument {#function-call-argument} > > *函数调用参数* → [表达式](#expression) | [标识符](02_Lexical_Structure.md#identifier) **:** [*表达式*](#expression) > > *函数调用参数* → [运算符](./02_Lexical_Structure.md#operator) | [标识符](./02_Lexical_Structure.md#identifier) **:** [*运算符*](./02_Lexical_Structure.md#operator) > > -> ###### trailing-closure {#trailing-closure} +> +#### trailing-closure {#trailing-closure} > > *尾随闭包* → [*闭包表达式*](#closure-expression) > @@ -1001,7 +1054,8 @@ let s3 = someValue.dynamicType.init(data: 7) // 有效 > 构造器表达式语法 > -###### initializer-expression {#initializer-expression} + +#### initializer-expression {#initializer-expression} > *构造器表达式* → [*后缀表达式*](#postfix-expression) **.** **init** > > *构造器表达式* → [*后缀表达式*](#postfix-expression) **.** **init** **(** [*参数名称*](#argument-names) **)** @@ -1067,17 +1121,20 @@ let x = [10, 3, 20, 15, 4] > 显式成员表达式语法 > -###### explicit-member-expression {#explicit-member-expression} + +#### explicit-member-expression {#explicit-member-expression} > *显式成员表达式* → [*后缀表达式*](#postfix-expression) **.** [*十进制数字*] (02_Lexical_Structure.md#decimal-digit) > > *显式成员表达式* → [*后缀表达式*](#postfix-expression) **.** [*标识符*](02_Lexical_Structure.md#identifier) [*泛型实参子句*](./09_Generic_Parameters_and_Arguments.md#generic-argument-clause)可选
> > *显式成员表达式* → [*后缀表达式*](#postfix-expression) **.** [*标识符*] (02_Lexical_Structure.md#identifier) **(** [*参数名称*](#argument-names) **)** > -###### argument-names {#argument-names} + +#### argument-names {#argument-names} > *参数名称* → [*参数名*](#argument-name) [*参数名称*](#argument-names)可选
> -###### argument-name {#argument-name} + +#### argument-name {#argument-name} > *参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) **:** > @@ -1095,7 +1152,8 @@ let x = [10, 3, 20, 15, 4] > 后缀 self 表达式语法 > -###### postfix-self-expression {#postfix-self-expression} + +#### postfix-self-expression {#postfix-self-expression} > *后缀 self 表达式* → [*后缀表达式*](#postfix-expression) **.** **self** > @@ -1112,7 +1170,8 @@ let x = [10, 3, 20, 15, 4] > 下标表达式语法 > -###### subscript-expression {#subscript-expression} + +#### subscript-expression {#subscript-expression} > *下标表达式* → [*后缀表达式*](#postfix-expression) **[** [*表达式列表*](#expression-list) **]** > @@ -1138,7 +1197,8 @@ someDictionary["a"]![0] = 100 > 强制取值语法 > -###### forced-value-expression {#forced-value-expression} + +#### forced-value-expression {#forced-value-expression} > *强制取值表达式* → [*后缀表达式*](#postfix-expression) **!** > @@ -1190,6 +1250,7 @@ someDictionary["a"]?[0] = someFunctionWithSideEffects() > 可选链表达式语法 > -###### optional-chaining-expression {#optional-chaining-expression} + +#### optional-chaining-expression {#optional-chaining-expression} > *可选链表达式* → [*后缀表达式*](#postfix-expression) **?** > diff --git a/source/chapter3/05_Statements.md b/source/chapter3/05_Statements.md index ebf002f0..365a93e3 100755 --- a/source/chapter3/05_Statements.md +++ b/source/chapter3/05_Statements.md @@ -8,7 +8,8 @@ > 语句语法 > -###### statement {#statement} + +#### statement {#statement} > *语句* → [*表达式*](./04_Expressions.md#expression) **;**可选 > > *语句* → [*声明*](./06_Declarations.md#declaration) **;**可选 @@ -27,7 +28,8 @@ > > *语句* → [*编译器控制语句*](#compiler-control-statement) > -###### statements {#statements} + +#### statements {#statements} > *多条语句* → [*语句*](#statement) [*多条语句*](#statements)可选 > @@ -39,7 +41,8 @@ > 循环语句语法 > > -###### loop-statement {#loop-statement} + +#### loop-statement {#loop-statement} > *循环语句* → [*for-in 语句*](#for-in-statement) > > *循环语句* → [*while 语句*](#while-statement) @@ -64,7 +67,8 @@ for item in collection { > for-in 语句语法 > > -###### for-in-statement {#for-in-statement} + +#### for-in-statement {#for-in-statement} > *for-in 语句* → **for** **case**可选 [*模式*](./08_Patterns.md#pattern) **in** [*表达式*](./04_Expressions.md#expression) [*where 子句*](#where-clause)可选 [*代码块*](05_Declarations.md#code-block) > @@ -91,21 +95,26 @@ while condition { > while 语句语法 > > -###### while-statement {#while-statement} + +#### while-statement {#while-statement} > *while 语句* → **while** [*条件子句*](#condition-clause) [*代码块*](./05_Declarations.md#code-block) > -###### condition-clause {#condition-clause} + +#### condition-clause {#condition-clause} > *条件子句* → [*表达式*](./04_Expressions.md#expression) | [*表达式*](./04_Expressions.md#expression) **,** [*条件列表*](#condition-list) > -###### condition {#condition} + +#### condition {#condition} > *条件* → [*表达式*](./04_Expressions.md#expression) |[*可用性条件*](#availability-condition) | [*case 条件*](#case-condition) | [*可选绑定条件*](#optional-binding-condition) > > -###### case-condition {#case-condition} + +#### case-condition {#case-condition} > *case 条件* → **case** [*模式*](./08_Patterns.md#pattern) [*构造器*](./06_Declarations.md#initializer) > -###### optional-binding-condition {#optional-binding-condition} + +#### optional-binding-condition {#optional-binding-condition} > *可选绑定条件* → **let** [*模式*](./08_Patterns.md#pattern) [*构造器*](./06_Declarations.md#initializer) | **var** [*模式*](./08_Patterns.md#pattern) [*构造器*](./06_Declarations.md#initializer) > @@ -132,7 +141,8 @@ repeat { > repeat-while 语句语法 > > -###### repeat-while-statement {#repeat-while-statement} + +#### repeat-while-statement {#repeat-while-statement} > *repeat-while 语句* → **repeat** [*代码块*](./06_Declarations.md#code-block) **while** [*表达式*](./04_Expressions.md#expression) > @@ -144,7 +154,8 @@ repeat { > 分支语句语法 > > -###### branch-statement {#branch-statement} + +#### branch-statement {#branch-statement} > *分支语句* → [*if 语句*](#if-statement) > > *分支语句* → [*guard 语句*](#guard-statement) @@ -192,10 +203,12 @@ if condition 1 { > if 语句语法 > > -###### if-statement {#if-statement} + +#### if-statement {#if-statement} > *if 语句* → **if** [*条件子句*](#condition-clause) [*代码块*](05_Declarations.md#code-block) [*else 子句*](#else-clause)可选 > -###### else-clause {#else-clause} + +#### else-clause {#else-clause} > *else 子句* → **else** [*代码块*](./06_Declarations.md#code-block) | **else** [*if 语句*](#if-statement) > @@ -226,7 +239,8 @@ guard condition else { > guard 语句语法 > > -###### guard-statement {#guard-statement} + +#### guard-statement {#guard-statement} > *guard 语句* → **guard** [*条件子句*](#condition-clause) **else** [*代码块*] (05_Declarations.md#code-block) > @@ -298,46 +312,59 @@ case .suppressed: > switch 语句语法 > > -###### switch-statement {#switch-statement} + +#### switch-statement {#switch-statement} > *switch 语句* → **switch** [*表达式*](./04_Expressions.md#expression) **{** [*switch-case 列表*](#switch-cases)可选 **}** > -###### switch-cases {#switch-cases} + +#### switch-cases {#switch-cases} > *switch case 列表* → [*switch-case*](#switch-case) [*switch-case 列表*](#switch-cases)可选 > -###### switch-case {#switch-case} + +#### switch-case {#switch-case} > *switch case* → [*case 标签*](#case-label) [*多条语句*](#statements) | [*default 标签*](#default-label) [*多条语句*](#statements) | [*conditional-switch-case*](#conditional-switch-case-label) > -###### case-label {#case-label} + +#### case-label {#case-label} > *case 标签* → [*属性*](#switch-case-attributes-label)可选 **case** [*case 项列表*](#case-item-list) **:** > -###### case-item-list {#case-item-list} + +#### case-item-list {#case-item-list} > *case 项列表* → [*模式*](./08_Patterns.md#pattern) [*where 子句*](#where-clause)可选 | [*模式*](07_Patterns.md#pattern) [*where 子句*](#where-clause)可选 **,** [*case 项列表*](#case-item-list) > -###### default-label {#default-label} + +#### default-label {#default-label} > *default 标签* → [*属性*](#switch-case-attributes-label)可选 **default** **:** > > -###### where-clause {#where-clause} + +#### where-clause {#where-clause} > *where-clause* → **where** [*where 表达式*](#where-expression) > -###### where-expression {#where-expression} + +#### where-expression {#where-expression} > *where-expression* → [*表达式*](./04_Expressions.md#expression) > > -###### grammar_conditional-switch-case {#grammar_conditional-switch-case} + +#### grammar_conditional-switch-case {#grammar_conditional-switch-case} > *conditional-switch-case* → [*switch-if-directive-clause*](#switch-case-attributes-label) [*switch-elseif-directive-clauses*](#switch-case-attributes-label) 可选 [*switch-else-directive-clause*](#switch-case-attributes-label) 可选 [*endif-directive*](#switch-case-attributes-label) > -###### grammar_switch-if-directive-clause {#grammar_switch-if-directive-clause} + +#### grammar_switch-if-directive-clause {#grammar_switch-if-directive-clause} > *switch-if-directive 语句* → [*if-directive*](#switch-case-attributes-label) [*compilation-condition*](#switch-case-attributes-label) [*switch-cases*](#switch-case-attributes-label) 可选 > -###### grammar_switch-elseif-directive-clauses {#grammar_switch-elseif-directive-clauses} + +#### grammar_switch-elseif-directive-clauses {#grammar_switch-elseif-directive-clauses} > *switch-elseif-directive 语句(复数)* → [*elseif-directive-clause*](#switch-case-attributes-label) [*switch-elseif-directive-clauses*](#switch-case-attributes-label)可选 > -###### grammar_switch-elseif-directive-clause {#grammar_switch-elseif-directive-clause} + +#### grammar_switch-elseif-directive-clause {#grammar_switch-elseif-directive-clause} > *switch-elseif-directive 语句* → [*elseif-directive*](#switch-case-attributes-label) [*compilation-condition*](#switch-case-attributes-label) [*switch-cases*](#switch-case-attributes-label)可选 > -###### grammar_switch-else-directive-clause {#grammar_switch-else-directive-clause} + +#### grammar_switch-else-directive-clause {#grammar_switch-else-directive-clause} > *switch-else-directive 语句* → [*else-directive*](#switch-case-attributes-label) [*switch-cases*](#switch-case-attributes-label) 可选 > @@ -351,7 +378,8 @@ case .suppressed: > 带标签的语句语法 > > -###### labeled-statement {#labeled-statement} + +#### labeled-statement {#labeled-statement} > *带标签的语句* → [*语句标签*](#statement-label) [*循环语句*](#grammar_loop-statement) > > *带标签的语句* → [*语句标签*](#statement-label) [*if 语句*](#if-statement) @@ -360,10 +388,12 @@ case .suppressed: > > > *带标签的语句* → [*语句标签*](#statement-label) [*do 语句*](#sdo-statement) > -###### statement-label {#statement-label} + +#### statement-label {#statement-label} > *语句标签* → [*标签名称*](#label-name) **:** > -###### label-name {#label-name} + +#### label-name {#label-name} > *标签名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -373,7 +403,8 @@ case .suppressed: > 控制转移语句语法 > > -###### control-transfer-statement {#control-transfer-statement} + +#### control-transfer-statement {#control-transfer-statement} > *控制转移语句* → [*break 语句*](#break-statement) > > *控制转移语句* → [*continue 语句*](#continue-statement) @@ -404,7 +435,8 @@ case .suppressed: > break 语句语法 > > -###### break-statement {#break-statement} + +#### break-statement {#break-statement} > *break 语句* → **break** [*标签名称*](#label-name)可选 > @@ -429,7 +461,8 @@ case .suppressed: > continue 语句语法 > > -###### continue-statement {#continue-statement} + +#### continue-statement {#continue-statement} > *continue 语句* → **continue** [*标签名称*](#label-name)可选 > @@ -443,7 +476,8 @@ case .suppressed: > fallthrough 语句语法 > > -###### fallthrough-statement {#fallthrough-statement} + +#### fallthrough-statement {#fallthrough-statement} > *fallthrough 语句* → **fallthrough** > @@ -470,7 +504,8 @@ case .suppressed: > return 语句语法 > > -###### return-statement {#return-statement} + +#### return-statement {#return-statement} > *return 语句* → **return** [*表达式*](./04_Expressions.html#expression)可选 ### Throw 语句 {#throw_statements} @@ -492,7 +527,8 @@ case .suppressed: > throw 语句语法 > > -###### throw-statement {#throw-statement} + +#### throw-statement {#throw-statement} > *throw 语句* → **throw** [*表达式*](./04_Expressions.md#expression) > @@ -528,7 +564,8 @@ f() > defer 语句语法 > > -###### defer-statement {#defer-statement} + +#### defer-statement {#defer-statement} > *延迟语句* → **defer** [*代码块*](./06_Declarations.md#code-block) > @@ -559,13 +596,16 @@ do { > do 语句语法 > > -###### do-statement {#do-statement} + +#### do-statement {#do-statement} > *do 语句* → **do** [*代码块*](./06_Declarations.md#code-block) [*多条 catch 子句*](#catch-clauses)可选 > -###### catch-clauses {#catch-clauses} + +#### catch-clauses {#catch-clauses} > *多条 catch 子句* → [*catch 子句*](#catch-clause) [*多条 catch 子句*](#catch-clauses)可选 > -###### catch-clause {#catch-clause} + +#### catch-clause {#catch-clause} > *catch 子句* → **catch** [*模式*](./08_Patterns.md#pattern)可选 [*where 子句*](#where-clause)可选 [*代码块*](05_Declarations.md#code-block) > @@ -575,7 +615,8 @@ do { > 编译器控制语句语法 > > -###### compiler-control-statement {#compiler-control-statement} + +#### compiler-control-statement {#compiler-control-statement} > *编译器控制语句* → [*条件编译语句*](#grammar_conditional-compilation-block) > > *编译器控制语句* → [*线路控制语句*](#line-control-statement) @@ -654,23 +695,29 @@ statements to compile if both compilation conditions are false > 即使没有被编译,编译配置中的语句仍然会被解析。然而,唯一的例外是编译配置语句中包含语言版本检测函数:仅当 `Swift` 编译器版本和语言版本检测函数中指定的版本号匹配时,语句才会被解析。这种设定能确保旧的编译器不会尝试去解析新 Swift 版本的语法。 > -###### build-config-statement {#build-config-statement} + +#### build-config-statement {#build-config-statement} > 条件编译代码块语法 > > -###### grammar_conditional-compilation-block {#grammar_conditional-compilation-block} + +#### grammar_conditional-compilation-block {#grammar_conditional-compilation-block} > *条件编译代码块* → [*if-directive 语句*](#grammar_if-directive-clause) [*elseif-directive 语句(复数)*](#grammar_elseif-directive-clauses)可选 [*else-directive 语句*](#grammar_else-directive-clause)可选 [*endif-directive*](#grammar_endif-directive) > -###### grammar_if-directive-clause {#grammar_if-directive-clause} + +#### grammar_if-directive-clause {#grammar_if-directive-clause} > *if-directive 语句* → [*if-directive*](#grammar_if-directive) [*编译条件*](#compilation-condition) [*语句(复数)*](#statements)可选 > -###### grammar_elseif-directive-clauses {#grammar_elseif-directive-clauses} + +#### grammar_elseif-directive-clauses {#grammar_elseif-directive-clauses} > *elseif-directive 语句(复数)* → [*elseif-directive 语句*](#grammar_elseif-directive-clause) [*elseif-directive 语句(复数)*](#grammar_elseif-directive-clauses) > -###### grammar_elseif-directive-clauses {#grammar_elseif-directive-clauses} + +#### grammar_elseif-directive-clauses {#grammar_elseif-directive-clauses} > *elseif-directive 语句* → [*elseif-directive*](#grammar_elseif-directive) [*编译条件*](#compilation-condition) [*语句(复数)*](#statements)可选 > -###### grammar_else-directive-clause {#grammar_else-directive-clause} + +#### grammar_else-directive-clause {#grammar_else-directive-clause} > *else-directive 语句* → [*else-directive*](#grammar_else-directive) [*语句(复数)*](#statements)可选 > @@ -684,7 +731,8 @@ statements to compile if both compilation conditions are false > *endif-directive* → **#endif** > -###### compilation-condition {#compilation-condition} + +#### compilation-condition {#compilation-condition} > *编译条件* → [*平台条件*](#grammar_platform-condition) > > *编译条件* → [*标识符*](./02_Lexical_Structure.md#identifier) @@ -700,41 +748,54 @@ statements to compile if both compilation conditions are false > *编译条件* → [*编译条件*](#compilation-condition) **||** [*编译条件*](#compilation-condition) > -###### grammar_platform-condition {#grammar_platform-condition} -###### grammar_platform-condition-os {#grammar_platform-condition-os} + +#### grammar_platform-condition {#grammar_platform-condition} + +#### grammar_platform-condition-os {#grammar_platform-condition-os} > *平台条件* → **os ( [*操作系统*](#operating-system) )** > -###### grammar_platform-condition-arch {#grammar_platform-condition-arch} + +#### grammar_platform-condition-arch {#grammar_platform-condition-arch} > *平台条件* → **arch ( [*架构*](#architecture) )** > -###### grammar_platform-condition-swift {#grammar_platform-condition-swift} + +#### grammar_platform-condition-swift {#grammar_platform-condition-swift} > *平台条件* → **swift ( >= [*swift 版本*](#swift-version) )** | **swift ( < [*swift 版本*](#swift-version) )** > -###### grammar_platform-condition-compiler {#grammar_platform-condition-compiler} + +#### grammar_platform-condition-compiler {#grammar_platform-condition-compiler} > *平台条件* → **compiler ( >= [*swift 版本*](#swift-version) )** | **compiler ( < [*swift 版本*](#swift-version) )** > -###### grammar_platform-condition-canImport {#grammar_platform-condition-canImport} + +#### grammar_platform-condition-canImport {#grammar_platform-condition-canImport} > *平台条件* → **canImport ( [*模块名*](#grammar_module-name) )** > -###### grammar_platform-condition-targetEnvironment {#grammar_platform-condition-targetEnvironment} + +#### grammar_platform-condition-targetEnvironment {#grammar_platform-condition-targetEnvironment} > *平台条件* → **targetEnvironment ( [*环境*](#grammar_environment) )** > -###### operating-system {#operating-system} + +#### operating-system {#operating-system} > *操作系统* → **macOS** | **iOS** | **watchOS** | **tvOS** > -###### architecture {#architecture} + +#### architecture {#architecture} > *架构* → **i386** | **x86_64** | **arm** | **arm64** > -###### swift-version {#swift-version} + +#### swift-version {#swift-version} > *swift 版本* → [*十进制数字*](./02_Lexical_Structure.md#decimal-digit) ­**.** ­[*swift 版本延续*](#grammar_swift-version-continuation) 可选 > -###### grammar_swift-version-continuation {#grammar_swift-version-continuation} + +#### grammar_swift-version-continuation {#grammar_swift-version-continuation} > *swift 版本延续* → **.** [*十进制数字*](./02_Lexical_Structure.md#decimal-digit) [*swift 版本延续*](#grammar_swift-version-continuation) 可选 > -###### grammar_module-name {#grammar_module-name} + +#### grammar_module-name {#grammar_module-name} > *模块名* → [*identifier*](./02_Lexical_Structure.md#identifier) > -###### grammar_environment {#grammar_environment} + +#### grammar_environment {#grammar_environment} > *环境* → **模拟器** > @@ -753,7 +814,8 @@ statements to compile if both compilation conditions are false 第二种的行控制语句,`#sourceLocation()`,会将源代码的定位信息重置回默认的行号和文件名。 -###### line-control-statement {#line-control-statement} + +#### line-control-statement {#line-control-statement} > 行控制语句语法 > > @@ -761,10 +823,12 @@ statements to compile if both compilation conditions are false > > *行控制语句* → **#sourceLocation()** > -###### line-number {#line-number} + +#### line-number {#line-number} > *行号* → 大于 0 的十进制整数 > -###### file-name {#file-name} + +#### file-name {#file-name} > *文件名* → [*静态字符串字面量*](./02_Lexical_Structure.md#static-string-literal) > @@ -782,12 +846,14 @@ statements to compile if both compilation conditions are false > 编译时诊断语句语法 > > -###### grammar_compile-time-diagnostic-statement {#grammar_compile-time-diagnostic-statement} + +#### grammar_compile-time-diagnostic-statement {#grammar_compile-time-diagnostic-statement} > *诊断语句* → **#error** **(** [*diagnostic-message*](#grammar_diagnostic-message) **)** > > *诊断语句* → **#warning** **(** [*diagnostic-message*](#grammar_diagnostic-message) **)** > -###### grammar_diagnostic-message {#grammar_diagnostic-message} + +#### grammar_diagnostic-message {#grammar_diagnostic-message} > *诊断语句* → [*静态字符串字面量*](./02_Lexical_Structure.md#static-string-literal) > @@ -813,19 +879,23 @@ if #available(platform name version, ..., *) { > 可用性条件语法 > > -###### availability-condition {#availability-condition} + +#### availability-condition {#availability-condition} > *可用性条件* → **#available** **(** [*可用性参数列表*](#availability-arguments) **)** > -###### availability-arguments {#availability-arguments} + +#### availability-arguments {#availability-arguments} > *可用性参数列表* → [*可用性参数*](#availability-argument) | [*可用性参数*](#availability-argument) **,** [*可用性参数列表*](#availability-arguments) > -###### availability-argument {#availability-argument} + +#### availability-argument {#availability-argument} > *可用性参数* → [平台名称](#platform-name) [平台版本](#platform-version) > > *可用性条件* → __*__ > > -###### platform-name {#platform-name} + +#### platform-name {#platform-name} > *平台名称* → **iOS** | **iOSApplicationExtension** > > *平台名称* → **OSX** | **macOSApplicationExtension** @@ -834,7 +904,8 @@ if #available(platform name version, ..., *) { > > *平台名称* → **tvOS** > -###### platform-version {#platform-version} + +#### platform-version {#platform-version} > *平台版本* → [十进制数字](./02_Lexical_Structure.md#decimal-digits) > > *平台版本* → [十进制数字](./02_Lexical_Structure.md#decimal-digits) **.** [十进制数字](./02_Lexical_Structure.md#decimal-digits) diff --git a/source/chapter3/06_Declarations.md b/source/chapter3/06_Declarations.md index 49f5e91d..eb7353c4 100755 --- a/source/chapter3/06_Declarations.md +++ b/source/chapter3/06_Declarations.md @@ -5,7 +5,8 @@ > 声明语法 > -> ###### declaration {#declaration} +> +#### declaration {#declaration} > > *声明* → [*导入声明*](#import-declaration) > @@ -35,7 +36,8 @@ > > *声明* → [*运算符声明*](#operator-declaration) > -> ###### declarations {#declarations} +> +#### declarations {#declarations} > > *多条声明* → [*声明*](#declaration) [*多条声明*](#declarations)可选 > @@ -61,7 +63,8 @@ Swift 的源文件中的顶级代码(top-level code)由零个或多个语句 > 代码块语法 > -> ###### code-block {#code-block} +> +#### code-block {#code-block} > > *代码块* → **{** [*多条语句*](./05_Statements.md#statements)可选 **}** > @@ -80,22 +83,27 @@ import 导入类型 模块.符号名 import 模块.子模块 ``` -###### grammer_of_an_import_declaration {#grammer_of_an_import_declaration} + +#### grammer_of_an_import_declaration {#grammer_of_an_import_declaration} > 导入声明语法 > -> ###### import-declaration {#import-declaration} +> +#### import-declaration {#import-declaration} > > *导入声明* → [*特性列表*](./07_Attributes.md#attributes)可选 **import** [*导入类型*](#import-kind)可选 [*导入路径*](#import-path) > -> ###### import-kind {#import-kind} +> +#### import-kind {#import-kind} > > *导入类型* → **typealias** | **struct** | **class** | **enum** | **protocol** | **let** | **var** | **func** > -> ###### import-path {#import-path} +> +#### import-path {#import-path} > > *导入路径* → [*导入路径标识符*](#import-path-identifier) | [*导入路径标识符*](#import-path-identifier) **.** [*导入路径*](#import-path) > -> ###### import-path-identifier {#import-path-identifier} +> +#### import-path-identifier {#import-path-identifier} > > *导入路径标识符* → [*标识符*](./02_Lexical_Structure.md#identifier) | [*运算符*](./02_Lexical_Structure.md#operator) > @@ -132,22 +140,27 @@ print("The second number is \(secondNumber).") 如果还想获得更多关于常量的信息或者想在使用中获得帮助,请参阅 [常量和变量](../chapter2/01_The_Basics.md#constants_and_variables) 和 [存储属性](../chapter2/10_Properties.md#stored_properties)。 -###### grammer_of_a_constant_declaration {#grammer_of_a_constant_declaration} + +#### grammer_of_a_constant_declaration {#grammer_of_a_constant_declaration} > 常量声明语法 > -> ###### constant-declaration {#constant-declaration} +> +#### constant-declaration {#constant-declaration} > > *常量声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **let** [*模式构造器列表*](pattern-initializer-list) > -> ###### pattern-initializer-list {#pattern-initializer-list} +> +#### pattern-initializer-list {#pattern-initializer-list} > > *模式构造器列表* → [*模式构造器*](#pattern-initializer) | [*模式构造器*](#pattern-initializer) **,** [*模式构造器列表*](#pattern-initializer-list) > -> ###### pattern-initializer {#pattern-initializer} +> +#### pattern-initializer {#pattern-initializer} > > *模式构造器* → [*模式*](./08_Patterns.md#pattern) [*构造器*](#initializer)可选 > -> ###### initializer {#initializer} +> +#### initializer {#initializer} > > *构造器* → **=** [*表达式*](./04_Expressions.md#expression) > @@ -242,10 +255,12 @@ var 变量名称: 类型 = 表达式 { > 在一个类声明中,使用关键字 `static` 与同时使用 `class` 和 `final` 去标记一个声明的效果相同。 > -###### grammer_of_a_variable_declaration {#grammer_of_a_variable_declaration} + +#### grammer_of_a_variable_declaration {#grammer_of_a_variable_declaration} > 变量声明语法 > -###### variable-declaration {#variable-declaration} + +#### variable-declaration {#variable-declaration} > *变量声明* → [*变量声明头*](#variable-declaration-head) [*模式构造器列表*](#pattern-initializer-list) > > *变量声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*代码块*](#code-block) @@ -259,58 +274,70 @@ var 变量名称: 类型 = 表达式 { > *变量声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*构造器*](#initializer)可选 [*willSet-didSet 代码块*](#willSet-didSet-block) > -###### variable-declaration-head {#variable-declaration-head} + +#### variable-declaration-head {#variable-declaration-head} > *变量声明头* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **var** > -> ###### variable-name {#variable-name} +> +#### variable-name {#variable-name} > > *变量名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > -###### getter-setter-block {#getter-setter-block} + +#### getter-setter-block {#getter-setter-block} > *getter-setter 代码块* → [*代码块*](#code-block) > > *getter-setter 代码块* → **{** [*getter 子句*](#getter-clause) [*setter 子句*](#setter-clause)可选 **}** > > *getter-setter 代码块* → **{** [*setter 子句*](#setter-clause) [*getter 子句*](#getter-clause) **}** > -> ###### getter-clause {#getter-clause} +> +#### getter-clause {#getter-clause} > > *getter 子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **get** [*代码块*](#code-block) > -> ###### setter-clause {#setter-clause} +> +#### setter-clause {#setter-clause} > > *setter 子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **set** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) > -> ###### setter-name {#setter-name} +> +#### setter-name {#setter-name} > > *setter 名称* → **(** [*标识符*](./02_Lexical_Structure.md#identifier) **)** > -###### getter-setter-keyword-block {#getter-setter-keyword-block} + +#### getter-setter-keyword-block {#getter-setter-keyword-block} > *getter-setter 关键字代码块* → **{** [*getter 关键字子句*](#getter-keyword-clause) [*setter 关键字子句*](#setter-keyword-clause)可选 **}** > > *getter-setter 关键字代码块* → **{** [*setter 关键字子句*](#setter-keyword-clause) [*getter 关键字子句*](#getter-keyword-clause) **}** > -> ###### getter-keyword-clause {#getter-keyword-clause} +> +#### getter-keyword-clause {#getter-keyword-clause} > > *getter 关键字子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **get** > -> ###### setter-keyword-clause {#setter-keyword-clause} +> +#### setter-keyword-clause {#setter-keyword-clause} > > *setter 关键字子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **set** > -###### willSet-didSet-block {#willSet-didSet-block} + +#### willSet-didSet-block {#willSet-didSet-block} > *willSet-didSet 代码块* → **{** [*willSet 子句*](#willSet-clause) [*didSet 子句*](#didSet-clause)可选 **}** > > *willSet-didSet 代码块* → **{** [*didSet 子句*](#didSet-clause) [*willSet 子句*](#willSet-clause)可选 **}** > -> ###### willSet-clause {#willSet-clause} +> +#### willSet-clause {#willSet-clause} > > *willSet 子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **willSet** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) > -> ###### didSet-clause {#didSet-clause} +> +#### didSet-clause {#didSet-clause} > > *didSet 子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **didSet** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) > @@ -370,19 +397,23 @@ func sum(_ sequence: T) -> Int where T.Element == Int { 另请参阅 [协议关联类型声明](#protocol_associated_type_declaration)。 -###### grammer_of_a_type_alias_declaration {#grammer_of_a_type_alias_declaration} + +#### grammer_of_a_type_alias_declaration {#grammer_of_a_type_alias_declaration} > 类型别名声明语法 > > -> ###### typealias-declaration {#typealias-declaration} +> +#### typealias-declaration {#typealias-declaration} > > *类型别名声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **typealias** [*类型别名名称*](#typealias-name) [*类型别子句*](#typealias-clause) [*类型别名赋值*](#typealias-assignment) > -> ###### typealias-name {#typealias-name} +> +#### typealias-name {#typealias-name} > > *类型别名名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> ###### typealias-assignment {#typealias-assignment} +> +#### typealias-assignment {#typealias-assignment} > > *类型别名赋值* → **=** [*类型*](./03_Types.md#type) > @@ -570,46 +601,56 @@ Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它 你可以重写一个不归方法,但是新的方法必须保持原有的返回类型和没有返回的行为。 -###### grammer_of_a_function_declaration {#grammer_of_a_function_declaration} + +#### grammer_of_a_function_declaration {#grammer_of_a_function_declaration} > 函数声明语法 > -###### function-declaration {#function-declaration} + +#### function-declaration {#function-declaration} > *函数声明* → [*函数头*](#function-head) [*函数名*](#function-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*函数签名*](#function-signature) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause) [*函数体*](#function-body)可选 > -###### function-head {#function-head} + +#### function-head {#function-head} > *函数头* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **func** > -> ###### function-name {#function-name} +> +#### function-name {#function-name} > > *函数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | [*运算符*](./02_Lexical_Structure.md#operator) > > -> ###### function-signature {#function-signature} +> +#### function-signature {#function-signature} > > > *函数签名* → [*参数子句列表*](#parameter-clauses) **throws**可选 [*函数结果*](#function-result)可选 > > *函数签名* → [*参数子句列表*](#parameter-clauses) **rethrows** [*函数结果*](#function-result)可选 > -> ###### function-result {#function-result} +> +#### function-result {#function-result} > > *函数结果* → **->** [*特性列表*](./07_Attributes.md#attributes)可选 [*类型*](./03_Types.md#type) > -> ###### function-body {#function-body} +> +#### function-body {#function-body} > > *函数体* → [*代码块*](#code-block) > -> ###### parameter-clause {#parameter-clause} +> +#### parameter-clause {#parameter-clause} > > *参数子句* → **(** **)** | **(** [*参数列表*](#parameter-list) **)** > -> ###### parameter-list {#parameter-list} +> +#### parameter-list {#parameter-list} > > *参数列表* → [*参数*](#parameter) | [*参数*](#parameter) **,** [*参数列表*](#parameter-list) > -> ###### parameter {#parameter} +> +#### parameter {#parameter} > > *参数* → [*外部参数名*](#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.md#type-annotation) [*默认参数子句*](#default-argument-clause)可选 > @@ -617,15 +658,18 @@ Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它 > > *参数* → [*外部参数名*](#external-parameter-name)可选 [*内部参数名*](#local-parameter-name) [*类型标注*](03_Types.md#type-annotation) **...** > -> ###### external-parameter-name {#external-parameter-name} +> +#### external-parameter-name {#external-parameter-name} > > *外部参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | **_** > -> ###### local-parameter-name {#local-parameter-name} +> +#### local-parameter-name {#local-parameter-name} > > *内部参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) | **_** > -> ###### default-argument-clause {#default-argument-clause} +> +#### default-argument-clause {#default-argument-clause} > > *默认参数子句* → **=** [*表达式*](./04_Expressions.md#expression) > @@ -731,11 +775,13 @@ enum GamePlayMode: String { 可以使用 `switch` 语句来检验枚举用例的值,正如 [使用 switch 语句匹配枚举值](../chapter2/08_Enumerations.md#matching_enumeration_values_with_a_switch_statement) 所述。枚举类型是模式匹配的,依靠 `switch` 语句 `case` 块中的枚举用例模式,正如 [枚举用例模式](./08_Patterns.md#enumeration_case_pattern) 所述。 -###### grammer_of_an_enumeration_declaration {#grammer_of_an_enumeration_declaration} + +#### grammer_of_an_enumeration_declaration {#grammer_of_an_enumeration_declaration} > 枚举声明语法 > > -> ###### enum-declaration {#enum-declaration} +> +#### enum-declaration {#enum-declaration} > > *枚举声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 [*联合风格枚举*](#union-style-enum) > @@ -744,31 +790,38 @@ enum GamePlayMode: String { > > *联合风格枚举* → **indirect**可选 **enum** [*枚举名称*](#enum-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [类型继承子句](./03_Types.md#type-inheritance-clause)可选 **{** [*多个联合风格枚举成员*](#union-style-enum-members)可选 **}** > -> ###### union-style-enum-members {#union-style-enum-members} +> +#### union-style-enum-members {#union-style-enum-members} > > *多个联合风格枚举成员* → [*联合风格枚举成员*](#union-style-enum-member) [*多个联合风格枚举成员*](#union-style-enum-members)可选 > -> ###### union-style-enum-member {#union-style-enum-member} +> +#### union-style-enum-member {#union-style-enum-member} > > *联合风格枚举成员* → [*声明*](#declaration) | [*联合风格枚举用例子句*](#union-style-enum-case-clause) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > -> ###### union-style-enum-case-clause {#union-style-enum-case-clause} +> +#### union-style-enum-case-clause {#union-style-enum-case-clause} > > *联合风格枚举用例子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **indirect**可选 **case** [*联合风格枚举用例列表*](#union-style-enum-case-list) > -> ###### union-style-enum-case-list {#union-style-enum-case-list} +> +#### union-style-enum-case-list {#union-style-enum-case-list} > > *联合风格枚举用例列表* → [*联合风格枚举用例*](#union-style-enum-case) | [*联合风格枚举用例*](#union-style-enum-case) **,** [*联合风格枚举用例列表*](#union-style-enum-case-list) > -> ###### union-style-enum-case {#union-style-enum-case} +> +#### union-style-enum-case {#union-style-enum-case} > > *联合风格枚举用例* → [*枚举用例名称*](#enum-case-name) [*元组类型*](03_Types.md#tuple-type)可选 > -> ###### enum-name {#enum-name} +> +#### enum-name {#enum-name} > > *枚举名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> ###### enum-case-name {#enum-case-name} +> +#### enum-case-name {#enum-case-name} > > *枚举用例名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -778,31 +831,38 @@ enum GamePlayMode: String { > > *原始值风格枚举* → **enum** [*枚举名称*](#enum-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause) [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause) **{** [*多个原始值风格枚举成员*](#raw-value-style-enum-members) **}** > -> ###### raw-value-style-enum-members {#raw-value-style-enum-members} +> +#### raw-value-style-enum-members {#raw-value-style-enum-members} > > *多个原始值风格枚举成员* → [*原始值风格枚举成员*](#raw-value-style-enum-member) [*多个原始值风格枚举成员*](#raw-value-style-enum-members)可选 > -> ###### raw-value-style-enum-member {#raw-value-style-enum-member} +> +#### raw-value-style-enum-member {#raw-value-style-enum-member} > > *原始值风格枚举成员* → [*声明*](#declaration) | [*原始值风格枚举用例子句*](#raw-value-style-enum-case-clause) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > -> ###### raw-value-style-enum-case-clause {#raw-value-style-enum-case-clause} +> +#### raw-value-style-enum-case-clause {#raw-value-style-enum-case-clause} > > *原始值风格枚举用例子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **case** [*原始值风格枚举用例列表*](#raw-value-style-enum-case-list) > -> ###### raw-value-style-enum-case-list {#raw-value-style-enum-case-list} +> +#### raw-value-style-enum-case-list {#raw-value-style-enum-case-list} > > *原始值风格枚举用例列表* → [*原始值风格枚举用例*](#raw-value-style-enum-case) | [*原始值风格枚举用例*](#raw-value-style-enum-case) **,** [*原始值风格枚举用例列表*](#raw-value-style-enum-case-list) > -> ###### raw-value-style-enum-case {#raw-value-style-enum-case} +> +#### raw-value-style-enum-case {#raw-value-style-enum-case} > > *原始值风格枚举用例* → [*枚举用例名称*](#enum-case-name) [*原始值赋值*](#raw-value-assignment)可选 > -> ###### raw-value-assignment {#raw-value-assignment} +> +#### raw-value-assignment {#raw-value-assignment} > > *原始值赋值* → **=** [*原始值字面量*](#raw-value-literal) > -> ###### raw-value-literal {#raw-value-literal} +> +#### raw-value-literal {#raw-value-literal} > > *原始值字面量* → [数字型字面量](./02_Lexical_Structure.md#numeric-literal) | [字符串型字面量](./02_Lexical_Structure.md#static-string-literal) | [布尔型字面量](./02_Lexical_Structure.md#boolean-literal) > @@ -837,28 +897,34 @@ struct 结构体名称: 采纳的协议 { 可以使用扩展声明来扩展结构体类型的行为,请参阅 [扩展声明](#extension_declaration)。 -###### grammer_of_a_structure_declaration {#grammer_of_a_structure_declaration} + +#### grammer_of_a_structure_declaration {#grammer_of_a_structure_declaration} > 结构体声明语法 > > -> ###### struct-declaration {#struct-declaration} +> +#### struct-declaration {#struct-declaration} > > *结构体声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier) 可选 **struct** [*结构体名称*](#struct-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*结构体主体*](#struct-body) > -> ###### struct-name {#struct-name} +> +#### struct-name {#struct-name} > > *结构体名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> ###### struct-body {#struct-body} +> +#### struct-body {#struct-body} > > *结构体主体* → **{** [*多条声明*](#declarations)可选 **}** > -> ###### struct-name {#struct-name} +> +#### struct-name {#struct-name} > > > *结构体多个成员* → [*结构体成员*](#struct-member) [*结构体多个成员*](#struct-members)可选 > -> ###### struct-member {#struct-member} +> +#### struct-member {#struct-member} > > *结构体成员* → [*声明*](#declaration) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > @@ -896,28 +962,33 @@ class 类名: 超类, 采纳的协议 { 可以使用扩展声明来扩展类的行为,请参阅 [扩展声明](#extension_declaration)。 -###### grammer_of_a_class_declaration {#grammer_of_a_class_declaration} + +#### grammer_of_a_class_declaration {#grammer_of_a_class_declaration} > 类声明语法 > > -> ###### class-declaration {#class-declaration} +> +#### class-declaration {#class-declaration} > > *类声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [访问级别修饰符](#access-level-modifier)可选 **final**可选 **class** [*类名*](#class-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*类主体*](#class-body) > > *类声明* → [*特性列表*](./07_Attributes.md#attributes)可选 **final** [访问级别修饰符](#access-level-modifier)可选 **class** [*类名*](#class-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*类型继承子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*类主体*](#class-body) > -> ###### class-name {#class-name} +> +#### class-name {#class-name} > > *类名* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> ###### class-body {#class-body} +> +#### class-body {#class-body} > > *类主体* → **{** [*多条声明*](#declarations)可选 **}** > > > *类多个成员* → [*类成员*](#class-member) [*类多个成员*](#class-members)可选 > -> ###### class-member {#class-member} +> +#### class-member {#class-member} > > *类成员* → [*声明*](#declaration) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > @@ -963,31 +1034,37 @@ protocol SomeProtocol: AnyObject { 可以使用协议来声明作为代理的类或者结构体应该实现的方法,正如 [委托(代理)模式](../chapter2/21_Protocols.md#delegation) 中所述。 -###### grammer_of_a_protocol_declaration {#grammer_of_a_protocol_declaration} + +#### grammer_of_a_protocol_declaration {#grammer_of_a_protocol_declaration} > 协议声明语法 > > -> ###### protocol-declaration {#protocol-declaration} +> +#### protocol-declaration {#protocol-declaration} > > *协议声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **protocol** [*协议名称*](#protocol-name) [*类型继承子句*](03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*协议主体*](#protocol-body) > -> ###### protocol-name {#protocol-name} +> +#### protocol-name {#protocol-name} > > *协议名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > -> ###### protocol-body {#protocol-body} +> +#### protocol-body {#protocol-body} > > *协议主体* → **{** [*协议成员声明列表*](#protocol-member-declarations)可选 **}** > > > *协议多个成员* → [*协议成员*](#protocol-member) [*协议多个成员*](#protocol-members)可选 > -> ###### protocol-member {#protocol-member} +> +#### protocol-member {#protocol-member} > > *协议成员* → [*协议成员声明*](#protocol-member-declaration) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > > -> ###### protocol-member-declaration {#protocol-member-declaration} +> +#### protocol-member-declaration {#protocol-member-declaration} > > *协议成员声明* → [*协议属性声明*](#protocol-property-declaration) > @@ -999,7 +1076,8 @@ protocol SomeProtocol: AnyObject { > > *协议成员声明* → [*协议关联类型声明*](#protocol-associated-type-declaration) > -> ###### protocol-member-declarations {#protocol-member-declarations} +> +#### protocol-member-declarations {#protocol-member-declarations} > > *协议成员声明列表* → [*协议成员声明*](#protocol-member-declaration) [*协议成员声明列表*](#protocol-member-declarations)可选 > @@ -1017,10 +1095,12 @@ var 属性名: 类型 { get set } 另请参阅 [变量声明](#variable_declaration)。 -###### grammer_of_an_import_declaration {#grammer_of_an_import_declaration} + +#### grammer_of_an_import_declaration {#grammer_of_an_import_declaration} > 协议属性声明语法 > -> ###### protocol-property-declaration {#protocol-property-declaration} +> +#### protocol-property-declaration {#protocol-property-declaration} > > *协议属性声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*getter-setter 关键字代码块*](#getter-setter-keyword-block) > @@ -1032,10 +1112,12 @@ var 属性名: 类型 { get set } 另请参阅 [函数声明](#function_declaration)。 -###### grammer_of_a_protocol_declaration {#grammer_of_a_protocol_declaration} + +#### grammer_of_a_protocol_declaration {#grammer_of_a_protocol_declaration} > 协议方法声明语法 > -> ###### protocol-method-declaration {#protocol-method-declaration} +> +#### protocol-method-declaration {#protocol-method-declaration} > > *协议方法声明* → [*函数头*](#function-head) [*函数名*](#function-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*函数签名*](#function-signature) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 > @@ -1050,10 +1132,12 @@ var 属性名: 类型 { get set } 另请参阅 [构造器声明](#initializer_declaration)。 -###### grammer_of_a_protocol_initializer_declaration {#grammer_of_a_protocol_initializer_declaration} + +#### grammer_of_a_protocol_initializer_declaration {#grammer_of_a_protocol_initializer_declaration} > 协议构造器声明语法 > -> ###### protocol-initializer-declaration {#protocol-initializer-declaration} +> +#### protocol-initializer-declaration {#protocol-initializer-declaration} > > *协议构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **throws**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 > @@ -1072,10 +1156,12 @@ subscript (参数列表) -> 返回类型 { get set } 另请参阅 [下标声明](#subscript_declaration)。 -###### grammer_of_a_protocol_subscript_declaration {#grammer_of_a_protocol_subscript_declaration} + +#### grammer_of_a_protocol_subscript_declaration {#grammer_of_a_protocol_subscript_declaration} > 协议下标声明语法 > -> ###### protocol-subscript-declaration {#protocol-subscript-declaration} +> +#### protocol-subscript-declaration {#protocol-subscript-declaration} > > *协议下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*getter-setter 关键字代码块*](#getter-setter-keyword-block) > @@ -1103,10 +1189,12 @@ protocol SubProtocolB: SomeProtocol where SomeType: Equatable { } 另请参阅 [类型别名声明](#type_alias_declaration)。 -###### grammer_of_a_protocol_associated_type_declaration {#grammer_of_a_protocol_associated_type_declaration} + +#### grammer_of_a_protocol_associated_type_declaration {#grammer_of_a_protocol_associated_type_declaration} > 协议关联类型声明语法 > -> ###### protocol-associated-type-declaration {#protocol-associated-type-declaration} +> +#### protocol-associated-type-declaration {#protocol-associated-type-declaration} > > *协议关联类型声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **associatedtype** [*类型别名头*](#typealias-head) [*类型继承子句*](03_Types.md#type-inheritance-clause)可选 [*类型别名赋值*](#typealias-assignment)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 > @@ -1194,16 +1282,19 @@ if let actualInstance = SomeStruct(input: "Hello") { 更多关于可失败构造器的信息和例子,请参阅 [可失败构造器](../chapter2/14_Initialization.md#failable_initializers)。 -###### grammer_of_an_initializer_declaration {#grammer_of_an_initializer_declaration} + +#### grammer_of_an_initializer_declaration {#grammer_of_an_initializer_declaration} > 构造器声明语法 > -> ###### initializer-declaration {#initializer-declaration} +> +#### initializer-declaration {#initializer-declaration} > > *构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **throws**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*构造器主体*](#initializer-body) > > *构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **rethrows**可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*构造器主体*](#initializer-body) > -> ###### initializer-head {#initializer-head} +> +#### initializer-head {#initializer-head} > > *构造器头* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **init** > @@ -1211,7 +1302,8 @@ if let actualInstance = SomeStruct(input: "Hello") { > > *构造器头* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **init** **!** > -> ###### initializer-body {#initializer-body} +> +#### initializer-body {#initializer-body} > > *构造器主体* → [*代码块*](#code-block) > @@ -1233,10 +1325,12 @@ deinit { 关于如何在类声明中使用析构器的例子,请参阅 [析构过程](../chapter2/15_Deinitialization.md)。 -###### grammer_of_a_deinitializer_declaration {#grammer_of_a_deinitializer_declaration} + +#### grammer_of_a_deinitializer_declaration {#grammer_of_a_deinitializer_declaration} > 析构器声明语法 > -> ###### deinitializer-declaration {#deinitializer-declaration} +> +#### deinitializer-declaration {#deinitializer-declaration} > > *析构器声明* → [*特性列表*](./07_Attributes.md#attributes)可选 **deinit** [*代码块*](#code-block) > @@ -1416,15 +1510,18 @@ extension Array: Loggable where Element: MarkedLoggable { } // 报错: redundant conformance of 'Array' to protocol 'Loggable' ``` -###### grammer_of_an_extension_declaration {#grammer_of_an_extension_declaration} + +#### grammer_of_an_extension_declaration {#grammer_of_an_extension_declaration} > 扩展声明语法 > > -> ###### extension-declaration {#extension-declaration} +> +#### extension-declaration {#extension-declaration} > > *扩展声明* → [特性](./07_Attributes.md#type_attributes)可选 [访问级别修饰符](#access-level-modifier)可选 **extension** [*类型标识符*](03_Types.md#type-identifier) [*类型-继承-子句*](./03_Types.md#type-inheritance-clause)可选 [*泛型 where 子句*](./09_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*扩展主体*](#extension-body) > -> ###### extension-body {#extension-body} +> +#### extension-body {#extension-body} > > *扩展主体* → **{** [*多条声明*](#declarations)可选 **}** > @@ -1464,11 +1561,13 @@ subscript (参数列表) -> 返回类型 { 更多关于下标的信息和例子,请参阅 [下标](../chapter2/12_Subscripts.md)。 -###### grammer_of_a_subscript_declaration {#grammer_of_a_subscript_declaration} + +#### grammer_of_a_subscript_declaration {#grammer_of_a_subscript_declaration} > 下标声明语法 > > -> ###### subscript-declaration {#subscript-declaration} +> +#### subscript-declaration {#subscript-declaration} > > *下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*代码块*](#code-block) > @@ -1476,11 +1575,13 @@ subscript (参数列表) -> 返回类型 { > > *下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*getter-setter 关键字代码块*](#getter-setter-keyword-block) > -> ###### subscript-head {#subscript-head} +> +#### subscript-head {#subscript-head} > > *下标头* → [*特性列表*](./07_Attributes.md#attributes)可选 [*声明修饰符列表*](#declaration-modifiers)可选 **subscript** [*泛型参数子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) > -> ###### subscript-result {#subscript-result} +> +#### subscript-result {#subscript-result} > > *下标结果* → **->** [*特性列表*](./07_Attributes.md#attributes)可选 [*类型*](./03_Types.md#type) > @@ -1524,24 +1625,30 @@ postfix operator 运算符名称 {} 声明了一个新的运算符以后,需要实现一个跟这个运算符同名的函数来实现这个运算符。如果是实现一个前缀或者后缀运算符,也必须使用相符的 `prefix` 或者 `postfix` 声明修饰符标记函数声明。如果是实现中缀运算符,则不需要使用 `infix` 声明修饰符标记函数声明。关于如何实现一个新的运算符的例子,请参阅 [自定义运算符](../chapter2/26_Advanced_Operators.md#custom_operators)。 -###### grammer_of_an_operator_declaration {#grammer_of_an_operator_declaration} + +#### grammer_of_an_operator_declaration {#grammer_of_an_operator_declaration} > 运算符声明语法 > -###### operator-declaration {#operator-declaration} + +#### operator-declaration {#operator-declaration} > *运算符声明* → [*前缀运算符声明*](#prefix-operator-declaration) | [*后缀运算符声明*](#postfix-operator-declaration) | [*中缀运算符声明*](#infix-operator-declaration) > -###### prefix-operator-declaration {#prefix-operator-declaration} + +#### prefix-operator-declaration {#prefix-operator-declaration} > *前缀运算符声明* → **prefix** **运算符** [*运算符*](./02_Lexical_Structure.md#operator) **{** **}** > -> ###### postfix-operator-declaration {#postfix-operator-declaration} +> +#### postfix-operator-declaration {#postfix-operator-declaration} > > *后缀运算符声明* → **postfix** **运算符** [*运算符*](./02_Lexical_Structure.html#operator) **{** **}** > -> ###### infix-operator-declaration {#infix-operator-declaration} +> +#### infix-operator-declaration {#infix-operator-declaration} > > *中缀运算符声明* → **infix** **运算符** [*运算符*](./02_Lexical_Structure.md#operator) **{** [*中缀运算符属性*](#infix-operator-attributes)可选 **}** > -###### infix-operator-group {#infix-operator-group} + +#### infix-operator-group {#infix-operator-group} > *中缀运算符组* → [*优先级组名称*](#precedence-group-name) > @@ -1571,43 +1678,52 @@ Swift 定义了大量的优先级组来与标准库的运算符配合使用, 优先级组的赋值性表示在包含可选链操作时的运算符优先级。当设为 true 时,与优先级组对应的运算符在可选链操作中使用和标准库中赋值运算符同样的分组规则,当设为 false 或者不设置,该优先级组的运算符与不赋值的运算符遵循同样的可选链规则。 -###### grammer_of_a_precedence_group_declaration {#grammer_of_a_precedence_group_declaration} + +#### grammer_of_a_precedence_group_declaration {#grammer_of_a_precedence_group_declaration} > 优先级组声明语法 > -###### precedence-group-declaration {#precedence-group-declaration} + +#### precedence-group-declaration {#precedence-group-declaration} > *优先级组声明* → **precedence**[*优先级组名称*](#precedence-group-name){[*多优先级组属性*](#precedence-group-attributes)可选 } > -###### precedence-group-attributes {#precedence-group-attributes} + +#### precedence-group-attributes {#precedence-group-attributes} > *优先级组属性* → [*优先级组属性*](#precedence-group-attribute)[*多优先级组属性*](#precedence-group-attributes)可选 **{** **}** > -###### precedence-group-attribute {#precedence-group-attribute} + +#### precedence-group-attribute {#precedence-group-attribute} > *优先级组属性* → [*优先级组关系*](#precedence-group-relation) > > *优先级组属性* → [*优先级组赋值性*](#precedence-group-assignment) > > *优先级组属性* → [*优先级组相关性*](#precedence-group-associativity) > -> ###### precedence-group-relation {#precedence-group-relation} +> +#### precedence-group-relation {#precedence-group-relation} > > *优先级组关系* → **higherThan:**[*多优先级组名称*](#precedence-group-names) > > *优先级组关系* → **lowerThan:**[*多优先级组名称*](#precedence-group-names) > -> ###### precedence-group-assignment {#precedence-group-assignment} +> +#### precedence-group-assignment {#precedence-group-assignment} > > *优先级组赋值* → **assignment:**[*布尔字面值*](./02_Lexical_Structure.md#boolean-literal) > -###### precedence-group-associativity {#precedence-group-associativity} + +#### precedence-group-associativity {#precedence-group-associativity} > *优先级组结合性* → **associativity:left** > > *优先级组结合性* → **associativity:right** > > *优先级组结合性* → **associativity:none** > -###### precedence-group-names {#precedence-group-names} + +#### precedence-group-names {#precedence-group-names} > *多优先级组名称* → [*优先级组名称*](#precedence-group-name) | [*优先级组名称*](#precedence-group-name) | [*优先级组名称*](#precedence-group-name) > -###### precedence-group-name {#precedence-group-name} + +#### precedence-group-name {#precedence-group-name} > *优先级组名称* →[*标识符*](./02_Lexical_Structure.md#identifier) > @@ -1671,19 +1787,23 @@ Swift 提供了三个级别的访问控制:`public`、`internal` 和 `private` 以上访问级别修饰符都可以选择带上一个参数,该参数由一对圆括号和其中的 `set` 关键字组成(例如,`private(set)`)。使用这种形式的访问级别修饰符来限制某个属性或下标的 setter 的访问级别低于其本身的访问级别,正如 [Getter 和 Setter](../chapter2/25_Access_Control.md#getters_and_setters) 中所讨论的。 -###### grammer_of_a_declaration_modifier {#grammer_of_a_declaration_modifier} + +#### grammer_of_a_declaration_modifier {#grammer_of_a_declaration_modifier} > 声明修饰符的语法 > -###### declaration-modifier {#declaration-modifier} + +#### declaration-modifier {#declaration-modifier} > *声明修饰符* → **class** | **convenience**| **dynamic** | **final** | **infix** | **lazy** | **mutating** | **nonmutating** | **optional** | **override** | **postfix** | **prefix** | **required** | **static** | **unowned** | **unowned ( safe )** | **unowned ( unsafe )** | **weak** > > 声明修饰符 → [*访问级别修饰符*](#access-level-modifier) > -> ###### declaration-modifiers {#declaration-modifiers} +> +#### declaration-modifiers {#declaration-modifiers} > > *声明修饰符列表* → [*声明修饰符*](#declaration-modifier) [*声明修饰符列表*](#declaration-modifiers)可选 > -###### access-level-modifier {#access-level-modifier} + +#### access-level-modifier {#access-level-modifier} > 访问级别修饰符 → **internal** | **internal ( set )** > > 访问级别修饰符 → **private** | **private ( set )** diff --git a/source/chapter3/07_Attributes.md b/source/chapter3/07_Attributes.md index e3ea48b1..0c02be5f 100755 --- a/source/chapter3/07_Attributes.md +++ b/source/chapter3/07_Attributes.md @@ -358,28 +358,34 @@ convention 特性总是与下面的参数之一一起出现。 > 特性语法 > > -> ###### attribute {#attribute} +> +#### attribute {#attribute} > > *特性*→ [特性名](#attribute_name) [特性参数子句](#atribute_argument_clause)可选 > -> ###### attribute_name {#attribute_name} +> +#### attribute_name {#attribute_name} > > *特性名* → [标识符](./02_Lexical_Structure.md#identifier) > -> ###### atribute_argument_clause {#atribute_argument_clause} +> +#### atribute_argument_clause {#atribute_argument_clause} > > *特性参数子句* → **(** [均衡令牌列表](#balanced_tokens)可选 **)** > -> ###### attributes {#attributes} +> +#### attributes {#attributes} > > *特性列表* → [特性](#attribute) [特性列表](#attributes)可选 > > -> ###### balanced_tokens {#balanced_tokens} +> +#### balanced_tokens {#balanced_tokens} > > *均衡令牌列表* → [均衡令牌](#balanced_token) [均衡令牌列表](#balanced_tokens)可选 > -> ###### balanced_token {#balanced_token} +> +#### balanced_token {#balanced_token} > > *均衡令牌* → **(** [均衡令牌列表](#balanced_tokens)可选 **)** > diff --git a/source/chapter3/08_Patterns.md b/source/chapter3/08_Patterns.md index 00e631a6..d0f0071a 100755 --- a/source/chapter3/08_Patterns.md +++ b/source/chapter3/08_Patterns.md @@ -10,7 +10,8 @@ Swift 中的模式分为两类:一种能成功匹配任何类型的值,另 > 模式语法 > -###### pattern {#pattern} + +#### pattern {#pattern} > *模式* → [*通配符模式*](#wildcard_pattern) [*类型标注*](03_Types.md#type-annotation)可选 > > *模式* → [*标识符模式*](#identifier_pattern) [*类型标注*](03_Types.md#type-annotation)可选 @@ -40,7 +41,8 @@ for _ in 1...3 { > 通配符模式语法 > -###### wildcard-pattern {#wildcard-pattern} + +#### wildcard-pattern {#wildcard-pattern} > *通配符模式* → **_** > @@ -57,7 +59,8 @@ let someValue = 42 > 标识符模式语法 > -###### identifier-pattern {#identifier-pattern} + +#### identifier-pattern {#identifier-pattern} > *标识符模式* → [*标识符*](./02_Lexical_Structure.md#identifier) > @@ -80,7 +83,8 @@ case let (x, y): > 值绑定模式语法 > -###### value-binding-pattern {#value-binding-pattern} + +#### value-binding-pattern {#value-binding-pattern} > *值绑定模式* → **var** [*模式*](#pattern) | **let** [*模式*](#pattern) > @@ -109,13 +113,16 @@ let (a): Int = 2 // a: Int = 2 > 元组模式语法 > -###### tuple-pattern {#tuple-pattern} + +#### tuple-pattern {#tuple-pattern} > *元组模式* → **(** [*元组模式元素列表*](#tuple-pattern-element-list)可选 **)** > -###### tuple-pattern-element-list {#tuple-pattern-element-list} + +#### tuple-pattern-element-list {#tuple-pattern-element-list} > *元组模式元素列表* → [*元组模式元素*](#tuple-pattern-element) | [*元组模式元素*](#tuple-pattern-element) **,** [*元组模式元素列表*](#tuple-pattern-element-list) > -###### tuple-pattern-element {#tuple-pattern-element} + +#### tuple-pattern-element {#tuple-pattern-element} > *元组模式元素* → [*模式*](#pattern) > @@ -126,7 +133,8 @@ let (a): Int = 2 // a: Int = 2 > 枚举用例模式语法 > -###### enum-case-pattern {#enum-case-pattern} + +#### enum-case-pattern {#enum-case-pattern} > *枚举用例模式* → [*类型标识*](./03_Types.md#type-identifier)可选 **.** [*枚举用例名*](./06_Declarations.md#enum-case-name) [*元组模式*](#tuple-pattern)可选 > @@ -163,7 +171,8 @@ for case let number? in arrayOfOptinalInts { > 可选模式语法 > -###### optional-pattern {#optional-pattern} + +#### optional-pattern {#optional-pattern} > *可选模式* → [*标识符模式*](./03_Types.md#type-identifier) **?** > @@ -183,13 +192,16 @@ for case let number? in arrayOfOptinalInts { > 类型转换模式语法 > -###### type-casting-pattern {#type-casting-pattern} + +#### type-casting-pattern {#type-casting-pattern} > *类型转换模式* → [*is 模式*](#is-pattern) | [*as 模式*](#as-pattern) > -###### is-pattern {#is-pattern} + +#### is-pattern {#is-pattern} > *is 模式* → **is** [*类型*](./03_Types.md#type) > -###### as-pattern {#as-pattern} + +#### as-pattern {#as-pattern} > *as 模式* → [*模式*](#pattern) **as** [*类型*](03_Types.md#type) > @@ -231,6 +243,7 @@ default: > 表达式模式语法 > -###### expression-pattern {#expression-pattern} + +#### expression-pattern {#expression-pattern} > *表达式模式* → [*表达式*](./04_Expressions.md#expression) > diff --git a/source/chapter3/09_Generic_Parameters_and_Arguments.md b/source/chapter3/09_Generic_Parameters_and_Arguments.md index 0d0e5acc..e26688ff 100755 --- a/source/chapter3/09_Generic_Parameters_and_Arguments.md +++ b/source/chapter3/09_Generic_Parameters_and_Arguments.md @@ -56,36 +56,44 @@ simpleMax(3.14159, 2.71828) // T 被推断为 Double 类型 > 泛型形参子句语法 > -###### generic-parameter-clause {#generic-parameter-clause} + +#### generic-parameter-clause {#generic-parameter-clause} > *泛型形参子句* → **<** [*泛型形参列表*](#generic-parameter-list) [*约束子句*](#requirement-clause)可选 **>** > -###### generic-parameter-list {#generic-parameter-list} + +#### generic-parameter-list {#generic-parameter-list} > *泛型形参列表* → [*泛形形参*](#generic-parameter) | [*泛形形参*](#generic-parameter) **,** [*泛型形参列表*](#generic-parameter-list) > -###### generic-parameter {#generic-parameter} + +#### generic-parameter {#generic-parameter} > *泛形形参* → [*类型名称*](./03_Types.md#type-name) > > *泛形形参* → [*类型名称*](./03_Types.md#type-name) **:** [*类型标识符*](./03_Types.md#type-identifier) > > *泛形形参* → [*类型名称*](./03_Types.md#type-name) **:** [*协议合成类型*](./03_Types.md#protocol-composition-type) > -> ###### requirement-clause {#requirement-clause} +> +#### requirement-clause {#requirement-clause} > > *约束子句* → **where** [*约束列表*](#requirement-list) > -###### requirement-list {#requirement-list} + +#### requirement-list {#requirement-list} > *约束列表* → [*约束*](#requirement) | [*约束*](#requirement) **,** [*约束列表*](#requirement-list) > -###### requirement {#requirement} + +#### requirement {#requirement} > *约束* → [*一致性约束*](#conformance-requirement) | [*同类型约束*](#same-type-requirement) > -> ###### conformance-requirement {#conformance-requirement} +> +#### conformance-requirement {#conformance-requirement} > > *一致性约束* → [*类型标识符*](./03_Types.md#type-identifier) **:** [*类型标识符*](./03_Types.md#type-identifier) > > *一致性约束* → [*类型标识符*](./03_Types.md#type-identifier) **:** [*协议合成类型*](./03_Types.md#protocol-composition-type) > -###### same-type-requirement {#same-type-requirement} + +#### same-type-requirement {#same-type-requirement} > *同类型约束* → [*类型标识符*](./03_Types.md#type-identifier) **==** [*类型*](./03_Types.md#type) > @@ -116,12 +124,15 @@ let arrayOfArrays: Array> = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] > 泛型实参子句语法 > -###### generic-argument-clause {#generic-argument-clause} + +#### generic-argument-clause {#generic-argument-clause} > *泛型实参子句* → **<** [*泛型实参列表*](#generic-argument-list) **>** > -###### generic-argument-list {#generic-argument-list} + +#### generic-argument-list {#generic-argument-list} > *泛型实参列表* → [*泛型实参*](#generic-argument) | [*泛型实参*](#generic-argument) **,** [*泛型实参列表*](#generic-argument-list) > -###### generic-argument {#generic-argument} + +#### generic-argument {#generic-argument} > *泛型实参* → [*类型*](./03_Types.md#type) > From 3201f23a17f7de0fc776cd5a056863eaea5e647f Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Tue, 2 Apr 2019 09:47:36 -0500 Subject: [PATCH 087/107] replace all _ with - --- source/chapter1/03_a_swift_tour.md | 14 +- source/chapter2/01_The_Basics.md | 32 ++--- source/chapter2/02_Basic_Operators.md | 32 ++--- source/chapter2/03_Strings_and_Characters.md | 46 +++--- source/chapter2/04_Collection_Types.md | 44 +++--- source/chapter2/05_Control_Flow.md | 28 ++-- source/chapter2/06_Functions.md | 36 ++--- source/chapter2/07_Closures.md | 22 +-- source/chapter2/08_Enumerations.md | 16 +-- source/chapter2/09_Structures_And_Classes.md | 16 +-- source/chapter2/10_Properties.md | 24 ++-- source/chapter2/11_Methods.md | 10 +- source/chapter2/12_Subscripts.md | 6 +- source/chapter2/13_Inheritance.md | 14 +- source/chapter2/14_Initialization.md | 54 +++---- source/chapter2/15_Deinitialization.md | 4 +- source/chapter2/16_Optional_Chaining.md | 16 +-- source/chapter2/17_Error_Handling.md | 10 +- source/chapter2/18_Type_Casting.md | 6 +- source/chapter2/19_Nested_Types.md | 4 +- source/chapter2/20_Extensions.md | 8 +- source/chapter2/21_Protocols.md | 40 +++--- source/chapter2/22_Generics.md | 36 ++--- .../23_Automatic_Reference_Counting.md | 22 +-- source/chapter2/24_Memory_Safety.md | 10 +- source/chapter2/25_Access_Control.md | 42 +++--- source/chapter2/26_Advanced_Operators.md | 34 ++--- .../01_About_the_Language_Reference.md | 2 +- source/chapter3/03_Types.md | 26 ++-- source/chapter3/04_Expressions.md | 52 +++---- source/chapter3/05_Statements.md | 90 ++++++------ source/chapter3/06_Declarations.md | 132 +++++++++--------- source/chapter3/07_Attributes.md | 20 +-- source/chapter3/08_Patterns.md | 16 +-- .../09_Generic_Parameters_and_Arguments.md | 6 +- source/chapter3/10_Summary_of_the_Grammar.md | 4 +- source/chapter4/02_Type_Custom.md | 2 +- 37 files changed, 488 insertions(+), 488 deletions(-) diff --git a/source/chapter1/03_a_swift_tour.md b/source/chapter1/03_a_swift_tour.md index dc1fed4b..24bf084e 100755 --- a/source/chapter1/03_a_swift_tour.md +++ b/source/chapter1/03_a_swift_tour.md @@ -16,7 +16,7 @@ print("Hello, world!") > > [Download Playground](https://docs.swift.org/swift-book/GuidedTour/GuidedTour.playground.zip) -## 简单值 {#simple_values} +## 简单值 {#simple-values} 使用 `let` 来声明常量,使用 `var` 来声明变量。一个常量的值,在编译的时候,并不需要有明确的值,但是你只能为它赋值一次。这说明你可以用一个常量来命名一个值,一次赋值就即可在多个地方使用。 @@ -101,7 +101,7 @@ shoppingList = [] occupations = [:] ``` -## 控制流 {#control_flow} +## 控制流 {#control-flow} 使用 `if` 和 `switch` 来进行条件操作,使用 `for-in`、`while` 和 `repeat-while` 来进行循环。包裹条件和循环变量的括号可以省略,但是语句体的大括号是必须的。 @@ -221,7 +221,7 @@ print(total) 使用 `..<` 创建的范围不包含上界,如果想包含的话需要使用 `...`。 -## 函数和闭包 {#functions_and_closures} +## 函数和闭包 {#functions-and-closures} 使用 `func` 来声明一个函数,使用名字和参数来调用函数。使用 `->` 来指定函数返回值的类型。 @@ -342,7 +342,7 @@ let sortedNumbers = numbers.sorted { $0 > $1 } print(sortedNumbers) ``` -## 对象和类 {#objects_and_classes} +## 对象和类 {#objects-and-classes} 使用 `class` 和类名来创建一个类。类中属性的声明和常量、变量声明一样,唯一的区别就是它们的上下文是类。同样,方法和函数声明也一样。 @@ -491,7 +491,7 @@ let optionalSquare: Square? = Square(sideLength: 2.5, name: "optional square") let sideLength = optionalSquare?.sideLength ``` -## 枚举和结构体 {#enumerations_and_structure} +## 枚举和结构体 {#enumerations-and-structure} 使用 `enum` 来创建一个枚举。就像类和其他所有命名类型一样,枚举可以包含方法。 @@ -604,7 +604,7 @@ let threeOfSpadesDescription = threeOfSpades.simpleDescription() > > 给 `Card` 添加一个方法,创建一副完整的扑克牌并把每张牌的 rank 和 suit 对应起来。 -## 协议和扩展 {#protocols_and_extensions} +## 协议和扩展 {#protocols-and-extensions} 使用 `protocol` 来声明一个协议。 @@ -674,7 +674,7 @@ print(protocolValue.simpleDescription) 即使 `protocolValue` 变量运行时的类型是 `simpleClass` ,编译器还是会把它的类型当做 `ExampleProtocol`。这表示你不能调用在协议之外的方法或者属性。 -## 错误处理 {#error_handling} +## 错误处理 {#error-handling} 使用采用 `Error` 协议的类型来表示错误。 diff --git a/source/chapter2/01_The_Basics.md b/source/chapter2/01_The_Basics.md index b2eb0fff..7af7fd60 100755 --- a/source/chapter2/01_The_Basics.md +++ b/source/chapter2/01_The_Basics.md @@ -12,7 +12,7 @@ Swift 还增加了可选(Optional)类型,用于处理值缺失的情况。 Swift 是一门*类型安全*的语言,这意味着 Swift 可以让你清楚地知道值的类型。如果你的代码需要一个 `String` ,类型安全会阻止你不小心传入一个 `Int` 。同样的,如果你的代码需要一个 `String`,类型安全会阻止你意外传入一个可选的 `String` 。类型安全可以帮助你在开发阶段尽早发现并修正错误。 -## 常量和变量 {#constants_and_variables} +## 常量和变量 {#constants-and-variables} 常量和变量把一个名字(比如 `maximumNumberOfLoginAttempts` 或者 `welcomeMessage` )和一个指定类型的值(比如数字 `10` 或者字符串 `"Hello"` )关联起来。*常量*的值一旦设定就不能改变,而*变量*的值可以随意更改。 @@ -41,7 +41,7 @@ var x = 0.0, y = 0.0, z = 0.0 > > 如果你的代码中有不需要改变的值,请使用 `let` 关键字将它声明为常量。只将需要改变的值声明为变量。 -### 类型标注 {#type_annotations} +### 类型标注 {#type-annotations} 当你声明常量或者变量的时候可以加上*类型标注(type annotation)*,说明常量或者变量中要存储的值的类型。如果要添加类型标注,需要在常量或者变量名后面加上一个冒号和空格,然后加上类型名称。 @@ -171,7 +171,7 @@ let cat = "🐱"; print(cat) Swift 提供了8、16、32和64位的有符号和无符号整数类型。这些整数类型和 C 语言的命名方式很像,比如8位无符号整数类型是 `UInt8`,32位有符号整数类型是 `Int32` 。就像 Swift 的其他类型一样,整数类型采用大写命名法。 -### 整数范围 {#integer_bounds} +### 整数范围 {#integer-bounds} 你可以访问不同整数类型的 `min` 和 `max` 属性来获取对应类型的最小值和最大值: @@ -202,7 +202,7 @@ Swift 也提供了一个特殊的无符号类型 `UInt`,长度与当前平台 > > 尽量不要使用 `UInt`,除非你真的需要存储一个和当前平台原生字长相同的无符号整数。除了这种情况,最好使用 `Int`,即使你要存储的值已知是非负的。统一使用 `Int` 可以提高代码的可复用性,避免不同类型数字之间的转换,并且匹配数字的类型推断,请参考[类型安全和类型推断](#type_safety_and_type_inference)。 -## 浮点数 {#floating-point_numbers} +## 浮点数 {#floating-point-numbers} 浮点数是有小数部分的数字,比如 `3.14159`、`0.1` 和 `-273.15`。 @@ -215,7 +215,7 @@ Swift 也提供了一个特殊的无符号类型 `UInt`,长度与当前平台 > > `Double` 精确度很高,至少有15位数字,而 `Float` 只有6位数字。选择哪个类型取决于你的代码需要处理的值的范围,在两种类型都匹配的情况下,将优先选择 `Double`。 -## 类型安全和类型推断 {#type_safety_and_type_inference} +## 类型安全和类型推断 {#type-safety-and-type-inference} Swift 是一个*类型安全(type safe)*的语言。类型安全的语言可以让你清楚地知道代码要处理的值的类型。如果你的代码需要一个 `String`,你绝对不可能不小心传进去一个 `Int`。 @@ -252,7 +252,7 @@ let anotherPi = 3 + 0.14159 原始值 `3` 没有显式声明类型,而表达式中出现了一个浮点字面量,所以表达式会被推断为 `Double` 类型。 -## 数值型字面量 {#numeric_literals} +## 数值型字面量 {#numeric-literals} 整数字面量可以被写作: @@ -298,13 +298,13 @@ let oneMillion = 1_000_000 let justOverOneMillion = 1_000_000.000_000_1 ``` -## 数值型类型转换 {#numeric_type_conversion} +## 数值型类型转换 {#numeric-type-conversion} 通常来讲,即使代码中的整数常量和变量已知非负,也请使用 `Int` 类型。总是使用默认的整数类型可以保证你的整数常量和变量可以直接被复用并且可以匹配整数类字面量的类型推断。 只有在必要的时候才使用其他整数类型,比如要处理外部的长度明确的数据或者为了优化性能、内存占用等等。使用显式指定长度的类型可以及时发现值溢出并且可以暗示正在处理特殊数据。 -### 整数转换 {#integer_conversion} +### 整数转换 {#integer-conversion} 不同整数类型的变量和常量可以存储不同范围的数字。`Int8` 类型的常量或者变量可以存储的数字范围是 `-128`~`127`,而 `UInt8` 类型的常量或者变量能存储的数字范围是 `0`~`255`。如果数字超出了常量或者变量可存储的范围,编译的时候会报错: @@ -329,7 +329,7 @@ let twoThousandAndOne = twoThousand + UInt16(one) `SomeType(ofInitialValue)` 是调用 Swift 构造器并传入一个初始值的默认方法。在语言内部,`UInt16` 有一个构造器,可以接受一个 `UInt8` 类型的值,所以这个构造器可以用现有的 `UInt8` 来创建一个新的 `UInt16`。注意,你并不能传入任意类型的值,只能传入 `UInt16` 内部有对应构造器的值。不过你可以扩展现有的类型来让它可以接收其他类型的值(包括自定义类型),请参考[扩展](./20_Extensions.md)。 -### 整数和浮点数转换 {#integer_and_floating_point_conversion} +### 整数和浮点数转换 {#integer-and-floating-point-conversion} 整数和浮点数的转换必须显式指定类型: @@ -355,7 +355,7 @@ let integerPi = Int(pi) > > 结合数字类常量和变量不同于结合数字类字面量。字面量 `3` 可以直接和字面量 `0.14159` 相加,因为数字字面量本身没有明确的类型。它们的类型只在编译器需要求值的时候被推测。 -## 类型别名 {#type_aliases} +## 类型别名 {#type-aliases} *类型别名(type aliases)*就是给现有类型定义另一个名字。你可以使用 `typealias` 关键字来定义类型别名。 @@ -558,7 +558,7 @@ if convertedNumber != nil { > > 使用 `!` 来获取一个不存在的可选值会导致运行时错误。使用 `!` 来强制解析值之前,一定要确定可选包含一个非 `nil` 的值。 -### 可选绑定 {#optional_binding} +### 可选绑定 {#optional-binding} 使用*可选绑定(optional binding)*来判断可选类型是否包含值,如果包含就把值赋给一个临时常量或者变量。可选绑定可以用在 `if` 和 `while` 语句中,这条语句不仅可以用来判断可选类型中是否有值,同时可以将可选类型中的值赋给一个常量或者变量。`if` 和 `while` 语句,请参考[控制流](./05_Control_Flow.md)。 @@ -611,7 +611,7 @@ if let firstNumber = Int("4") { > > 在 `if` 条件语句中使用常量和变量来创建一个可选绑定,仅在 `if` 语句的句中(`body`)中才能获取到值。相反,在 `guard` 语句中使用常量和变量来创建一个可选绑定,仅在 `guard` 语句外且在语句后才能获取到值,请参考[提前退出](./05_Control_Flow.md#early_exit)。 -### 隐式解析可选类型 {#implicityly_unwrapped_optionals} +### 隐式解析可选类型 {#implicityly-unwrapped-optionals} 如上所述,可选类型暗示了常量或者变量可以“没有值”。可选可以通过 `if` 语句来判断是否有值,如果有值的话可以通过可选绑定来解析值。 @@ -659,7 +659,7 @@ if let definiteString = assumedString { > > 如果一个变量之后可能变成 `nil` 的话请不要使用隐式解析可选类型。如果你需要在变量的生命周期中判断是否是 `nil` 的话,请使用普通可选类型。 -## 错误处理 {#error_handling} +## 错误处理 {#error-handling} 你可以使用 *错误处理(error handling)* 来应对程序执行中可能会遇到的错误条件。 @@ -709,7 +709,7 @@ do { 抛出,捕捉,以及传播错误会在[错误处理](./17_Error_Handling.md)章节详细说明。 -## 断言和先决条件 {#assertions_and_preconditions} +## 断言和先决条件 {#assertions-and-preconditions} 断言和先决条件是在运行时所做的检查。你可以用他们来检查在执行后续代码之前是否一个必要的条件已经被满足了。如果断言或者先决条件中的布尔条件评估的结果为 true(真),则代码像往常一样继续执行。如果布尔条件评估结果为 false(假),程序的当前状态是无效的,则代码执行结束,应用程序中止。 @@ -721,7 +721,7 @@ do { 断言和先决条件的不同点是,他们什么时候进行状态检测:断言仅在调试环境运行,而先决条件则在调试环境和生产环境中运行。在生产环境中,断言的条件将不会进行评估。这个意味着你可以使用很多断言在你的开发阶段,但是这些断言在生产环境中不会产生任何影响。 -### 使用断言进行调试 {#debugging_with_assertions} +### 使用断言进行调试 {#debugging-with-assertions} 你可以调用 Swift 标准库的 `assert(_:_:file:line:)` 函数来写一个断言。向这个函数传入一个结果为 `true` 或者 `false` 的表达式以及一条信息,当表达式的结果为 `false` 的时候这条信息会被显示: @@ -751,7 +751,7 @@ if age > 10 { } ``` -### 强制执行先决条件 {#enforcing_preconditions} +### 强制执行先决条件 {#enforcing-preconditions} 当一个条件可能为假,但是继续执行代码要求条件必须为真的时候,需要使用先决条件。例如使用先决条件来检查是否下标越界,或者来检查是否将一个正确的参数传给函数。 diff --git a/source/chapter2/02_Basic_Operators.md b/source/chapter2/02_Basic_Operators.md index 41456890..c3a8494b 100755 --- a/source/chapter2/02_Basic_Operators.md +++ b/source/chapter2/02_Basic_Operators.md @@ -18,7 +18,7 @@ Swift 还提供了 C 语言没有的区间运算符,例如 `a.. > Swift 标准库只能比较七个以内元素的元组比较函数。如果你的元组元素超过七个时,你需要自己实现比较运算符。 -## 三元运算符(Ternary Conditional Operator) {#ternary_conditional_operator} +## 三元运算符(Ternary Conditional Operator) {#ternary-conditional-operator} *三元运算符*的特殊在于它是有三个操作数的运算符,它的形式是 `问题 ? 答案 1 : 答案 2`。它简洁地表达根据 `问题`成立与否作出二选一的操作。如果 `问题` 成立,返回 `答案 1` 的结果;反之返回 `答案 2` 的结果。 @@ -257,7 +257,7 @@ if hasHeader { 三元运算为二选一场景提供了一个非常便捷的表达形式。不过需要注意的是,滥用三元运算符会降低代码可读性。所以我们应避免在一个复合语句中使用多个三元运算符。 -## 空合运算符(Nil Coalescing Operator) {#nil_coalescing_operator} +## 空合运算符(Nil Coalescing Operator) {#nil-coalescing-operator} *空合运算符*(`a ?? b`)将对可选类型 `a` 进行空判断,如果 `a` 包含一个值就进行解包,否则就返回一个默认值 `b`。表达式 `a` 必须是 Optional 类型。默认值 `b` 的类型必须要和 `a` 存储值的类型保持一致。 @@ -294,11 +294,11 @@ colorNameToUse = userDefinedColorName ?? defaultColorName // userDefinedColorName 非空,因此 colorNameToUse 的值为 "green" ``` -## 区间运算符(Range Operators) {#range_operators} +## 区间运算符(Range Operators) {#range-operators} Swift 提供了几种方便表达一个区间的值的*区间运算符*。 -### 闭区间运算符 {#closed_range_operator} +### 闭区间运算符 {#closed-range-operator} *闭区间运算符*(`a...b`)定义一个包含从 `a` 到 `b`(包括 `a` 和 `b`)的所有值的区间。`a` 的值不能超过 `b`。 @@ -317,7 +317,7 @@ for index in 1...5 { 关于 `for-in` 循环,请看[控制流](./05_Control_Flow.md)。 -### 半开区间运算符 {#half-open_range_operator} +### 半开区间运算符 {#half-open-range-operator} *半开区间运算符*(`a.. > Swift 逻辑操作符 `&&` 和 `||` 是左结合的,这意味着拥有多元逻辑操作符的复合表达式优先计算最左边的子表达式。 -### 使用括号来明确优先级 {#explicit_parentheses} +### 使用括号来明确优先级 {#explicit-parentheses} 为了一个复杂表达式更容易读懂,在合适的地方使用括号来明确优先级是很有效的,虽然它并非必要的。在上个关于门的权限的例子中,我们给第一个部分加个括号,使它看起来逻辑更明确: diff --git a/source/chapter2/03_Strings_and_Characters.md b/source/chapter2/03_Strings_and_Characters.md index af81a37e..06e3bf2f 100755 --- a/source/chapter2/03_Strings_and_Characters.md +++ b/source/chapter2/03_Strings_and_Characters.md @@ -12,7 +12,7 @@ Swift 的 `String` 和 `Character` 类型提供了一种快速且兼容 Unicode > > 更多关于在 Foundation 和 Cocoa 中使用 `String` 的信息请查看 *[Bridging Between String and NSString](https://developer.apple.com/documentation/swift/string#2919514)*。 -## 字符串字面量 {#string_literals} +## 字符串字面量 {#string-literals} 你可以在代码里使用一段预定义的字符串值作为字符串字面量。字符串字面量是由一对双引号包裹着的具有固定顺序的字符集。 @@ -24,7 +24,7 @@ let someString = "Some string literal value" 注意,Swift 之所以推断 `someString` 常量为字符串类型,是因为它使用了字面量方式进行初始化。 -### 多行字符串字面量 {#multiline_string_literals} +### 多行字符串字面量 {#multiline-string-literals} 如果你需要一个字符串是跨越多行的,那就使用多行字符串字面量 — 由一对三个双引号包裹着的具有固定顺序的文本字符集: @@ -76,7 +76,7 @@ It also ends with a line break. 在上面的例子中,尽管整个多行字符串字面量都是缩进的(源代码缩进),第一行和最后一行没有以空白字符串开始(实际的变量值)。中间一行的缩进用空白字符串(源代码缩进)比关闭引号(`"""`)之前的空白字符串多,所以,它的行首将有4个空格。 -### 字符串字面量的特殊字符 {#special_characters_in_string_literals} +### 字符串字面量的特殊字符 {#special-characters-in-string-literals} 字符串字面量可以包含以下特殊字符: @@ -104,7 +104,7 @@ Escaping all three quotes \"\"\" """ ``` -### 扩展字符串分隔符 {#extended_string_delimiters} +### 扩展字符串分隔符 {#extended-string-delimiters} 您可以将字符串文字放在扩展分隔符中,这样字符串中的特殊字符将会被直接包含而非转义后的效果。将字符串放在引号(**"**)中并用数字符号(**#**)括起来。例如,打印字符串文字 **#"Line 1 \ nLine 2"#** 打印换行符转义序列(**\n**)而不是进行换行打印。 @@ -118,7 +118,7 @@ Here are three more double quotes: """ """# ``` -## 初始化空字符串 {#initializing_an_empty_string} +## 初始化空字符串 {#initializing-an-empty-string} 要创建一个空字符串作为初始值,可以将空的字符串字面量赋值给变量,也可以初始化一个新的 `String` 实例: @@ -137,7 +137,7 @@ if emptyString.isEmpty { // 打印输出:“Nothing to see here” ``` -## 字符串可变性 {#string_mutability} +## 字符串可变性 {#string-mutability} 你可以通过将一个特定字符串分配给一个变量来对其进行修改,或者分配给一个常量来保证其不会被修改: @@ -155,7 +155,7 @@ constantString += " and another Highlander" > > 在 Objective-C 和 Cocoa 中,需要通过选择两个不同的类(`NSString` 和 `NSMutableString`)来指定字符串是否可以被修改。 -## 字符串是值类型 {#strings_are_value_types} +## 字符串是值类型 {#strings-are-value-types} 在 Swift 中 `String` 类型是*值类型*。如果你创建了一个新的字符串,那么当其进行常量、变量赋值操作,或在函数/方法中传递时,会进行值拷贝。在前述任一情况下,都会对已有字符串值创建新副本,并对该新副本而非原始字符串进行传递或赋值操作。值类型在 [结构体和枚举是值类型](./09_Classes_and_Structures.md#structures_and_enumerations_are_value_types) 中进行了详细描述。 @@ -163,7 +163,7 @@ Swift 默认拷贝字符串的行为保证了在函数/方法向你传递的字 在实际编译时,Swift 编译器会优化字符串的使用,使实际的复制只发生在绝对必要的情况下,这意味着你将字符串作为值类型的同时可以获得极高的性能。 -## 使用字符 {#working_with_characters} +## 使用字符 {#working-with-characters} 你可通过 `for-in` 循环来遍历字符串,获取字符串中每一个字符的值: @@ -195,7 +195,7 @@ print(catString) // 打印输出:“Cat!🐱” ``` -## 连接字符串和字符 {#concatenating_strings_and_characters} +## 连接字符串和字符 {#concatenating-strings-and-characters} 字符串可以通过加法运算符(`+`)相加在一起(或称“连接”)创建一个新的字符串: @@ -255,7 +255,7 @@ print(goodStart + end) 上面的代码,把 `badStart` 和 `end` 拼接起来的字符串非我们想要的结果。因为 `badStart` 最后一行没有换行符,它与 `end` 的第一行结合到了一起。相反的,`goodStart` 的每一行都以换行符结尾,所以它与 `end` 拼接的字符串总共有三行,正如我们期望的那样。 -## 字符串插值 {#string_interpolation} +## 字符串插值 {#string-interpolation} *字符串插值*是一种构建新字符串的方式,可以在其中包含常量、变量、字面量和表达式。**字符串字面量**和**多行字符串字面量**都可以使用字符串插值。你插入的字符串字面量的每一项都在以反斜线为前缀的圆括号中: @@ -277,13 +277,13 @@ let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)" *Unicode*是一个用于在不同书写系统中对文本进行编码、表示和处理的国际标准。它使你可以用标准格式表示来自任意语言几乎所有的字符,并能够对文本文件或网页这样的外部资源中的字符进行读写操作。Swift 的 `String` 和 `Character` 类型是完全兼容 Unicode 标准的。 -### Unicode 标量 {#unicode_scalars} +### Unicode 标量 {#unicode-scalars} Swift 的 `String` 类型是基于 *Unicode 标量* 建立的。Unicode 标量是对应字符或者修饰符的唯一的 21 位数字,例如 `U+0061` 表示小写的拉丁字母(`LATIN SMALL LETTER A`)("`a`"),`U+1F425` 表示小鸡表情(`FRONT-FACING BABY CHICK`)("`🐥`")。 请注意,并非所有 21 位 Unicode 标量值都分配给字符,某些标量被保留用于将来分配或用于 UTF-16 编码。已分配的标量值通常也有一个名称,例如上面示例中的 LATIN SMALL LETTER A 和 FRONT-FACING BABY CHICK。 -### 可扩展的字形群集 {#extended_grapheme_clusters} +### 可扩展的字形群集 {#extended-grapheme-clusters} 每一个 Swift 的 `Character` 类型代表一个*可扩展的字形群*。而一个可扩展的字形群构成了人类可读的单个字符,它由一个或多个(当组合时) Unicode 标量的序列组成。 @@ -320,7 +320,7 @@ let regionalIndicatorForUS: Character = "\u{1F1FA}\u{1F1F8}" // regionalIndicatorForUS 是 🇺🇸 ``` -## 计算字符数量 {#counting_characters} +## 计算字符数量 {#counting-characters} 如果想要获得一个字符串中 `Character` 值的数量,可以使用 `count` 属性: @@ -351,11 +351,11 @@ print("the number of characters in \(word) is \(word.count)") > > 另外需要注意的是通过 `count` 属性返回的字符数量并不总是与包含相同字符的 `NSString` 的 `length` 属性相同。`NSString` 的 `length` 属性是利用 UTF-16 表示的十六位代码单元数字,而不是 Unicode 可扩展的字符群集。 -## 访问和修改字符串 {#accessing_and_modifying_a_string} +## 访问和修改字符串 {#accessing-and-modifying-a-string} 你可以通过字符串的属性和方法来访问和修改它,当然也可以用下标语法完成。 -### 字符串索引 {#string_indices} +### 字符串索引 {#string-indices} 每一个 `String` 值都有一个关联的索引(*index*)类型,`String.Index`,它对应着字符串中的每一个 `Character` 的位置。 @@ -400,7 +400,7 @@ for index in greeting.indices { > > 你可以使用 `startIndex` 和 `endIndex` 属性或者 `index(before:)` 、`index(after:)` 和 `index(_:offsetBy:)` 方法在任意一个确认的并遵循 `Collection` 协议的类型里面,如上文所示是使用在 `String` 中,你也可以使用在 `Array`、`Dictionary` 和 `Set` 中。 -### 插入和删除 {#inserting_and_removing} +### 插入和删除 {#inserting-and-removing} 调用 `insert(_:at:)` 方法可以在一个字符串的指定索引插入一个字符,调用 `insert(contentsOf:at:)` 方法可以在一个字符串的指定索引插入一个段字符串。 @@ -452,11 +452,11 @@ let newString = String(beginning) > > `String` 和 `SubString` 都遵循 `StringProtocol` 协议,这意味着操作字符串的函数使用 `StringProtocol` 会更加方便。你可以传入 `String` 或 `SubString` 去调用函数。 -## 比较字符串 {#comparing_strings} +## 比较字符串 {#comparing-strings} Swift 提供了三种方式来比较文本值:字符串字符相等、前缀相等和后缀相等。 -### 字符串/字符相等 {#string_and_character_equality} +### 字符串/字符相等 {#string-and-character-equality} 字符串/字符可以用等于操作符(`==`)和不等于操作符(`!=`),详细描述在[比较运算符](./02_Basic_Operators.md#comparison_operators): @@ -503,7 +503,7 @@ if latinCapitalLetterA != cyrillicCapitalLetterA { > > 在 Swift 中,字符串和字符并不区分地域(not locale-sensitive)。 -### 前缀/后缀相等 {#prefix_and_suffix_equality} +### 前缀/后缀相等 {#prefix-and-suffix-equality} 通过调用字符串的 `hasPrefix(_:)`/`hasSuffix(_:)` 方法来检查字符串是否拥有特定前缀/后缀,两个方法均接收一个 `String` 类型的参数,并返回一个布尔值。 @@ -558,7 +558,7 @@ print("\(mansionCount) mansion scenes; \(cellCount) cell scenes") > > `hasPrefix(_:)` 和 `hasSuffix(_:)` 方法都是在每个字符串中逐字符比较其可扩展的字符群集是否标准相等,详细描述在[字符串/字符相等](#string_and_character_equality)。 -## 字符串的 Unicode 表示形式 {#unicode_representations_of_strings} +## 字符串的 Unicode 表示形式 {#unicode-representations-of-strings} 当一个 Unicode 字符串被写进文本文件或者其他储存时,字符串中的 Unicode 标量会用 Unicode 定义的几种 `编码格式`(encoding forms)编码。每一个字符串中的小块编码都被称 `代码单元`(code units)。这些包括 UTF-8 编码格式(编码字符串为 8 位的代码单元), UTF-16 编码格式(编码字符串位 16 位的代码单元),以及 UTF-32 编码格式(编码字符串32位的代码单元)。 @@ -576,7 +576,7 @@ Swift 提供了几种不同的方式来访问字符串的 Unicode 表示形式 let dogString = "Dog‼🐶" ``` -### UTF-8 表示 {#UTF-8_representation} +### UTF-8 表示 {#UTF-8-representation} 你可以通过遍历 `String` 的 `utf8` 属性来访问它的 `UTF-8` 表示。其为 `String.UTF8View` 类型的属性,`UTF8View` 是无符号 8 位(`UInt8`)值的集合,每一个 `UInt8` 值都是一个字符的 UTF-8 表示: @@ -627,7 +627,7 @@ print("") 上面的例子中,前三个 10 进制 `codeUnit` 值(`68`、`111`、`103`)代表了字符 `D`、`o` 和 `g`,它们的 UTF-8 表示与 ASCII 表示相同。接下来的三个 10 进制 `codeUnit` 值(`226`、`128`、`188`)是 `DOUBLE EXCLAMATION MARK` 的3字节 UTF-8 表示。最后的四个 `codeUnit` 值(`240`、`159`、`144`、`182`)是 `DOG FACE` 的4字节 UTF-8 表示。 -### UTF-16 表示 {#UTF-16_representation} +### UTF-16 表示 {#UTF-16-representation} 你可以通过遍历 `String` 的 `utf16` 属性来访问它的 `UTF-16` 表示。其为 `String.UTF16View` 类型的属性,`UTF16View` 是无符号16位(`UInt16`)值的集合,每一个 `UInt16` 都是一个字符的 UTF-16 表示: @@ -674,7 +674,7 @@ print("") 第五和第六个 `codeUnit` 值(`55357` 和 `56374`)是 `DOG FACE` 字符的 UTF-16 表示。第一个值为 `U+D83D`(十进制值为 `55357`),第二个值为 `U+DC36`(十进制值为 `56374`)。 -### Unicode 标量表示 {#unicode_scalars_representation} +### Unicode 标量表示 {#unicode-scalars-representation} 你可以通过遍历 `String` 值的 `unicodeScalars` 属性来访问它的 Unicode 标量表示。其为 `UnicodeScalarView` 类型的属性,`UnicodeScalarView` 是 `UnicodeScalar` 类型的值的集合。 diff --git a/source/chapter2/04_Collection_Types.md b/source/chapter2/04_Collection_Types.md index 0c90d31e..48ae2d64 100755 --- a/source/chapter2/04_Collection_Types.md +++ b/source/chapter2/04_Collection_Types.md @@ -10,7 +10,7 @@ Swift 语言中的 `Arrays`、`Sets` 和 `Dictionaries` 中存储的数据值类 > > Swift 的 `Arrays`、`Sets` 和 `Dictionaries` 类型被实现为*泛型集合*。更多关于泛型类型和集合,参见 [泛型](./23_Generics.md)章节。 -## 集合的可变性 {#mutability_of_collections} +## 集合的可变性 {#mutability-of-collections} 如果创建一个 `Arrays`、`Sets` 或 `Dictionaries` 并且把它分配成一个变量,这个集合将会是*可变的*。这意味着你可以在创建之后添加更多或移除已存在的数据项,或者改变集合中的数据项。如果我们把 `Arrays`、`Sets` 或 `Dictionaries` 分配成常量,那么它就是*不可变的*,它的大小和内容都不能被改变。 @@ -26,11 +26,11 @@ Swift 语言中的 `Arrays`、`Sets` 和 `Dictionaries` 中存储的数据值类 > > Swift 的 `Array` 类型被桥接到 `Foundation` 中的 `NSArray` 类。更多关于在 `Foundation` 和 `Cocoa` 中使用 `Array` 的信息,参见 [*Using Swift with Cocoa and Obejective-C(Swift 4.1)*](https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/index.html#//apple_ref/doc/uid/TP40014216) 中[使用 Cocoa 数据类型](https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/WorkingWithCocoaDataTypes.html#//apple_ref/doc/uid/TP40014216-CH6)部分。 -### 数组的简单语法 {#array_type_shorthand_syntax} +### 数组的简单语法 {#array-type-shorthand-syntax} 写 Swift 数组应该遵循像 `Array` 这样的形式,其中 `Element` 是这个数组中唯一允许存在的数据类型。我们也可以使用像 `[Element]` 这样的简单语法。尽管两种形式在功能上是一样的,但是推荐较短的那种,而且在本文中都会使用这种形式来使用数组。 -### 创建一个空数组 {#creating_an_empty_array} +### 创建一个空数组 {#creating-an-empty-array} 我们可以使用构造语法来创建一个由特定数据类型构成的空数组: @@ -51,7 +51,7 @@ someInts = [] // someInts 现在是空数组,但是仍然是 [Int] 类型的。 ``` -### 创建一个带有默认值的数组 {#creating_an_array_with_a_default_value} +### 创建一个带有默认值的数组 {#creating-an-array-with-a-default-value} Swift 中的 `Array` 类型还提供一个可以创建特定大小并且所有数据都被默认的构造方法。我们可以把准备加入新数组的数据项数量(`count`)和适当类型的初始值(`repeating`)传入数组构造函数: @@ -60,7 +60,7 @@ var threeDoubles = Array(repeating: 0.0, count: 3) // threeDoubles 是一种 [Double] 数组,等价于 [0.0, 0.0, 0.0] ``` -### 通过两个数组相加创建一个数组 {#creating_an_array_by_adding_two_arrays_together} +### 通过两个数组相加创建一个数组 {#creating-an-array-by-adding-two-arrays-together} 我们可以使用加法操作符(`+`)来组合两种已存在的相同类型数组。新数组的数据类型会被从两个数组的数据类型中推断出来: @@ -72,7 +72,7 @@ var sixDoubles = threeDoubles + anotherThreeDoubles // sixDoubles 被推断为 [Double],等价于 [0.0, 0.0, 0.0, 2.5, 2.5, 2.5] ``` -### 用数组字面量构造数组 {#creating_an_array_with_an_array_literals} +### 用数组字面量构造数组 {#creating-an-array-with-an-array-literals} 我们可以使用*数组字面量*来进行数组构造,这是一种用一个或者多个数值构造数组的简单方法。数组字面量是一系列由逗号分割并由方括号包含的数值: @@ -101,7 +101,7 @@ var shoppingList = ["Eggs", "Milk"] 因为所有数组字面量中的值都是相同的类型,Swift 可以推断出 `[String]` 是 `shoppingList` 中变量的正确类型。 -### 访问和修改数组 {#accessing_and_modifying_an_array} +### 访问和修改数组 {#accessing-and-modifying-an-array} 我们可以通过数组的方法和属性来访问和修改数组,或者使用下标语法。 @@ -207,7 +207,7 @@ let apples = shoppingList.removeLast() // apples 常量的值现在等于“Apples”字符串 ``` -### 数组的遍历 {#iterating_over_an_array} +### 数组的遍历 {#iterating-over-an-array} 我们可以使用 `for-in` 循环来遍历所有数组中的数据项: @@ -246,7 +246,7 @@ for (index, value) in shoppingList.enumerated() { > > 关于使用 `Foundation` 和 `Cocoa` 中 `Set` 的知识,参见 [*Using Swift with Cocoa and Obejective-C(Swift 4.1)*](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/index.html#//apple_ref/doc/uid/TP40014216) 中[使用 Cocoa 数据类型](https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/WorkingWithCocoaDataTypes.html#//apple_ref/doc/uid/TP40014216-CH6)部分。 -### 集合类型的哈希值 {#hash_values_for_set_types} +### 集合类型的哈希值 {#hash-values-for-set-types} 一个类型为了存储在集合中,该类型必须是*可哈希化*的——也就是说,该类型必须提供一个方法来计算它的*哈希值*。一个哈希值是 `Int` 类型的,相等的对象哈希值必须相同,比如 `a==b`,因此必须 `a.hashValue == b.hashValue`。 @@ -264,11 +264,11 @@ Swift 的所有基本类型(比如 `String`、`Int`、`Double` 和 `Bool`) 关于遵循协议的更多信息,请看[协议](./22_Protocols.md)。 -### 集合类型语法 {#set_type_syntax} +### 集合类型语法 {#set-type-syntax} Swift 中的 `Set` 类型被写为 `Set`,这里的 `Element` 表示 `Set` 中允许存储的类型,和数组不同的是,集合没有等价的简化形式。 -### 创建和构造一个空的集合 {#creating_and_initalizing_an_empty_set} +### 创建和构造一个空的集合 {#creating-and-initalizing-an-empty-set} 你可以通过构造器语法创建一个特定类型的空集合: @@ -291,7 +291,7 @@ letters = [] // letters 现在是一个空的 Set,但是它依然是 Set 类型 ``` -### 用数组字面量创建集合 {#creating_a_set_with_an_array_literal} +### 用数组字面量创建集合 {#creating-a-set-with-an-array-literal} 你可以使用数组字面量来构造集合,并且可以使用简化形式写一个或者多个值作为集合元素。 @@ -316,7 +316,7 @@ var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"] 由于数组字面量中的所有元素类型相同,Swift 可以推断出 `Set` 作为 `favoriteGenres` 变量的正确类型。 -### 访问和修改一个集合 {#accesing_and_modifying_a_set} +### 访问和修改一个集合 {#accesing-and-modifying-a-set} 你可以通过 `Set` 的属性和方法来访问和修改一个 `Set`。 @@ -367,7 +367,7 @@ if favoriteGenres.contains("Funk") { // 打印“It's too funky in here.” ``` -### 遍历一个集合 {#iterating_over_a_set} +### 遍历一个集合 {#iterating-over-a-set} 你可以在一个 `for-in` 循环中遍历一个 `Set` 中的所有值。 @@ -393,11 +393,11 @@ for genre in favoriteGenres.sorted() { // Jazz ``` -## 集合操作 {#performing_set_operations} +## 集合操作 {#performing-set-operations} 你可以高效地完成 `Set` 的一些基本操作,比如把两个集合组合到一起,判断两个集合共有元素,或者判断两个集合是否全包含,部分包含或者不相交。 -### 基本集合操作 {#fundamental_set_operations} +### 基本集合操作 {#fundamental-set-operations} 下面的插图描述了两个集合 `a` 和 `b`,以及通过阴影部分的区域显示集合各种操作的结果。 @@ -423,7 +423,7 @@ oddDigits.symmetricDifference(singleDigitPrimeNumbers).sorted() // [1, 2, 9] ``` -### 集合成员关系和相等 {#set_membership_and_equality} +### 集合成员关系和相等 {#set-membership-and-equality} 下面的插图描述了三个集合 `a`、`b` 和 `c`,以及通过重叠区域表述集合间共享的元素。集合 `a` 是集合 `b` 的父集合,因为 `a` 包含了 `b` 中所有的元素,相反的,集合 `b` 是集合 `a` 的子集合,因为属于 `b` 的元素也被 `a` 包含。集合 `b` 和集合 `c` 彼此不关联,因为它们之间没有共同的元素。 @@ -458,7 +458,7 @@ farmAnimals.isDisjoint(with: cityAnimals) > > 更多关于在 `Foundation` 和 `Cocoa` 中使用 `Dictionary` 类型的信息,参见 [*Using Swift with Cocoa and Obejective-C(Swift 4.1)*](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/index.html#//apple_ref/doc/uid/TP40014216) 中[使用 Cocoa 数据类型](https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/WorkingWithCocoaDataTypes.html#//apple_ref/doc/uid/TP40014216-CH6)部分。 -### 字典类型简化语法 {#dictionary_type_shorthand_syntax} +### 字典类型简化语法 {#dictionary-type-shorthand-syntax} Swift 的字典使用 `Dictionary` 定义,其中 `Key` 是字典中键的数据类型,`Value` 是字典中对应于这些键所存储值的数据类型。 @@ -468,7 +468,7 @@ Swift 的字典使用 `Dictionary` 定义,其中 `Key` 是字典 我们也可以用 `[Key: Value]` 这样简化的形式去创建一个字典类型。虽然这两种形式功能上相同,但是后者是首选,并且这本指导书涉及到字典类型时通篇采用后者。 -### 创建一个空字典 {#creating_an_empty_dictionary} +### 创建一个空字典 {#creating-an-empty-dictionary} 我们可以像数组一样使用构造语法创建一个拥有确定类型的空字典: @@ -488,7 +488,7 @@ namesOfIntegers = [:] // namesOfIntegers 又成为了一个 [Int: String] 类型的空字典 ``` -### 用字典字面量创建字典 {#creating_a_dictionary_with_a_dictionary_literal} +### 用字典字面量创建字典 {#creating-a-dictionary-with-a-dictionary-literal} 我们可以使用*字典字面量*来构造字典,这和我们刚才介绍过的数组字面量拥有相似语法。字典字面量是一种将一个或多个键值对写作 `Dictionary` 集合的快捷途径。 @@ -523,7 +523,7 @@ var airports = ["YYZ": "Toronto Pearson", "DUB": "Dublin"] 因为这个语句中所有的键和值都各自拥有相同的数据类型,Swift 可以推断出 `Dictionary` 是 `airports` 字典的正确类型。 -### 访问和修改字典 {#accessing_and_modifying_a_dictionary} +### 访问和修改字典 {#accessing-and-modifying-a-dictionary} 我们可以通过字典的方法和属性来访问和修改字典,或者通过使用下标语法。 @@ -603,7 +603,7 @@ if let removedValue = airports.removeValue(forKey: "DUB") { // 打印“The removed airport's name is Dublin Airport.” ``` -### 字典遍历 {#iterating_over_a_dictionary} +### 字典遍历 {#iterating-over-a-dictionary} 我们可以使用 `for-in` 循环来遍历某个字典中的键值对。每一个字典中的数据项都以 `(key, value)` 元组形式返回,并且我们可以使用临时常量或者变量来分解这些元组: diff --git a/source/chapter2/05_Control_Flow.md b/source/chapter2/05_Control_Flow.md index 015bf860..1371697c 100755 --- a/source/chapter2/05_Control_Flow.md +++ b/source/chapter2/05_Control_Flow.md @@ -6,7 +6,7 @@ Swift 还提供了 `for-in` 循环,用来更简单地遍历数组(Array) Swift 的 `switch` 语句比许多类 C 语言要更加强大。case 还可以匹配很多不同的模式,包括范围匹配,元组(tuple)和特定类型匹配。`switch` 语句的 case 中匹配的值可以声明为临时常量或变量,在 case 作用域内使用,也可以配合 `where` 来描述更复杂的匹配条件。 -## For-In 循环 {#for_in_loops} +## For-In 循环 {#for-in-loops} 你可以使用 `for-in` 循环来遍历一个集合中的所有元素,例如数组中的元素、范围内的数字或者字符串中的字符。 @@ -97,7 +97,7 @@ for tickMark in stride(from: 3, through: hours, by: hourInterval) { } ``` -## While 循环 {#while_loops} +## While 循环 {#while-loops} `while` 循环会一直运行一段语句直到条件变成 `false`。这类循环适合使用在第一次迭代前,迭代次数未知的情况下。Swift 提供两种 `while` 循环形式: @@ -174,7 +174,7 @@ print("Game over!") `while` 循环比较适合本例中的这种情况,因为在 `while` 循环开始时,我们并不知道游戏要跑多久,只有在达成指定条件时循环才会结束。 -### Repeat-While {#repeat_while} +### Repeat-While {#repeat-while} `while` 循环的另外一种形式是 `repeat-while`,它和 `while` 的区别是在判断循环条件之前,先执行一次循环的代码块。然后重复循环直到条件为 `false`。 @@ -222,7 +222,7 @@ print("Game over!") 循环条件(`while square < finalSquare`)和 `while` 方式相同,但是只会在循环结束后进行计算。在这个游戏中,`repeat-while` 表现得比 `while` 循环更好。`repeat-while` 方式会在条件判断 `square` 没有超出后直接运行 `square += board[square]`,这种方式可以比起前面 `while` 循环的版本,可以省去数组越界的检查。 -## 条件语句 {#conditional_statement} +## 条件语句 {#conditional-statement} 根据特定的条件执行特定的代码通常是十分有用的。当错误发生时,你可能想运行额外的代码;或者,当值太大或太小时,向用户显示一条消息。要实现这些功能,你就需要使用*条件语句*。 @@ -326,7 +326,7 @@ default: 在这个例子中,第一个 case 分支用于匹配第一个英文字母 `a`,第二个 case 分支用于匹配最后一个字母 `z`。因为 `switch` 语句必须有一个 case 分支用于覆盖所有可能的字符,而不仅仅是所有的英文字母,所以 switch 语句使用 `default` 分支来匹配除了 `a` 和 `z` 外的所有值,这个分支保证了 swith 语句的完备性。 -#### 不存在隐式的贯穿 {#no_implicit_fallthrough} +#### 不存在隐式的贯穿 {#no-implicit-fallthrough} 与 C 和 Objective-C 中的 `switch` 语句不同,在 Swift 中,当匹配的 case 分支中的代码执行完毕后,程序会终止 `switch` 语句,而不会继续执行下一个 case 分支。这也就是说,不需要在 case 分支中显式地使用 `break` 语句。这使得 `switch` 语句更安全、更易用,也避免了漏写 `break` 语句导致多个语言被执行的错误。 @@ -369,7 +369,7 @@ default: > > 如果想要显式贯穿 case 分支,请使用 `fallthrough` 语句,详情请参考[贯穿](#fallthrough)。 -#### 区间匹配 {#interval_matching} +#### 区间匹配 {#interval-matching} case 分支的模式也可以是一个值的区间。下面的例子展示了如何使用区间匹配来输出任意数字对应的自然语言格式: @@ -426,7 +426,7 @@ default: 不像 C 语言,Swift 允许多个 case 匹配同一个值。实际上,在这个例子中,点 (0, 0)可以匹配所有_四个 case_。但是,如果存在多个匹配,那么只会执行第一个被匹配到的 case 分支。考虑点 (0, 0)会首先匹配 `case (0, 0)`,因此剩下的能够匹配的分支都会被忽视掉。 -#### 值绑定(Value Bindings) {#value_bindings} +#### 值绑定(Value Bindings) {#value-bindings} case 分支允许将匹配的值声明为临时常量或变量,并且在 case 分支体内使用 —— 这种行为被称为*值绑定*(value binding),因为匹配的值在 case 分支体内,与临时的常量或变量绑定。 @@ -482,7 +482,7 @@ case let (x, y): 就像是值绑定中的例子,由于最后一个 case 分支匹配了余下所有可能的值,`switch` 语句就已经完备了,因此不需要再书写默认分支。 -#### 复合型 Cases {#compound_cases} +#### 复合型 Cases {#compound-cases} 当多个条件可以使用同一种方法来处理时,可以将这几种可能放在同一个 `case` 后面,并且用逗号隔开。当 case 后面的任意一种模式匹配的时候,这条分支就会被匹配。并且,如果匹配列表过长,还可以分行书写: @@ -517,7 +517,7 @@ default: 上面的 case 有两个模式:`(let distance, 0)` 匹配了在 x 轴上的值,`(0, let distance)` 匹配了在 y 轴上的值。两个模式都绑定了 `distance`,并且 `distance` 在两种模式下,都是整型——这意味着分支体内的代码,只要 case 匹配,都可以获取到 `distance` 值。 -## 控制转移语句 {#control_transfer_statements} +## 控制转移语句 {#control-transfer-statements} 控制转移语句改变你代码的执行顺序,通过它可以实现代码的跳转。Swift 有五种控制转移语句: @@ -556,11 +556,11 @@ print(puzzleOutput) `break` 语句会立刻结束整个控制流的执行。`break` 可以在 `switch` 或循环语句中使用,用来提前结束 `switch` 或循环语句。 -#### 循环语句中的 break {#break_in_a_loop_statement} +#### 循环语句中的 break {#break-in-a-loop-statement} 当在一个循环体中使用 `break` 时,会立刻中断该循环体的执行,然后跳转到表示循环体结束的大括号(`}`)后的第一行代码。不会再有本次循环的代码被执行,也不会再有下次的循环产生。 -#### Switch 语句中的 break {#break_in_a_switch_statement} +#### Switch 语句中的 break {#break-in-a-switch-statement} 当在一个 `switch` 代码块中使用 `break` 时,会立即中断该 `switch` 代码块的执行,并且跳转到表示 `switch` 代码块结束的大括号(`}`)后的第一行代码。 @@ -631,7 +631,7 @@ print(description) > > `fallthrough` 关键字不会检查它下一个将会落入执行的 case 中的匹配条件。`fallthrough` 简单地使代码继续连接到下一个 case 中的代码,这和 C 语言标准中的 `switch` 语句特性是一样的。 -### 带标签的语句 {#labeled_statements} +### 带标签的语句 {#labeled-statements} 在 Swift 中,你可以在循环体和条件语句中嵌套循环体和条件语句来创造复杂的控制流结构。并且,循环体和条件语句都可以使用 `break` 语句来提前结束整个代码块。因此,显式地指明 `break` 语句想要终止的是哪个循环体或者条件语句,会很有用。类似地,如果你有许多嵌套的循环体,显式指明 `continue` 语句想要影响哪一个循环体也会非常有用。 @@ -702,7 +702,7 @@ print("Game over!") > > 同时请注意,当调用 `continue gameLoop` 去跳转到下一次循环迭代时,这里使用 `gameLoop` 标签并不是严格必须的。因为在这个游戏中,只有一个循环体,所以 `continue` 语句会影响到哪个循环体是没有歧义的。然而,`continue` 语句使用 `gameLoop` 标签也是没有危害的。这样做符合标签的使用规则,同时参照旁边的 `break gameLoop`,能够使游戏的逻辑更加清晰和易于理解。 -## 提前退出 {#early_exit} +## 提前退出 {#early-exit} 像 `if` 语句一样,`guard` 的执行取决于一个表达式的布尔值。我们可以使用 `guard` 语句来要求条件必须为真时,以执行 `guard` 语句后的代码。不同于 `if` 语句,一个 `guard` 语句总是有一个 `else` 从句,如果条件不为真则执行 `else` 从句中的代码。 @@ -736,7 +736,7 @@ greet(person: ["name": "Jane", "location": "Cupertino"]) 相比于可以实现同样功能的 `if` 语句,按需使用 `guard` 语句会提升我们代码的可读性。它可以使你的代码连贯的被执行而不需要将它包在 `else` 块中,它可以使你在紧邻条件判断的地方,处理违规的情况。 -## 检测 API 可用性 {#checking_api_availability} +## 检测 API 可用性 {#checking-api-availability} Swift 内置支持检查 API 可用性,这可以确保我们不会在当前部署机器上,不小心地使用了不可用的 API。 diff --git a/source/chapter2/06_Functions.md b/source/chapter2/06_Functions.md index fea07880..62a4a8ae 100755 --- a/source/chapter2/06_Functions.md +++ b/source/chapter2/06_Functions.md @@ -6,7 +6,7 @@ Swift 统一的函数语法非常的灵活,可以用来表示任何函数, 在 Swift 中,每个函数都有一个由函数的参数值类型和返回值类型组成的类型。你可以把函数类型当做任何其他普通变量类型一样处理,这样就可以更简单地把函数当做别的函数的参数,也可以从其他函数中返回函数。函数的定义可以写在其他函数定义中,这样可以在嵌套函数范围内实现功能封装。 -## 函数的定义与调用 {#Defining_and_Calling_Functions} +## 函数的定义与调用 {#Defining-and-Calling-Functions} 当你定义一个函数时,你可以定义一个或多个有名字和类型的值,作为函数的输入,称为*参数*,也可以定义某种类型的值作为函数执行结束时的输出,称为*返回类型*。 @@ -52,11 +52,11 @@ print(greetAgain(person: "Anna")) // 打印“Hello again, Anna!” ``` -## 函数参数与返回值 {#Function_Parameters_and_Return_Values} +## 函数参数与返回值 {#Function-Parameters-and-Return-Values} 函数参数与返回值在 Swift 中非常的灵活。你可以定义任何类型的函数,包括从只带一个未名参数的简单函数到复杂的带有表达性参数名和不同参数选项的复杂函数。 -### 无参数函数 {#functions_without_parameters} +### 无参数函数 {#functions-without-parameters} 函数可以没有参数。下面这个函数就是一个无参数函数,当被调用时,它返回固定的 `String` 消息: @@ -70,7 +70,7 @@ print(sayHelloWorld()) 尽管这个函数没有参数,但是定义中在函数名后还是需要一对圆括号。当被调用时,也需要在函数名后写一对圆括号。 -### 多参数函数 {#functions_with_multiple_parameters} +### 多参数函数 {#functions-with-multiple-parameters} 函数可以有多种输入参数,这些参数被包含在函数的括号之中,以逗号分隔。 @@ -90,7 +90,7 @@ print(greet(person: "Tim", alreadyGreeted: true)) 你可以通过在括号内使用逗号分隔来传递一个 `String` 参数值和一个标识为 `alreadyGreeted` 的 `Bool` 值,来调用 `greet(person:alreadyGreeted:)` 函数。注意这个函数和上面 `greet(person:)` 是不同的。虽然它们都有着同样的名字 `greet`,但是 `greet(person:alreadyGreeted:)` 函数需要两个参数,而 `greet(person:)` 只需要一个参数。 -### 无返回值函数 {#functions_without_return_values} +### 无返回值函数 {#functions-without-return-values} 函数可以没有返回值。下面是 `greet(person:)` 函数的另一个版本,这个函数直接打印一个 `String` 值,而不是返回它: @@ -130,7 +130,7 @@ printWithoutCounting(string: "hello, world") > > 返回值可以被忽略,但定义了有返回值的函数必须返回一个值,如果在函数定义底部没有返回任何值,将导致编译时错误。 -### 多重返回值函数 {#functions_with_multiple_return_values} +### 多重返回值函数 {#functions-with-multiple-return-values} 你可以用元组(tuple)类型让多个值作为一个复合值从函数中返回。 @@ -165,7 +165,7 @@ print("min is \(bounds.min) and max is \(bounds.max)") 需要注意的是,元组的成员不需要在元组从函数中返回时命名,因为它们的名字已经在函数返回类型中指定了。 -### 可选元组返回类型 {#optional_tuple_return_types} +### 可选元组返回类型 {#optional-tuple-return-types} 如果函数返回的元组类型有可能整个元组都“没有值”,你可以使用*可选的* 元组返回类型反映整个元组可以是 `nil` 的事实。你可以通过在元组类型的右括号后放置一个问号来定义一个可选元组,例如 `(Int, Int)?` 或 `(String, Int, Bool)?` @@ -202,7 +202,7 @@ if let bounds = minMax(array: [8, -6, 2, 109, 3, 71]) { // 打印“min is -6 and max is 109” ``` -## 函数参数标签和参数名称 {#Function_Argument_Labels_and_Parameter_Names} +## 函数参数标签和参数名称 {#Function-Argument-Labels-and-Parameter-Names} 每个函数参数都有一个*参数标签(argument label)*以及一个*参数名称(parameter name)*。参数标签在调用函数的时候使用;调用的时候需要将函数的参数标签写在对应的参数前面。参数名称在函数的实现中使用。默认情况下,函数参数使用参数名称来作为它们的参数标签。 @@ -215,7 +215,7 @@ someFunction(firstParameterName: 1, secondParameterName: 2) 所有的参数都必须有一个独一无二的名字。虽然多个参数拥有同样的参数标签是可能的,但是一个唯一的函数标签能够使你的代码更具可读性。 -### 指定参数标签 {#specifying_argument_labels} +### 指定参数标签 {#specifying-argument-labels} 你可以在参数名称前指定它的参数标签,中间以空格分隔: @@ -237,7 +237,7 @@ print(greet(person: "Bill", from: "Cupertino")) 参数标签的使用能够让一个函数在调用时更有表达力,更类似自然语言,并且仍保持了函数内部的可读性以及清晰的意图。 -### 忽略参数标签 {#omitting_argument_labels} +### 忽略参数标签 {#omitting-argument-labels} 如果你不希望为某个参数添加一个标签,可以使用一个下划线(`_`)来代替一个明确的参数标签。 @@ -250,7 +250,7 @@ someFunction(1, secondParameterName: 2) 如果一个参数有一个标签,那么在调用的时候必须使用标签来标记这个参数。 -### 默认参数值 {#default_parameter_values} +### 默认参数值 {#default-parameter-values} 你可以在函数体中通过给参数赋值来为任意一个参数定义*默认值(Deafult Value)*。当默认值被定义后,调用这个函数时可以忽略这个参数。 @@ -264,7 +264,7 @@ someFunction(parameterWithoutDefault: 4) // parameterWithDefault = 12 将不带有默认值的参数放在函数参数列表的最前。一般来说,没有默认值的参数更加的重要,将不带默认值的参数放在最前保证在函数调用时,非默认参数的顺序是一致的,同时也使得相同的函数在不同情况下调用时显得更为清晰。 -### 可变参数 {#variadic_parameters} +### 可变参数 {#variadic-parameters} 一个*可变参数(variadic parameter)*可以接受零个或多个值。函数调用时,你可以用可变参数来指定函数参数可以被传入不确定数量的输入值。通过在变量类型名后面加入(`...`)的方式来定义可变参数。 @@ -290,7 +290,7 @@ arithmeticMean(3, 8.25, 18.75) > > 一个函数最多只能拥有一个可变参数。 -### 输入输出参数 {#in_out_parameters} +### 输入输出参数 {#in-out-parameters} 函数参数默认是常量。试图在函数体中更改参数值将会导致编译错误。这意味着你不能错误地更改参数值。如果你想要一个函数可以修改参数的值,并且想要在这些修改在函数调用结束后仍然存在,那么就应该把这个参数定义为*输入输出参数(In-Out Parameters)*。 @@ -330,7 +330,7 @@ print("someInt is now \(someInt), and anotherInt is now \(anotherInt)") > > 输入输出参数和返回值是不一样的。上面的 `swapTwoInts` 函数并没有定义任何返回值,但仍然修改了 `someInt` 和 `anotherInt` 的值。输入输出参数是函数对函数体外产生影响的另一种方式。 -## 函数类型 {#Function_Types} +## 函数类型 {#Function-Types} 每个函数都有种特定的*函数类型*,函数的类型由函数的参数类型和返回类型组成。 @@ -361,7 +361,7 @@ func printHelloWorld() { 这个函数的类型是:`() -> Void`,或者叫“没有参数,并返回 `Void` 类型的函数”。 -### 使用函数类型 {#using_function_types} +### 使用函数类型 {#using-function-types} 在 Swift 中,使用函数类型就像使用其他类型一样。例如,你可以定义一个类型为函数的常量或变量,并将适当的函数赋值给它: @@ -397,7 +397,7 @@ let anotherMathFunction = addTwoInts // anotherMathFunction 被推断为 (Int, Int) -> Int 类型 ``` -### 函数类型作为参数类型 {#function_types_as_parameter_types} +### 函数类型作为参数类型 {#function-types-as-parameter-types} 你可以用 `(Int, Int) -> Int` 这样的函数类型作为另一个函数的参数类型。这样你可以将函数的一部分实现留给函数的调用者来提供。 @@ -417,7 +417,7 @@ printMathResult(addTwoInts, 3, 5) `printMathResult(_:_:_:)` 函数的作用就是输出另一个适当类型的数学函数的调用结果。它不关心传入函数是如何实现的,只关心传入的函数是不是一个正确的类型。这使得 `printMathResult(_:_:_:)` 能以一种类型安全(type-safe)的方式将一部分功能转给调用者实现。 -### 函数类型作为返回类型 {#function_types_as_return_types} +### 函数类型作为返回类型 {#function-types-as-return-types} 你可以用函数类型作为另一个函数的返回类型。你需要做的是在返回箭头(->)后写一个完整的函数类型。 @@ -466,7 +466,7 @@ print("zero!") // zero! ``` -## 嵌套函数 {#Nested_Functions} +## 嵌套函数 {#Nested-Functions} 到目前为止本章中你所见到的所有函数都叫*全局函数(global functions)*,它们定义在全局域中。你也可以把函数定义在别的函数体中,称作 *嵌套函数(nested functions)*。 diff --git a/source/chapter2/07_Closures.md b/source/chapter2/07_Closures.md index 84a07220..c05689b7 100755 --- a/source/chapter2/07_Closures.md +++ b/source/chapter2/07_Closures.md @@ -21,13 +21,13 @@ Swift 的闭包表达式拥有简洁的风格,并鼓励在常见场景中进 * 参数名称缩写 * 尾随闭包语法 -## 闭包表达式 {#closure_expressions} +## 闭包表达式 {#closure-expressions} [嵌套函数](./06_Functions.md#Nested_Functions)作为复杂函数的一部分时,它自包含代码块式的定义和命名形式在使用上带来了方便。当然,编写未完整声明和没有函数名的类函数结构代码是很有用的,尤其是在编码中涉及到函数作为参数的那些方法时。 *闭包表达式*是一种构建内联闭包的方式,它的语法简洁。在保证不丢失它语法清晰明了的同时,闭包表达式提供了几种优化的语法简写形式。下面通过对 `sorted(by:)` 这一个案例的多次迭代改进来展示这个过程,每次迭代都使用了更加简明的方式描述了相同功能。。 -### 排序方法 {#the_sorted_function} +### 排序方法 {#the-sorted-function} Swift 标准库提供了名为 `sorted(by:)` 的方法,它会基于你提供的排序闭包表达式的判断结果对数组中的值(类型确定)进行排序。一旦它完成排序过程,`sorted(by:)` 方法会返回一个与旧数组类型大小相同类型的新数组,该数组的元素有着正确的排序顺序。原数组不会被 `sorted(by:)` 方法修改。 @@ -55,7 +55,7 @@ var reversedNames = names.sorted(by: backward) 然而,以这种方式来编写一个实际上很简单的表达式(`a > b`),确实太过繁琐了。对于这个例子来说,利用闭包表达式语法可以更好地构造一个内联排序闭包。 -### 闭包表达式语法 {#closure_expression_syntax} +### 闭包表达式语法 {#closure-expression-syntax} 闭包表达式语法有如下的一般形式: @@ -87,7 +87,7 @@ reversedNames = names.sorted(by: { (s1: String, s2: String) -> Bool in return s1 该例中 `sorted(by:)` 方法的整体调用保持不变,一对圆括号仍然包裹住了方法的整个参数。然而,参数现在变成了内联闭包。 -### 根据上下文推断类型 {#inferring_type_from_context} +### 根据上下文推断类型 {#inferring-type-from-context} 因为排序闭包函数是作为 `sorted(by:)` 方法的参数传入的,Swift 可以推断其参数和返回值的类型。`sorted(by:)` 方法被一个字符串数组调用,因此其参数必须是 `(String, String) -> Bool` 类型的函数。这意味着 `(String, String)` 和 `Bool` 类型并不需要作为闭包表达式定义的一部分。因为所有的类型都可以被正确推断,返回箭头(`->`)和围绕在参数周围的括号也可以被省略: @@ -99,7 +99,7 @@ reversedNames = names.sorted(by: { s1, s2 in return s1 > s2 } ) 尽管如此,你仍然可以明确写出有着完整格式的闭包。如果完整格式的闭包能够提高代码的可读性,则我们更鼓励采用完整格式的闭包。而在 `sorted(by:)` 方法这个例子里,显然闭包的目的就是排序。由于这个闭包是为了处理字符串数组的排序,因此读者能够推测出这个闭包是用于字符串处理的。 -### 单表达式闭包的隐式返回 {#implicit_returns_from_single_expression_closures} +### 单表达式闭包的隐式返回 {#implicit-returns-from-single-expression-closures} 单行表达式闭包可以通过省略 `return` 关键字来隐式返回单行表达式的结果,如上版本的例子可以改写为: @@ -109,7 +109,7 @@ reversedNames = names.sorted(by: { s1, s2 in s1 > s2 } ) 在这个例子中,`sorted(by:)` 方法的参数类型明确了闭包必须返回一个 `Bool` 类型值。因为闭包函数体只包含了一个单一表达式(`s1 > s2`),该表达式返回 `Bool` 类型值,因此这里没有歧义,`return` 关键字可以省略。 -### 参数名称缩写 {#shorthand_argument_names} +### 参数名称缩写 {#shorthand-argument-names} Swift 自动为内联闭包提供了参数名称缩写功能,你可以直接通过 `$0`,`$1`,`$2` 来顺序调用闭包的参数,以此类推。 @@ -121,7 +121,7 @@ reversedNames = names.sorted(by: { $0 > $1 } ) 在这个例子中,`$0` 和 `$1` 表示闭包中第一个和第二个 `String` 类型的参数。 -### 运算符方法 {#operator_methods} +### 运算符方法 {#operator-methods} 实际上还有一种更*简短的*方式来编写上面例子中的闭包表达式。Swift 的 `String` 类型定义了关于大于号(`>`)的字符串实现,其作为一个函数接受两个 `String` 类型的参数并返回 `Bool` 类型的值。而这正好与 `sorted(by:)` 方法的参数需要的函数类型相符合。因此,你可以简单地传递一个大于号,Swift 可以自动推断找到系统自带的那个字符串函数的实现: @@ -131,7 +131,7 @@ reversedNames = names.sorted(by: >) 更多关于运算符方法的内容请查看[运算符方法](./26_Advanced_Operators.md#operator_methods)。 -## 尾随闭包 {#trailing_closures} +## 尾随闭包 {#trailing-closures} 如果你需要将一个很长的闭包表达式作为最后一个参数传递给函数,将这个闭包替换成为尾随闭包的形式很有用。尾随闭包是一个书写在函数圆括号之后的闭包表达式,函数支持将其作为最后一个参数调用。在使用尾随闭包时,你不用写出它的参数标签: @@ -214,7 +214,7 @@ let strings = numbers.map { 在上面的例子中,通过尾随闭包语法,优雅地在函数后封装了闭包的具体功能,而不再需要将整个闭包包裹在 `map(_:)` 方法的括号内。 -## 值捕获 {#capturing_values} +## 值捕获 {#capturing-values} 闭包可以在其被定义的上下文中*捕获*常量或变量。即使定义这些常量和变量的原作用域已经不存在,闭包仍然可以在闭包函数体内引用和修改这些值。 @@ -292,7 +292,7 @@ incrementByTen() > > 如果你将闭包赋值给一个类实例的属性,并且该闭包通过访问该实例或其成员而捕获了该实例,你将在闭包和该实例间创建一个循环强引用。Swift 使用捕获列表来打破这种循环强引用。更多信息,请参考[闭包引起的循环强引用](./23_Automatic_Reference_Counting.md#strong_reference_cycles_for_closures)。 -## 闭包是引用类型 {#closures_are_reference_types} +## 闭包是引用类型 {#closures-are-reference-types} 上面的例子中,`incrementBySeven` 和 `incrementByTen` 都是常量,但是这些常量指向的闭包仍然可以增加其捕获的变量的值。这是因为函数和闭包都是*引用类型*。 @@ -306,7 +306,7 @@ alsoIncrementByTen() // 返回的值为50 ``` -## 逃逸闭包 {#escaping_closures} +## 逃逸闭包 {#escaping-closures} 当一个闭包作为参数传到一个函数中,但是这个闭包在函数返回之后才被执行,我们称该闭包从函数中*逃逸*。当你定义接受闭包作为参数的函数时,你可以在参数名之前标注 `@escaping`,用来指明这个闭包是允许“逃逸”出这个函数的。 diff --git a/source/chapter2/08_Enumerations.md b/source/chapter2/08_Enumerations.md index ab9a04fb..e39b64c1 100755 --- a/source/chapter2/08_Enumerations.md +++ b/source/chapter2/08_Enumerations.md @@ -10,7 +10,7 @@ 想了解更多相关信息,请参见[属性](./10_Properties.md),[方法](./11_Methods.md),[构造过程](./14_Initialization.md),[扩展](./20_Extensions.md)和[协议](./21_Protocols.md)。 -## 枚举语法 {#enumeration_syntax} +## 枚举语法 {#enumeration-syntax} 使用 `enum` 关键词来创建枚举并且把它们的整个定义放在一对大括号内: @@ -59,7 +59,7 @@ directionToHead = .east 当 `directionToHead` 的类型已知时,再次为其赋值可以省略枚举类型名。在使用具有显式类型的枚举值时,这种写法让代码具有更好的可读性。 -## 使用 Switch 语句匹配枚举值 {#matching_enumeration_values_with_a_switch_statement} +## 使用 Switch 语句匹配枚举值 {#matching-enumeration-values-with-a-switch-statement} 你可以使用 `switch` 语句匹配单个枚举值: @@ -99,7 +99,7 @@ default: // 打印“Mostly harmless” ``` -## 枚举成员的遍历 {#iterating_over_enumeration_cases} +## 枚举成员的遍历 {#iterating-over-enumeration-cases} 在一些情况下,你会需要得到一个包含枚举所有成员的集合。可以通过如下代码实现: @@ -127,7 +127,7 @@ for beverage in Beverage.allCases { 在前面的例子中,使用的语法表明这个枚举遵循 [CaseIterable](https://developer.apple.com/documentation/swift/caseiterable) 协议。想了解 protocols 相关信息,请参见[协议](./21_Protocols.md)。 -## 关联值 {#associated_values} +## 关联值 {#associated-values} 枚举语法那一小节的例子演示了如何定义和分类枚举的成员。你可以为 `Planet.earth` 设置一个常量或者变量,并在赋值之后查看这个值。然而,有时候把其他类型的值和成员值一起存储起来会很有用。这额外的信息称为*关联值*,并且你每次在代码中使用该枚举成员时,还可以修改这个关联值。 @@ -198,7 +198,7 @@ case let .qrCode(productCode): // 打印“QR code: ABCDEFGHIJKLMNOP.” ``` -## 原始值 {#raw_values} +## 原始值 {#raw-values} 在[关联值](#associated_values)小节的条形码例子中,演示了如何声明存储不同类型关联值的枚举成员。作为关联值的替代选择,枚举成员可以被默认值(称为*原始值*)预填充,这些原始值的类型必须相同。 @@ -220,7 +220,7 @@ enum ASCIIControlCharacter: Character { > > 原始值和关联值是不同的。原始值是在定义枚举时被预先填充的值,像上述三个 ASCII 码。对于一个特定的枚举成员,它的原始值始终不变。关联值是创建一个基于枚举成员的常量或变量时才设置的值,枚举成员的关联值可以变化。 -### 原始值的隐式赋值 {#implicitly_assigned_raw_values} +### 原始值的隐式赋值 {#implicitly-assigned-raw-values} 在使用原始值为整数或者字符串类型的枚举时,不需要显式地为每一个枚举成员设置原始值,Swift 将会自动为你赋值。 @@ -258,7 +258,7 @@ let sunsetDirection = CompassPoint.west.rawValue // sunsetDirection 值为 "west" ``` -### 使用原始值初始化枚举实例 {#initializing_from_a_raw_value} +### 使用原始值初始化枚举实例 {#initializing-from-a-raw-value} 如果在定义枚举类型的时候使用了原始值,那么将会自动获得一个初始化方法,这个方法接收一个叫做 `rawValue` 的参数,参数类型即为原始值类型,返回值则是枚举成员或 `nil`。你可以使用这个初始化方法来创建一个新的枚举实例。 @@ -294,7 +294,7 @@ if let somePlanet = Planet(rawValue: positionToFind) { 这个例子使用了可选绑定(optional binding),试图通过原始值 `11` 来访问一个行星。`if let somePlanet = Planet(rawValue: 11)` 语句创建了一个可选 `Planet`,如果可选 `Planet` 的值存在,就会赋值给 `somePlanet`。在这个例子中,无法检索到位置为 `11` 的行星,所以 `else` 分支被执行。 -## 递归枚举 {#recursive_enumerations} +## 递归枚举 {#recursive-enumerations} *递归枚举*是一种枚举类型,它有一个或多个枚举成员使用该枚举类型的实例作为关联值。使用递归枚举时,编译器会插入一个间接层。你可以在枚举成员前加上 `indirect` 来表示该成员可递归。 diff --git a/source/chapter2/09_Structures_And_Classes.md b/source/chapter2/09_Structures_And_Classes.md index 58e3054b..e34733bc 100755 --- a/source/chapter2/09_Structures_And_Classes.md +++ b/source/chapter2/09_Structures_And_Classes.md @@ -8,7 +8,7 @@ > > 通常一个*类*的实例被称为*对象*。然而相比其他语言,Swift 中结构体和类的功能更加相近,本章中所讨论的大部分功能都可以用在结构体或者类上。因此,这里会使用*实例*这个更通用的术语。 -## 结构体和类对比 {#comparing_structures_and_classes} +## 结构体和类对比 {#comparing-structures-and-classes} Swift 中结构体和类有很多共同点。两者都可以: @@ -32,7 +32,7 @@ Swift 中结构体和类有很多共同点。两者都可以: 类支持的附加功能是以增加复杂性为代价的。作为一般准则,优先使用结构体,因为它们更容易理解,仅在适当或必要时才使用类。实际上,这意味着你的大多数自定义数据类型都会是结构体和枚举。更多详细的比较参见 [在结构和类之间进行选择](https://developer.apple.com/documentation/swift/choosing_between_structures_and_classes)。 -### 类型定义的语法 {#definition_syntax} +### 类型定义的语法 {#definition-syntax} 结构体和类有着相似的定义方式。你通过 `struct` 关键字引入结构体,通过 `class` 关键字引入类,并将它们的具体定义放在一对大括号中: @@ -68,7 +68,7 @@ class VideoMode { 在上面的示例还定义了一个名为 `VideoMode` 的类,用来描述视频显示器的某个特定视频模式。这个类包含了四个可变的存储属性。第一个, `resolution`,被初始化为一个新的 `Resolution` 结构体的实例,属性类型被推断为 `Resolution`。新 `VideoMode` 实例同时还会初始化其它三个属性,它们分别是初始值为 `false` 的 `interlaced`(意为“非隔行视频”),初始值为 `0.0` 的 `frameRate`,以及值为可选 `String` 的 `name`。因为 `name` 是一个可选类型,它会被自动赋予一个默认值 `nil`,意为“没有 `name` 值”。 -### 结构体和类的实例 {#class_and_structure_instances} +### 结构体和类的实例 {#class-and-structure-instances} `Resolution` 结构体和 `VideoMode` 类的定义仅描述了什么是 `Resolution` 和 `VideoMode`。它们并没有描述一个特定的分辨率(resolution)或者视频模式(video mode)。为此,你需要创建结构体或者类的一个实例。 @@ -81,7 +81,7 @@ let someVideoMode = VideoMode() 结构体和类都使用构造器语法来创建新的实例。构造器语法的最简单形式是在结构体或者类的类型名称后跟随一对空括号,如 `Resolution()` 或 `VideoMode()`。通过这种方式所创建的类或者结构体实例,其属性均会被初始化为默认值。[构造过程](./14_Initialization.md) 章节会对类和结构体的初始化进行更详细的讨论。 -### 属性访问 {#accessing_properties} +### 属性访问 {#accessing-properties} 你可以通过使用*点语法*访问实例的属性。其语法规则是,实例名后面紧跟属性名,两者以点号(`.`)分隔,不带空格: @@ -107,7 +107,7 @@ print("The width of someVideoMode is now \(someVideoMode.resolution.width)") // 打印 "The width of someVideoMode is now 1280" ``` -### 结构体类型的成员逐一构造器 {#memberwise_initializers_for_structure_types} +### 结构体类型的成员逐一构造器 {#memberwise-initializers-for-structure-types} 所有结构体都有一个自动生成的*成员逐一构造器*,用于初始化新结构体实例中成员的属性。新实例中各个属性的初始值可以通过属性的名称传递到成员逐一构造器之中: @@ -117,7 +117,7 @@ let vga = Resolution(width: 640, height: 480) 与结构体不同,类实例没有默认的成员逐一构造器。[构造过程](./14_Initialization.md) 章节会对构造器进行更详细的讨论。 -## 结构体和枚举是值类型 {#structures_and_enumerations_are_value_types} +## 结构体和枚举是值类型 {#structures-and-enumerations-are-value-types} *值类型*是这样一种类型,当它被赋值给一个变量、常量或者被传递给一个函数的时候,其值会被*拷贝*。 @@ -185,7 +185,7 @@ print("The remembered direction is \(rememberedDirection)") 当 `rememberedDirection` 被赋予了 `currentDirection` 的值,实际上它被赋予的是值的一个拷贝。赋值过程结束后再修改 `currentDirection` 的值并不影响 `rememberedDirection` 所储存的原始值的拷贝。 -## 类是引用类型 {#classes_are_reference_types} +## 类是引用类型 {#classes-are-reference-types} 与值类型不同,*引用类型*在被赋予到一个变量、常量或者被传递到一个函数时,其值不会被拷贝。因此,使用的是已存在实例的引用,而不是其拷贝。 @@ -223,7 +223,7 @@ print("The frameRate property of tenEighty is now \(tenEighty.frameRate)") 需要注意的是 `tenEighty` 和 `alsoTenEighty` 被声明为常量而不是变量。然而你依然可以改变 `tenEighty.frameRate` 和 `alsoTenEighty.frameRate`,这是因为 `tenEighty` 和 `alsoTenEighty` 这两个常量的值并未改变。它们并不“存储”这个 `VideoMode` 实例,而仅仅是对 `VideoMode` 实例的引用。所以,改变的是底层 `VideoMode` 实例的 `frameRate` 属性,而不是指向 `VideoMode` 的常量引用的值。 -### 恒等运算符 {#identity_operators} +### 恒等运算符 {#identity-operators} 因为类是引用类型,所以多个常量和变量可能在幕后同时引用同一个类实例。(对于结构体和枚举来说,这并不成立。因为它们作为值类型,在被赋予到常量、变量或者传递到函数时,其值总是会被拷贝。) diff --git a/source/chapter2/10_Properties.md b/source/chapter2/10_Properties.md index 8a4f9bfd..d8432148 100755 --- a/source/chapter2/10_Properties.md +++ b/source/chapter2/10_Properties.md @@ -6,7 +6,7 @@ 另外,还可以定义属性观察器来监控属性值的变化,以此来触发自定义的操作。属性观察器可以添加到类本身定义的存储属性上,也可以添加到从父类继承的属性上。 -## 存储属性 {#stored_properties} +## 存储属性 {#stored-properties} 简单来说,一个存储属性就是存储在特定类或结构体实例里的一个常量或变量。存储属性可以是*变量存储属性*(用关键字 `var` 定义),也可以是*常量存储属性*(用关键字 `let` 定义)。 @@ -27,7 +27,7 @@ rangeOfThreeItems.firstValue = 6 `FixedLengthRange` 的实例包含一个名为 `firstValue` 的变量存储属性和一个名为 `length` 的常量存储属性。在上面的例子中,`length` 在创建实例的时候被初始化,且之后无法修改它的值,因为它是一个常量存储属性。 -### 常量结构体实例的存储属性 {#stored_properties_of_constant_structure_instances} +### 常量结构体实例的存储属性 {#stored-properties-of-constant-structure-instances} 如果创建了一个结构体实例并将其赋值给一个常量,则无法修改该实例的任何属性,即使被声明为可变属性也不行: @@ -44,7 +44,7 @@ rangeOfFourItems.firstValue = 6 属于*引用类型*的类则不一样。把一个引用类型的实例赋给一个常量后,依然可以修改该实例的可变属性。 -### 延时加载存储属性 {#lazy_stored_properties} +### 延时加载存储属性 {#lazy-stored-properties} *延时加载存储属性*是指当第一次被调用的时候才会计算其初始值的属性。在属性声明前使用 `lazy` 来标示一个延时加载存储属性。 @@ -96,13 +96,13 @@ print(manager.importer.fileName) > > 如果一个被标记为 `lazy` 的属性在没有初始化时就同时被多个线程访问,则无法保证该属性只会被初始化一次。 -### 存储属性和实例变量 {#stored_properties_and_instance_variables} +### 存储属性和实例变量 {#stored-properties-and-instance-variables} 如果您有过 Objective-C 经验,应该知道 Objective-C 为类实例存储值和引用提供两种方法。除了属性之外,还可以使用实例变量作为一个备份存储将变量值赋值给属性。 Swift 编程语言中把这些理论统一用属性来实现。Swift 中的属性没有对应的实例变量,属性的备份存储也无法直接访问。这就避免了不同场景下访问方式的困扰,同时也将属性的定义简化成一个语句。属性的全部信息——包括命名、类型和内存管理特征——作为类型定义的一部分,都定义在一个地方。 -## 计算属性 {#computed_properties} +## 计算属性 {#computed-properties} 除存储属性外,类、结构体和枚举可以定义*计算属性*。计算属性不直接存储值,而是提供一个 getter 和一个可选的 setter,来间接获取和设置其他属性或变量的值。 @@ -152,7 +152,7 @@ print("square.origin is now at (\(square.origin.x), \(square.origin.y))") Computed Properties sample -### 简化 Setter 声明 {#shorthand_setter_declaration} +### 简化 Setter 声明 {#shorthand-setter-declaration} 如果计算属性的 setter 没有定义表示新值的参数名,则可以使用默认名称 `newValue`。下面是使用了简化 setter 声明的 `Rect` 结构体代码: @@ -174,7 +174,7 @@ struct AlternativeRect { } ``` -### 只读计算属性 {#readonly_computed_properties} +### 只读计算属性 {#readonly-computed-properties} 只有 getter 没有 setter 的计算属性叫*只读计算属性*。只读计算属性总是返回一个值,可以通过点运算符访问,但不能设置新的值。 @@ -198,7 +198,7 @@ print("the volume of fourByFiveByTwo is \(fourByFiveByTwo.volume)") 这个例子定义了一个名为 `Cuboid` 的结构体,表示三维空间的立方体,包含 `width`、`height` 和 `depth` 属性。结构体还有一个名为 `volume` 的只读计算属性用来返回立方体的体积。为 `volume` 提供 setter 毫无意义,因为无法确定如何修改 `width`、`height` 和 `depth` 三者的值来匹配新的 `volume`。然而,`Cuboid` 提供一个只读计算属性来让外部用户直接获取体积是很有用的。 -## 属性观察器 {#property_observers} +## 属性观察器 {#property-observers} 属性观察器监控和响应属性值的变化,每次属性被设置值的时候都会调用属性观察器,即使新值和当前值相同的时候也不例外。 @@ -258,7 +258,7 @@ stepCounter.totalSteps = 896 > > 如果将带有观察器的属性通过 in-out 方式传入函数,`willSet` 和 `didSet` 也会调用。这是因为 in-out 参数采用了拷入拷出内存模式:即在函数内部使用的是参数的 copy,函数结束后,又对参数重新赋值。关于 in-out 参数详细的介绍,请参考[输入输出参数](../chapter3/05_Declarations.html#in-out_parameters) -## 全局变量和局部变量 {#global_and_local_variables} +## 全局变量和局部变量 {#global-and-local-variables} 计算属性和观察属性所描述的功能也可以用于*全局变量*和*局部变量*。全局变量是在函数、方法、闭包或任何类型之外定义的变量。局部变量是在函数、方法或闭包内部定义的变量。 @@ -272,7 +272,7 @@ stepCounter.totalSteps = 896 > > 局部范围的常量和变量从不延迟计算。 -## 类型属性 {#type_properties} +## 类型属性 {#type-properties} 实例属性属于一个特定类型的实例,每创建一个实例,实例都拥有属于自己的一套属性值,实例之间的属性相互独立。 @@ -288,7 +288,7 @@ stepCounter.totalSteps = 896 > > 存储型类型属性是延迟初始化的,它们只有在第一次被访问的时候才会被初始化。即使它们被多个线程同时访问,系统也保证只会对其进行一次初始化,并且不需要对其使用 `lazy` 修饰符。 -### 类型属性语法 {#type_property_syntax} +### 类型属性语法 {#type-property-syntax} 在 C 或 Objective-C 中,与某个类型关联的静态常量和静态变量,是作为 *global*(全局)静态变量定义的。但是在 Swift 中,类型属性是作为类型定义的一部分写在类型最外层的花括号内,因此它的作用范围也就在类型支持的范围内。 @@ -322,7 +322,7 @@ class SomeClass { > > 例子中的计算型类型属性是只读的,但也可以定义可读可写的计算型类型属性,跟计算型实例属性的语法相同。 -### 获取和设置类型属性的值 {#querying_and_setting_type_properties} +### 获取和设置类型属性的值 {#querying-and-setting-type-properties} 跟实例属性一样,类型属性也是通过点运算符来访问。但是,类型属性是通过*类型*本身来访问,而不是通过实例。比如: diff --git a/source/chapter2/11_Methods.md b/source/chapter2/11_Methods.md index b6649252..4e27a3d3 100755 --- a/source/chapter2/11_Methods.md +++ b/source/chapter2/11_Methods.md @@ -4,7 +4,7 @@ 结构体和枚举能够定义方法是 Swift 与 C/Objective-C 的主要区别之一。在 Objective-C 中,类是唯一能定义方法的类型。但在 Swift 中,你不仅能选择是否要定义一个类/结构体/枚举,还能灵活地在你创建的类型(类/结构体/枚举)上定义方法。 -## 实例方法(Instance Methods) {#instance_methods} +## 实例方法(Instance Methods) {#instance-methods} *实例方法*是属于某个特定类、结构体或者枚举类型实例的方法。实例方法提供访问和修改实例属性的方法或提供与实例目的相关的功能,并以此来支撑实例的功能。实例方法的语法与函数完全一致,详情参见[函数](./06_Functions.md)。 @@ -49,7 +49,7 @@ counter.reset() 函数参数可以同时有一个局部名称(在函数体内部使用)和一个外部名称(在调用函数时使用),详情参见[指定外部参数名](./06_Functions.md#specifying_external_parameter_names)。方法参数也一样,因为方法就是函数,只是这个函数与某个类型相关联了。 -### self 属性 {#the_self_property} +### self 属性 {#the-self-property} 类型的每一个实例都有一个隐含属性叫做 `self`,`self` 完全等同于该实例本身。你可以在一个实例的实例方法中使用这个隐含的 `self` 属性来引用当前实例。 @@ -83,7 +83,7 @@ if somePoint.isToTheRightOf(x: 1.0) { 如果不使用 `self` 前缀,Swift会认为 `x` 的两个用法都引用了名为 `x` 的方法参数。 -### 在实例方法中修改值类型 {#modifying_value_types_from_within_instance_methods} +### 在实例方法中修改值类型 {#modifying-value-types-from-within-instance-methods} 结构体和枚举是*值类型*。默认情况下,值类型的属性不能在它的实例方法中被修改。 @@ -115,7 +115,7 @@ fixedPoint.moveBy(x: 2.0, y: 3.0) // 这里将会报告一个错误 ``` -### 在可变方法中给 self 赋值 {#assigning_to_self_within_a_mutating_method} +### 在可变方法中给 self 赋值 {#assigning-to-self-within-a-mutating-method} 可变方法能够赋给隐含属性 `self` 一个全新的实例。上面 `Point` 的例子可以用下面的方式改写: @@ -155,7 +155,7 @@ ovenLight.next() 上面的例子中定义了一个三态切换的枚举。每次调用 `next()` 方法时,开关在不同的电源状态(`off`, `low`, `high`)之间循环切换。 -## 类型方法 {#type_methods} +## 类型方法 {#type-methods} 实例方法是被某个类型的实例调用的方法。你也可以定义在类型本身上调用的方法,这种方法就叫做*类型方法*。在方法的 `func` 关键字之前加上关键字 `static`,来指定类型方法。类还可以用关键字 `class` 来允许子类重写父类的方法实现。 diff --git a/source/chapter2/12_Subscripts.md b/source/chapter2/12_Subscripts.md index ba5df57c..c5aa4c0d 100755 --- a/source/chapter2/12_Subscripts.md +++ b/source/chapter2/12_Subscripts.md @@ -4,7 +4,7 @@ 一个类型可以定义多个下标,通过不同索引类型进行重载。下标不限于一维,你可以定义具有多个入参的下标满足自定义类型的需求。 -## 下标语法 {#subscript_syntax} +## 下标语法 {#subscript-syntax} 下标允许你通过在实例名称后面的方括号中传入一个或者多个索引值来对实例进行存取。语法类似于实例方法语法和计算型属性语法的混合。与定义实例方法类似,定义下标使用 `subscript` 关键字,指定一个或多个输入参数和返回类型;与实例方法不同的是,下标可以设定为读写或只读。这种行为由 getter 和 setter 实现,有点类似计算型属性: @@ -51,7 +51,7 @@ print("six times three is \(threeTimesTable[6])") > > `TimesTable` 例子基于一个固定的数学公式,对 `threeTimesTable[someIndex]` 进行赋值操作并不合适,因此下标定义为只读的。 -## 下标用法 {#subscript_usage} +## 下标用法 {#subscript-usage} 下标的确切含义取决于使用场景。下标通常作为访问集合,列表或序列中元素的快捷方式。你可以针对自己特定的类或结构体的功能来自由地以最恰当的方式实现下标。 @@ -70,7 +70,7 @@ numberOfLegs["bird"] = 2 > > Swift 的 `Dictionary` 类型的下标接受并返回可选类型的值。上例中的 `numberOfLegs` 字典通过下标返回的是一个 `Int?` 或者说“可选的 int”。`Dictionary` 类型之所以如此实现下标,是因为不是每个键都有个对应的值,同时这也提供了一种通过键删除对应值的方式,只需将键对应的值赋值为 `nil` 即可。 -## 下标选项 {#subscript_options} +## 下标选项 {#subscript-options} 下标可以接受任意数量的入参,并且这些入参可以是任意类型。下标的返回值也可以是任意类型。下标可以使用变量参数和可变参数,但不能使用输入输出参数,也不能给参数设置默认值。 diff --git a/source/chapter2/13_Inheritance.md b/source/chapter2/13_Inheritance.md index 2d548bc3..c312f190 100755 --- a/source/chapter2/13_Inheritance.md +++ b/source/chapter2/13_Inheritance.md @@ -6,7 +6,7 @@ 可以为类中继承来的属性添加属性观察器,这样一来,当属性值改变时,类就会被通知到。可以为任何属性添加属性观察器,无论它原本被定义为存储型属性还是计算型属性。 -## 定义一个基类 {#defining_a_base_class} +## 定义一个基类 {#defining-a-base-class} 不继承于其它类的类,称之为*基类*。 @@ -113,7 +113,7 @@ print("Tandem: \(tandem.description)") `override` 关键字会提醒 Swift 编译器去检查该类的超类(或其中一个父类)是否有匹配重写版本的声明。这个检查可以确保你的重写定义是正确的。 -### 访问超类的方法,属性及下标 {#accessing_superclass_methods_properties_and_subscripts} +### 访问超类的方法,属性及下标 {#accessing-superclass-methods-properties-and-subscripts} 当你在子类中重写超类的方法,属性或下标时,有时在你的重写版本中使用已经存在的超类实现会大有裨益。比如,你可以完善已有实现的行为,或在一个继承来的变量中存储一个修改过的值。 @@ -123,7 +123,7 @@ print("Tandem: \(tandem.description)") * 在属性 `someProperty` 的 getter 或 setter 的重写实现中,可以通过 `super.someProperty` 来访问超类版本的 `someProperty` 属性。 * 在下标的重写实现中,可以通过 `super[someIndex]` 来访问超类版本中的相同下标。 -### 重写方法 {#overriding_methods} +### 重写方法 {#overriding-methods} 在子类中,你可以重写继承来的实例方法或类方法,提供一个定制或替代的方法实现。 @@ -145,11 +145,11 @@ train.makeNoise() // 打印“Choo Choo” ``` -### 重写属性 {#overriding_properties} +### 重写属性 {#overriding-properties} 你可以重写继承来的实例属性或类型属性,提供自己定制的 getter 和 setter,或添加属性观察器,使重写的属性可以观察到底层的属性值什么时候发生改变。 -#### 重写属性的 Getters 和 Setters {#overriding_property_etters_and_setters} +#### 重写属性的 Getters 和 Setters {#overriding-property-etters-and-setters} 你可以提供定制的 getter(或 setter)来重写任何一个继承来的属性,无论这个属性是存储型还是计算型属性。子类并不知道继承来的属性是存储型的还是计算型的,它只知道继承来的属性会有一个名字和类型。你在重写一个属性时,必须将它的名字和类型都写出来。这样才能使编译器去检查你重写的属性是与超类中同名同类型的属性相匹配的。 @@ -182,7 +182,7 @@ print("Car: \(car.description)") // 打印“Car: traveling at 25.0 miles per hour in gear 3” ``` -#### 重写属性观察器 {#overriding_property_observers} +#### 重写属性观察器 {#overriding-property-observers} 你可以通过重写属性为一个继承来的属性添加属性观察器。这样一来,无论被继承属性原本是如何实现的,当其属性值发生改变时,你就会被通知到。关于属性观察器的更多内容,请看[属性观察器](../chapter2/10_Properties.html#property_observers)。 @@ -212,7 +212,7 @@ print("AutomaticCar: \(automatic.description)") // 打印“AutomaticCar: traveling at 35.0 miles per hour in gear 4” ``` -## 防止重写 {#preventing_overrides} +## 防止重写 {#preventing-overrides} 你可以通过把方法,属性或下标标记为 *`final`* 来防止它们被重写,只需要在声明关键字前加上 `final` 修饰符即可(例如:`final var`、`final func`、`final class func` 以及 `final subscript`)。 diff --git a/source/chapter2/14_Initialization.md b/source/chapter2/14_Initialization.md index 7fa57ba3..bceeda4d 100755 --- a/source/chapter2/14_Initialization.md +++ b/source/chapter2/14_Initialization.md @@ -6,7 +6,7 @@ 类的实例也可以通过实现*析构器*来执行它释放之前自定义的清理工作。想了解更多关于析构器的内容,请参考[析构过程](./15_Deinitialization.md)。 -## 存储属性的初始赋值 {#setting_initial_values_for_stored_properties} +## 存储属性的初始赋值 {#setting-initial-values-for-stored-properties} 类和结构体在创建实例时,必须为所有存储型属性设置合适的初始值。存储型属性的值不能处于一个未知的状态。 @@ -42,7 +42,7 @@ print("The default temperature is \(f.temperature)° Fahrenheit") 这个结构体定义了一个不带形参的构造器 `init`,并在里面将存储型属性 `temperature` 的值初始化为 `32.0`(华氏温度下水的冰点)。 -### 默认属性值 {#default_property_values} +### 默认属性值 {#default-property-values} 如前所述,你可以在构造器中为存储型属性设置初始值。同样,你也可以在属性声明时为其设置默认值。 @@ -58,11 +58,11 @@ struct Fahrenheit { } ``` -## 自定义构造过程 {#customizing_initialization} +## 自定义构造过程 {#customizing-initialization} 你可以通过输入形参和可选属性类型来自定义构造过程,也可以在构造过程中分配常量属性。这些都将在后面章节中提到。 -### 形参的构造过程 {#initialization_parameters} +### 形参的构造过程 {#initialization-parameters} 自定义构造过程时,可以在定义中提供*构造形参*,指定其值的类型和名字。构造形参的功能和语法跟函数和方法的形参相同。 @@ -87,7 +87,7 @@ let freezingPointOfWater = Celsius(fromKelvin: 273.15) 第一个构造器拥有一个构造形参,其实参标签为 `fromFahrenheit`,形参命名为 `fahrenheit`;第二个构造器也拥有一个构造形参,其实参标签为 `fromKelvin`,形参命名为 `kelvin`。这两个构造器都将单一的实参转换成摄氏温度值,并保存在属性 `temperatureInCelsius` 中。 -### 形参命名和实参标签 {#parameter_names_and_argument_labels} +### 形参命名和实参标签 {#parameter-names-and-argument-labels} 跟函数和方法形参相同,构造形参可以同时使用在构造器里使用的形参命名和一个外部调用构造器时使用的实参标签。 @@ -127,7 +127,7 @@ let veryGreen = Color(0.0, 1.0, 0.0) // 报编译期错误-需要实参标签 ``` -### 不带实参标签的构造器形参 {#initializer_parameters_without_external_names} +### 不带实参标签的构造器形参 {#initializer-parameters-without-external-names} 如果你不希望构造器的某个形参使用实参标签,可以使用下划线(`_`)来代替显式的实参标签来重写默认行为。 @@ -153,7 +153,7 @@ let bodyTemperature = Celsius(37.0) 构造器调用 `Celsius(37.0)` 意图明确,不需要实参标签。因此适合使用 `init(_ celsius: Double)` 这样的构造器,从而可以通过提供未命名的 `Double` 值来调用构造器。 -### 可选属性类型 {#optional_property_types} +### 可选属性类型 {#optional-property-types} 如果你自定义的类型有一个逻辑上允许值为空的存储型属性——无论是因为它无法在初始化时赋值,还是因为它在之后某个时机可以赋值为空——都需要将它声明为 `可选类型`。可选类型的属性将自动初始化为 `nil`,表示这个属性是特意在构造过程设置为空。 @@ -179,7 +179,7 @@ cheeseQuestion.response = "Yes, I do like cheese." 调查问题的答案在询问前是无法确定的,因此我们将属性 `response` 声明为 `String?` 类型,或者说是 “可选类型 `String`“。当 `SurveyQuestion` 的实例初始化时,它将自动赋值为 `nil`,表明“暂时还没有字符“。 -### 构造过程中常量属性的赋值 {#assigning_constant_properties_during_initialization} +### 构造过程中常量属性的赋值 {#assigning-constant-properties-during-initialization} 你可以在构造过程中的任意时间点给常量属性赋值,只要在构造过程结束时它设置成确定的值。一旦常量属性被赋值,它将永远不可更改。 @@ -206,7 +206,7 @@ beetsQuestion.ask() beetsQuestion.response = "I also like beets. (But not with cheese.)" ``` -## 默认构造器 {#default_initializers} +## 默认构造器 {#default-initializers} 如果结构体或类为所有属性提供了默认值,又没有提供任何自定义的构造器,那么 Swift 会给这些结构体或类提供一个*默认构造器*。这个默认构造器将简单地创建一个所有属性值都设置为它们默认值的实例。 @@ -223,7 +223,7 @@ var item = ShoppingListItem() 由于 `ShoppingListItem` 类中的所有属性都有默认值,且它是没有父类的基类,它将自动获得一个将为所有属性设置默认值的并创建实例的默认构造器(由于 `name` 属性是可选 `String` 类型,它将接收一个默认 `nil` 的默认值,尽管代码中没有写出这个值)。上面例子中使用默认构造器创造了一个 `ShoppingListItem` 类的实例(使用 `ShoppingListItem()` 形式的构造器语法),并将其赋值给变量 `item`。 -### 结构体的逐一成员构造器 {#memberwise_initializers_for_structure_types} +### 结构体的逐一成员构造器 {#memberwise-initializers-for-structure-types} 结构体如果没有定义任何自定义构造器,它们将自动获得一个*逐一成员构造器(memberwise initializer)*。不像默认构造器,即使存储型属性没有默认值,结构体也能会获得逐一成员构造器。 @@ -240,7 +240,7 @@ struct Size { let twoByTwo = Size(width: 2.0, height: 2.0) ``` -## 值类型的构造器代理 {#initializer_delegation_for_value_types} +## 值类型的构造器代理 {#initializer-delegation-for-value-types} 构造器可以通过调用其它构造器来完成实例的部分构造过程。这一过程称为*构造器代理*,它能避免多个构造器间的代码重复。 @@ -316,13 +316,13 @@ let centerRect = Rect(center: Point(x: 4.0, y: 4.0), > > 如果你想用另外一种不需要自己定义 `init()` 和 `init(origin:size:)` 的方式来实现这个例子,请参考[扩展](./21_Extensions.md)。 -## 类的继承和构造过程 {#class_inheritance_and_initialization} +## 类的继承和构造过程 {#class-inheritance-and-initialization} 类里面的所有存储型属性——包括所有继承自父类的属性——都*必须*在构造过程中设置初始值。 Swift 为类类型提供了两种构造器来确保实例中所有存储型属性都能获得初始值,它们被称为指定构造器和便利构造器。 -### 指定构造器和便利构造器 {#designated_initializers_and_convenience_initializers} +### 指定构造器和便利构造器 {#designated-initializers-and-convenience-initializers} *指定构造器*是类中最主要的构造器。一个指定构造器将初始化类中提供的所有属性,并调用合适的父类构造器让构造过程沿着父类链继续往上进行。 @@ -334,7 +334,7 @@ Swift 为类类型提供了两种构造器来确保实例中所有存储型属 你应当只在必要的时候为类提供便利构造器,比方说某种情况下通过使用便利构造器来快捷调用某个指定构造器,能够节省更多开发时间并让类的构造过程更清晰明了。 -### 指定构造器和便利构造器的语法 {#syntax_for_designated_and_convenience_initializers} +### 指定构造器和便利构造器的语法 {#syntax-for-designated-and-convenience-initializers} 类的指定构造器的写法跟值类型简单构造器一样: @@ -352,7 +352,7 @@ convenience init(parameters) { } ``` -### 类类型的构造器代理 {#initializer_delegation_for_class_types} +### 类类型的构造器代理 {#initializer-delegation-for-class-types} 为了简化指定构造器和便利构造器之间的调用关系,Swift 构造器之间的代理调用遵循以下三条规则: @@ -389,7 +389,7 @@ convenience init(parameters) { ![复杂构造器代理图](https://docs.swift.org/swift-book/_images/initializerDelegation02_2x.png) -### 两段式构造过程 {#two_phase_initialization} +### 两段式构造过程 {#two-phase-initialization} Swift 中类的构造过程包含两个阶段。第一个阶段,类中的每个存储型属性赋一个初始值。当每个存储型属性的初始值被赋值后,第二阶段开始,它给每个类一次机会,在新实例准备使用之前进一步自定义它们的存储型属性。 @@ -459,7 +459,7 @@ Swift 编译器将执行 4 种有效的安全检查,以确保两段式构造 最终,一旦子类的指定构造器完成调用,最开始被调用的便利构造器可以执行更多的自定义操作。 -### 构造器的继承和重写 {#initializer_inheritance_and_overriding} +### 构造器的继承和重写 {#initializer-inheritance-and-overriding} 跟 Objective-C 中的子类不同,Swift 中的子类默认情况下不会继承父类的构造器。Swift 的这种机制可以防止一个父类的简单构造器被一个更精细的子类继承,而在用来创建子类时的新实例时没有完全或错误被初始化。 @@ -550,7 +550,7 @@ print("Hoverboard: \(hoverboard.description)") > > 子类可以在构造过程修改继承来的变量属性,但是不能修改继承来的常量属性。 -### 构造器的自动继承 {#automatic_initializer_inheritance} +### 构造器的自动继承 {#automatic-initializer-inheritance} 如上所述,子类在默认情况下不会继承父类的构造器。但是如果满足特定条件,父类构造器是可以被自动继承的。事实上,这意味着对于许多常见场景你不必重写父类的构造器,并且可以在安全的情况下以最小的代价继承父类的构造器。 @@ -570,7 +570,7 @@ print("Hoverboard: \(hoverboard.description)") > > 子类可以将父类的指定构造器实现为便利构造器来满足规则 2。 -### 指定构造器和便利构造器实践 {#designated_and_convenience_initializers_in_action} +### 指定构造器和便利构造器实践 {#designated-and-convenience-initializers-in-action} 接下来的例子将在实践中展示指定构造器、便利构造器以及构造器的自动继承。这个例子定义了包含三个类 `Food`、`RecipeIngredient` 以及 `ShoppingListItem` 的层级结构,并将演示它们的构造器是如何相互作用的。 @@ -691,7 +691,7 @@ for item in breakfastList { 如上所述,例子中通过字面量方式创建了一个数组 `breakfastList`,它包含了三个 `ShoppingListItem` 实例,因此数组的类型也能被自动推导为 `[ShoppingListItem]`。在数组创建完之后,数组中第一个 `ShoppingListItem` 实例的名字从 `[Unnamed]` 更改为 `Orange juice`,并标记状态为已购买。打印数组中每个元素的描述显示了它们都已按照预期被赋值。 -## 可失败构造器 {#failable_initializers} +## 可失败构造器 {#failable-initializers} 有时,定义一个构造器可失败的类,结构体或者枚举是很有用的。这里所指的“失败” 指的是,如给构造器传入无效的形参,或缺少某种所需的外部资源,又或是不满足某种必要的条件等。 @@ -769,7 +769,7 @@ if anonymousCreature == nil { > > 检查空字符串的值(如 `""`,而不是 `"Giraffe"` )和检查值为 `nil` 的可选类型的字符串是两个完全不同的概念。上例中的空字符串(`""`)其实是一个有效的,非可选类型的字符串。这里我们之所以让 `Animal` 的可失败构造器构造失败,只是因为对于 `Animal` 这个类的 `species` 属性来说,它更适合有一个具体的值,而不是空字符串。 -### 枚举类型的可失败构造器 {#failable_nitializers_for_enumerations} +### 枚举类型的可失败构造器 {#failable-nitializers-for-enumerations} 你可以通过一个带一个或多个形参的可失败构造器来获取枚举类型中特定的枚举成员。如果提供的形参无法匹配任何枚举成员,则构造失败。 @@ -809,7 +809,7 @@ if unknownUnit == nil { // 打印“This is not a defined temperature unit, so initialization failed.” ``` -### 带原始值的枚举类型的可失败构造器 {#failable_initializers_for_enumerations_with_raw_values} +### 带原始值的枚举类型的可失败构造器 {#failable-initializers-for-enumerations-with-raw-values} 带原始值的枚举类型会自带一个可失败构造器 `init?(rawValue:)`,该可失败构造器有一个合适的原始值类型的 `rawValue` 形参,选择找到的相匹配的枚举成员,找不到则构造失败。 @@ -833,7 +833,7 @@ if unknownUnit == nil { // 打印“This is not a defined temperature unit, so initialization failed.” ``` -### 构造失败的传递 {#propagation_of_initialization_failure} +### 构造失败的传递 {#propagation-of-initialization-failure} 类、结构体、枚举的可失败构造器可以横向代理到它们自己其他的可失败构造器。类似的,子类的可失败构造器也能向上代理到父类的可失败构造器。 @@ -897,7 +897,7 @@ if let oneUnnamed = CartItem(name: "", quantity: 1) { // 打印“Unable to initialize one unnamed product” ``` -### 重写一个可失败构造器 {#overriding_a_failable_initializer} +### 重写一个可失败构造器 {#overriding-a-failable-initializer} 如同其它的构造器,你可以在子类中重写父类的可失败构造器。或者你也可以用子类的非可失败构造器重写一个父类的可失败构造器。这使你可以定义一个不会构造失败的子类,即使父类的构造器允许构造失败。 @@ -955,13 +955,13 @@ class UntitledDocument: Document { 在这个例子中,如果在调用父类的可失败构造器 `init?(name:)` 时传入的是空字符串,那么强制解包操作会引发运行时错误。不过,因为这里是通过字符串常量来调用它,构造器不会失败,所以并不会发生运行时错误。 -### init! 可失败构造器 {#the_init!_failable_initializer} +### init! 可失败构造器 {#the-init!-failable-initializer} 通常来说我们通过在 `init` 关键字后添加问号的方式(`init?`)来定义一个可失败构造器,但你也可以通过在 `init` 后面添加感叹号的方式来定义一个可失败构造器(`init!`),该可失败构造器将会构建一个对应类型的隐式解包可选类型的对象。 你可以在 `init?` 中代理到 `init!`,反之亦然。你也可以用 `init?` 重写 `init!`,反之亦然。你还可以用 `init` 代理到 `init!`,不过,一旦 `init!` 构造失败,则会触发一个断言。 -## 必要构造器 {#required_initializers} +## 必要构造器 {#required-initializers} 在类的构造器前添加 `required` 修饰符表明所有该类的子类都必须实现该构造器: @@ -987,7 +987,7 @@ class SomeSubclass: SomeClass { > > 如果子类继承的构造器能满足必要构造器的要求,则无须在子类中显式提供必要构造器的实现。 -## 通过闭包或函数设置属性的默认值 {#setting_a_default_property_value_with_a_closure_or_function} +## 通过闭包或函数设置属性的默认值 {#setting-a-default-property-value-with-a-closure-or-function} 如果某个存储型属性的默认值需要一些自定义或设置,你可以使用闭包或全局函数为其提供定制的默认值。每当某个属性所在类型的新实例被构造时,对应的闭包或函数会被调用,而它们的返回值会当做默认值赋值给这个属性。 diff --git a/source/chapter2/15_Deinitialization.md b/source/chapter2/15_Deinitialization.md index 8e93b2eb..f17efacb 100755 --- a/source/chapter2/15_Deinitialization.md +++ b/source/chapter2/15_Deinitialization.md @@ -2,7 +2,7 @@ *析构器*只适用于类类型,当一个类的实例被释放之前,析构器会被立即调用。析构器用关键字 `deinit` 来标示,类似于构造器要用 `init` 来标示。 -## 析构过程原理 {#how_deinitialization_works} +## 析构过程原理 {#how-deinitialization-works} Swift 会自动释放不再需要的实例以释放资源。如[自动引用计数](./23_Automatic_Reference_Counting.md)章节中所讲述,Swift 通过*自动引用计数(ARC)* 处理实例的内存管理。通常当你的实例被释放时不需要手动地去清理。但是,当使用自己的资源时,你可能需要进行一些额外的清理。例如,如果创建了一个自定义的类来打开一个文件,并写入一些数据,你可能需要在类实例被释放之前手动去关闭该文件。 @@ -18,7 +18,7 @@ deinit { 因为直到实例的析构器被调用后,实例才会被释放,所以析构器可以访问实例的所有属性,并且可以根据那些属性可以修改它的行为(比如查找一个需要被关闭的文件)。 -## 析构器实践 {#deinitializers_in_action} +## 析构器实践 {#deinitializers-in-action} 这是一个析构器实践的例子。这个例子描述了一个简单的游戏,这里定义了两种新类型,分别是 `Bank` 和 `Player`。`Bank` 类管理一种虚拟硬币,确保流通的硬币数量永远不可能超过 10,000。在游戏中有且只能有一个 `Bank` 存在,因此 `Bank` 用类来实现,并使用类型属性和类型方法来存储和管理其当前状态。 diff --git a/source/chapter2/16_Optional_Chaining.md b/source/chapter2/16_Optional_Chaining.md index abd4ac92..26942c7b 100755 --- a/source/chapter2/16_Optional_Chaining.md +++ b/source/chapter2/16_Optional_Chaining.md @@ -6,7 +6,7 @@ > > Swift 的可选链式调用和 Objective-C 中向 `nil` 发送消息有些相像,但是 Swift 的可选链式调用可以应用于任意类型,并且能检查调用是否成功。 -## 使用可选链式调用代替强制展开 {#optional_chaining_as_an_alternative_to_forced_unwrapping} +## 使用可选链式调用代替强制展开 {#optional-chaining-as-an-alternative-to-forced-unwrapping} 通过在想调用的属性、方法,或下标的可选值后面放一个问号(`?`),可以定义一个可选链。这一点很像在可选值后面放一个叹号(`!`)来强制展开它的值。它们的主要区别在于当可选值为空时可选链式调用只会调用失败,然而强制展开将会触发运行时错误。 @@ -79,7 +79,7 @@ if let roomCount = john.residence?.numberOfRooms { // 打印“John's residence has 1 room(s).” ``` -## 为可选链式调用定义模型类 {#defining_model_classes_for_optional_chaining} +## 为可选链式调用定义模型类 {#defining-model-classes-for-optional-chaining} 通过使用可选链式调用可以调用多层属性、方法和下标。这样可以在复杂的模型中向下访问各种子属性,并且判断能否访问子属性的属性、方法和下标。 @@ -154,7 +154,7 @@ class Address { `Address` 类提供了 `buildingIdentifier()` 方法,返回值为 `String?`。 如果 `buildingName` 有值则返回 `buildingName`。或者,如果 `buildingNumber` 和 `street` 均有值,则返回两者拼接得到的字符串。否则,返回 `nil`。 -## 通过可选链式调用访问属性 {#accessing_properties_through_optional_chaining} +## 通过可选链式调用访问属性 {#accessing-properties-through-optional-chaining} 正如[使用可选链式调用代替强制展开](#optional_chaining_as_an_alternative_to_forced_unwrapping)中所述,可以通过可选链式调用在一个可选值上访问它的属性,并判断访问是否成功。 @@ -200,7 +200,7 @@ john.residence?.address = createAddress() 没有任何打印消息,可以看出 `createAddress()` 函数并未被执行。 -## 通过可选链式调用来调用方法 {#calling_methods_through_optional_chaining} +## 通过可选链式调用来调用方法 {#calling-methods-through-optional-chaining} 可以通过可选链式调用来调用方法,并判断是否调用成功,即使这个方法没有返回值。 @@ -236,7 +236,7 @@ if (john.residence?.address = someAddress) != nil { // 打印“It was not possible to set the address.” ``` -## 通过可选链式调用访问下标 {#accessing_subscripts_through_optional_chaining} +## 通过可选链式调用访问下标 {#accessing-subscripts-through-optional-chaining} 通过可选链式调用,我们可以在一个可选值上访问下标,并且判断下标调用是否成功。 @@ -281,7 +281,7 @@ if let firstRoomName = john.residence?[0].name { // 打印“The first room name is Living Room.” ``` -### 访问可选类型的下标 {#accessing_subscripts_of_optional_type} +### 访问可选类型的下标 {#accessing-subscripts-of-optional-type} 如果下标返回可选类型值,比如 Swift 中 `Dictionary` 类型的键的下标,可以在下标的结尾括号后面放一个问号来在其可选返回值上进行可选链式调用: @@ -295,7 +295,7 @@ testScores["Brian"]?[0] = 72 上面的例子中定义了一个 `testScores` 数组,包含了两个键值对,分别把 `String` 类型的键映射到一个 `Int` 值的数组。这个例子用可选链式调用把 `"Dave"` 数组中第一个元素设为 `91`,把 `"Bev"` 数组的第一个元素 `+1`,然后尝试把 `"Brian"` 数组中的第一个元素设为 `72`。前两个调用成功,因为 `testScores` 字典中包含 `"Dave"` 和 `"Bev"` 这两个键。但是 `testScores` 字典中没有 `"Brian"` 这个键,所以第三个调用失败。 -## 连接多层可选链式调用 {#linking_multiple_levels_of_chaining} +## 连接多层可选链式调用 {#linking-multiple-levels-of-chaining} 可以通过连接多个可选链式调用在更深的模型层级中访问属性、方法以及下标。然而,多层可选链式调用不会增加返回值的可选层级。 @@ -342,7 +342,7 @@ if let johnsStreet = john.residence?.address?.street { 在上面的例子中,因为 `john.residence` 包含一个有效的 `Address` 实例,所以对 `john.residence` 的 `address` 属性赋值将会成功。 -## 在方法的可选返回值上进行可选链式调用 {#chaining_on_methods_with_optional_return_values} +## 在方法的可选返回值上进行可选链式调用 {#chaining-on-methods-with-optional-return-values} 上面的例子展示了如何在一个可选值上通过可选链式调用来获取它的属性值。我们还可以在一个可选值上通过可选链式调用来调用方法,并且可以根据需要继续在方法的可选返回值上进行可选链式调用。 diff --git a/source/chapter2/17_Error_Handling.md b/source/chapter2/17_Error_Handling.md index 51f11691..92b2bc07 100755 --- a/source/chapter2/17_Error_Handling.md +++ b/source/chapter2/17_Error_Handling.md @@ -10,7 +10,7 @@ > > Swift 中的错误处理涉及到错误处理模式,这会用到 Cocoa 和 Objective-C 中的 `NSError`。更多详情参见 [用 Swift 解决 Cocoa 错误](https://developer.apple.com/documentation/swift/cocoa_design_patterns/handling_cocoa_errors_in_swift)。 -## 表示与抛出错误 {#representing_and_throwing_errors} +## 表示与抛出错误 {#representing-and-throwing-errors} 在 Swift 中,错误用遵循 `Error` 协议的类型的值来表示。这个空协议表明该类型可以用于错误处理。 @@ -30,7 +30,7 @@ enum VendingMachineError: Error { throw VendingMachineError.insufficientFunds(coinsNeeded: 5) ``` -## 处理错误 {#handling_errors} +## 处理错误 {#handling-errors} 某个错误被抛出时,附近的某部分代码必须负责处理这个错误,例如纠正这个问题、尝试另外一种方式、或是向用户报告错误。 @@ -42,7 +42,7 @@ Swift 中有 `4` 种处理错误的方式。你可以把函数抛出的错误传 > > Swift 中的错误处理和其他语言中用 `try`,`catch` 和 `throw` 进行异常处理很像。和其他语言中(包括 Objective-C )的异常处理不同的是,Swift 中的错误处理并不涉及解除调用栈,这是一个计算代价高昂的过程。就此而言,`throw` 语句的性能特性是可以和 `return` 语句相媲美的。 -### 用 throwing 函数传递错误 {#propagating_errors_using_throwing_functions} +### 用 throwing 函数传递错误 {#propagating-errors-using-throwing-functions} 为了表示一个函数、方法或构造器可以抛出错误,在函数声明的参数之后加上 `throws` 关键字。一个标有 `throws` 关键字的函数被称作 *throwing 函数*。如果这个函数指明了返回值类型,`throws` 关键词需要写在返回箭头(`->`)的前面。 @@ -128,7 +128,7 @@ struct PurchasedSnack { } ``` -### 用 Do-Catch 处理错误 {#handling_errors_using_do-Catch} +### 用 Do-Catch 处理错误 {#handling-errors-using-do-Catch} 你可以使用一个 `do-catch` 语句运行一段闭包代码来处理错误。如果在 `do` 子句中的代码抛出了一个错误,这个错误会与 `catch` 子句做匹配,从而决定哪条子句能处理它。 @@ -235,7 +235,7 @@ func fetchData() -> Data? { let photo = try! loadImage(atPath: "./Resources/John Appleseed.jpg") ``` -## 指定清理操作 {#specifying_cleanup_actions} +## 指定清理操作 {#specifying-cleanup-actions} 你可以使用 `defer` 语句在即将离开当前代码块时执行一系列语句。该语句让你能执行一些必要的清理工作,不管是以何种方式离开当前代码块的——无论是由于抛出错误而离开,或是由于诸如 `return`、`break` 的语句。例如,你可以用 `defer` 语句来确保文件描述符得以关闭,以及手动分配的内存得以释放。 diff --git a/source/chapter2/18_Type_Casting.md b/source/chapter2/18_Type_Casting.md index c5757c38..76077f2a 100644 --- a/source/chapter2/18_Type_Casting.md +++ b/source/chapter2/18_Type_Casting.md @@ -6,7 +6,7 @@ 你也可以用它来检查一个类型是否遵循了某个协议,就像在[检验协议遵循](./21_Protocols.md#checking_for_protocol_conformance)部分讲述的一样。 -## 为类型转换定义类层次 {#defining_a_class_hierarchy_for_type_casting} +## 为类型转换定义类层次 {#defining-a-class-hierarchy-for-type-casting} 你可以将类型转换用在类和子类的层次结构上,检查特定类实例的类型并且转换这个类实例的类型成为这个层次结构中的其他类型。下面的三个代码段定义了一个类层次和一个包含了这些类实例的数组,作为类型转换的例子。 @@ -56,7 +56,7 @@ let library = [ 在幕后 `library` 里存储的媒体项依然是 `Movie` 和 `Song` 类型的。但是,若你迭代它,依次取出的实例会是 `MediaItem` 类型的,而不是 `Movie` 和 `Song` 类型。为了让它们作为原本的类型工作,你需要检查它们的类型或者向下转换它们到其它类型,就像下面描述的一样。 -## 检查类型 {#checking_type} +## 检查类型 {#checking-type} 用*类型检查操作符*(`is`)来检查一个实例是否属于特定子类型。若实例属于那个子类型,类型检查操作符返回 `true`,否则返回 `false`。 @@ -129,7 +129,7 @@ for item in library { > > 转换没有真的改变实例或它的值。根本的实例保持不变;只是简单地把它作为它被转换成的类型来使用。 -## `Any` 和 `AnyObject` 的类型转换 {#type_casting_for_any_and_anyobject} +## `Any` 和 `AnyObject` 的类型转换 {#type-casting-for-any-and-anyobject} Swift 为不确定类型提供了两种特殊的类型别名: diff --git a/source/chapter2/19_Nested_Types.md b/source/chapter2/19_Nested_Types.md index 78bea31a..ef0bca88 100755 --- a/source/chapter2/19_Nested_Types.md +++ b/source/chapter2/19_Nested_Types.md @@ -4,7 +4,7 @@ 要在一个类型中嵌套另一个类型,将嵌套类型的定义写在其外部类型的 `{}` 内,而且可以根据需要定义多级嵌套。 -## 嵌套类型实践 {#nested_types_in_action} +## 嵌套类型实践 {#nested-types-in-action} 下面这个例子定义了一个结构体 `BlackjackCard`(二十一点),用来模拟 `BlackjackCard` 中的扑克牌点数。`BlackjackCard` 结构体包含两个嵌套定义的枚举类型 `Suit` 和 `Rank`。 @@ -73,7 +73,7 @@ print("theAceOfSpades: \(theAceOfSpades.description)") 尽管 `Rank` 和 `Suit` 嵌套在 `BlackjackCard` 中,但它们的类型仍可从上下文中推断出来,所以在初始化实例时能够单独通过成员名称(`.ace` 和 `.spades`)引用枚举实例。在上面的例子中,`description` 属性正确地反映了黑桃 A 牌具有 `1` 和 `11` 两个值。 -## 引用嵌套类型 {#referring_to_nested_types} +## 引用嵌套类型 {#referring-to-nested-types} 在外部引用嵌套类型时,在嵌套类型的类型名前加上其外部类型的类型名作为前缀: diff --git a/source/chapter2/20_Extensions.md b/source/chapter2/20_Extensions.md index 533d9ab2..26815e65 100644 --- a/source/chapter2/20_Extensions.md +++ b/source/chapter2/20_Extensions.md @@ -17,7 +17,7 @@ Swift 中的扩展可以: > > 扩展可以给一个类型添加新的功能,但是不能重写已经存在的功能。 -## 扩展的语法 {#extension_syntax} +## 扩展的语法 {#extension-syntax} 使用 `extension` 关键字声明扩展: @@ -43,7 +43,7 @@ extension SomeType: SomeProtocol, AnotherProtocol { > > 对一个现有的类型,如果你定义了一个扩展来添加新的功能,那么这个类型的所有实例都可以使用这个新功能,包括那些在扩展定义之前就存在的实例。 -## 计算型属性 {#computed_properties} +## 计算型属性 {#computed-properties} 扩展可以给现有类型添加计算型实例属性和计算型类属性。这个例子给 Swift 内建的 `Double` 类型添加了五个计算型实例属性,从而提供与距离单位相关工作的基本支持: @@ -165,7 +165,7 @@ extension Int { // Hello! ``` -### 可变实例方法 {#mutating_instance_methods} +### 可变实例方法 {#mutating-instance-methods} 通过扩展添加的实例方法同样也可以修改(或 *mutating(改变)*)实例本身。结构体和枚举的方法,若是可以修改 `self` 或者它自己的属性,则必须将这个实例方法标记为 `mutating`,就像是改变了方法的原始实现。 @@ -218,7 +218,7 @@ extension Int { 0746381295[9] ``` -## 嵌套类型 {#nested_yypes} +## 嵌套类型 {#nested-yypes} 扩展可以给现有的类,结构体,还有枚举添加新的嵌套类型: diff --git a/source/chapter2/21_Protocols.md b/source/chapter2/21_Protocols.md index 8a287108..61342eca 100644 --- a/source/chapter2/21_Protocols.md +++ b/source/chapter2/21_Protocols.md @@ -4,7 +4,7 @@ 除了遵循协议的类型必须实现的要求外,还可以对协议进行扩展,通过扩展来实现一部分要求或者实现一些附加功能,这样遵循协议的类型就能够使用这些功能。 -## 协议语法 {#protocol_syntax} +## 协议语法 {#protocol-syntax} 协议的定义方式与类、结构体和枚举的定义非常相似: @@ -30,7 +30,7 @@ class SomeClass: SomeSuperClass, FirstProtocol, AnotherProtocol { } ``` -## 属性要求 {#property_requirements} +## 属性要求 {#property-requirements} 协议可以要求遵循协议的类型提供特定名称和类型的实例属性或类型属性。协议不指定属性是存储属性还是计算属性,它只指定属性的名称和类型。此外,协议还指定属性是*可读*的还是*可读可写的*。 @@ -97,7 +97,7 @@ var ncc1701 = Starship(name: "Enterprise", prefix: "USS") `Starship` 类只能把 `fullName` 作为只读的计算属性来实现。每一个 `Starship` 类的实例都有一个名为 `name` 的非可选属性和一个名为 `prefix` 的可选属性。 当 `prefix` 存在时,计算属性 `fullName` 会将 `prefix` 插入到 `name` 之前,从而得到一个带有 `prefix` 的 `fullName`。 -## 方法要求 {#method_requirements} +## 方法要求 {#method-requirements} 协议可以要求遵循协议的类型实现某些指定的实例方法或类方法。这些方法作为协议的一部分,像普通方法一样放在协议的定义中,但是不需要大括号和方法体。可以在协议中定义具有可变参数的方法,和普通方法的定义方式相同。但是,不支持为协议中的方法提供默认参数。 @@ -141,7 +141,7 @@ print("And another one: \(generator.random())") // 打印 “And another one: 0.729023776863283” ``` -## 异变方法要求 {#mutating_method_requirements} +## 异变方法要求 {#mutating-method-requirements} 有时需要在方法中改变(或*异变*)方法所属的实例。例如,在值类型(即结构体和枚举)的实例方法中,将 `mutating` 关键字作为方法的前缀,写在 `func` 关键字之前,表示可以在该方法中修改它所属的实例以及实例的任意属性的值。这一过程在 [在实例方法中修改值类型](./11_Methods.md#modifying_value_types_from_within_instance_methods) 章节中有详细描述。 @@ -182,7 +182,7 @@ lightSwitch.toggle() // lightSwitch 现在的值为 .on ``` -## 构造器要求 {#initializer_requirements} +## 构造器要求 {#initializer-requirements} 协议可以要求遵循协议的类型实现指定的构造器。你可以像编写普通构造器那样,在协议的定义里写下构造器的声明,但不需要写花括号和构造器的实体: @@ -192,7 +192,7 @@ protocol SomeProtocol { } ``` -### 协议构造器要求的类实现 {#class_implementations_of_protocol_initializer_requirements} +### 协议构造器要求的类实现 {#class-implementations-of-protocol-initializer-requirements} 你可以在遵循协议的类中实现构造器,无论是作为指定构造器,还是作为便利构造器。无论哪种情况,你都必须为构造器实现标上 `required` 修饰符: @@ -234,13 +234,13 @@ class SomeSubClass: SomeSuperClass, SomeProtocol { } ``` -### 可失败构造器要求 {#failable_initializer_requirements} +### 可失败构造器要求 {#failable-initializer-requirements} 协议还可以为遵循协议的类型定义可失败构造器要求,详见 [可失败构造器](./14_Initialization.md#failable_initializers)。 遵循协议的类型可以通过可失败构造器(`init?`)或非可失败构造器(`init`)来满足协议中定义的可失败构造器要求。协议中定义的非可失败构造器要求可以通过非可失败构造器(`init`)或隐式解包可失败构造器(`init!`)来满足。 -## 协议作为类型 {#protocols_as_types} +## 协议作为类型 {#protocols-as-types} 尽管协议本身并未实现任何功能,但是协议可以被当做一个功能完备的类型来使用。 @@ -405,7 +405,7 @@ game.play() // The game lasted for 4 turns ``` -## 在扩展里添加协议遵循 {#adding_protocol_conformance_with_an_extension} +## 在扩展里添加协议遵循 {#adding-protocol-conformance-with-an-extension} 即便无法修改源代码,依然可以通过扩展令已有类型遵循并符合协议。扩展可以为已有类型添加属性、方法、下标以及构造器,因此可以符合协议中的相应要求。详情请在 [扩展](./20_Extensions.md) 章节中查看。 @@ -453,7 +453,7 @@ print(game.textualDescription) // 打印 “A game of Snakes and Ladders with 25 squares” ``` -## 有条件地遵循协议 {#Conditionally_Conforming_to_a_Protocol} +## 有条件地遵循协议 {#Conditionally-Conforming-to-a-Protocol} 泛型类型可能只在某些情况下满足一个协议的要求,比如当类型的泛型形式参数遵循对应协议时。你可以通过在扩展类型时列出限制让泛型类型有条件地遵循某协议。在你采纳协议的名字后面写泛型 `where` 分句。更多关于泛型 `where` 分句,见 [泛型 Where 分句](./22_Generics.md##where_clauses)。 @@ -471,7 +471,7 @@ print(myDice.textualDescription) // 打印 "[A 6-sided dice, A 12-sided dice]" ``` -## 在扩展里声明采纳协议 {#declaring_protocol_adoption_with_an_extension} +## 在扩展里声明采纳协议 {#declaring-protocol-adoption-with-an-extension} 当一个类型已经符合了某个协议中的所有要求,却还没有声明采纳该协议时,可以通过空的扩展来让它采纳该协议: @@ -498,7 +498,7 @@ print(somethingTextRepresentable.textualDescription) > > 即使满足了协议的所有要求,类型也不会自动遵循协议,必须显式地遵循协议。 -## 协议类型的集合 {#collections_of_protocol_types} +## 协议类型的集合 {#collections-of-protocol-types} 协议类型可以在数组或者字典这样的集合中使用,在 [协议类型](./21_Protocols.md##protocols_as_types) 提到了这样的用法。下面的例子创建了一个元素类型为 `TextRepresentable` 的数组: @@ -519,7 +519,7 @@ for thing in things { 注意 `thing` 常量是 `TextRepresentable` 类型而不是 `Dice`,`DiceGame`,`Hamster` 等类型,即使实例在幕后确实是这些类型中的一种。由于 `thing` 是 `TextRepresentable` 类型,任何 `TextRepresentable` 的实例都有一个 `textualDescription` 属性,所以在每次循环中可以安全地访问 `thing.textualDescription`。 -## 协议的继承 {#protocol_inheritance} +## 协议的继承 {#protocol-inheritance} 协议能够*继承*一个或多个其他协议,可以在继承的协议的基础上增加新的要求。协议的继承语法与类的继承相似,多个被继承的协议间用逗号分隔: @@ -574,7 +574,7 @@ print(game.prettyTextualDescription) // ○ ○ ▲ ○ ○ ▲ ○ ○ ▲ ▲ ○ ○ ○ ▼ ○ ○ ○ ○ ▼ ○ ○ ▼ ○ ▼ ○ ``` -## 类专属的协议 {#class_only_protocol} +## 类专属的协议 {#class-only-protocol} 你通过添加 `AnyObject` 关键字到协议的继承列表,就可以限制协议只能被类类型采纳(以及非结构体或者非枚举的类型)。 @@ -590,7 +590,7 @@ protocol SomeClassOnlyProtocol: AnyObject, SomeInheritedProtocol { > > 当协议定义的要求需要遵循协议的类型必须是引用语义而非值语义时,应该采用类类型专属协议。关于引用语义和值语义的更多内容,请查看 [结构体和枚举是值类型](./09_Classes_and_Structures.md#structures_and_enumerations_are_value_types) 和 [类是引用类型](./09_Classes_and_Structures.md#classes_are_reference_types)。 -## 协议合成 {#protocol_composition} +## 协议合成 {#protocol-composition} 要求一个类型同时遵循多个协议是很有用的。你可以使用*协议组合*来复合多个协议到一个要求里。协议组合行为就和你定义的临时局部协议一样拥有构成中所有协议的需求。协议组合不定义任何新的协议类型。 @@ -654,7 +654,7 @@ beginConcert(in: seattle) 将 birthdayPerson 传入 `beginConcert(in:)` 函数是不合法的,因为 Person 不是 Location 的子类。同理,如果你新建一个类继承于 Location,但是没有遵循 Named 协议,而用这个类的实例去调用 `beginConcert(in:)` 函数也是非法的。 -## 检查协议一致性 {#checking_for_protocol_conformance} +## 检查协议一致性 {#checking-for-protocol-conformance} 你可以使用[类型转换](./18_Type_Casting.md)中描述的 `is` 和 `as` 操作符来检查协议一致性,即是否符合某协议,并且可以转换到指定的协议类型。检查和转换协议的语法与检查和转换类型是完全一样的: @@ -727,7 +727,7 @@ for object in objects { `objects` 数组中的元素的类型并不会因为强转而丢失类型信息,它们仍然是 `Circle`,`Country`,`Animal` 类型。然而,当它们被赋值给 `objectWithArea` 常量时,只被视为 `HasArea` 类型,因此只有 `area` 属性能够被访问。 -## 可选的协议要求 {#optional_protocol_requirements} +## 可选的协议要求 {#optional-protocol-requirements} 协议可以定义*可选要求*,遵循协议的类型可以选择是否实现这些要求。在协议中使用 `optional` 关键字作为前缀来定义可选要求。可选要求用在你需要和 Objective-C 打交道的代码中。协议和可选要求都必须带上 `@objc` 属性。标记 `@objc` 特性的协议只能被继承自 Objective-C 类的类或者 `@objc` 类遵循,其他类以及结构体和枚举均不能遵循这种协议。 @@ -837,7 +837,7 @@ for _ in 1...5 { // 0 ``` -## 协议扩展 {#protocol_extensions} +## 协议扩展 {#protocol-extensions} 协议可以通过扩展来为遵循协议的类型提供属性、方法以及下标的实现。通过这种方式,你可以基于协议本身来实现这些功能,而无需在每个遵循协议的类型中都重复同样的实现,也无需使用全局函数。 @@ -861,7 +861,7 @@ print("And here's a random Boolean: \(generator.randomBool())") // 打印 “And here's a random Boolean: true” ``` -### 提供默认实现 {#providing_default_implementations} +### 提供默认实现 {#providing-default-implementations} 可以通过协议扩展来为协议要求的属性、方法以及下标提供默认的实现。如果遵循协议的类型为这些要求提供了自己的实现,那么这些自定义实现将会替代扩展中的默认实现被使用。 @@ -879,7 +879,7 @@ extension PrettyTextRepresentable { } ``` -### 为协议扩展添加限制条件 {#adding_constraints_to_protocol_extensions} +### 为协议扩展添加限制条件 {#adding-constraints-to-protocol-extensions} 在扩展协议的时候,可以指定一些限制条件,只有遵循协议的类型满足这些限制条件时,才能获得协议扩展提供的默认实现。这些限制条件写在协议名之后,使用 `where` 子句来描述,正如[泛型 Where 子句](./22_Generics.md#where_clauses)中所描述的。 diff --git a/source/chapter2/22_Generics.md b/source/chapter2/22_Generics.md index 727adf5c..11794432 100644 --- a/source/chapter2/22_Generics.md +++ b/source/chapter2/22_Generics.md @@ -4,7 +4,7 @@ 泛型是 Swift 最强大的特性之一,很多 Swift 标准库是基于泛型代码构建的。实际上,即使你没有意识到,你也一直在*语言指南*中使用泛型。例如,Swift 的 `Array` 和 `Dictionary` 都是泛型集合。你可以创建一个 `Int` 类型数组,也可创建一个 `String` 类型数组,甚至可以是任意其他 Swift 类型的数组。同样,你也可以创建一个存储任意指定类型的字典,并对该类型没有限制。 -## 泛型解决的问题 {#the_problem_that_generics_solve} +## 泛型解决的问题 {#the-problem-that-generics-solve} 下面是一个标准的非泛型函数 `swapTwoInts(_:_:)`,用来交换两个 `Int` 值: @@ -52,7 +52,7 @@ func swapTwoDoubles(_ a: inout Double, _ b: inout Double) { > > 在上面三个函数中,`a` 和 `b` 类型必须相同。如果 `a` 和 `b` 类型不同,那它们俩就不能互换值。Swift 是类型安全的语言,所以它不允许一个 `String` 类型的变量和一个 `Double` 类型的变量互换值。试图这样做将导致编译错误。 -## 泛型函数 {#generic_functions} +## 泛型函数 {#generic-functions} 泛型函数可适用于任意类型,下面是函数 `swapTwoInts(_:_:)` 的泛型版本,命名为 `swapTwoValues(_:_:)`: @@ -95,7 +95,7 @@ swapTwoValues(&someString, &anotherString) > > 上面定义的 `swapTwoValues(_:_:)` 函数是受 `swap(_:_:)` 函数启发而实现的。后者存在于 Swift 标准库,你可以在你的应用程序中使用它。如果你在代码中需要类似 `swapTwoValues(_:_:)` 函数的功能,你可以使用已存在的 `swap(_:_:)` 函数。 -## 类型参数 {#type_parameters} +## 类型参数 {#type-parameters} 上面 `swapTwoValues(_:_:)` 例子中,占位类型 `T` 是一个类型参数的例子,类型参数指定并命名一个占位类型,并且紧随在函数名后面,使用一对尖括号括起来(例如 ``)。 @@ -103,7 +103,7 @@ swapTwoValues(&someString, &anotherString) 你可提供多个类型参数,将它们都写在尖括号中,用逗号分开。 -## 命名类型参数 {#naming_type_parameters} +## 命名类型参数 {#naming-type-parameters} 大多情况下,类型参数具有描述下的名称,例如字典 `Dictionary` 中的 `Key` 和 `Value` 及数组 `Array` 中的 `Element`,这能告诉阅读代码的人这些参数类型与泛型类型或函数之间的关系。然而,当它们之间没有有意义的关系时,通常使用单个字符来表示,例如 `T`、`U`、`V`,例如上面演示函数 `swapTwoValues(_:_:)` 中的 `T`。 @@ -111,7 +111,7 @@ swapTwoValues(&someString, &anotherString) > > 请始终使用大写字母开头的驼峰命名法(例如 `T` 和 `MyTypeParameter`)来为类型参数命名,以表明它们是占位类型,而不是一个值。 -## 泛型类型 {#generic_types} +## 泛型类型 {#generic-types} 除了泛型函数,Swift 还允许自定义*泛型类型*。这些自定义类、结构体和枚举可以适用于*任意类型*,类似于 `Array` 和 `Dictionary`。 @@ -199,7 +199,7 @@ let fromTheTop = stackOfStrings.pop() ![](https://docs.swift.org/swift-book/_images/stackPoppedOneString_2x.png) -## 泛型扩展 {#extending_a_generic_type} +## 泛型扩展 {#extending-a-generic-type} 当对泛型类型进行扩展时,你并不需要提供类型参数列表作为定义的一部分。原始类型定义中声明的类型参数列表在扩展中可以直接使用,并且这些来自原始类型中的参数名称会被用作原始定义中类型参数的引用。 @@ -226,7 +226,7 @@ if let topItem = stackOfStrings.topItem { // 打印“The top item on the stack is tres.” ``` -## 类型约束 {#type_constraints} +## 类型约束 {#type-constraints} `swapTwoValues(_:_:)` 函数和 `Stack` 适用于任意类型。不过,如果能对泛型函数或泛型类型中添加特定的*类型约束*,这将在某些情况下非常有用。类型约束指定类型参数必须继承自指定类、遵循特定的协议或协议组合。 @@ -236,7 +236,7 @@ if let topItem = stackOfStrings.topItem { 当自定义泛型类型时,你可以定义你自己的类型约束,这些约束将提供更为强大的泛型编程能力。像 `可哈希(hashable)` 这种抽象概念根据它们的概念特征来描述类型,而不是它们的具体类型。 -### 类型约束语法 {#type_constraint_syntax} +### 类型约束语法 {#type-constraint-syntax} 在一个类型参数名后面放置一个类名或者协议名,并用冒号进行分隔,来定义类型约束。下面将展示泛型函数约束的基本语法(与泛型类型的语法相同): @@ -248,7 +248,7 @@ func someFunction(someT: T, someU: U) { 上面这个函数有两个类型参数。第一个类型参数 `T` 必须是 `SomeClass` 子类;第二个类型参数 `U` 必须符合 `SomeProtocol` 协议。 -### 类型约束实践 {#type_constraints_in_action} +### 类型约束实践 {#type-constraints-in-action} 这里有个名为 `findIndex(ofString:in:)` 的非泛型函数,该函数的功能是在一个 `String` 数组中查找给定 `String` 值的索引。若查找到匹配的字符串,`findIndex(ofString:in:)` 函数返回该字符串在数组中的索引值,否则返回 `nil`: @@ -316,11 +316,11 @@ let stringIndex = findIndex(of: "Andrea", in: ["Mike", "Malcolm", "Andrea"]) // stringIndex 类型为 Int?,其值为 2 ``` -## 关联类型 {#associated_types} +## 关联类型 {#associated-types} 定义一个协议时,声明一个或多个关联类型作为协议定义的一部分将会非常有用。关联类型为协议中的某个类型提供了一个占位符名称,其代表的实际类型在协议被遵循时才会被指定。关联类型通过 `associatedtype` 关键字来指定。 -### 关联类型实践 {#associated_types_in_action} +### 关联类型实践 {#associated-types-in-action} 下面例子定义了一个 `Container` 协议,该协议定义了一个关联类型 `Item`: @@ -406,7 +406,7 @@ struct Stack: Container { 这一次,占位类型参数 `Element` 被用作 `append(_:)` 方法的 `item` 参数和下标的返回类型。Swift 可以据此推断出 `Element` 的类型即是 `Item` 的类型。 -### 扩展现有类型来指定关联类型 {#extending_an_existing_type_to_specify_an_associated_type} +### 扩展现有类型来指定关联类型 {#extending-an-existing-type-to-specify-an-associated-type} [在扩展添加协议一致性](./21_Protocols.md#adding_protocol_conformance_with_an_extension)中描述了如何利用扩展让一个已存在的类型符合一个协议,这包括使用了关联类型协议。 @@ -418,7 +418,7 @@ extension Array: Container {} `Array` 的 `append(_:)` 方法和下标确保了 Swift 可以推断出 `Item` 具体类型。定义了这个扩展后,你可以将任意 `Array` 当作 Container 来使用。 -### 给关联类型添加约束 {#adding_constraints_to_an_associated_type} +### 给关联类型添加约束 {#adding-constraints-to-an-associated-type} 你可以在协议里给关联类型添加约束来要求遵循的类型满足约束。例如,下面的代码定义了 `Container` 协议, 要求关联类型 `Item` 必须遵循 `Equatable` 协议: @@ -433,7 +433,7 @@ protocol Container { 要遵守 `Container` 协议,`Item` 类型也必须遵守 `Equatable` 协议。 -### 在关联类型约束里使用协议 {#using_a_protocol_in_its_associated_type’s_constraints} +### 在关联类型约束里使用协议 {#using-a-protocol-in-its-associated-type’s-constraints} 协议可以作为它自身的要求出现。例如,有一个协议细化了 `Container` 协议,添加了一个` suffix(_:)` 方法。`suffix(_:)` 方法返回容器中从后往前给定数量的元素,并把它们存储在一个 `Suffix` 类型的实例里。 @@ -482,7 +482,7 @@ extension IntStack: SuffixableContainer { } ``` -## 泛型 Where 语句 {#where_clauses} +## 泛型 Where 语句 {#where-clauses} [类型约束](#type_constraints)让你能够为泛型函数、下标、类型的类型参数定义一些强制要求。 @@ -562,7 +562,7 @@ if allItemsMatch(stackOfStrings, arrayOfStrings) { 上面的例子创建 `Stack` 实例来存储 `String` 值,然后将三个字符串压栈。这个例子还通过数组字面量创建了一个 `Array` 实例,数组中包含同栈中一样的三个字符串。即使栈和数组是不同的类型,但它们都遵从 `Container` 协议,而且它们都包含相同类型的值。因此你可以用这两个容器作为参数来调用 `allItemsMatch(_:_:)` 函数。在上面的例子中,`allItemsMatch(_:_:)` 函数正确地显示了这两个容器中的所有元素都是相互匹配的。 -## 具有泛型 Where 子句的扩展 {#extensions_with_a_generic_where_clause} +## 具有泛型 Where 子句的扩展 {#extensions-with-a-generic-where-clause} 你也可以使用泛型 `where` 子句作为扩展的一部分。基于以前的例子,下面的示例扩展了泛型 `Stack` 结构体,添加一个 `isTop(_:)` 方法。 @@ -641,7 +641,7 @@ print([1260.0, 1200.0, 98.6, 37.0].average()) 就像可以在其他地方写泛型 `where` 子句一样,你可以在一个泛型 `where` 子句中包含多个条件作为扩展的一部分。用逗号分隔列表中的每个条件。 -## 具有泛型 Where 子句的关联类型 {#associated_types_with_a_generic_where_clause} +## 具有泛型 Where 子句的关联类型 {#associated-types-with-a-generic-where-clause} 你可以在关联类型后面加上具有泛型 `where` 的字句。例如,建立一个包含迭代器(`Iterator`)的容器,就像是标准库中使用的 `Sequence` 协议那样。你应该这么写: @@ -665,7 +665,7 @@ protocol Container { protocol ComparableContainer: Container where Item: Comparable { } ``` -## 泛型下标 {#generic_subscripts} +## 泛型下标 {#generic-subscripts} 下标可以是泛型,它们能够包含泛型 `where` 子句。你可以在 `subscript` 后用尖括号来写占位符类型,你还可以在下标代码块花括号前写 `where` 子句。例如: diff --git a/source/chapter2/23_Automatic_Reference_Counting.md b/source/chapter2/23_Automatic_Reference_Counting.md index 6511f575..0d40fbed 100755 --- a/source/chapter2/23_Automatic_Reference_Counting.md +++ b/source/chapter2/23_Automatic_Reference_Counting.md @@ -8,7 +8,7 @@ Swift 使用*自动引用计数(ARC)*机制来跟踪和管理你的应用程 > > 引用计数仅仅应用于类的实例。结构体和枚举类型是值类型,不是引用类型,也不是通过引用的方式存储和传递。 -## 自动引用计数的工作机制 {#how_arc_works} +## 自动引用计数的工作机制 {#how-arc-works} 当你每次创建一个类的新的实例的时候,ARC 会分配一块内存来储存该实例信息。内存中会包含实例的类型信息,以及这个实例所有相关的存储型属性的值。 @@ -20,7 +20,7 @@ Swift 使用*自动引用计数(ARC)*机制来跟踪和管理你的应用程 为了使上述成为可能,无论你将实例赋值给属性、常量或变量,它们都会创建此实例的强引用。之所以称之为“强”引用,是因为它会将实例牢牢地保持住,只要强引用还在,实例是不允许被销毁的。 -## 自动引用计数实践 {#arc_in_action} +## 自动引用计数实践 {#arc-in-action} 下面的例子展示了自动引用计数的工作机制。例子以一个简单的 `Person` 类开始,并定义了一个叫 `name` 的常量属性: @@ -81,7 +81,7 @@ reference3 = nil // 打印“John Appleseed is being deinitialized” ``` -## 类实例之间的循环强引用 {#strong_reference_cycles_between_class_instances} +## 类实例之间的循环强引用 {#strong-reference-cycles-between-class-instances} 在上面的例子中,ARC 会跟踪你所新创建的 `Person` 实例的引用数量,并且会在 `Person` 实例不再被需要时销毁它。 @@ -157,7 +157,7 @@ unit4A = nil `Person` 和 `Apartment` 实例之间的强引用关系保留了下来并且不会被断开。 -## 解决实例之间的循环强引用 {#resolving_strong_reference_cycles_between_class_instances} +## 解决实例之间的循环强引用 {#resolving-strong-reference-cycles-between-class-instances} Swift 提供了两种办法用来解决你在使用类的属性时所遇到的循环强引用问题:弱引用(weak reference)和无主引用(unowned reference)。 @@ -165,7 +165,7 @@ Swift 提供了两种办法用来解决你在使用类的属性时所遇到的 当其他的实例有更短的生命周期时,使用弱引用,也就是说,当其他实例析构在先时。在上面公寓的例子中,很显然一个公寓在它的生命周期内会在某个时间段没有它的主人,所以一个弱引用就加在公寓类里面,避免循环引用。相比之下,当其他实例有相同的或者更长生命周期时,请使用无主引用。 -### 弱引用 {#weak_references} +### 弱引用 {#weak-references} *弱引用*不会对其引用的实例保持强引用,因而不会阻止 ARC 销毁被引用的实例。这个特性阻止了引用变为循环强引用。声明属性或者变量时,在前面加上 `weak` 关键字表明这是一个弱引用。 @@ -238,7 +238,7 @@ unit4A = nil > > 在使用垃圾收集的系统里,弱指针有时用来实现简单的缓冲机制,因为没有强引用的对象只会在内存压力触发垃圾收集时才被销毁。但是在 ARC 中,一旦值的最后一个强引用被移除,就会被立即销毁,这导致弱引用并不适合上面的用途。 -### 无主引用 {#unowned_references} +### 无主引用 {#unowned-references} 和弱引用类似,*无主引用*不会牢牢保持住引用的实例。和弱引用不同的是,无主引用在其他实例有相同或者更长的生命周期时使用。你可以在声明属性或者变量时,在前面加上关键字 `unowned` 表示这是一个无主引用。 @@ -321,7 +321,7 @@ john = nil > 上面的例子展示了如何使用安全的无主引用。对于需要禁用运行时的安全检查的情况(例如,出于性能方面的原因),Swift 还提供了不安全的无主引用。与所有不安全的操作一样,你需要负责检查代码以确保其安全性。 > 你可以通过 `unowned(unsafe)` 来声明不安全无主引用。如果你试图在实例被销毁后,访问该实例的不安全无主引用,你的程序会尝试访问该实例之前所在的内存地址,这是一个不安全的操作。 -### 无主引用和隐式解包可选值属性 {#unowned_references_and_implicitly_unwrapped_optional_properties} +### 无主引用和隐式解包可选值属性 {#unowned-references-and-implicitly-unwrapped-optional-properties} 上面弱引用和无主引用的例子涵盖了两种常用的需要打破循环强引用的场景。 @@ -373,7 +373,7 @@ print("\(country.name)'s capital city is called \(country.capitalCity.name)") 在上面的例子中,使用隐式解包可选值值意味着满足了类的构造器的两个构造阶段的要求。`capitalCity` 属性在初始化完成后,能像非可选值一样使用和存取,同时还避免了循环强引用。 -## 闭包的循环强引用 {#strong_reference_cycles_for_closures} +## 闭包的循环强引用 {#strong-reference-cycles-for-closures} 前面我们看到了循环强引用是在两个类实例属性互相保持对方的强引用时产生的,还知道了如何用弱引用和无主引用来打破这些循环强引用。 @@ -467,7 +467,7 @@ paragraph = nil 注意,`HTMLElement` 的析构器中的消息并没有被打印,证明了 `HTMLElement` 实例并没有被销毁。 -## 解决闭包的循环强引用 {#resolving_strong_reference_cycles_for_closures} +## 解决闭包的循环强引用 {#resolving-strong-reference-cycles-for-closures} 在定义闭包时同时定义捕获列表作为闭包的一部分,通过这种方式可以解决闭包和类实例之间的循环强引用。捕获列表定义了闭包体内捕获一个或者多个引用类型的规则。跟解决两个类实例间的循环强引用一样,声明每个捕获的引用为弱引用或无主引用,而不是强引用。应当根据代码关系来决定使用弱引用还是无主引用。 @@ -475,7 +475,7 @@ paragraph = nil > > Swift 有如下要求:只要在闭包内使用 `self` 的成员,就要用 `self.someProperty` 或者 `self.someMethod()`(而不只是 `someProperty` 或 `someMethod()`)。这提醒你可能会一不小心就捕获了 `self`。 -### 定义捕获列表 {#defining_a_capture_list} +### 定义捕获列表 {#defining-a-capture-list} 捕获列表中的每一项都由一对元素组成,一个元素是 `weak` 或 `unowned` 关键字,另一个元素是类实例的引用(例如 `self`)或初始化过的变量(如 `delegate = self.delegate!`)。这些项在方括号中用逗号分开。 @@ -497,7 +497,7 @@ lazy var someClosure: () -> String = { } ``` -### 弱引用和无主引用 {#weak_and_unowned_references} +### 弱引用和无主引用 {#weak-and-unowned-references} 在闭包和捕获的实例总是互相引用并且总是同时销毁时,将闭包内的捕获定义为 `无主引用`。 diff --git a/source/chapter2/24_Memory_Safety.md b/source/chapter2/24_Memory_Safety.md index 03ae1529..4bf64961 100644 --- a/source/chapter2/24_Memory_Safety.md +++ b/source/chapter2/24_Memory_Safety.md @@ -4,7 +4,7 @@ Swift 也保证同时访问同一块内存时不会冲突,通过约束代码里对于存储地址的写操作,去获取那一块内存的访问独占权。因为 Swift 自动管理内存,所以大部分时候你完全不需要考虑内存访问的事情。然而,理解潜在的冲突也是很重要的,可以避免你写出访问冲突的代码。而如果你的代码确实存在冲突,那在编译时或者运行时就会得到错误。 -## 理解内存访问冲突 {#understanding_conflicting_access_to_memory} +## 理解内存访问冲突 {#understanding-conflicting-access-to-memory} 内存的访问,会发生在你给变量赋值,或者传递参数给函数时。例如,下面的代码就包含了读和写的访问: @@ -32,7 +32,7 @@ print("We're number \(one)!") > > 如果你曾经在单线程代码里有访问冲突,Swift 可以保证你在编译或者运行时会得到错误。对于多线程的代码,可以使用 [Thread Sanitizer](https://developer.apple.com/documentation/code_diagnostics/thread_sanitizer) 去帮助检测多线程的冲突。 -### 内存访问性质 {#characteristics_of_memory_access} +### 内存访问性质 {#characteristics-of-memory-access} 内存访问冲突时,要考虑内存访问上下文中的这三个性质:访问是读还是写,访问的时长,以及被访问的存储地址。特别是,冲突会发生在当你有两个访问符合下列的情况: @@ -59,7 +59,7 @@ print(myNumber) 重叠的访问主要出现在使用 in-out 参数的函数和方法或者结构体的 mutating 方法里。Swift 代码里典型的长期访问会在后面进行讨论。 -## In-Out 参数的访问冲突 {#conflicting_access_to_in-out_parameters} +## In-Out 参数的访问冲突 {#conflicting-access-to-in-out-parameters} 一个函数会对它所有的 in-out 参数进行长期写访问。in-out 参数的写访问会在所有非 in-out 参数处理完之后开始,直到函数执行完毕为止。如果有多个 in-out 参数,则写访问开始的顺序与参数的顺序一致。 @@ -115,7 +115,7 @@ balance(&playerOneScore, &playerOneScore) > > 因为操作符也是函数,它们也会对 in-out 参数进行长期访问。例如,假设 `balance(_:_:)` 是一个名为 `<^>` 的操作符函数,那么 `playerOneScore <^> playerOneScore` 也会造成像 `balance(&playerOneScore, &playerOneScore)` 一样的冲突。 -## 方法里 self 的访问冲突 {#conflicting_access_to_self_in_methods} +## 方法里 self 的访问冲突 {#conflicting-access-to-self-in-methods} 一个结构体的 mutating 方法会在调用期间对 `self` 进行写访问。例如,想象一下这么一个游戏,每一个玩家都有血量,受攻击时血量会下降,并且有敌人的数量,使用特殊技能时会减少敌人数量。 @@ -161,7 +161,7 @@ mutating 方法在调用期间需要对 `self` 发起写访问,而同时 in-ou ![](https://docs.swift.org/swift-book/_images/memory_share_health_oscar_2x.png) -## 属性的访问冲突 {#conflicting_access_to_properties} +## 属性的访问冲突 {#conflicting-access-to-properties} 如结构体,元组和枚举的类型都是由多个独立的值组成的,例如结构体的属性或元组的元素。因为它们都是值类型,修改值的任何一部分都是对于整个值的修改,意味着其中一个属性的读或写访问都需要访问整一个值。例如,元组元素的写访问重叠会产生冲突: diff --git a/source/chapter2/25_Access_Control.md b/source/chapter2/25_Access_Control.md index 7e90adce..16e89c5e 100644 --- a/source/chapter2/25_Access_Control.md +++ b/source/chapter2/25_Access_Control.md @@ -10,7 +10,7 @@ Swift 不仅提供了多种不同的访问级别,还为某些典型场景提 > > 为了简单起见,对于代码中可以设置访问级别的特性(属性、基本类型、函数等),在下面的章节中我们会称之为“实体”。 -## 模块和源文件 {#modules_and_source_files} +## 模块和源文件 {#modules-and-source-files} Swift 中的访问控制模型基于模块和源文件这两个概念。 @@ -20,7 +20,7 @@ Swift 中的访问控制模型基于模块和源文件这两个概念。 *源文件*就是 Swift 中的源代码文件,它通常属于一个模块,即一个应用程序或者框架。尽管我们一般会将不同的类型分别定义在不同的源文件中,但是同一个源文件也可以包含多个类型、函数之类的定义。 -## 访问级别 {#access_levels} +## 访问级别 {#access-levels} Swift 为代码中的实体提供了五种不同的*访问级别*。这些访问级别不仅与源文件中定义的实体相关,同时也与源文件所属的模块相关。 @@ -40,7 +40,7 @@ Open 只能作用于类和类的成员,它和 Public 的区别如下: 把一个类标记为 `open`,明确的表示你已经充分考虑过外部模块使用此类作为父类的影响,并且设计好了你的类的代码了。 -### 访问级别基本原则 {#guiding_principle_of_access_levels} +### 访问级别基本原则 {#guiding-principle-of-access-levels} Swift 中的访问级别遵循一个基本原则:*不可以在某个实体中定义访问级别更低(更严格)的实体*。 @@ -51,15 +51,15 @@ Swift 中的访问级别遵循一个基本原则:*不可以在某个实体中 关于此原则在各种情况下的具体表现,将在下文有所体现。 -### 默认访问级别 {#default_access_levels} +### 默认访问级别 {#default-access-levels} 如果你没有为代码中的实体显式指定访问级别,那么它们默认为 `internal` 级别(有一些例外情况,稍后会进行说明)。因此,在大多数情况下,我们不需要显式指定实体的访问级别。 -### 单 target 应用程序的访问级别 {#access_levels_for_single-target_apps} +### 单 target 应用程序的访问级别 {#access-levels-for-single-target-apps} 当你编写一个单目标应用程序时,应用的所有功能都是为该应用服务,而不需要提供给其他应用或者模块使用,所以我们不需要明确设置访问级别,使用默认的访问级别 Internal 即可。但是,你也可以使用 `fileprivate` 访问或 `private` 访问级别,用于隐藏一些功能的实现细节。 -### 框架的访问级别 {#access_levels_for_frameworks} +### 框架的访问级别 {#access-levels-for-frameworks} 当你开发框架时,就需要把一些对外的接口定义为 Open 或 Public,以便使用者导入该框架后可以正常使用其功能。这些被你定义为对外的接口,就是这个框架的 API。 @@ -67,11 +67,11 @@ Swift 中的访问级别遵循一个基本原则:*不可以在某个实体中 > > 框架依然会使用默认的 `internal` ,也可以指定为 `fileprivate` 访问或者 `private` 访问级别。当你想把某个实体作为框架的 API 的时候,需显式为其指定开放访问或公开访问级别。 -### 单元测试 target 的访问级别 {#access_levels_for_unit_test_targets} +### 单元测试 target 的访问级别 {#access-levels-for-unit-test-targets} 当你的应用程序包含单元测试 target 时,为了测试,测试模块需要访问应用程序模块中的代码。默认情况下只有 `open` 或 `public` 级别的实体才可以被其他模块访问。然而,如果在导入应用程序模块的语句前使用 `@testable` 特性,然后在允许测试的编译设置(`Build Options -> Enable Testability`)下编译这个应用程序模块,单元测试目标就可以访问应用程序模块中所有内部级别的实体。 -## 访问控制语法 {#access_control_syntax} +## 访问控制语法 {#access-control-syntax} 通过修饰符 `open`、`public`、`internal`、`fileprivate`、`private` 来声明实体的访问级别: @@ -94,7 +94,7 @@ class SomeInternalClass {} // 隐式 internal var someInternalConstant = 0 // 隐式 internal ``` -## 自定义类型 {#custom_types} +## 自定义类型 {#custom-types} 如果想为一个自定义类型指定访问级别,在定义类型时进行指定即可。新类型只能在它的访问级别限制范围内使用。例如,你定义了一个 `fileprivate` 级别的类,那这个类就只能在定义它的源文件中使用,可以作为属性类型、函数参数类型或者返回类型,等等。 @@ -127,7 +127,7 @@ private class SomePrivateClass { // 显式 private 类 func somePrivateMethod() {} // 隐式 private 类成员 } ``` -### 元组类型 {#tuple_types} +### 元组类型 {#tuple-types} 元组的访问级别将由元组中访问级别最严格的类型来决定。例如,如果你构建了一个包含两种不同类型的元组,其中一个类型为 `internal`,另一个类型为 `private`,那么这个元组的访问级别为 `private`。 @@ -135,7 +135,7 @@ private class SomePrivateClass { // 显式 private 类 > > 元组不同于类、结构体、枚举、函数那样有单独的定义。元组的访问级别是在它被使用时自动推断出的,而无法明确指定。 -### 函数类型 {#function_types} +### 函数类型 {#function-types} 函数的访问级别根据访问级别最严格的参数类型或返回类型的访问级别来决定。但是,如果这种访问级别不符合函数定义所在环境的默认访问级别,那么就需要明确地指定该函数的访问级别。 @@ -159,7 +159,7 @@ private func someFunction() -> (SomeInternalClass, SomePrivateClass) { 将该函数指定为 `public` 或 `internal`,或者使用默认的访问级别 `internal` 都是错误的,因为如果把该函数当做 `public` 或 `internal` 级别来使用的话,可能会无法访问 `private` 级别的返回值。 -### 枚举类型 {#enumeration_types} +### 枚举类型 {#enumeration-types} 枚举成员的访问级别和该枚举类型相同,你不能为枚举成员单独指定不同的访问级别。 @@ -174,11 +174,11 @@ public enum CompassPoint { } ``` -#### 原始值和关联值 {#raw_values_and_associated_values} +#### 原始值和关联值 {#raw-values-and-associated-values} 枚举定义中的任何原始值或关联值的类型的访问级别至少不能低于枚举类型的访问级别。例如,你不能在一个 `internal` 的枚举中定义 `private` 的原始值类型。 -### 嵌套类型 {#nested_types} +### 嵌套类型 {#nested-types} 如果在 `private` 的类型中定义嵌套类型,那么该嵌套类型就自动拥有 `private` 访问级别。如果在 `public` 或者 `internal` 级别的类型中定义嵌套类型,那么该嵌套类型自动拥有 `internal` 访问级别。如果想让嵌套类型拥有 `public` 访问级别,那么需要明确指定该嵌套类型的访问级别。 @@ -216,7 +216,7 @@ internal class B: A { 因为父类 `A` 和子类 `B` 定义在同一个源文件中,所以在子类 `B` 可以在重写的 `someMethod()` 方法中调用 `super.someMethod()`。 -## 常量、变量、属性、下标 {#constants_variables_properties_subscripts} +## 常量、变量、属性、下标 {#constants-variables-properties-subscripts} 常量、变量、属性不能拥有比它们的类型更高的访问级别。例如,你不能定义一个 `public` 级别的属性,但是它的类型却是 `private` 级别的。同样,下标也不能拥有比索引类型或返回类型更高的访问级别。 @@ -226,7 +226,7 @@ internal class B: A { private var privateInstance = SomePrivateClass() ``` -### Getter 和 Setter {#getters_and_setters} +### Getter 和 Setter {#getters-and-setters} 常量、变量、属性、下标的 `Getters` 和 `Setters` 的访问级别和它们所属类型的访问级别相同。 @@ -286,13 +286,13 @@ public struct TrackedString { 如同函数或方法的参数,构造器参数的访问级别也不能低于构造器本身的访问级别。 -### 默认构造器 {#default_initializers} +### 默认构造器 {#default-initializers} 如[默认构造器](./14_Initialization.md#default_initializers)所述,Swift 会为结构体和类提供一个默认的无参数的构造器,只要它们为所有存储型属性设置了默认初始值,并且未提供自定义的构造器。 默认构造器的访问级别与所属类型的访问级别相同,除非类型的访问级别是 `public`。如果一个类型被指定为 `public` 级别,那么默认构造器的访问级别将为 `internal`。如果你希望一个 `public` 级别的类型也能在其他模块中使用这种无参数的默认构造器,你只能自己提供一个 `public` 访问级别的无参数构造器。 -### 结构体默认的成员逐一构造器 {#default_memberwise_initializers_for_structure_types} +### 结构体默认的成员逐一构造器 {#default-memberwise-initializers-for-structure-types} 如果结构体中任意存储型属性的访问级别为 `private`,那么该结构体默认的成员逐一构造器的访问级别就是 `private`。否则,这种构造器的访问级别依然是 `internal`。 @@ -308,11 +308,11 @@ public struct TrackedString { > > 如果你定义了一个 `public` 访问级别的协议,那么该协议的所有实现也会是 `public` 访问级别。这一点不同于其他类型,例如,当类型是 `public` 访问级别时,其成员的访问级别却只是 `internal`。 -### 协议继承 {#protocol_inheritance} +### 协议继承 {#protocol-inheritance} 如果定义了一个继承自其他协议的新协议,那么新协议拥有的访问级别最高也只能和被继承协议的访问级别相同。例如,你不能将继承自 `internal` 协议的新协议定义为 `public` 协议。 -### 协议遵循 {#protocol_conformance} +### 协议遵循 {#protocol-conformance} 一个类型可以遵循比它级别更低的协议。例如,你可以定义一个 `public` 级别类型,它能在别的模块中使用,但是如果它遵循一个 `internal` 协议,这个遵循的部分就只能在这个 `internal` 协议所在的模块中使用。 @@ -366,7 +366,7 @@ extension SomeStruct: SomeProtocol { 泛型类型或泛型函数的访问级别取决于泛型类型或泛型函数本身的访问级别,还需结合类型参数的类型约束的访问级别,根据这些访问级别中的最低访问级别来确定。 -## 类型别名 {#type_aliases} +## 类型别名 {#type-aliases} 你定义的任何类型别名都会被当作不同的类型,以便于进行访问控制。类型别名的访问级别不可高于其表示的类型的访问级别。例如,`private` 级别的类型别名可以作为 `private`、`file-private`、`internal`、`public` 或者 `open` 类型的别名,但是 `public` 级别的类型别名只能作为 `public` 类型的别名,不能作为 `internal`、`file-private` 或 `private` 类型的别名。 diff --git a/source/chapter2/26_Advanced_Operators.md b/source/chapter2/26_Advanced_Operators.md index bb57f425..ee1a99ae 100644 --- a/source/chapter2/26_Advanced_Operators.md +++ b/source/chapter2/26_Advanced_Operators.md @@ -8,13 +8,13 @@ 我们不用被预定义的运算符所限制。在 Swift 中可以自由地定义中缀、前缀、后缀和赋值运算符,它们具有自定义的优先级与关联值。这些运算符在代码中可以像预定义的运算符一样使用,你甚至可以扩展已有的类型以支持自定义运算符。 -## 位运算符 {#bitwise_operators} +## 位运算符 {#bitwise-operators} *位运算符*可以操作数据结构中每个独立的比特位。它们通常被用在底层开发中,比如图形编程和创建设备驱动。位运算符在处理外部资源的原始数据时也十分有用,比如对自定义通信协议传输的数据进行编码和解码。 Swift 支持 C 语言中的全部位运算符,接下来会一一介绍。 -### Bitwise NOT Operator(按位取反运算符) {#bitwise_not_operator} +### Bitwise NOT Operator(按位取反运算符) {#bitwise-not-operator} *按位取反运算符(`~`)*对一个数值的全部比特位进行取反: @@ -31,7 +31,7 @@ let invertedBits = ~initialBits // 等于 0b11110000 接着使用按位取反运算符创建了一个名为 `invertedBits` 的常量,这个常量的值与全部位取反后的 `initialBits` 相等。即所有的 `0` 都变成了 `1`,同时所有的 `1` 都变成 `0`。`invertedBits` 的二进制值为 `11110000`,等价于无符号十进制数的 `240`。 -### Bitwise AND Operator(按位与运算符) {#bitwise_and_operator} +### Bitwise AND Operator(按位与运算符) {#bitwise-and-operator} *按位与运算符(`&`)* 对两个数的比特位进行合并。它返回一个新的数,只有当两个数的对应位*都*为 `1` 的时候,新数的对应位才为 `1`: @@ -45,7 +45,7 @@ let lastSixBits: UInt8 = 0b00111111 let middleFourBits = firstSixBits & lastSixBits // 等于 00111100 ``` -### Bitwise OR Operator(按位或运算符) {#bitwise_or_operator} +### Bitwise OR Operator(按位或运算符) {#bitwise-or-operator} *按位或运算符(`|`)*可以对两个数的比特位进行比较。它返回一个新的数,只要两个数的对应位中有*任意一个*为 `1` 时,新数的对应位就为 `1`: @@ -59,7 +59,7 @@ let moreBits: UInt8 = 0b01011110 let combinedbits = someBits | moreBits // 等于 11111110 ``` -### Bitwise XOR Operator(按位异或运算符) {#bitwise_xor_operator} +### Bitwise XOR Operator(按位异或运算符) {#bitwise-xor-operator} *按位异或运算符*,或称“排外的或运算符”(`^`),可以对两个数的比特位进行比较。它返回一个新的数,当两个数的对应位不相同时,新数的对应位就为 `1`,并且对应位相同时则为 `0`: @@ -73,13 +73,13 @@ let otherBits: UInt8 = 0b00000101 let outputBits = firstBits ^ otherBits // 等于 00010001 ``` -### Bitwise Left and Right Shift Operators(按位左移、右移运算符) {#bitwise_left_and_right_shift_operators} +### Bitwise Left and Right Shift Operators(按位左移、右移运算符) {#bitwise-left-and-right-shift-operators} *按位左移运算符(`<<`)* 和 *按位右移运算符(`>>`)*可以对一个数的所有位进行指定位数的左移和右移,但是需要遵守下面定义的规则。 对一个数进行按位左移或按位右移,相当于对这个数进行乘以 2 或除以 2 的运算。将一个整数左移一位,等价于将这个数乘以 2,同样地,将一个整数右移一位,等价于将这个数除以 2。 -#### 无符号整数的移位运算 {#shifting_behavior_for_unsigned_integers} +#### 无符号整数的移位运算 {#shifting-behavior-for-unsigned-integers} 对无符号整数进行移位的规则如下: @@ -123,7 +123,7 @@ let blueComponent = pink & 0x0000FF // blueComponent 是 0x99,即 153 最后,蓝色部分通过对 `0xCC6699` 和 `0x0000FF` 进行按位与运算得到 `0x000099`。这里不需要再向右移位,而 `0x000099` 也就是 `0x99` ,也就是十进制数值的 `153`。 -#### 有符号整数的移位运算 {#shifting_behavior_for_signed_integers} +#### 有符号整数的移位运算 {#shifting-behavior-for-signed-integers} 对比无符号整数,有符号整数的移位运算相对复杂得多,这种复杂性源于有符号整数的二进制表现形式。(为了简单起见,以下的示例都是基于 8 比特的有符号整数,但是其中的原理对任何位数的有符号整数都是通用的。) @@ -159,7 +159,7 @@ let blueComponent = pink & 0x0000FF // blueComponent 是 0x99,即 153 由于正数和负数的特殊存储方式,在对它们进行右移的时候,会使它们越来越接近 `0`。在移位的过程中保持符号位不变,意味着负整数在接近 `0` 的过程中会一直保持为负。 -## 溢出运算符 {#overflow_operators} +## 溢出运算符 {#overflow-operators} 当向一个整数类型的常量或者变量赋予超过它容量的值时,Swift 默认会报错,而不是允许生成一个无效的数。这个行为为我们在运算过大或者过小的数时提供了额外的安全性。 @@ -180,7 +180,7 @@ potentialOverflow += 1 * 溢出减法 `&-` * 溢出乘法 `&*` -### 数值溢出 {#value_overflow} +### 数值溢出 {#value-overflow} 数值有可能出现上溢或者下溢。 @@ -225,7 +225,7 @@ signedOverflow = signedOverflow &- 1 对于无符号与有符号整型数值来说,当出现上溢时,它们会从数值所能容纳的最大数变成最小数。同样地,当发生下溢时,它们会从所能容纳的最小数变成最大数。 -## 优先级和结合性 {#precedence_and_associativity} +## 优先级和结合性 {#precedence-and-associativity} 运算符的*优先级*使得一些运算符优先于其他运算符;它们会先被执行。 @@ -272,7 +272,7 @@ signedOverflow = signedOverflow &- 1 > > 相对 C 语言和 Objective-C 来说,Swift 的运算符优先级和结合性规则更加简洁和可预测。但是,这也意味着它们相较于 C 语言及其衍生语言并不是完全一致。在对现有的代码进行移植的时候,要注意确保运算符的行为仍然符合你的预期。 -## 运算符函数 {#operator_functions} +## 运算符函数 {#operator-functions} 类和结构体可以为现有的运算符提供自定义的实现。这通常被称为运算符*重载*。 @@ -309,7 +309,7 @@ let combinedVector = vector + anotherVector ![Art/vectorAddition_2x.png](https://docs.swift.org/swift-book/_images/vectorAddition_2x.png) -### 前缀和后缀运算符 {#prefix_and_postfix_operators} +### 前缀和后缀运算符 {#prefix-and-postfix-operators} 上个例子演示了一个二元中缀运算符的自定义实现。类与结构体也能提供标准*一元运算符*的实现。一元运算符只运算一个值。当运算符出现在值之前时,它就是*前缀*的(例如 `-a`),而当它出现在值之后时,它就是*后缀*的(例如 `b!`)。 @@ -335,7 +335,7 @@ let alsoPositive = -negative // alsoPositive 是一个值为 (3.0, 4.0) 的 Vector2D 实例 ``` -### 复合赋值运算符 {#compound_assignment_operators} +### 复合赋值运算符 {#compound-assignment-operators} *复合赋值运算符*将赋值运算符(`=`)与其它运算符进行结合。例如,将加法与赋值结合成加法赋值运算符(`+=`)。在实现的时候,需要把运算符的左参数设置成 `inout` 类型,因为这个参数的值会在运算符函数内直接被修改。 @@ -362,7 +362,7 @@ original += vectorToAdd > > 不能对默认的赋值运算符(`=`)进行重载。只有复合赋值运算符可以被重载。同样地,也无法对三元条件运算符 (`a ? b : c`) 进行重载。 -### 等价运算符 {#equivalence_operators} +### 等价运算符 {#equivalence-operators} 通常情况下,自定义的类和结构体没有对*等价运算符*进行默认实现,等价运算符通常被称为*相等*运算符(`==`)与*不等*运算符(`!=`)。 @@ -412,7 +412,7 @@ if twoThreeFour == anotherTwoThreeFour { // 打印“These two vectors are also equivalent.” ``` -## 自定义运算符 {#custom_operators} +## 自定义运算符 {#custom-operators} 除了实现标准运算符,在 Swift 中还可以声明和实现*自定义运算符*。可以用来自定义运算符的字符列表请参考[运算符](../chapter3/02_Lexical_Structure.html#operators)。 @@ -438,7 +438,7 @@ let afterDoubling = +++toBeDoubled // afterDoubling 现在的值也为 (2.0, 8.0) ``` -### 自定义中缀运算符的优先级 {#precedence_and_associativity_for_custom_infix_operators} +### 自定义中缀运算符的优先级 {#precedence-and-associativity-for-custom-infix-operators} 每个自定义中缀运算符都属于某个优先级组。优先级组指定了这个运算符相对于其他中缀运算符的优先级和结合性。[优先级和结合性](#precedence_and_associativity)中详细阐述了这两个特性是如何对中缀运算符的运算产生影响的。 diff --git a/source/chapter3/01_About_the_Language_Reference.md b/source/chapter3/01_About_the_Language_Reference.md index 2c6f5aee..2bac40fd 100755 --- a/source/chapter3/01_About_the_Language_Reference.md +++ b/source/chapter3/01_About_the_Language_Reference.md @@ -4,7 +4,7 @@ Swift 语言相对较小,这是由于 Swift 代码中常用的类型、函数以及运算符都已经在 Swift 标准库中定义了。虽然这些类型、函数和运算符并不是 Swift 语言自身的一部分,但是它们被广泛应用于本书的讨论和代码范例中。 -## 如何阅读语法 {#how_to_read_the_grammar} +## 如何阅读语法 {#how-to-read-the-grammar} 用来描述 Swift 编程语言形式语法的符号遵循下面几个约定: diff --git a/source/chapter3/03_Types.md b/source/chapter3/03_Types.md index 252f2080..ab39b8d2 100644 --- a/source/chapter3/03_Types.md +++ b/source/chapter3/03_Types.md @@ -54,7 +54,7 @@ Swift 语言存在两种类型:命名型类型和复合型类型。*命名型 > *类型* → [*(类型)*](#type) > -## 类型注解 {#type_annotation} +## 类型注解 {#type-annotation} *类型注解*显式地指定一个变量或表达式的类型。类型注解始于冒号 `:` 终于类型,比如下面两个例子: ```swift @@ -73,7 +73,7 @@ func someFunction(a: Int) { /* ... */ } > *类型注解* → **:** [*特性列表*](./07_Attributes.md#attributes)可选 **输入输出参数**可选 [*类型*](#type) > -## 类型标识符 {#type_identifier} +## 类型标识符 {#type-identifier} 类型标识符引用命名型类型,还可引用命名型或复合型类型的别名。 大多数情况下,类型标识符引用的是与之同名的命名型类型。例如类型标识符 `Int` 引用命名型类型 `Int`,同样,类型标识符 `Dictionary` 引用命名型类型 `Dictionary`。 @@ -102,7 +102,7 @@ var someValue: ExampleModule.MyType > *类型名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > -## 元组类型 {#tuple_type} +## 元组类型 {#tuple-type} 元组类型是使用括号括起来的零个或多个类型,类型间用逗号隔开。 你可以使用元组类型作为一个函数的返回类型,这样就可以使函数返回多个值。你也可以命名元组类型中的元素,然后用这些名字来引用每个元素的值。元素的名字由一个标识符紧跟一个冒号 `(:)` 组成。[函数和多返回值](../chapter2/06_Functions.md#functions_with_multiple_return_values) 章节里有一个展示上述特性的例子。 @@ -137,7 +137,7 @@ someTuple = (left: 5, right: 5) // 错误:命名类型不匹配 > *元素名* → [*标识符*](./02_Lexical_Structure.md#identifier) > -## 函数类型 {#function_type} +## 函数类型 {#function-type} 函数类型表示一个函数、方法或闭包的类型,它由参数类型和返回值类型组成,中间用箭头(`->`)隔开: > (`参数类型`)->(`返回值类型`) @@ -234,7 +234,7 @@ func takesTwoFunctions(first: (Any) -> Void, second: (Any) -> Void) { > *参数标签* → [*标识符*](./02_Lexical_Structure.md#identifier) > -## 数组类型 {#array_type} +## 数组类型 {#array-type} Swift 语言为标准库中定义的 `Array` 类型提供了如下语法糖: > [`类型`] @@ -266,7 +266,7 @@ var array3D: [[[Int]]] = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]] > *数组类型* → **[** [*类型*](#type) **]** > -## 字典类型 {#dictionary_type} +## 字典类型 {#dictionary-type} Swift 语言为标准库中定义的 `Dictionary` 类型提供了如下语法糖: > [`键类型` : `值类型`] @@ -294,7 +294,7 @@ let someDictionary: Dictionary = ["Alex": 31, "Paul": 39] > *字典类型* → **[** [*类型*](#type) **:** [*类型*](#type) **]** > -## 可选类型 {#optional_type} +## 可选类型 {#optional-type} Swift 定义后缀 `?` 来作为标准库中定义的命名型类型 `Optional` 的语法糖。换句话说,下面两个声明是等价的: ```swift @@ -326,7 +326,7 @@ optionalInteger! // 42 > *可选类型* → [*类型*](#type) **?** > -## 隐式解析可选类型 {#implicitly_unwrapped_optional_type} +## 隐式解析可选类型 {#implicitly-unwrapped-optional-type} 当可以被访问时,Swift 语言定义后缀 `!` 作为标准库中命名类型 `Optional` 的语法糖,来实现自动解包的功能。如果尝试对一个值为 `nil` 的可选类型进行隐式解包,将会产生运行时错误。因为隐式解包,下面两个声明等价: ```swift @@ -361,7 +361,7 @@ let implicitlyUnwrappedArray: [Int]! // 正确 > *隐式解析可选类型* → [*类型*](#type) **!** > -## 协议合成类型 {#protocol_composition_type} +## 协议合成类型 {#protocol-composition-type} 协议合成类型定义了一种遵循协议列表中每个指定协议的类型,或者一个现有类型的子类并遵循协议列表中每个指定协议。协议合成类型只能用在类型注解、泛型参数子句和泛型 `where` 子句中指定类型。 协议合成类型的形式如下: @@ -395,7 +395,7 @@ typealias PQR = PQ & Q & R > *协议合成延续* → [*协议标识符*](#protocol-identifier) | [*协议合成类型*](#protocol-composition-type) > -## 元类型 {#metatype_type} +## 元类型 {#metatype-type} 元类型是指任意类型的类型,包括类类型、结构体类型、枚举类型和协议类型。 类、结构体或枚举类型的元类型是相应的类型名紧跟 `.Type`。协议类型的元类型——并不是运行时遵循该协议的具体类型——是该协议名字紧跟 `.Protocol`。比如,类 `SomeClass` 的元类型就是 `SomeClass.Type`,协议 `SomeProtocol` 的元类型就是 `SomeProtocal.Protocol`。 @@ -445,7 +445,7 @@ let anotherInstance = metatype.init(string: "some string") > *元类型* → [*类型*](#type) **.** **Type** | [*类型*](#type) **.** **Protocol** > -## 类型继承子句 {#type_inheritance_clause} +## 类型继承子句 {#type-inheritance-clause} 类型继承子句被用来指定一个命名型类型继承自哪个类、采纳哪些协议。类型继承子句开始于冒号 `:`,其后是类型标识符列表。 类可以继承自单个超类,并遵循任意数量的协议。当定义一个类时,超类的名字必须出现在类型标识符列表首位,然后跟上该类需要遵循的任意数量的协议。如果一个类不是从其它类继承而来,那么列表可以以协议开头。关于类继承更多的讨论和例子,请参阅 [继承](../chapter2/13_Inheritance.md)。 @@ -457,7 +457,7 @@ let anotherInstance = metatype.init(string: "some string") > 类型继承子句语法 > -#### type_inheritance_clause {#type_inheritance_clause} +#### type_inheritance_clause {#type-inheritance-clause} > *类型继承子句* → **:** [*类型继承列表*](#type-inheritance-list) > @@ -468,7 +468,7 @@ let anotherInstance = metatype.init(string: "some string") #### class-requirement {#class-requirement} -## 类型推断 {#type_inference} +## 类型推断 {#type-inference} Swift 广泛使用类型推断,从而允许你省略代码中很多变量和表达式的类型或部分类型。比如,对于 `var x: Int = 0`,你可以完全省略类型而简写成 `var x = 0`,编译器会正确推断出 `x` 的类型 `Int`。类似的,当完整的类型可以从上下文推断出来时,你也可以省略类型的一部分。比如,如果你写了 `let dict: Dictionary = ["A" : 1]`,编译器能推断出 `dict` 的类型是 `Dictionary`。 在上面的两个例子中,类型信息从表达式树的叶子节点传向根节点。也就是说,`var x: Int = 0` 中 `x` 的类型首先根据 `0` 的类型进行推断,然后将该类型信息传递到根节点(变量 `x`)。 diff --git a/source/chapter3/04_Expressions.md b/source/chapter3/04_Expressions.md index 9408459d..e6832e03 100644 --- a/source/chapter3/04_Expressions.md +++ b/source/chapter3/04_Expressions.md @@ -15,7 +15,7 @@ Swift 中存在四种表达式:前缀表达式,二元表达式,基本表 > *表达式列表* → [*表达式*](#expression) | [*表达式*](#expression) **,** [*表达式列表*](#expression-list) > -## 前缀表达式 {#prefix_expressions} +## 前缀表达式 {#prefix-expressions} 前缀表达式由可选的前缀运算符和表达式组成。前缀运算符只接收一个参数,表达式则紧随其后。 关于这些运算符的更多信息,请参阅 [基本运算符](../chapter2/02_Basic_Operators.md) 和 [高级运算符](../chapter2/26_Advanced_Operators.md)。 @@ -37,7 +37,7 @@ Swift 中存在四种表达式:前缀表达式,二元表达式,基本表 > *输入输出表达式* → **&** [*标识符*](./02_Lexical_Structure.md#identifier) > -### Try 运算符 {#try_operator} +### Try 运算符 {#try-operator} try 表达式由 `try` 运算符加上紧随其后的可抛出错误的表达式组成,形式如下: > try `可抛出错误的表达式` @@ -75,7 +75,7 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try > *try 运算符* → **try** | **try?** | **try!** > -## 二元表达式 {#binary_expressions} +## 二元表达式 {#binary-expressions} *二元表达式*由中缀运算符和左右参数表达式组成。形式如下: > `左侧参数` `二元运算符` `右侧参数` @@ -107,7 +107,7 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try > *二元表达式列表* → [*二元表达式*](#binary-expression) [*二元表达式列表*](#binary-expressions)可选 > -### 赋值表达式 {#assignment_operator} +### 赋值表达式 {#assignment-operator} 赋值表达式会为某个给定的表达式赋值,形式如下; > `表达式` = `值` @@ -129,7 +129,7 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try > *赋值运算符* → **=** > -### 三元条件运算符 {#ternary_conditional_operator} +### 三元条件运算符 {#ternary-conditional-operator} *三元条件运算符*会根据条件来对两个给定表达式中的一个进行求值,形式如下: > `条件` ? `表达式(条件为真则使用)` : `表达式(条件为假则使用)` @@ -146,7 +146,7 @@ sum = (try someThrowingFunction()) + anotherThrowingFunction() // 错误:try > *三元条件运算符* → **?** [*表达式*](#expression) **:** > -### 类型转换运算符 {#type-casting_operators} +### 类型转换运算符 {#type-casting-operators} 有 4 种类型转换运算符:`is`、`as`、`as? ` 和 `as!`。它们有如下的形式: > `表达式` is `类型` @@ -198,7 +198,7 @@ f(x as Any) > *类型转换运算符* → **as** **!** [*类型*](./03_Types.md#type) > -## 基本表达式 {#primary_expressions} +## 基本表达式 {#primary-expressions} *基本表达式*是最基本的表达式。它们可以单独使用,也可以跟前缀表达式、二元表达式、后缀表达式组合使用。 > 基本表达式语法 @@ -226,7 +226,7 @@ f(x as Any) > *基本表达式* → [*key-path字符串表达式*](#key-patch-string-expression) > -### 字面量表达式 {#literal_expression} +### 字面量表达式 {#literal-expression} *字面量表达式*可由普通字面量(例如字符串或者数字),字典或者数组字面量,或者下面列表中的特殊字面量组成: 字面量 | 类型 | 值 @@ -330,7 +330,7 @@ Xcode 使用 playground 字面量对程序编辑器中的颜色、文件或者 > *playground 字面量* → **#fileLiteral ( resourceName : [*表达式*](#expression) )** > > -#### playground 字面量* → **#imageLiteral ( resourceName : [*表达式*](#expression) )**self_expression {#self_expression} +#### playground 字面量* → **#imageLiteral ( resourceName : [*表达式*](#expression) )**self_expression {#self-expression} > ### Self 表达式 @@ -392,7 +392,7 @@ struct Point { > *self 构造器表达式* → **self** **.** **init** > -### 父类表达式 {#superclass_expression} +### 父类表达式 {#superclass-expression} *父类*表达式可以使我们在某个类中访问它的父类,它有如下形式: > super.`成员名称` @@ -425,7 +425,7 @@ struct Point { > *父类构造器表达式* → **super** **.** **init** > -### 闭包表达式 {#closure_expression} +### 闭包表达式 {#closure-expression} *闭包表达式*会创建一个闭包,在其他语言中也叫 *lambda* 或*匿名*函数。跟函数一样,闭包包含了待执行的代码,不同的是闭包还会捕获所在环境中的常量和变量。它的形式如下: ```swift @@ -572,7 +572,7 @@ myFunction { [weak parent = self.parent] in print(parent!.title) } > *捕获说明符* → **weak** | **unowned** | **unowned(safe)** | **unowned(unsafe)** > -### 隐式成员表达式 {#implicit_member_expression} +### 隐式成员表达式 {#implicit-member-expression} 若类型可被推断出来,可以使用*隐式成员表达式*来访问某个类型的成员(例如某个枚举成员或某个类型方法),形式如下: > .`成员名称` @@ -592,7 +592,7 @@ x = .AnotherValue > *隐式成员表达式* → **.** [*标识符*](./02_Lexical_Structure.md#identifier) > -### 圆括号表达式 {#parenthesized_expression} +### 圆括号表达式 {#parenthesized-expression} *圆括号表达式*是由圆括号包围的表达式。你可以用圆括号说明成组的表达式的先后操作。成组的圆括号不会改变表达式的类型 - 例如 `(1)` 的类型就是简单的 `Int`。 > 圆括号表达式语法 @@ -602,7 +602,7 @@ x = .AnotherValue > *圆括号表达式* → **( [*表达式*](#expression) )** > -### 元组表达式 {#Tuple_Expression} +### 元组表达式 {#Tuple-Expression} *元组表达式*由圆括号和其中多个逗号分隔的子表达式组成。每个子表达式前面可以有一个标识符,用冒号隔开。元组表达式形式如下: > (`标识符 1` : `表达式 1`, `标识符 2` : `表达式 2`, `...`) @@ -632,7 +632,7 @@ x = .AnotherValue > *元组元素* → [*表达式*](#expression) | [*标识符*](identifier) **:** [*表达式*](#expression) > -### 通配符表达式 {#wildcard_expression} +### 通配符表达式 {#wildcard-expression} *通配符表达式*可以在赋值过程中显式忽略某个值。例如下面的代码中,`10` 被赋值给 `x`,而 `20` 则被忽略: ```swift @@ -648,7 +648,7 @@ x = .AnotherValue > -### Key-path 表达式 {#key-path_expression} +### Key-path 表达式 {#key-path-expression} Key-path 表达式引用一个类型的属性或下标。在动态语言中使场景可以使用 Key-path 表达式,例如观察键值对。格式为: > **\类型名.路径** @@ -806,7 +806,7 @@ print(interestingNumbers[keyPath: \[String: [Int]].["hexagonal"]!.count.bitWidth -### 选择器表达式 {#selector_expression} +### 选择器表达式 {#selector-expression} *选择器表达式*可以让你通过选择器来引用在 Objective-C 中方法(method)和属性(property)的 setter 和 getter 方法。 > \#selector(方法名) @@ -863,7 +863,7 @@ let anotherSelector = #selector(SomeClass.doSomething(_:) as (SomeClass) -> (Str > *选择器表达式* → __#selector__ **(** [*setter:表达式*](#expression) **)** > -## Key-path 字符串表达式 {#key-path_string_expressions} +## Key-path 字符串表达式 {#key-path-string-expressions} key-path 字符串表达式可以访问一个引用 Objective-C 属性的字符串,通常在 key-value 编程和 key-value 观察 APIs 中使用。其格式如下: > `#keyPath` ( `属性名` ) @@ -919,7 +919,7 @@ print(keyPath == c.getSomeKeyPath()) > *key-path 字符串表达式* → **#keyPath (** [表达式](#expression) **)** > -## 后缀表达式 {#postfix_expressions} +## 后缀表达式 {#postfix-expressions} *后缀表达式*就是在某个表达式的后面运用后缀运算符或其他后缀语法。从语法构成上来看,基本表达式也是后缀表达式。 关于这些运算符的更多信息,请参阅 [基本运算符](../chapter2/02_Basic_Operators.md) 和 [高级运算符](../chapter2/26_Advanced_Operators.md)。 @@ -951,7 +951,7 @@ print(keyPath == c.getSomeKeyPath()) > *后缀表达式* → [*可选链表达式*](#optional-chaining-expression) > -### 函数调用表达式 {#function_call_expression} +### 函数调用表达式 {#function-call-expression} *函数调用表达式*由函数名和参数列表组成,形式如下: > `函数名`(`参数 1`, `参数 2`) @@ -1014,7 +1014,7 @@ myData.someMethod {$0 == 13} > *尾随闭包* → [*闭包表达式*](#closure-expression) > -### 构造器表达式 {#initializer_expression} +### 构造器表达式 {#initializer-expression} *构造器表达式*用于访问某个类型的构造器,形式如下: > `表达式`.init(`构造器参数`) @@ -1061,7 +1061,7 @@ let s3 = someValue.dynamicType.init(data: 7) // 有效 > *构造器表达式* → [*后缀表达式*](#postfix-expression) **.** **init** **(** [*参数名称*](#argument-names) **)** > -### 显式成员表达式 {#explicit_member_expression} +### 显式成员表达式 {#explicit-member-expression} *显式成员表达式*允许我们访问命名类型、元组或者模块的成员,其形式如下: > `表达式`.`成员名` @@ -1138,7 +1138,7 @@ let x = [10, 3, 20, 15, 4] > *参数名* → [*标识符*](./02_Lexical_Structure.md#identifier) **:** > -### 后缀 self 表达式 {#postfix_self_expression} +### 后缀 self 表达式 {#postfix-self-expression} 后缀 `self` 表达式由某个表达式或类型名紧跟 `.self` 组成,其形式如下: > `表达式`.self @@ -1158,7 +1158,7 @@ let x = [10, 3, 20, 15, 4] > -### 下标表达式 {#subscript_expression} +### 下标表达式 {#subscript-expression} 可通过*下标表达式*访问相应的下标,形式如下: > `表达式`[`索引表达式`] @@ -1175,7 +1175,7 @@ let x = [10, 3, 20, 15, 4] > *下标表达式* → [*后缀表达式*](#postfix-expression) **[** [*表达式列表*](#expression-list) **]** > -### 强制取值表达式 {#forced-Value_expression} +### 强制取值表达式 {#forced-Value-expression} 当你确定可选值不是 `nil` 时,可以使用*强制取值表达式*来强制解包,形式如下: > `表达式`! @@ -1202,7 +1202,7 @@ someDictionary["a"]![0] = 100 > *强制取值表达式* → [*后缀表达式*](#postfix-expression) **!** > -### 可选链表达式 {#optional-chaining_expression} +### 可选链表达式 {#optional-chaining-expression} *可选链表达式*提供了一种使用可选值的便捷方法,形式如下: > `表达式`? diff --git a/source/chapter3/05_Statements.md b/source/chapter3/05_Statements.md index 365a93e3..a4bf77c0 100755 --- a/source/chapter3/05_Statements.md +++ b/source/chapter3/05_Statements.md @@ -1,4 +1,4 @@ -# 语句(Statements){#statement_statements} +# 语句(Statements){#statement-statements} 在 Swift 中,有三种类型的语句:简单语句、编译器控制语句和控制流语句。简单语句是最常见的,用于构造表达式或者声明。编译器控制语句允许程序改变编译器的行为,包含编译配置语句和行控制语句。 @@ -33,7 +33,7 @@ > *多条语句* → [*语句*](#statement) [*多条语句*](#statements)可选 > -## 循环语句 {#loop_statements} +## 循环语句 {#loop-statements} 循环语句会根据特定的循环条件来重复执行代码块。Swift 提供三种类型的循环语句:`for-in` 语句、`while` 语句和 `repeat-while` 语句。 通过 `break` 语句和 `continue` 语句可以改变循环语句的控制流。有关这两条语句,详情参见 [Break 语句](#break_statement) 和 [Continue 语句](#continue_statement)。 @@ -50,7 +50,7 @@ > *循环语句* → [*repeat-while 语句*](#repeat-while-statement) > -### For-In 语句 {#for-in_statements} +### For-In 语句 {#for-in-statements} `for-in` 语句会为集合(或实现了 [Sequence](https://developer.apple.com/documentation/swift/sequence) 协议的任意类型)中的每一项执行一次代码块。 @@ -72,7 +72,7 @@ for item in collection { > *for-in 语句* → **for** **case**可选 [*模式*](./08_Patterns.md#pattern) **in** [*表达式*](./04_Expressions.md#expression) [*where 子句*](#where-clause)可选 [*代码块*](05_Declarations.md#code-block) > -### While 语句 {#while_statements} +### While 语句 {#while-statements} 只要循环条件为真,`while` 语句就会重复执行代码块。 `while` 语句的形式如下: @@ -118,7 +118,7 @@ while condition { > *可选绑定条件* → **let** [*模式*](./08_Patterns.md#pattern) [*构造器*](./06_Declarations.md#initializer) | **var** [*模式*](./08_Patterns.md#pattern) [*构造器*](./06_Declarations.md#initializer) > -### Repeat-While 语句 {#repeat-while_statements} +### Repeat-While 语句 {#repeat-while-statements} `repeat-while` 语句至少执行一次代码块,之后只要循环条件为真,就会重复执行代码块。 `repeat-while` 语句的形式如下: @@ -146,7 +146,7 @@ repeat { > *repeat-while 语句* → **repeat** [*代码块*](./06_Declarations.md#code-block) **while** [*表达式*](./04_Expressions.md#expression) > -## 分支语句 {#branch_statements} +## 分支语句 {#branch-statements} 分支语句会根据一个或者多个条件来执行指定部分的代码。分支语句中的条件将会决定程序如何分支以及执行哪部分代码。Swift 提供三种类型的分支语句:`if` 语句、 `guard` 语句和 `switch` 语句。 `if` 语句和 `switch` 语句中的控制流可以用 `break` 语句改变,请参阅 [Break 语句](#break_statement)。 @@ -163,7 +163,7 @@ repeat { > *分支语句* → [*switch 语句*](#switch-statement) > -### If 语句 {#if_statements} +### If 语句 {#if-statements} `if` 语句会根据一个或多个条件来决定执行哪一块代码。 `if` 语句有两种基本形式,无论哪种形式,都必须有花括号。 @@ -212,7 +212,7 @@ if condition 1 { > *else 子句* → **else** [*代码块*](./06_Declarations.md#code-block) | **else** [*if 语句*](#if-statement) > -### Guard 语句 {#guard_statements} +### Guard 语句 {#guard-statements} 如果一个或者多个条件不成立,可用 `guard` 语句来退出当前作用域。 `guard` 语句的格式如下: @@ -244,7 +244,7 @@ guard condition else { > *guard 语句* → **guard** [*条件子句*](#condition-clause) **else** [*代码块*] (05_Declarations.md#code-block) > -### Switch 语句 {#switch_statements} +### Switch 语句 {#switch-statements} `switch` 语句会根据控制表达式的值来决定执行哪部分代码。 `switch` 语句的形式如下: @@ -348,27 +348,27 @@ case .suppressed: > > -#### grammar_conditional-switch-case {#grammar_conditional-switch-case} +#### grammar_conditional-switch-case {#grammar-conditional-switch-case} > *conditional-switch-case* → [*switch-if-directive-clause*](#switch-case-attributes-label) [*switch-elseif-directive-clauses*](#switch-case-attributes-label) 可选 [*switch-else-directive-clause*](#switch-case-attributes-label) 可选 [*endif-directive*](#switch-case-attributes-label) > -#### grammar_switch-if-directive-clause {#grammar_switch-if-directive-clause} +#### grammar_switch-if-directive-clause {#grammar-switch-if-directive-clause} > *switch-if-directive 语句* → [*if-directive*](#switch-case-attributes-label) [*compilation-condition*](#switch-case-attributes-label) [*switch-cases*](#switch-case-attributes-label) 可选 > -#### grammar_switch-elseif-directive-clauses {#grammar_switch-elseif-directive-clauses} +#### grammar_switch-elseif-directive-clauses {#grammar-switch-elseif-directive-clauses} > *switch-elseif-directive 语句(复数)* → [*elseif-directive-clause*](#switch-case-attributes-label) [*switch-elseif-directive-clauses*](#switch-case-attributes-label)可选 > -#### grammar_switch-elseif-directive-clause {#grammar_switch-elseif-directive-clause} +#### grammar_switch-elseif-directive-clause {#grammar-switch-elseif-directive-clause} > *switch-elseif-directive 语句* → [*elseif-directive*](#switch-case-attributes-label) [*compilation-condition*](#switch-case-attributes-label) [*switch-cases*](#switch-case-attributes-label)可选 > -#### grammar_switch-else-directive-clause {#grammar_switch-else-directive-clause} +#### grammar_switch-else-directive-clause {#grammar-switch-else-directive-clause} > *switch-else-directive 语句* → [*else-directive*](#switch-case-attributes-label) [*switch-cases*](#switch-case-attributes-label) 可选 > -## 带标签的语句 {#labeled_statements} +## 带标签的语句 {#labeled-statements} 你可以在循环语句或 `switch` 语句前面加上标签,它由标签名和紧随其后的冒号(`:`)组成。在 `break` 和 `continue` 后面跟上标签名可以显式地在循环语句或 `switch` 语句中改变相应的控制流。关于这两条语句用法,请参阅 [Break 语句](#break_statement) 和 [Continue 语句](#continue_statement)。 标签的作用域在该标签所标记的语句内。可以嵌套使用带标签的语句,但标签名必须唯一。 @@ -397,7 +397,7 @@ case .suppressed: > *标签名称* → [*标识符*](./02_Lexical_Structure.md#identifier) > -## 控制转移语句 {#control_transfer_statements} +## 控制转移语句 {#control-transfer-statements} 控制转移语句能够无条件地把控制权从一片代码转移到另一片代码,从而改变代码执行的顺序。Swift 提供五种类型的控制转移语句:`break` 语句、`continue` 语句、`fallthrough` 语句、`return` 语句和 `throw` 语句。 > 控制转移语句语法 @@ -416,7 +416,7 @@ case .suppressed: > *控制转移语句* → [*throw 语句*](#throw-statement) > -### Break 语句 {#break_statement} +### Break 语句 {#break-statement} `break` 语句用于终止循环语句、`if` 语句或 `switch` 语句的执行。使用 `break` 语句时,可以只写 `break` 这个关键词,也可以在 `break` 后面跟上标签名,像下面这样: > break @@ -440,7 +440,7 @@ case .suppressed: > *break 语句* → **break** [*标签名称*](#label-name)可选 > -### Continue 语句 {#continue_statement} +### Continue 语句 {#continue-statement} `continue` 语句用于终止循环中当前迭代的执行,但不会终止该循环的执行。使用 `continue` 语句时,可以只写 `continue` 这个关键词,也可以在 `continue` 后面跟上标签名,像下面这样: > continue @@ -466,7 +466,7 @@ case .suppressed: > *continue 语句* → **continue** [*标签名称*](#label-name)可选 > -### Fallthrough 语句 {#fallthrough_statements} +### Fallthrough 语句 {#fallthrough-statements} `fallthrough` 语句用于在 `switch` 语句中转移控制权。`fallthrough` 语句会把控制权从 `switch` 语句中的一个 `case` 转移到下一个 `case`。这种控制权转移是无条件的,即使下一个 `case` 的模式与 `switch` 语句的控制表达式的值不匹配。 `fallthrough` 语句可出现在 `switch` 语句中的任意 `case` 中,但不能出现在最后一个 `case` 中。同时,`fallthrough` 语句也不能把控制权转移到使用了值绑定的 `case`。 @@ -481,7 +481,7 @@ case .suppressed: > *fallthrough 语句* → **fallthrough** > -### Return 语句 {#return_statements} +### Return 语句 {#return-statements} `return` 语句用于在函数或方法的实现中将控制权转移到调用函数或方法,接着程序将会从调用位置继续向下执行。 使用 `return` 语句时,可以只写 `return` 这个关键词,也可以在 `return` 后面跟上表达式,像下面这样: @@ -508,9 +508,9 @@ case .suppressed: #### return-statement {#return-statement} > *return 语句* → **return** [*表达式*](./04_Expressions.html#expression)可选 -### Throw 语句 {#throw_statements} +### Throw 语句 {#throw-statements} -### Throw 语句 {#throw_statements} +### Throw 语句 {#throw-statements} `throw` 语句出现在抛出函数或者抛出方法体内,或者类型被 `throws` 关键字标记的闭包表达式体内。 `throw` 语句使程序在当前作用域结束执行,并向外围作用域传播错误。抛出的错误会一直传递,直到被 `do` 语句的 `catch` 子句处理掉。 @@ -532,7 +532,7 @@ case .suppressed: > *throw 语句* → **throw** [*表达式*](./04_Expressions.md#expression) > -## Defer 语句 {#defer_statements} +## Defer 语句 {#defer-statements} `defer` 语句用于在退出当前作用域之前执行代码。 `defer` 语句形式如下: @@ -569,7 +569,7 @@ f() > *延迟语句* → **defer** [*代码块*](./06_Declarations.md#code-block) > -## Do 语句 {#do_statements} +## Do 语句 {#do-statements} `do` 语句用于引入一个新的作用域,该作用域中可以含有一个或多个 `catch` 子句,`catch` 子句中定义了一些匹配错误条件的模式。`do` 语句作用域内定义的常量和变量只能在 `do` 语句作用域内使用。 Swift 中的 `do` 语句与 C 中限定代码块界限的大括号(`{}`)很相似,也并不会降低程序运行时的性能。 @@ -609,7 +609,7 @@ do { > *catch 子句* → **catch** [*模式*](./08_Patterns.md#pattern)可选 [*where 子句*](#where-clause)可选 [*代码块*](05_Declarations.md#code-block) > -## 编译器控制语句 {#compiler_control_statements} +## 编译器控制语句 {#compiler-control-statements} 编译器控制语句允许程序改变编译器的行为。Swift 有三种编译器控制语句:条件编译语句、线路控制语句和编译时诊断语句。 > 编译器控制语句语法 @@ -624,7 +624,7 @@ do { > *编译器控制语句* → [*诊断语句*](#grammar_diagnostic-statement) > -### 条件编译代码块 {#Conditional_Compilation_Block} +### 条件编译代码块 {#Conditional-Compilation-Block} 条件编译代码块可以根据一个或多个配置来有条件地编译代码。 每一个条件编译代码块都以 `#if` 开始,`#endif` 结束。如下: @@ -701,23 +701,23 @@ statements to compile if both compilation conditions are false > > -#### grammar_conditional-compilation-block {#grammar_conditional-compilation-block} +#### grammar_conditional-compilation-block {#grammar-conditional-compilation-block} > *条件编译代码块* → [*if-directive 语句*](#grammar_if-directive-clause) [*elseif-directive 语句(复数)*](#grammar_elseif-directive-clauses)可选 [*else-directive 语句*](#grammar_else-directive-clause)可选 [*endif-directive*](#grammar_endif-directive) > -#### grammar_if-directive-clause {#grammar_if-directive-clause} +#### grammar_if-directive-clause {#grammar-if-directive-clause} > *if-directive 语句* → [*if-directive*](#grammar_if-directive) [*编译条件*](#compilation-condition) [*语句(复数)*](#statements)可选 > -#### grammar_elseif-directive-clauses {#grammar_elseif-directive-clauses} +#### grammar_elseif-directive-clauses {#grammar-elseif-directive-clauses} > *elseif-directive 语句(复数)* → [*elseif-directive 语句*](#grammar_elseif-directive-clause) [*elseif-directive 语句(复数)*](#grammar_elseif-directive-clauses) > -#### grammar_elseif-directive-clauses {#grammar_elseif-directive-clauses} +#### grammar_elseif-directive-clauses {#grammar-elseif-directive-clauses} > *elseif-directive 语句* → [*elseif-directive*](#grammar_elseif-directive) [*编译条件*](#compilation-condition) [*语句(复数)*](#statements)可选 > -#### grammar_else-directive-clause {#grammar_else-directive-clause} +#### grammar_else-directive-clause {#grammar-else-directive-clause} > *else-directive 语句* → [*else-directive*](#grammar_else-directive) [*语句(复数)*](#statements)可选 > @@ -749,29 +749,29 @@ statements to compile if both compilation conditions are false > -#### grammar_platform-condition {#grammar_platform-condition} +#### grammar_platform-condition {#grammar-platform-condition} -#### grammar_platform-condition-os {#grammar_platform-condition-os} +#### grammar_platform-condition-os {#grammar-platform-condition-os} > *平台条件* → **os ( [*操作系统*](#operating-system) )** > -#### grammar_platform-condition-arch {#grammar_platform-condition-arch} +#### grammar_platform-condition-arch {#grammar-platform-condition-arch} > *平台条件* → **arch ( [*架构*](#architecture) )** > -#### grammar_platform-condition-swift {#grammar_platform-condition-swift} +#### grammar_platform-condition-swift {#grammar-platform-condition-swift} > *平台条件* → **swift ( >= [*swift 版本*](#swift-version) )** | **swift ( < [*swift 版本*](#swift-version) )** > -#### grammar_platform-condition-compiler {#grammar_platform-condition-compiler} +#### grammar_platform-condition-compiler {#grammar-platform-condition-compiler} > *平台条件* → **compiler ( >= [*swift 版本*](#swift-version) )** | **compiler ( < [*swift 版本*](#swift-version) )** > -#### grammar_platform-condition-canImport {#grammar_platform-condition-canImport} +#### grammar_platform-condition-canImport {#grammar-platform-condition-canImport} > *平台条件* → **canImport ( [*模块名*](#grammar_module-name) )** > -#### grammar_platform-condition-targetEnvironment {#grammar_platform-condition-targetEnvironment} +#### grammar_platform-condition-targetEnvironment {#grammar-platform-condition-targetEnvironment} > *平台条件* → **targetEnvironment ( [*环境*](#grammar_environment) )** > @@ -787,19 +787,19 @@ statements to compile if both compilation conditions are false > *swift 版本* → [*十进制数字*](./02_Lexical_Structure.md#decimal-digit) ­**.** ­[*swift 版本延续*](#grammar_swift-version-continuation) 可选 > -#### grammar_swift-version-continuation {#grammar_swift-version-continuation} +#### grammar_swift-version-continuation {#grammar-swift-version-continuation} > *swift 版本延续* → **.** [*十进制数字*](./02_Lexical_Structure.md#decimal-digit) [*swift 版本延续*](#grammar_swift-version-continuation) 可选 > -#### grammar_module-name {#grammar_module-name} +#### grammar_module-name {#grammar-module-name} > *模块名* → [*identifier*](./02_Lexical_Structure.md#identifier) > -#### grammar_environment {#grammar_environment} +#### grammar_environment {#grammar-environment} > *环境* → **模拟器** > -### 行控制语句 {#line_control_statements} +### 行控制语句 {#line-control-statements} 行控制语句可以为被编译的源代码指定行号和文件名,从而改变源代码的定位信息,以便进行分析和调试。 行控制语句形式如下: @@ -847,17 +847,17 @@ statements to compile if both compilation conditions are false > > -#### grammar_compile-time-diagnostic-statement {#grammar_compile-time-diagnostic-statement} +#### grammar_compile-time-diagnostic-statement {#grammar-compile-time-diagnostic-statement} > *诊断语句* → **#error** **(** [*diagnostic-message*](#grammar_diagnostic-message) **)** > > *诊断语句* → **#warning** **(** [*diagnostic-message*](#grammar_diagnostic-message) **)** > -#### grammar_diagnostic-message {#grammar_diagnostic-message} +#### grammar_diagnostic-message {#grammar-diagnostic-message} > *诊断语句* → [*静态字符串字面量*](./02_Lexical_Structure.md#static-string-literal) > -## 可用性条件 {#availability_condition} +## 可用性条件 {#availability-condition} 可用性条件可作为 `if`,`while`,`guard` 语句的条件,可以在运行时基于特定的平台参数来查询 API 的可用性。 可用性条件的形式如下: diff --git a/source/chapter3/06_Declarations.md b/source/chapter3/06_Declarations.md index eb7353c4..9fe91231 100755 --- a/source/chapter3/06_Declarations.md +++ b/source/chapter3/06_Declarations.md @@ -42,7 +42,7 @@ > *多条声明* → [*声明*](#declaration) [*多条声明*](#declarations)可选 > -## 顶级代码 {#top-level_code} +## 顶级代码 {#top-level-code} Swift 的源文件中的顶级代码(top-level code)由零个或多个语句、声明和表达式组成。默认情况下,在一个源文件的顶层声明的变量,常量和其他具有命名的声明可以被同模块中的每一个源文件中的代码访问。可以使用一个访问级别修饰符来标记声明来覆盖这种默认行为,请参阅 [访问控制级别](#access_control_levels)。 > 顶级声明语法 @@ -50,7 +50,7 @@ Swift 的源文件中的顶级代码(top-level code)由零个或多个语句 > *顶级声明* → [*多条语句*](./05_Statements.md#statements)可选 > -## 代码块 {#code_blocks} +## 代码块 {#code-blocks} *代码块(code block)* 可以将一些声明和控制结构体组织在一起。它有如下的形式: ```swift @@ -69,7 +69,7 @@ Swift 的源文件中的顶级代码(top-level code)由零个或多个语句 > *代码块* → **{** [*多条语句*](./05_Statements.md#statements)可选 **}** > -## 导入声明 {#import_declaration} +## 导入声明 {#import-declaration} *导入声明(import declaration)* 让你可以使用在其他文件中声明的内容。导入语句的基本形式是导入整个模块,它由 `import` 关键字和紧随其后的模块名组成: ```swift @@ -84,7 +84,7 @@ import 模块.子模块 ``` -#### grammer_of_an_import_declaration {#grammer_of_an_import_declaration} +#### grammer_of_an_import_declaration {#grammer-of-an-import-declaration} > 导入声明语法 > > @@ -108,7 +108,7 @@ import 模块.子模块 > *导入路径标识符* → [*标识符*](./02_Lexical_Structure.md#identifier) | [*运算符*](./02_Lexical_Structure.md#operator) > -## 常量声明 {#constant_declaration} +## 常量声明 {#constant-declaration} *常量声明(constant declaration)* 可以在程序中引入一个具有命名的常量。常量以关键字 `let` 来声明,遵循如下格式: ```swift @@ -141,7 +141,7 @@ print("The second number is \(secondNumber).") 如果还想获得更多关于常量的信息或者想在使用中获得帮助,请参阅 [常量和变量](../chapter2/01_The_Basics.md#constants_and_variables) 和 [存储属性](../chapter2/10_Properties.md#stored_properties)。 -#### grammer_of_a_constant_declaration {#grammer_of_a_constant_declaration} +#### grammer_of_a_constant_declaration {#grammer-of-a-constant-declaration} > 常量声明语法 > > @@ -165,7 +165,7 @@ print("The second number is \(secondNumber).") > *构造器* → **=** [*表达式*](./04_Expressions.md#expression) > -## 变量声明 {#variable_declaration} +## 变量声明 {#variable-declaration} *变量声明(variable declaration)* 可以在程序中引入一个具有命名的变量,它以关键字 `var` 来声明。 变量声明有几种不同的形式,可以声明不同种类的命名值和可变值,如存储型和计算型变量和属性,属性观察器,以及静态变量属性。所使用的声明形式取决于变量声明的适用范围和打算声明的变量类型。 @@ -177,7 +177,7 @@ print("The second number is \(secondNumber).") 可以在子类中重写继承来的变量属性,使用 `override` 声明修饰符标记属性的声明即可,详情请参阅 [重写](../chapter2/13_Inheritance.md#overriding)。 -### 存储型变量和存储型变量属性 {#stored_variables_and_stored_variable_properties} +### 存储型变量和存储型变量属性 {#stored-variables-and-stored-variable-properties} 使用如下形式声明一个存储型变量或存储型变量属性: ```swift @@ -192,7 +192,7 @@ var 变量名称: 类型 = 表达式 正如名字所示,存储型变量和存储型变量属性的值会存储在内存中。 -### 计算型变量和计算型属性 {#computed_variables_and_computed_properties} +### 计算型变量和计算型属性 {#computed-variables-and-computed-properties} 使用如下形式声明一个计算型变量或计算型属性: ```swift @@ -216,7 +216,7 @@ setter 的圆括号以及 setter 名称是可选的。如果提供了 setter 名 要获得更多关于计算型属性的信息和例子,请参阅 [计算型属性](../chapter2/10_Properties.md#computed_properties)。 -### 存储型变量和属性的观察器 {#stored_variable_observers_and_property_observers} +### 存储型变量和属性的观察器 {#stored-variable-observers-and-property-observers} 可以在声明存储型变量或属性时提供 `willSet` 和 `didSet` 观察器。一个包含观察器的存储型变量或属性以如下形式声明: ```swift @@ -247,7 +247,7 @@ var 变量名称: 类型 = 表达式 { 要获得更多信息以及查看如何使用属性观察器的例子,请参阅 [属性观察器](../chapter2/10_Properties.md#property_observers)。 -### 类型变量属性 {#type_variable_properties} +### 类型变量属性 {#type-variable-properties} 要声明一个类型变量属性,用 `static` 声明修饰符标记该声明。类可以改用 `class` 声明修饰符标记类的类型计算型属性从而允许子类重写超类的实现。类型属性在 [类型属性](../chapter2/10_Properties.md#type_properties) 章节有详细讨论。 > 注意 @@ -256,7 +256,7 @@ var 变量名称: 类型 = 表达式 { > -#### grammer_of_a_variable_declaration {#grammer_of_a_variable_declaration} +#### grammer_of_a_variable_declaration {#grammer-of-a-variable-declaration} > 变量声明语法 > @@ -342,7 +342,7 @@ var 变量名称: 类型 = 表达式 { > *didSet 子句* → [*特性列表*](./07_Attributes.md#attributes)可选 **didSet** [*setter 名称*](#setter-name)可选 [*代码块*](#code-block) > -## 类型别名声明 {#type_alias_declaration} +## 类型别名声明 {#type-alias-declaration} *类型别名(type alias)* 声明可以在程序中为一个既有类型声明一个别名。类型别名声明语句使用关键字 `typealias` 声明,遵循如下的形式: ```swift @@ -398,7 +398,7 @@ func sum(_ sequence: T) -> Int where T.Element == Int { 另请参阅 [协议关联类型声明](#protocol_associated_type_declaration)。 -#### grammer_of_a_type_alias_declaration {#grammer_of_a_type_alias_declaration} +#### grammer_of_a_type_alias_declaration {#grammer-of-a-type-alias-declaration} > 类型别名声明语法 > > @@ -418,7 +418,7 @@ func sum(_ sequence: T) -> Int where T.Element == Int { > *类型别名赋值* → **=** [*类型*](./03_Types.md#type) > -## 函数声明 {#function_declaration} +## 函数声明 {#function-declaration} 使用*函数声明(function declaration)* 在程序中引入新的函数或者方法。在类、结构体、枚举,或者协议中声明的函数会作为方法。函数声明使用关键字 `func`,遵循如下的形式: ```swift @@ -446,7 +446,7 @@ func 函数名称(参数列表) { 更多关于嵌套函数的讨论,请参阅 [嵌套函数](../chapter2/06_Functions.md#Nested_Functions)。 -### 参数名 {#parameter_names} +### 参数名 {#parameter-names} 函数的参数列表由一个或多个函数参数组成,参数间以逗号分隔。函数调用时的参数顺序必须和函数声明时的参数顺序一致。最简单的参数列表有着如下的形式: `参数名称`: `参数类型` @@ -473,7 +473,7 @@ func repeatGreeting(_ greeting: String, count n: Int) { /* Greet n times */ } repeatGreeting("Hello, world!", count: 2) // count 有标签, greeting 没有 ``` -### 输入输出参数 {#in-out_parameters} +### 输入输出参数 {#in-out-parameters} 输入输出参数被传递时遵循如下规则: 1. 函数调用时,参数的值被拷贝。 @@ -517,7 +517,7 @@ func multithreadedFunction(queue: DispatchQueue, x: inout Int) { 关于输入输出参数的详细讨论,请参阅 [输入输出参数](../chapter2/06_Functions.md#in_out_parameters)。 -### 特殊参数 {#special_kinds_of_parameters} +### 特殊参数 {#special-kinds-of-parameters} 参数可以被忽略,数量可以不固定,还可以为其提供默认值,使用形式如下: ```swift @@ -540,14 +540,14 @@ f(7) // 有效,提供了值 f(x: 7) // 无效,该参数没有外部名称 ``` -### 特殊方法 {#special_kinds_of_methods} +### 特殊方法 {#special-kinds-of-methods} 枚举或结构体的方法如果会修改 `self`,则必须以 `mutating` 声明修饰符标记。 子类重写超类中的方法必须以 `override` 声明修饰符标记。重写方法时不使用 `override` 修饰符,或者被 `override` 修饰符修饰的方法并未对超类方法构成重写,都会导致编译错误。 枚举或者结构体中的类型方法,要以 `static` 声明修饰符标记,而对于类中的类型方法,除了使用 `static`,还可使用 `class` 声明修饰符标记。类中使用 `class` 声明修饰的方法可以被子类实现重写;类中使用 `static` 声明修饰的方法不可被重写。 -### 抛出错误的函数和方法 {#throwing_functions_and_methods} +### 抛出错误的函数和方法 {#throwing-functions-and-methods} 可以抛出错误的函数或方法必须使用 `throws` 关键字标记。这类函数和方法被称为抛出函数和抛出方法。它们有着下面的形式: ```swift @@ -565,7 +565,7 @@ func 函数名称(参数列表) throws -> 返回类型 { 抛出方法不能重写非抛出方法,而且抛出方法不能满足协议对于非抛出方法的要求。也就是说,非抛出方法可以重写抛出方法,而且非抛出方法可以满足协议对于抛出方法的要求。 -### 重抛错误的函数和方法 {#rethrowing_functions_and_methods} +### 重抛错误的函数和方法 {#rethrowing-functions-and-methods} 函数或方法可以使用 `rethrows` 关键字来声明,从而表明仅当该函数或方法的一个函数类型的参数抛出错误时,该函数或方法才抛出错误。这类函数和方法被称为重抛函数和重抛方法。重新抛出错误的函数或方法必须至少有一个参数的类型为抛出函数。 ```swift @@ -594,7 +594,7 @@ func someFunction(callback: () throws -> Void) rethrows { 抛出方法不能重写重抛方法,而且抛出方法不能满足协议对于重抛方法的要求。也就是说,重抛方法可以重写抛出方法,而且重抛方法可以满足协议对于抛出方法的要求。 -### 永不返回的函数 {#functions_that_never_return} +### 永不返回的函数 {#functions-that-never-return} Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它的调用者。`Never` 返回类型的函数或方法可以称为不归,不归函数、方法要么引发不可恢复的错误,要么永远不停地运作,这会使调用后本应执行得代码就不再执行了。但即使是不归函数、方法,抛错函数和重抛出函数也可以将程序控制转移到合适的 `catch` 代码块。 不归函数、方法可以在 guard 语句的 else 字句中调用,具体讨论在[*Guard 语句*](./05_Statements.md#guard_statements)。 @@ -602,7 +602,7 @@ Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它 你可以重写一个不归方法,但是新的方法必须保持原有的返回类型和没有返回的行为。 -#### grammer_of_a_function_declaration {#grammer_of_a_function_declaration} +#### grammer_of_a_function_declaration {#grammer-of-a-function-declaration} > 函数声明语法 > @@ -674,7 +674,7 @@ Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它 > *默认参数子句* → **=** [*表达式*](./04_Expressions.md#expression) > -## 枚举声明 {#enumeration_declaration} +## 枚举声明 {#enumeration-declaration} 在程序中使用*枚举声明(enumeration declaration)* 来引入一个枚举类型。 枚举声明有两种基本形式,使用关键字 `enum` 来声明。枚举声明体包含零个或多个值,称为枚举用例,还可包含任意数量的声明,包括计算型属性、实例方法、类型方法、构造器、类型别名,甚至其他枚举、结构体和类。枚举声明不能包含析构器或者协议声明。 @@ -687,7 +687,7 @@ Swift 定义了 `Never` 类型,它表示函数或者方法不会返回给它 可以扩展枚举类型,正如在 [扩展声明](#extension_declaration) 中讨论的一样。 -### 任意类型的枚举用例 {#enumerations_with_cases_of_any_type} +### 任意类型的枚举用例 {#enumerations-with-cases-of-any-type} 如下的形式声明了一个包含任意类型枚举用例的枚举变量: ```swift @@ -719,7 +719,7 @@ let evenInts: [Number] = [0, 2, 4, 6].map(f) 要获得更多关于具有关联值的枚举用例的信息和例子,请参阅 [关联值](../chapter2/08_Enumerations.md#associated_values)。 -#### 递归枚举 {#enumerations_with_indirection} +#### 递归枚举 {#enumerations-with-indirection} 枚举类型可以具有递归结构,就是说,枚举用例的关联值类型可以是枚举类型自身。然而,枚举类型的实例具有值语义,这意味着它们在内存中有固定布局。为了支持递归,编译器必须插入一个间接层。 要让某个枚举用例支持递归,使用 `indirect` 声明修饰符标记该用例。 @@ -736,7 +736,7 @@ enum Tree { 被 `indirect` 修饰符标记的枚举用例必须有一个关联值。使用 `indirect` 修饰符标记的枚举类型可以既包含有关联值的用例,同时还可包含没有关联值的用例。但是,它不能再单独使用 `indirect` 修饰符来标记某个用例。 -### 拥有原始值的枚举用例 {#enumerations_with_cases_of_a_raw-value_type} +### 拥有原始值的枚举用例 {#enumerations-with-cases-of-a-raw-value-type} 以下形式声明了一种枚举类型,其中各个枚举用例的类型均为同一种基本类型: ```swift @@ -770,13 +770,13 @@ enum GamePlayMode: String { 枚举用例具有原始值的枚举类型隐式地符合定义在 Swift 标准库中的 `RawRepresentable` 协议。所以,它们拥有一个 `rawValue` 属性和一个可失败构造器 `init?(rawValue: RawValue)`。可以使用 `rawValue` 属性去获取枚举用例的原始值,例如 `ExampleEnum.b.rawValue`。还可以根据原始值来创建一个相对应的枚举用例,只需调用枚举的可失败构造器,例如 `ExampleEnum(rawValue: 5)`,这个可失败构造器返回一个可选类型的用例。要获得更多关于具有原始值的枚举用例的信息和例子,请参阅 [原始值](../chapter2/08_Enumerations.md#raw_values)。 -### 访问枚举用例 {#accessing_enumeration_cases} +### 访问枚举用例 {#accessing-enumeration-cases} 使用点语法(`.`)来引用枚举类型的枚举用例,例如 `EnumerationType.enumerationCase`。当枚举类型可以由上下文推断而出时,可以省略它(但是 `.` 仍然需要),正如 [枚举语法](../chapter2/08_Enumerations.md#enumeration_syntax) 和 [显式成员表达式](./04_Expressions.md#explicit_member_expression) 所述。 可以使用 `switch` 语句来检验枚举用例的值,正如 [使用 switch 语句匹配枚举值](../chapter2/08_Enumerations.md#matching_enumeration_values_with_a_switch_statement) 所述。枚举类型是模式匹配的,依靠 `switch` 语句 `case` 块中的枚举用例模式,正如 [枚举用例模式](./08_Patterns.md#enumeration_case_pattern) 所述。 -#### grammer_of_an_enumeration_declaration {#grammer_of_an_enumeration_declaration} +#### grammer_of_an_enumeration_declaration {#grammer-of-an-enumeration-declaration} > 枚举声明语法 > > @@ -867,7 +867,7 @@ enum GamePlayMode: String { > *原始值字面量* → [数字型字面量](./02_Lexical_Structure.md#numeric-literal) | [字符串型字面量](./02_Lexical_Structure.md#static-string-literal) | [布尔型字面量](./02_Lexical_Structure.md#boolean-literal) > -## 结构体声明 {#structure_declaration} +## 结构体声明 {#structure-declaration} 使用*结构体声明(structure declaration)* 可以在程序中引入一个结构体类型。结构体声明使用 `struct` 关键字,遵循如下的形式: ```swift @@ -898,7 +898,7 @@ struct 结构体名称: 采纳的协议 { 可以使用扩展声明来扩展结构体类型的行为,请参阅 [扩展声明](#extension_declaration)。 -#### grammer_of_a_structure_declaration {#grammer_of_a_structure_declaration} +#### grammer_of_a_structure_declaration {#grammer-of-a-structure-declaration} > 结构体声明语法 > > @@ -929,7 +929,7 @@ struct 结构体名称: 采纳的协议 { > *结构体成员* → [*声明*](#declaration) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > -## 类声明 {#class_declaration} +## 类声明 {#class-declaration} 可以在程序中使用*类声明(class declaration)* 来引入一个类。类声明使用关键字 `class`,遵循如下的形式: ```swift @@ -963,7 +963,7 @@ class 类名: 超类, 采纳的协议 { 可以使用扩展声明来扩展类的行为,请参阅 [扩展声明](#extension_declaration)。 -#### grammer_of_a_class_declaration {#grammer_of_a_class_declaration} +#### grammer_of_a_class_declaration {#grammer-of-a-class-declaration} > 类声明语法 > > @@ -993,7 +993,7 @@ class 类名: 超类, 采纳的协议 { > *类成员* → [*声明*](#declaration) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > -## 协议声明 {#protocol_declaration} +## 协议声明 {#protocol-declaration} *协议声明(protocol declaration)* 可以为程序引入一个命名的协议类型。协议声明只能在全局区域使用 `protocol` 关键字来进行声明,并遵循如下形式: ```swift @@ -1035,7 +1035,7 @@ protocol SomeProtocol: AnyObject { 可以使用协议来声明作为代理的类或者结构体应该实现的方法,正如 [委托(代理)模式](../chapter2/21_Protocols.md#delegation) 中所述。 -#### grammer_of_a_protocol_declaration {#grammer_of_a_protocol_declaration} +#### grammer_of_a_protocol_declaration {#grammer-of-a-protocol-declaration} > 协议声明语法 > > @@ -1082,7 +1082,7 @@ protocol SomeProtocol: AnyObject { > *协议成员声明列表* → [*协议成员声明*](#protocol-member-declaration) [*协议成员声明列表*](#protocol-member-declarations)可选 > -### 协议属性声明 {#protocol_property_declaration} +### 协议属性声明 {#protocol-property-declaration} 协议可以通过在协议声明主体中引入一个协议属性声明,来声明符合的类型必须实现的属性。协议属性声明有一种特殊的变量声明形式: ```swift @@ -1096,7 +1096,7 @@ var 属性名: 类型 { get set } 另请参阅 [变量声明](#variable_declaration)。 -#### grammer_of_an_import_declaration {#grammer_of_an_import_declaration} +#### grammer_of_an_import_declaration {#grammer-of-an-import-declaration} > 协议属性声明语法 > > @@ -1105,7 +1105,7 @@ var 属性名: 类型 { get set } > *协议属性声明* → [*变量声明头*](#variable-declaration-head) [*变量名称*](#variable-name) [*类型标注*](03_Types.md#type-annotation) [*getter-setter 关键字代码块*](#getter-setter-keyword-block) > -### 协议方法声明 {#protocol_method_declaration} +### 协议方法声明 {#protocol-method-declaration} 协议可以通过在协议声明主体中引入一个协议方法声明,来声明符合的类型必须实现的方法。协议方法声明和函数方法声明有着相同的形式,但有两项例外:它们不包括函数体,也不能包含默认参数。关于如何实现协议中的方法要求的例子,请参阅 [方法要求](../chapter2/21_Protocols.md#method_requirements)。 使用 `static` 声明修饰符可以在协议声明中声明一个类型方法。类在实现这些方法时使用 `class` 声明修饰符。结构体实现这些方法时必须使用 `static` 声明修饰符。通过扩展实现时亦是如此(类的扩展中使用 `class` 声明修饰符,结构体的扩展中使用 `static` 声明修饰符)。 @@ -1113,7 +1113,7 @@ var 属性名: 类型 { get set } 另请参阅 [函数声明](#function_declaration)。 -#### grammer_of_a_protocol_declaration {#grammer_of_a_protocol_declaration} +#### grammer_of_a_protocol_declaration {#grammer-of-a-protocol-declaration} > 协议方法声明语法 > > @@ -1122,7 +1122,7 @@ var 属性名: 类型 { get set } > *协议方法声明* → [*函数头*](#function-head) [*函数名*](#function-name) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*函数签名*](#function-signature) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 > -### 协议构造器声明 {#protocol_initializer_declaration} +### 协议构造器声明 {#protocol-initializer-declaration} 协议可以通过在协议声明主体中引入一个协议构造器声明,来声明符合的类型必须实现的构造器。协议构造器声明 除了不包含实现主体外,和构造器声明有着相同的形式。 @@ -1133,7 +1133,7 @@ var 属性名: 类型 { get set } 另请参阅 [构造器声明](#initializer_declaration)。 -#### grammer_of_a_protocol_initializer_declaration {#grammer_of_a_protocol_initializer_declaration} +#### grammer_of_a_protocol_initializer_declaration {#grammer-of-a-protocol-initializer-declaration} > 协议构造器声明语法 > > @@ -1144,7 +1144,7 @@ var 属性名: 类型 { get set } > *协议构造器声明* → [*构造器头*](#initializer-head) [*泛型形参子句*](08_Generic_Parameters_and_Arguments.md#generic-parameter-clause)可选 [*参数子句*](#parameter-clause) **rethrows** [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 > -### 协议下标声明 {#protocol_subscript_declaration} +### 协议下标声明 {#protocol-subscript-declaration} 协议可以通过在协议声明主体中引入一个协议下标声明,来声明符合的类型必须实现的下标。协议下标声明有一个特殊的下标声明形式: ```swift @@ -1157,7 +1157,7 @@ subscript (参数列表) -> 返回类型 { get set } 另请参阅 [下标声明](#subscript_declaration)。 -#### grammer_of_a_protocol_subscript_declaration {#grammer_of_a_protocol_subscript_declaration} +#### grammer_of_a_protocol_subscript_declaration {#grammer-of-a-protocol-subscript-declaration} > 协议下标声明语法 > > @@ -1166,7 +1166,7 @@ subscript (参数列表) -> 返回类型 { get set } > *协议下标声明* → [*下标头*](#subscript-head) [*下标结果*](#subscript-result) [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 [*getter-setter 关键字代码块*](#getter-setter-keyword-block) > -### 协议关联类型声明 {#protocol_associated_type_declaration} +### 协议关联类型声明 {#protocol-associated-type-declaration} 使用关键字 `associatedtype` 来声明协议关联类型。关联类型为作为协议声明的一部分,为某种类型提供了一个别名。关联类型和泛型参数子句中的类型参数很相似,但是它们和 `Self` 一样,用于协议中。`Self` 指代采纳协议的类型。要获得更多信息和例子,请参阅 [关联类型](../chapter2/22_Generics.md#associated_types)。 在协议声明中使用泛型 `where` 子句来为继承的协议关联类型添加约束,且不需要重新声明关联类型。例如下面代码中的 `SubProtocol` 声明。 @@ -1190,7 +1190,7 @@ protocol SubProtocolB: SomeProtocol where SomeType: Equatable { } 另请参阅 [类型别名声明](#type_alias_declaration)。 -#### grammer_of_a_protocol_associated_type_declaration {#grammer_of_a_protocol_associated_type_declaration} +#### grammer_of_a_protocol_associated_type_declaration {#grammer-of-a-protocol-associated-type-declaration} > 协议关联类型声明语法 > > @@ -1199,7 +1199,7 @@ protocol SubProtocolB: SomeProtocol where SomeType: Equatable { } > *协议关联类型声明* → [*特性列表*](./07_Attributes.md#attributes)可选 [*访问级别修饰符*](#access-level-modifier)可选 **associatedtype** [*类型别名头*](#typealias-head) [*类型继承子句*](03_Types.md#type-inheritance-clause)可选 [*类型别名赋值*](#typealias-assignment)可选 [*泛型 where 子句*](08_Generic_Parameters_and_Arguments.md#generic-where-clause)可选 > -## 构造器声明 {#initializer_declaration} +## 构造器声明 {#initializer-declaration} 构造器声明会为程序中的类、结构体或枚举引入构造器。构造器使用关键字 `init` 来声明,有两种基本形式。 结构体、枚举、类可以有任意数量的构造器,但是类的构造器具有不同的规则和行为。不同于结构体和枚举,类有两种构造器,即指定构造器和便利构造器,请参阅 [构造过程](../chapter2/14_Initialization.md)。 @@ -1243,7 +1243,7 @@ convenience init(参数列表) { 关于在不同类型中声明构造器的例子,请参阅 [构造过程](../chapter2/14_Initialization.md)。 -### 可失败构造器 {#failable_initializers} +### 可失败构造器 {#failable-initializers} 可失败构造器可以生成所属类型的可选实例或者隐式解包可选实例,因此,这种构造器通过返回 `nil` 来指明构造过程失败。 声明生成可选实例的可失败构造器时,在构造器声明的 `init` 关键字后加追加一个问号(`init?`)。声明生成隐式解包可选实例的可失败构造器时,在构造器声明后追加一个叹号(`init!`)。使用 `init?` 可失败构造器生成结构体的一个可选实例的例子如下。 @@ -1283,7 +1283,7 @@ if let actualInstance = SomeStruct(input: "Hello") { 更多关于可失败构造器的信息和例子,请参阅 [可失败构造器](../chapter2/14_Initialization.md#failable_initializers)。 -#### grammer_of_an_initializer_declaration {#grammer_of_an_initializer_declaration} +#### grammer_of_an_initializer_declaration {#grammer-of-an-initializer-declaration} > 构造器声明语法 > > @@ -1308,7 +1308,7 @@ if let actualInstance = SomeStruct(input: "Hello") { > *构造器主体* → [*代码块*](#code-block) > -## 析构器声明 {#deinitializer_declaration} +## 析构器声明 {#deinitializer-declaration} *析构器声明(deinitializer declaration)* 可以为类声明一个析构器。析构器没有参数,遵循如下格式: ```swift @@ -1326,7 +1326,7 @@ deinit { 关于如何在类声明中使用析构器的例子,请参阅 [析构过程](../chapter2/15_Deinitialization.md)。 -#### grammer_of_a_deinitializer_declaration {#grammer_of_a_deinitializer_declaration} +#### grammer_of_a_deinitializer_declaration {#grammer-of-a-deinitializer-declaration} > 析构器声明语法 > > @@ -1335,7 +1335,7 @@ deinit { > *析构器声明* → [*特性列表*](./07_Attributes.md#attributes)可选 **deinit** [*代码块*](#code-block) > -## 扩展声明 {#extension_declaration} +## 扩展声明 {#extension-declaration} *扩展声明(extension declaration)* 可以扩展一个现存的类型的行为。扩展声明使用关键字 `extension`,遵循如下格式: ```swift @@ -1364,10 +1364,10 @@ extension 类型名称: 采纳的协议 where 约束条件 { 协议声明不能为现有的类添加类的继承关系,因此你只能在 “类型名称” 的冒号后面添加一系列协议。 -### 条件遵循 {#conditional_conformance} +### 条件遵循 {#conditional-conformance} 你可以扩展一个泛型类型并使其有条件地遵循某协议,此后此类型的实例只有在特定的限制条件满足时才遵循此协议。在扩展声明中加入限制条件来为协议添加条件遵循。 -## 已重写的限制条件会在某些泛型上下文中失效 {#overridden_requirements_aren't_Used_in_some_generic_contexts} +## 已重写的限制条件会在某些泛型上下文中失效 {#overridden-requirements-aren't-Used-in-some-generic-contexts} 对于一些通过条件遵循获得了特定行为的类型,在某些泛型上下文中,并不能够确保能够使用协议限制中的特定实现。为了说明这个行为,下面的例子中定义了两个协议以及一个有条件地遵循两个协议的泛型类型。 ```swift @@ -1431,10 +1431,10 @@ doSomething(with: oneAndTwo) 当传入 `doSomething(_:)` 的实例调用 `log()` 时,打印结果省略了自定义标题。 -### 协议遵循决不能冗余 {#protocol_conformance_must_not_be_redundant} +### 协议遵循决不能冗余 {#protocol-conformance-must-not-be-redundant} 一个具体的类型只能够遵循某特定协议一次。Swift 会把冗余的协议遵循标记为错误。你会在两种场景中遇到这种错误。第一种场景是,使用不同的限制条件来多次显式地遵循同一协议。第二种场景是,多次隐式地继承同一协议。以上两种场景会在下面章节中讨论。 -## 解决显式冗余 {#resolving_explicit_redundancy} +## 解决显式冗余 {#resolving-explicit-redundancy} 对同一具体类型的多个扩展不能遵循同一协议,即便这些扩展有不同的显式限制条件。这个限制的具体示例在下面的例子中。两个扩展声明都试图添加对 `Serializable` 的条件遵循,一个为 `Int` 类型元素的数组,另一个为 `String` 类型元素的数组。 ```swift @@ -1473,7 +1473,7 @@ extension Array: Serializable where Element: SerializableInArray { } ``` -## 解决隐式冗余 {#resolving_implicit_redundancy} +## 解决隐式冗余 {#resolving-implicit-redundancy} 当一个具体类型有条件地遵循某协议,此类型会隐式地使用相同的条件遵循任一父协议。 如果你需要让一个类型有条件地遵循两个继承自同一父协议的协议,请显式地声明对父协议的遵循。这可以避免使用不同的限制条件隐式遵循同一父协议两次。 @@ -1511,7 +1511,7 @@ extension Array: Loggable where Element: MarkedLoggable { } ``` -#### grammer_of_an_extension_declaration {#grammer_of_an_extension_declaration} +#### grammer_of_an_extension_declaration {#grammer-of-an-extension-declaration} > 扩展声明语法 > > @@ -1530,7 +1530,7 @@ extension Array: Loggable where Element: MarkedLoggable { } > *单条声明* → [声明语句](#declarations) | [*编译控制流语句*](05_Statements.md#compiler-control-statement) > -## 下标声明 {#subscript_declaration} +## 下标声明 {#subscript-declaration} *下标声明(subscript declaration)* 用于为特定类型的对象添加下标支持,通常也用于为访问集合、列表和序列中的元素提供语法便利。下标声明使用关键字 `subscript`,形式如下: ```swift @@ -1562,7 +1562,7 @@ subscript (参数列表) -> 返回类型 { 更多关于下标的信息和例子,请参阅 [下标](../chapter2/12_Subscripts.md)。 -#### grammer_of_a_subscript_declaration {#grammer_of_a_subscript_declaration} +#### grammer_of_a_subscript_declaration {#grammer-of-a-subscript-declaration} > 下标声明语法 > > @@ -1586,7 +1586,7 @@ subscript (参数列表) -> 返回类型 { > *下标结果* → **->** [*特性列表*](./07_Attributes.md#attributes)可选 [*类型*](./03_Types.md#type) > -## 运算符声明 {#operator_declaration} +## 运算符声明 {#operator-declaration} *运算符声明(operator declaration)* 会向程序中引入中缀、前缀或后缀运算符,使用关键字 `operator` 来声明。 可以声明三种不同的缀性:中缀、前缀和后缀。运算符的缀性指定了运算符与其运算对象的相对位置。 @@ -1626,7 +1626,7 @@ postfix operator 运算符名称 {} 声明了一个新的运算符以后,需要实现一个跟这个运算符同名的函数来实现这个运算符。如果是实现一个前缀或者后缀运算符,也必须使用相符的 `prefix` 或者 `postfix` 声明修饰符标记函数声明。如果是实现中缀运算符,则不需要使用 `infix` 声明修饰符标记函数声明。关于如何实现一个新的运算符的例子,请参阅 [自定义运算符](../chapter2/26_Advanced_Operators.md#custom_operators)。 -#### grammer_of_an_operator_declaration {#grammer_of_an_operator_declaration} +#### grammer_of_an_operator_declaration {#grammer-of-an-operator-declaration} > 运算符声明语法 > @@ -1652,7 +1652,7 @@ postfix operator 运算符名称 {} > *中缀运算符组* → [*优先级组名称*](#precedence-group-name) > -## 优先级组声明 {#precedence_group_declaration_modifiers} +## 优先级组声明 {#precedence-group-declaration-modifiers} *优先级组声明(A precedence group declaration)* 会向程序的中缀运算符引入一个全新的优先级组。当没有用圆括号分组时,运算符优先级反应了运算符与它的操作数的关系的紧密程度。 优先级组的声明如下所示: @@ -1679,7 +1679,7 @@ Swift 定义了大量的优先级组来与标准库的运算符配合使用, 优先级组的赋值性表示在包含可选链操作时的运算符优先级。当设为 true 时,与优先级组对应的运算符在可选链操作中使用和标准库中赋值运算符同样的分组规则,当设为 false 或者不设置,该优先级组的运算符与不赋值的运算符遵循同样的可选链规则。 -#### grammer_of_a_precedence_group_declaration {#grammer_of_a_precedence_group_declaration} +#### grammer_of_a_precedence_group_declaration {#grammer-of-a-precedence-group-declaration} > 优先级组声明语法 > @@ -1727,7 +1727,7 @@ Swift 定义了大量的优先级组来与标准库的运算符配合使用, > *优先级组名称* →[*标识符*](./02_Lexical_Structure.md#identifier) > -## 声明修饰符 {#Declaration_Modifiers} +## 声明修饰符 {#Declaration-Modifiers} 声明修饰符都是关键字或上下文相关的关键字,可以修改一个声明的行为或者含义。可以在声明的特性(如果存在)和引入该声明的关键字之间,利用声明修饰符的关键字或上下文相关的关键字指定一个声明修饰符。 `dynamic` @@ -1770,7 +1770,7 @@ Swift 定义了大量的优先级组来与标准库的运算符配合使用, 该修饰符用于修饰变量或存储型变量属性,表示该变量或属性持有其存储的对象的弱引用。这种变量或属性的类型必须是可选的类类型。使用 `weak` 修饰符可避免强引用循环。关于 `weak` 修饰符的更多信息和例子,请参阅 [弱引用](../chapter2/23_Automatic_Reference_Counting.md#resolving_strong_reference_cycles_between_class_instances)。 -### 访问控制级别 {#access_control_levels} +### 访问控制级别 {#access-control-levels} Swift 提供了三个级别的访问控制:`public`、`internal` 和 `private`。可以使用以下任意一种访问级别修饰符来指定声明的访问级别。访问控制在 [访问控制](../chapter2/25_Access_Control.md) 中有详细讨论。 `public` @@ -1788,7 +1788,7 @@ Swift 提供了三个级别的访问控制:`public`、`internal` 和 `private` 以上访问级别修饰符都可以选择带上一个参数,该参数由一对圆括号和其中的 `set` 关键字组成(例如,`private(set)`)。使用这种形式的访问级别修饰符来限制某个属性或下标的 setter 的访问级别低于其本身的访问级别,正如 [Getter 和 Setter](../chapter2/25_Access_Control.md#getters_and_setters) 中所讨论的。 -#### grammer_of_a_declaration_modifier {#grammer_of_a_declaration_modifier} +#### grammer_of_a_declaration_modifier {#grammer-of-a-declaration-modifier} > 声明修饰符的语法 > diff --git a/source/chapter3/07_Attributes.md b/source/chapter3/07_Attributes.md index 0c02be5f..6ff7b2ee 100755 --- a/source/chapter3/07_Attributes.md +++ b/source/chapter3/07_Attributes.md @@ -10,7 +10,7 @@ 有些声明特性通过接收参数来指定特性的更多信息以及它是如何修饰某个特定的声明的。这些_特性的参数_写在圆括号内,它们的格式由它们所属的特性来定义。 -## 声明特性 {#declaration_attributes} +## 声明特性 {#declaration-attributes} 声明特性只能应用于声明。 @@ -285,7 +285,7 @@ class ExampleClass: NSObject { 大多数代码应该使用 `objc` 特性,以暴露所需的声明。如果需要暴露多个声明,可以将其分组到添加 `objc` 特性的扩展中。`objcMembers` 特性为大量使用 Objective-C 运行时的内省工具的库提供了便利。添加不必要的 `objc` 特性会增加二进制体积并影响性能。 -### `requires_stored_property_inits` {#requires_stored_property_inits} +### `requires_stored_property_inits` {#requires-stored-property-inits} 该特性用于类声明,以要求类中所有存储属性提供默认值作为其定义的一部分。对于从中继承的任何类都推断出 `NSManagedObject` 特性。 @@ -307,13 +307,13 @@ class ExampleClass: NSObject { 标记为 `inlinable` 特性的声明,在内联代码中可以隐式使用。虽然 `inlinable` 或 `usableFromInline` 可以用于 `internal` 声明,但这两者不能同时使用。 -### `warn_unqualified_access` {#warn_unqualified_access} +### `warn_unqualified_access` {#warn-unqualified-access} 该特性应用于顶级函数、实例方法、类方法或静态方法,以在没有前置限定符(例如模块名称、类型名称、实例变量或常量)的情况下使用该函数或方法时触发警告。使用该特性可以帮助减少在同一作用于访问同名函数之间的歧义。 例如,Swift 标准库包含 [`min(_:_:)`](https://developer.apple.com/documentation/swift/1538339-min/) 顶级函数和用于序列比较元素的 [`min()`](https://developer.apple.com/documentation/swift/sequence/1641174-min) 方法。序列方法声明使用了 `warn_unqualified_access`,以减少在 `Sequence` 扩展中使用它们的歧义。 -### Interface Builder 使用的声明特性 {#declaration_attributes_used_by_interface_builder} +### Interface Builder 使用的声明特性 {#declaration-attributes-used-by-interface-builder} `Interface Builder` 特性是 `Interface Builder` 用来与 Xcode 同步的声明特性。`Swift` 提供了以下的 `Interface Builder` 特性:`IBAction`,`IBOutlet`,`IBDesignable`,以及 `IBInspectable` 。这些特性与 Objective-C 中对应的特性在概念上是相同的。 @@ -321,7 +321,7 @@ class ExampleClass: NSObject { 应用 `IBAction`、`IBOutlet`、`IBDesignable` 或者 `IBInspectable` 特性都意味着同时应用 `objc` 特性。 -## 类型特性 {#type_attributes} +## 类型特性 {#type-attributes} 类型特性只能用于修饰类型。 @@ -347,7 +347,7 @@ convention 特性总是与下面的参数之一一起出现。 在函数或者方法声明上使用该特性,它表示参数将不会被存储以供延迟执行,这将确保参数不会超出函数调用的生命周期。在使用 `escaping` 声明特性的函数类型中访问属性和方法时不需要显式地使用 `self.`。关于如何使用 `escaping` 特性的例子,请参阅 [逃逸闭包](../chapter2/07_Closures.md#escaping_closures)。 -## Switch Case 特性 {#switch_case_attributes} +## Switch Case 特性 {#switch-case-attributes} 你只能在 switch cases 中使用 switch case 特性。 @@ -364,12 +364,12 @@ convention 特性总是与下面的参数之一一起出现。 > *特性*→ [特性名](#attribute_name) [特性参数子句](#atribute_argument_clause)可选 > > -#### attribute_name {#attribute_name} +#### attribute_name {#attribute-name} > > *特性名* → [标识符](./02_Lexical_Structure.md#identifier) > > -#### atribute_argument_clause {#atribute_argument_clause} +#### atribute_argument_clause {#atribute-argument-clause} > > *特性参数子句* → **(** [均衡令牌列表](#balanced_tokens)可选 **)** > @@ -380,12 +380,12 @@ convention 特性总是与下面的参数之一一起出现。 > > > -#### balanced_tokens {#balanced_tokens} +#### balanced_tokens {#balanced-tokens} > > *均衡令牌列表* → [均衡令牌](#balanced_token) [均衡令牌列表](#balanced_tokens)可选 > > -#### balanced_token {#balanced_token} +#### balanced_token {#balanced-token} > > *均衡令牌* → **(** [均衡令牌列表](#balanced_tokens)可选 **)** > diff --git a/source/chapter3/08_Patterns.md b/source/chapter3/08_Patterns.md index d0f0071a..4aa9009a 100755 --- a/source/chapter3/08_Patterns.md +++ b/source/chapter3/08_Patterns.md @@ -29,7 +29,7 @@ Swift 中的模式分为两类:一种能成功匹配任何类型的值,另 > *模式* → [*表达式模式*](#expression-pattern) > -## 通配符模式(Wildcard Pattern) {#wildcard_pattern} +## 通配符模式(Wildcard Pattern) {#wildcard-pattern} *通配符模式*由一个下划线(`_`)构成,用于匹配并忽略任何值。当你想忽略被匹配的值时可以使用该模式。例如,下面这段代码在闭区间 `1...3` 中迭代,每次迭代都忽略该区间的当前值: @@ -46,7 +46,7 @@ for _ in 1...3 { > *通配符模式* → **_** > -## 标识符模式(Identifier Pattern) {#identifier_pattern} +## 标识符模式(Identifier Pattern) {#identifier-pattern} *标识符模式*匹配任何值,并将匹配的值和一个变量或常量绑定起来。例如,在下面的常量声明中,`someValue` 是一个标识符模式,匹配了 `Int` 类型的 `42`: ```swift @@ -64,7 +64,7 @@ let someValue = 42 > *标识符模式* → [*标识符*](./02_Lexical_Structure.md#identifier) > -## 值绑定模式(Value-Binding Pattern) {#value-binding_pattern} +## 值绑定模式(Value-Binding Pattern) {#value-binding-pattern} *值绑定模式*把匹配到的值绑定给一个变量或常量。把匹配到的值绑定给常量时,用关键字 `let`,绑定给变量时,用关键字 `var`。 在值绑定模式中的标识符模式会把新命名的变量或常量与匹配到的值做绑定。例如,你可以拆开一个元组,然后把每个元素绑定到相应的标识符模式中。 @@ -88,7 +88,7 @@ case let (x, y): > *值绑定模式* → **var** [*模式*](#pattern) | **let** [*模式*](#pattern) > -## 元组模式 {#tuple_pattern} +## 元组模式 {#tuple-pattern} *元组模式*是由逗号分隔的,具有零个或多个模式的列表,并由一对圆括号括起来。元组模式匹配相应元组类型的值。 你可以使用类型标注去限制一个元组模式能匹配哪种元组类型。例如,在常量声明 `let (x, y): (Int, Int) = (1, 2)` 中的元组模式 `(x, y): (Int, Int)` 只匹配两个元素都是 `Int` 类型的元组。 @@ -126,7 +126,7 @@ let (a): Int = 2 // a: Int = 2 > *元组模式元素* → [*模式*](#pattern) > -## 枚举用例模式(Enumeration Case Pattern) {#enumeration_case_pattern} +## 枚举用例模式(Enumeration Case Pattern) {#enumeration-case-pattern} *枚举用例模式*匹配现有的某个枚举类型的某个用例。枚举用例模式出现在 `switch` 语句中的 `case` 标签中,以及 `if`、`while`、`guard` 和 `for-in` 语句的 `case` 条件中。 如果你准备匹配的枚举用例有任何关联的值,则相应的枚举用例模式必须指定一个包含每个关联值元素的元组模式。关于使用 `switch` 语句来匹配包含关联值的枚举用例的例子,请参阅 [关联值](../chapter2/08_Enumerations.md#associated_values)。 @@ -138,7 +138,7 @@ let (a): Int = 2 // a: Int = 2 > *枚举用例模式* → [*类型标识*](./03_Types.md#type-identifier)可选 **.** [*枚举用例名*](./06_Declarations.md#enum-case-name) [*元组模式*](#tuple-pattern)可选 > -## 可选模式(Optional Pattern) {#optional_pattern} +## 可选模式(Optional Pattern) {#optional-pattern} *可选模式*匹配包装在一个 `Optional(Wrapped)` 或者 `ExplicitlyUnwrappedOptional(Wrapped)` 枚举中的 `Some(Wrapped)` 用例中的值。可选模式由一个标识符模式和紧随其后的一个问号组成,可以像枚举用例模式一样使用。 由于可选模式是 `Optional` 和 `ImplicitlyUnwrappedOptional` 枚举用例模式的语法糖,下面两种写法是等效的: @@ -176,7 +176,7 @@ for case let number? in arrayOfOptinalInts { > *可选模式* → [*标识符模式*](./03_Types.md#type-identifier) **?** > -## 类型转换模式(Type-Casting Patterns) {#type-casting_patterns} +## 类型转换模式(Type-Casting Patterns) {#type-casting-patterns} 有两种类型转换模式,`is` 模式和 `as` 模式。`is` 模式只出现在 `switch` 语句中的 `case` 标签中。`is` 模式和 `as` 模式形式如下: > is `类型` @@ -205,7 +205,7 @@ for case let number? in arrayOfOptinalInts { > *as 模式* → [*模式*](#pattern) **as** [*类型*](03_Types.md#type) > -## 表达式模式(Expression Pattern) {#expression_pattern} +## 表达式模式(Expression Pattern) {#expression-pattern} *表达式模式*代表表达式的值。表达式模式只出现在 `switch` 语句中的 `case` 标签中。 表达式模式代表的表达式会使用 Swift 标准库中的 `~=` 运算符与输入表达式的值进行比较。如果 `~=` 运算符返回 `true`,则匹配成功。默认情况下,`~=` 运算符使用 `==` 运算符来比较两个相同类型的值。它也可以将一个整型数值与一个 `Range` 实例中的一段整数区间做匹配,正如下面这个例子所示: diff --git a/source/chapter3/09_Generic_Parameters_and_Arguments.md b/source/chapter3/09_Generic_Parameters_and_Arguments.md index e26688ff..f33663e3 100755 --- a/source/chapter3/09_Generic_Parameters_and_Arguments.md +++ b/source/chapter3/09_Generic_Parameters_and_Arguments.md @@ -4,7 +4,7 @@ 关于 Swift 语言的泛型概述,请参阅 [泛型](../chapter2/22_Generics.md)。 -## 泛型形参子句 {#generic_parameter} +## 泛型形参子句 {#generic-parameter} *泛型形参子句*指定泛型类型或函数的类型形参,以及这些参数相关的约束和要求。泛型形参子句用尖括号(`<>`)包住,形式如下: > <`泛型形参列表`> @@ -36,7 +36,7 @@ simpleMax(17, 42) // T 被推断为 Int 类型 simpleMax(3.14159, 2.71828) // T 被推断为 Double 类型 ``` -### Where 子句 {#where_clauses} +### Where 子句 {#where-clauses} 要想对类型形参及其关联类型指定额外要求,可以在函数体或者类型的大括号之前添加 `where` 子句。`where` 子句由关键字 `where` 及其后的用逗号分隔的一个或多个要求组成。 > `where` : `类型要求` @@ -97,7 +97,7 @@ simpleMax(3.14159, 2.71828) // T 被推断为 Double 类型 > *同类型约束* → [*类型标识符*](./03_Types.md#type-identifier) **==** [*类型*](./03_Types.md#type) > -## 泛型实参子句 {#generic_argument} +## 泛型实参子句 {#generic-argument} *泛型实参子句*指定泛型类型的类型实参。泛型实参子句用尖括号(`<>`)包住,形式如下: > <`泛型实参列表`> diff --git a/source/chapter3/10_Summary_of_the_Grammar.md b/source/chapter3/10_Summary_of_the_Grammar.md index cad60108..3573f123 100755 --- a/source/chapter3/10_Summary_of_the_Grammar.md +++ b/source/chapter3/10_Summary_of_the_Grammar.md @@ -1,6 +1,6 @@ # 语法总结(Summary of the Grammar) -## 词法结构 {#lexical_structure} +## 词法结构 {#lexical-structure} > 空白字符语法 > @@ -1633,7 +1633,7 @@ > *表达式模式* → [表达式](./04_Expressions.md#expression) > -## 泛型参数 {#generic_parameters_and_arguments} +## 泛型参数 {#generic-parameters-and-arguments} > 泛型形参子句语法 > diff --git a/source/chapter4/02_Type_Custom.md b/source/chapter4/02_Type_Custom.md index 3b82da08..dc1888c7 100644 --- a/source/chapter4/02_Type_Custom.md +++ b/source/chapter4/02_Type_Custom.md @@ -15,7 +15,7 @@ 小伙伴们,Swift 中的 Bool 类型有着非常重要的语法功能,并支撑起了整个 Swift 体系中的逻辑判断体系,经过老码的研究和学习, Bool 类型本身其实是对基础 Boolean 类型封装,小伙伴们可能咬着手指头问老码,怎么一会 Bool 类型,一会 Boolean 类型,其区别在于,前者是基于枚举的组合类型,而后者则是基本类型,只有两种 true 和 false。 -####自定义原型 {#prefix_expressions} +####自定义原型 {#prefix-expressions} 接下老码根据 Bool 的思想来创建一个 OCBool 类型,来让小伙伴们了解一下 Swift 中到底是怎么玩儿的。 来我们先看一下 OCBool 的定义。 From f6e0bfa6229512b3919bcb8c761127212ca52d56 Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Tue, 2 Apr 2019 09:53:33 -0500 Subject: [PATCH 088/107] remove blank --- source/chapter3/02_Lexical_Structure.md | 116 ++++++++++++------------ 1 file changed, 58 insertions(+), 58 deletions(-) diff --git a/source/chapter3/02_Lexical_Structure.md b/source/chapter3/02_Lexical_Structure.md index b9c20e96..8abd2ddb 100755 --- a/source/chapter3/02_Lexical_Structure.md +++ b/source/chapter3/02_Lexical_Structure.md @@ -4,7 +4,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 通常情况下,通过考虑输入文本当中可能的最长子串,并且在随后将介绍的语法约束之下,根据随后将介绍的语法约束生成的,根据 Swift 源文件当中的字符来生成相应的“符号”。这种方法称为*“最长匹配(longest match)”*,或者*“最大适合(maximal munch)”*。 -## 空白与注释 {# whitespace} +## 空白与注释 {#whitespace} 空白(whitespace)有两个用途:分隔源文件中的符号以及帮助区分运算符属于前缀还是后缀(参见 [运算符](#operators)),在其他情况下空白则会被忽略。以下的字符会被当作空白:空格(U+0020)、换行符(U+000A)、回车符(U+000D)、水平制表符(U+0009)、垂直制表符(U+000B)、换页符(U+000C)以及空字符(U+0000)。 @@ -15,7 +15,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > *空白* → [*空白项*](#whitespace-item) [*空白*](#whitespace)可选 > > -#### whitespace-item {# whitespace-item} +#### whitespace-item {#whitespace-item} > > *空白项* → [*断行符*](#line-break) > @@ -26,7 +26,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > *空白项* → U+0000,U+0009,U+000B,U+000C 或者 U+0020 > > -#### line-break {# line-break} +#### line-break {#line-break} > > *断行符* → U+000A > @@ -35,27 +35,27 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > *断行符* → U+000D 接着是 U+000A > > -#### comment {# comment} +#### comment {#comment} > > *注释* → // [*注释内容*](#comment-text) [断行符*](#line-break) > > -#### multiline-comment {# multiline-comment} +#### multiline-comment {#multiline-comment} > > *多行注释* → `/*` [*多行注释内容*](#multiline-commnet-text) `*/` > > -#### comment-text {# comment-text} +#### comment-text {#comment-text} > > *注释内容* → [*注释内容项*](#comment-text-item) [*注释内容*](#comment-text)可选 > > -#### comment-text-item {# comment-text-item} +#### comment-text-item {#comment-text-item} > > *注释内容项* → 任何 Unicode 标量值, 除了 U+000A 或者 U+000D > > -#### multiline-commnet-text {# multiline-commnet-text} +#### multiline-commnet-text {#multiline-commnet-text} > > *多行注释内容* → [*多行注释内容项*](#multiline-comment-text-item) [*多行注释内容*](#multiline-comment-text)可选 > @@ -65,7 +65,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > > *多行注释内容项* → 任何 Unicode 标量值, 除了 `/*` 或者 `*/` -## 标识符 {# identifiers} +## 标识符 {#identifiers} *标识符(identifier)* 可以由以下的字符开始:大写或小写的字母 `A` 到 `Z`、下划线(`_`)、基本多文种平面(Basic Multilingual Plane)中非字符数字组合的 Unicode 字符以及基本多文种平面以外的非个人专用区字符。在首字符之后,允许使用数字和组合 Unicode 字符。 @@ -84,7 +84,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > *标识符列表* → [*标识符*](#identifier) | [*标识符*](#identifier) **,** [*标识符列表*](#identifier) > > -#### identifier-head {# identifier-head} +#### identifier-head {#identifier-head} > > *头部标识符* → 大写或小写字母 A - Z > @@ -121,19 +121,19 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > *标识符字符* → 数值 0 - 9 > > -#### identifier-character {# identifier-character} +#### identifier-character {#identifier-character} > > *标识符字符* → U+0300–U+036F,U+1DC0–U+1DFF,U+20D0–U+20FF,或者 U+FE20–U+FE2F > > *标识符字符* → [*头部标识符*](#identifier-head) > > -#### identifier-characters {# identifier-characters} +#### identifier-characters {#identifier-characters} > > *标识符字符组* → [*标识符字符*](#identifier-character) [*标识符字符组*](#identifier-characters)可选 > > -#### implicit-parameter-name {# implicit-parameter-name} +#### implicit-parameter-name {#implicit-parameter-name} > > *隐式参数名* → **$** [*十进制数字列表*](#decimal-digit) @@ -178,7 +178,7 @@ true // 布尔值字面量 > *nil 字面量* → **nil** -### 整数字面量{# integer-literal} +### 整数字面量{#integer-literal} *整数字面量(Integer Literals)* 表示未指定精度整数的值。整数字面量默认用十进制表示,可以加前缀来指定其他的进制。二进制字面量加 `0b`,八进制字面量加 `0o`,十六进制字面量加 `0x`。 @@ -193,7 +193,7 @@ true // 布尔值字面量 > 整数字面量语法 > > -#### integer-literal {# integer-literal} +#### integer-literal {#integer-literal} > > *整数字面量* → [*二进制字面量*](#binary-literal) > @@ -204,51 +204,51 @@ true // 布尔值字面量 > *整数字面量* → [*十六进制字面量*](#hexadecimal-literal) > > -#### binary-literal {# binary-literal} +#### binary-literal {#binary-literal} > > *二进制字面量* → **0b** [*二进制数字*](#binary-digit) [*二进制字面量字符组*](#binary-literal-characters)可选 > > -#### binary-digit {# binary-digit} +#### binary-digit {#binary-digit} > > *二进制数字* → 数值 0 到 1 > > *二进制字面量字符* → [*二进制数字*](#binary-digit) | _ > > -#### binary-literal-characters {# binary-literal-characters} +#### binary-literal-characters {#binary-literal-characters} > > *二进制字面量字符组* → [*二进制字面量字符*](#binary-literal-character) [*二进制字面量字符组*](#binary-literal-characters)可选 > > -#### octal-literal {# octal-literal} +#### octal-literal {#octal-literal} > > *八进制字面量* → **0o** [*八进字数字*](#octal-digit) [*八进制字符组*](#octal-literal-characters)可选 > > -#### octal-digit {# octal-digit} +#### octal-digit {#octal-digit} > > *八进字数字* → 数值 0 到 7 > > *八进制字符* → [*八进字数字*](#octal-digit) | _ > > -#### octal-literal-characters {# octal-literal-characters} +#### octal-literal-characters {#octal-literal-characters} > > *八进制字符组* → [*八进制字符*](#octal-literal-character) [*八进制字符组*](#octal-literal-characters)可选 > > -#### decimal-literal {# decimal-literal} +#### decimal-literal {#decimal-literal} > > *十进制字面量* → [*十进制数字*](#decimal-digit) [*十进制字符组*](#decimal-literal-characters)可选 > > -#### decimal-digit {# decimal-digit} +#### decimal-digit {#decimal-digit} > > *十进制数字* → 数值 0 到 9 > > -#### decimal-literal-characters {# decimal-literal-characters} +#### decimal-literal-characters {#decimal-literal-characters} > > *十进制数字组* → [*十进制数字*](#decimal-digit) [*十进制数字组*](#decimal-literal-characters)可选 > @@ -257,23 +257,23 @@ true // 布尔值字面量 > *十进制字符组* → [*十进制字符*](#decimal-literal-characters) [*十进制字符组*](#decimal-literal-characters)可选 > > -#### hexadecimal-literal {# hexadecimal-literal} +#### hexadecimal-literal {#hexadecimal-literal} > > *十六进制字面量* → **0x** [*十六进制数字*](#hexadecimal-digit) [*十六进制字面量字符组*](#hexadecimal-literal-characters)可选 > > -#### hexadecimal-digit {# hexadecimal-digit} +#### hexadecimal-digit {#hexadecimal-digit} > > *十六进制数字* → 数值 0 到 9, 字母 a 到 f, 或 A 到 F > > *十六进制字符* → [*十六进制数字*](#hexadecimal-digit) | _ > > -#### hexadecimal-literal-characters {# hexadecimal-literal-characters} +#### hexadecimal-literal-characters {#hexadecimal-literal-characters} > > *十六进制字面量字符组* → [*十六进制字符*](#hexadecimal-literal-characters) [*十六进制字面量字符组*](#hexadecimal-literal-characters)可选 -### 浮点数字面量{# floating-point-literal} +### 浮点数字面量{#floating-point-literal} *浮点数字面量(Floating-point literals)* 表示未指定精度浮点数的值。 @@ -292,48 +292,48 @@ true // 布尔值字面量 > 浮点数字面量语法 > > -#### floating-point-literal {# floating-point-literal} +#### floating-point-literal {#floating-point-literal} > > *浮点数字面量* → [*十进制字面量*](#decimal-literal) [*十进制分数*](#decimal-fraction)可选 [*十进制指数*](#decimal-exponent)可选 > > *浮点数字面量* → [*十六进制字面量*](#hexadecimal-literal) [*十六进制分数*](#hexadecimal-fraction)可选 [*十六进制指数*](#hexadecimal-exponent) > > -#### decimal-fraction {# decimal-fraction} +#### decimal-fraction {#decimal-fraction} > > *十进制分数* → **.** [*十进制字面量*](#decimal-literal) > > -#### decimal-exponent {# decimal-exponent} +#### decimal-exponent {#decimal-exponent} > > *十进制指数* → [*十进制指数 e*](#floating-point-e) [*正负号*](#sign)可选 [*十进制字面量*](#decimal-literal) > > -#### hexadecimal-fraction {# hexadecimal-fraction} +#### hexadecimal-fraction {#hexadecimal-fraction} > > *十六进制分数* → **.** [*十六进制数字*](#hexadecimal-digit) [*十六进制字面量字符组*](#hexadecimal-literal-characters)可选 > > -#### hexadecimal-exponent {# hexadecimal-exponent} +#### hexadecimal-exponent {#hexadecimal-exponent} > > *十六进制指数* → [*十六进制指数 p*](#floating-point-p) [*正负号*](#sign)可选 [*十进制字面量*](#decimal-literal) > > -#### floating-point-e {# floating-point-e} +#### floating-point-e {#floating-point-e} > > *十进制指数 e* → **e** | **E** > > -#### floating-point-p {# floating-point-p} +#### floating-point-p {#floating-point-p} > > *十六进制指数 p* → **p** | **P** > > -#### sign {# sign} +#### sign {#sign} > > *正负号* → **+** | **-** -### 字符串字面量 {# string-literal} +### 字符串字面量 {#string-literal} 字符串字面量是被引号包括的一串字符组成。 单行字符串字面量被包在双引号中的一串字符组成,形式如下: @@ -431,7 +431,7 @@ let textB = "Hello world" > *字符串闭分隔定界符* → **"** [*字符串扩展分隔符*](#extended-string-literal-delimiter)可选 > > -#### static-string-literal {# static-string-literal} +#### static-string-literal {#static-string-literal} > > *静态字符串字面量* → [*字符串开分隔定界符*](#extended-string-literal-delimiter) [*引用文本*](#quoted-text)可选 [*字符串闭分隔定界符*](#extended-string-literal-delimiter) > @@ -442,53 +442,53 @@ let textB = "Hello world" > *多行字符串闭分隔定界符* → **"""** [*字符串扩展分隔符*](#extended-string-literal-delimiter) > > -#### extended-string-literal-delimiter {# extended-string-literal-delimiter} +#### extended-string-literal-delimiter {#extended-string-literal-delimiter} > > *字符串扩展分隔符* → **#** [*字符串扩展分隔符*](#extended-string-literal-delimiter)可选 > > -#### quoted-text {# quoted-text} +#### quoted-text {#quoted-text} > > *引用文本* → [*引用文本项*](#quoted-text-item) [*引用文本*](#quoted-text)可选 > > -#### quoted-text-item {# quoted-text-item} +#### quoted-text-item {#quoted-text-item} > > *引用文本项* → [*转义字符*](#escaped-character) > > *引用文本项* → 除了 **"**、**\\**、U+000A、U+000D 以外的所有 Unicode 字符 > > -#### multiline-quoted-text {# multiline-quoted-text} +#### multiline-quoted-text {#multiline-quoted-text} > > *多行引用文本* → [*多行引用文本项*](#multiline-quoted-text-item) [*多行引用文本*](#multiline-quoted-text)可选 > > -#### multiline-quoted-text-item {# multiline-quoted-text-item} +#### multiline-quoted-text-item {#multiline-quoted-text-item} > > *多行引用文本项* [*转义字符*](#escaped-character)可选 > > -#### multiline-quoted-text {# multiline-quoted-text} +#### multiline-quoted-text {#multiline-quoted-text} > > *多行引用文本* → 除了 **\** 以外的任何Unicode标量值 > > *多行引用文本* → [*转义换行*](#escaped-newline) > > -#### interpolated-string-literal {# interpolated-string-literal} +#### interpolated-string-literal {#interpolated-string-literal} > > *插值字符串字面量* → [*字符串开分隔定界符*](#extended-string-literal-delimiter) [*插值文本*](#interpolated-text)可选 [*字符串闭分隔定界符*](#extended-string-literal-delimiter) > > *插值字符串字面量* → [*多行字符串开分隔定界符*](#extended-string-literal-delimiter) [*插值文本*](#interpolated-text)可选 [*多行字符串闭分隔定界符*](#extended-string-literal-delimiter) > > -#### interpolated-text {# interpolated-text} +#### interpolated-text {#interpolated-text} > > *插值文本* → [*插值文本项*](#interpolated-text-item) [*插值文本*](#interpolated-text)可选 > > -#### interpolated-text-item {# interpolated-text-item} +#### interpolated-text-item {#interpolated-text-item} > > *插值文本项* → **\\****(**[*表达式*](./04_Expressions.md)**)** | [*引用文本项*](#quoted-text-item) > @@ -497,29 +497,29 @@ let textB = "Hello world" > *多行插值文本项* → **\\(** [表达式](./04_Expressions.md) **)** | [多行引用文本项](#multiline-quoted-text-item) > > -#### escape-sequence {# escape-sequence} +#### escape-sequence {#escape-sequence} > > *转义序列* → **\\** [字符串扩展分隔符](#extended-string-literal-delimiter) > > -#### escaped-character {# escaped-character} +#### escaped-character {#escaped-character} > > *转义字符* → [*转义序列*](#escape-sequence) **0** | [*转义序列*](#escape-sequence) **\\** | [*转义序列*](#escape-sequence) **t** | [*转义序列*](#escape-sequence) **n** | [*转义序列*](#escape-sequence) **r** | [*转义序列*](#escape-sequence) **\"** | [*转义序列*](#escape-sequence) **'** > > *转义字符* → [*转义序列*](#escape-sequence) **u {** [*unicode 标量数字*](#unicode-scalar-digits) **}** > > -#### unicode-scalar-digits {# unicode-scalar-digits} +#### unicode-scalar-digits {#unicode-scalar-digits} > > *unicode 标量数字* → 一到八位的十六进制数字 > > -#### escaped-newline {# escaped-newline} +#### escaped-newline {#escaped-newline} > > *转义换行符* → [*转义序列*](#escape-sequence) [*空白*](#whitespace)可选 [*断行符*](#line-break) -## 运算符 {# operator} +## 运算符 {#operator} Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基础运算符](../chapter2/02_Basic_Operators.md) 和 [高级运算符](../chapter2/26_Advanced_Operators.md) 中进行了阐述。这一小节将描述哪些字符能用于自定义运算符。 @@ -555,7 +555,7 @@ Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基 > *运算符* → [*头部点运算符*](#dot-operator-head) [*点运算符字符组*](#dot-operator-characters) > > -#### operator-head {# operator-head} +#### operator-head {#operator-head} > > *头部运算符* → **/** | **=** | **-** | **+** | **!** | __*__ | **%** | **<** | **>** | **&** | **|** | **^** | **~** | **?** > @@ -588,7 +588,7 @@ Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基 > *头部运算符* → U+3008–U+3030 > > -#### operator-character {# operator-character} +#### operator-character {#operator-character} > > *运算符字符* → [*头部运算符*](#operator-head) > @@ -605,22 +605,22 @@ Swift 标准库定义了许多可供使用的运算符,其中大部分在 [基 > *运算符字符* → U+E0100–U+E01EF > > -#### operator-characters {# operator-characters} +#### operator-characters {#operator-characters} > > *运算符字符组* → [*运算符字符*](#operator-character) [*运算符字符组*](#operator-characters)可选 > > -#### dot-operator-head {# dot-operator-head} +#### dot-operator-head {#dot-operator-head} > > *头部点运算符* → **..** > > -#### dot-operator-character {# dot-operator-character} +#### dot-operator-character {#dot-operator-character} > > *点运算符字符* → **.** | [*运算符字符*](#operator-character) > > -#### dot-operator-characters {# dot-operator-characters} +#### dot-operator-characters {#dot-operator-characters} > > *点运算符字符组* → [*点运算符字符*](#dot-operator-character) [*点运算符字符组*](#dot-operator-characters)可选 > From 2760b1993ed8c0d26be178fc64115ce97b4cf02a Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Tue, 2 Apr 2019 14:12:14 -0500 Subject: [PATCH 089/107] trigger gitbook build --- source/chapter3/02_Lexical_Structure.md | 1 - 1 file changed, 1 deletion(-) diff --git a/source/chapter3/02_Lexical_Structure.md b/source/chapter3/02_Lexical_Structure.md index 8abd2ddb..3c5084ff 100755 --- a/source/chapter3/02_Lexical_Structure.md +++ b/source/chapter3/02_Lexical_Structure.md @@ -14,7 +14,6 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > > *空白* → [*空白项*](#whitespace-item) [*空白*](#whitespace)可选 > -> #### whitespace-item {#whitespace-item} > > *空白项* → [*断行符*](#line-break) From 5c2873d2954f5184d213ce03189567334f9c38d2 Mon Sep 17 00:00:00 2001 From: Jax Wu Date: Wed, 3 Apr 2019 22:51:38 +0800 Subject: [PATCH 090/107] =?UTF-8?q?=E8=BF=BD=E5=8A=A0=E6=9C=80=E8=BF=91?= =?UTF-8?q?=E6=89=8D=E6=B7=BB=E5=8A=A0=E7=9A=84=20Swift5=20=E6=94=B9?= =?UTF-8?q?=E5=8A=A8=E4=B8=BB=E8=A6=81=E8=B4=A1=E7=8C=AE=E8=80=85=20(#916)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/contributors.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/source/contributors.md b/source/contributors.md index 14b6915f..7ac01c1e 100755 --- a/source/contributors.md +++ b/source/contributors.md @@ -4,6 +4,21 @@ Swift 官方文档中文翻译工作由[numbbbbb](https://github.com/numbbbbb) ## Swift 5.x 主要贡献者 +- [Adolf-L](https://github.com/Adolf-L) +- [BigNerdCoding](https://github.com/bignerdcoding) +- [bqlin](https://github.com/bqlin) +- [Byelaney](https://github.com/Byelaney) +- [CMB](https://github.com/chenmingbiao) +- [DarrenChen123](https://github.com/DarrenChen123) +- [dzyding](https://github.com/dzyding) +- [Hale](https://github.com/wuqiuhao) +- [jojotov](https://github.com/jojotov) +- [Khala-wan](https://github.com/Khala-wan) +- [Nemocdz](https://github.com/Nemocdz) +- [numbbbbb](https://github.com/numbbbbb) +- [WAMaker](https://github.com/WAMaker) +- [Yousanflics](https://github.com/Yousanflics) + ## Swift 4.x 主要贡献者 - [Adolf-L](https://github.com/Adolf-L) @@ -16,6 +31,7 @@ Swift 官方文档中文翻译工作由[numbbbbb](https://github.com/numbbbbb) - [dzyding](https://github.com/dzyding) - [EyreFree](https://www.eyrefree.org/) - [Forelas](https://github.com/ForelaxX) +- [Hale](https://github.com/wuqiuhao) - [kemchenj](https://kemchenj.github.io) - [jojotov](https://github.com/jojotov) - [Meler](https://github.com/pmtao) @@ -27,7 +43,6 @@ Swift 官方文档中文翻译工作由[numbbbbb](https://github.com/numbbbbb) - [rain2540](https://github.com/rain2540) - [Rsenjoyer](https://github.com/Rsenjoyer) - [WAMaker](https://github.com/WAMaker) -- [Hale](https://github.com/wuqiuhao) - [YiYiZheng](https://github.com/YiYiZheng) - [ZhangChi](https://github.com/zhangchi25806) From bc806e9b209942e7bb3e2e201728318eddafc616 Mon Sep 17 00:00:00 2001 From: Jax Wu Date: Fri, 5 Apr 2019 05:40:21 +0800 Subject: [PATCH 091/107] modify readme (#918) --- README.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 74ed9c20..a1530aa2 100755 --- a/README.md +++ b/README.md @@ -13,14 +13,7 @@ # 当前阶段 -Swift 5.0 翻译中,请到 [Issues](https://github.com/SwiftGGTeam/the-swift-programming-language-in-chinese/issues) 中认领章节(把 Issue 的 Assignee 设置成你自己就表示认领,不要认领已经有人认领的章节)。 - -在翻译时可以通过 Calibre 软件对 [document 目录下](https://github.com/SwiftGGTeam/the-swift-programming-language-in-chinese/tree/gh-pages/document) 不同版本的文档进行 diff,检查待更新部分。 - -diff 操作如下: - -将最新文档加入到 Calibre 中,点击 **Edit Book**,然后在编辑界面选择 **File** -> **Compare to other book** 检查各模块的更新内容,详见[链接](https://manual.calibre-ebook.com/diff.html)。 - +- 更新到 Swift 5.0, 2019-04-05 - 更新到 Swift 4.2,2019-01-29 - 更新到 Swift 4.1,2018-04-12,感谢[@Mylittleswift](https://github.com/Mylittleswift) - 更新到 Swift 3.0,2016-09-23 @@ -43,6 +36,14 @@ diff 操作如下: - 翻译排版格式要求参考 SwiftGG [排版指南](https://github.com/SwiftGGTeam/translation/blob/master/SwiftGG%20排版指南.md) - Pull Request 发起方式参考 SwiftGG [Pull Request 说明](https://github.com/SwiftGGTeam/translation/blob/master/%E7%BF%BB%E8%AF%91%E6%B5%81%E7%A8%8B%E6%A6%82%E8%BF%B0%E5%8F%8APR%E8%AF%B4%E6%98%8E.md#%E5%A6%82%E4%BD%95%E5%8F%91%E8%B5%B7-pull-request) +原版文档差异比较: + +在翻译时可以通过 Calibre 软件对 [document 目录下](https://github.com/SwiftGGTeam/the-swift-programming-language-in-chinese/tree/gh-pages/document) 不同版本的文档进行 diff,检查待更新部分。 + +diff 操作如下: + +将最新文档加入到 Calibre 中,点击 **Edit Book**,然后在编辑界面选择 **File** -> **Compare to other book** 检查各模块的更新内容,详见[链接](https://manual.calibre-ebook.com/diff.html)。 + 其他说明: - 相关术语请严格按照术语表来翻译,如果有问题可以发 Issue 大家一起讨论 From 72c51e42bb132e26e3581bc1e4fff9fa0ede3b11 Mon Sep 17 00:00:00 2001 From: Jax Wu Date: Fri, 5 Apr 2019 05:40:43 +0800 Subject: [PATCH 092/107] Fix revision link (#917) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * temp fix swift5 - swift3 link * 补充余下文档外链修改 --- source/chapter1/04_revision_history.md | 379 ++++++++++++------------ source/chapter2/17_Error_Handling.md | 4 +- source/chapter3/02_Lexical_Structure.md | 4 +- source/chapter3/03_Types.md | 19 +- source/chapter3/05_Statements.md | 8 +- source/chapter3/06_Declarations.md | 1 + 6 files changed, 198 insertions(+), 217 deletions(-) diff --git a/source/chapter1/04_revision_history.md b/source/chapter1/04_revision_history.md index a0214bbb..894f0fb7 100644 --- a/source/chapter1/04_revision_history.md +++ b/source/chapter1/04_revision_history.md @@ -3,253 +3,254 @@ ### 2019-01-24 * 更新到 Swift 5。 -* 增加了[拓展字符串分隔符](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html#ID606)部分,另外在[字符串字面量](https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID417)部分更新了拓展字符串分隔符相关内容。 -* 添加了[动态调用](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID603)章节,其中包含有关使用 `dynamicCallable` 属性动态调用实例作为函数的信息。 -* 添加了[unknown](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID605)和[未来枚举匹配](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID602)章节,其中包含了使用 `unknown` 来处理未来枚举可能发生改变的情形。 -* 在[Key-Path]表达式章节添加了标示 key path (\.self) 相关内容。 -* 在[可选编译块](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID539)章节新增了小于比较符 `<` 相关内容。 +* 增加了[拓展字符串分隔符](../chapter2/03_Strings_And_Characters.md#extended-string-delimiters)部分,另外在[字符串字面量](../chapter3/03_Lexical_Structure.md#string-literal)部分更新了拓展字符串分隔符相关内容。 +* 添加了[动态调用](../chapter3/07_Attributes.md#dynamiccallable)章节,其中包含有关使用 `dynamicCallable` 属性动态调用实例作为函数的信息。 +* 添加了[unknown](../chapter3/07_Attributes.md#unknown)和[未来枚举匹配](../chapter3/05_Statements.md#future-case2)章节,其中包含了使用 `unknown` 来处理未来枚举可能发生改变的情形。 +* 在[Key-Path](../chapter3/04_Expressions.md#key-path-expression)表达式章节添加了标示 key path (\.self) 相关内容。 +* 在[可选编译块](../chapter3/05_Statements.md#Conditional-Compilation-Block)章节新增了小于比较符 `<` 相关内容。 ### 2018-09-17 * 更新至 Swift 4.2。 -* 在[遍历枚举情形](https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html#ID581)章节添加了访问所有枚举情形的内容。 -* 在[编译诊断](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID582)章节添加了有关 `#error` 和 `#warning` 相关内容。 -* 在[属性声明](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)章节中补充了 `inlinable` 和 `usableFromInline` 属性相关的内联信息。 -* 在[属性声明](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)章节中添加了 `requires_stored_property_inits` 和 `warn_unqualified_access` 属性相关的信息。 -* 在[可选编译块](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID539)章节新增了如何根据 Swift 编译器版本对代码进行对应编译处理的内容。 -* 在[字面量语法](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID390)章节补充了 `#dsohandle` 相关内容。 +* 在[遍历枚举情形](../chapter2/08_Enumerations.md#iterating-over-enumeration-cases)章节添加了访问所有枚举情形的内容。 +* 在[编译诊断](../chapter3/05_Statements.md#compile-time-diagnostic-statement)章节添加了有关 `#error` 和 `#warning` 相关内容。 +* 在[属性声明](../chapter3/07_Attributes.md#Ideclaration-attributes)章节中补充了 `inlinable` 和 `usableFromInline` 属性相关的内联信息。 +* 在[属性声明](../chapter3/07_Attributes.md#Ideclaration-attributes)章节中添加了 `requires_stored_property_inits` 和 `warn_unqualified_access` 属性相关的信息。 +* 在[可选编译块](../chapter3/05_Statements.md#Conditional-Compilation-Block)章节新增了如何根据 Swift 编译器版本对代码进行对应编译处理的内容。 +* 在[字面量语法](../chapter3/04_Expressions.md#literal-expression)章节补充了 `#dsohandle` 相关内容。 ### 2018-03-29 * 更新至 Swift 4.1。 -* 在[等价运算符](https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html#ID45)章节添加了等价运算符的合成实现信息。 -* 在[声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html)一章的[申明拓展](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID378)部分和[协议](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html)一章的[有条件地遵循协议](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID574)部分添加了协议的有条件遵循相关内容。 -* 在[关联类型约束中使用协议](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID575)章节中添加了递归协议约束的内容。 -* 在[条件编译块](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID539)章节中添加了 `canImport()` 和 `targetEnvironment()` 平台条件相关内容。 +* 在[等价运算符](../chapter2/26_Advanced_Operators.md#equivalence-operators)章节添加了等价运算符的合成实现信息。 +* 在[声明](../chapter3/06_Declarations.md)一章的[申明拓展](../chapter3/06_Declarations.md#extension-declaration)部分和[协议](../chapter2/21_Protocols.md)一章的[有条件地遵循协议](../chapter2/21_Protocols.md#Conditionally-Conforming-to-a-Protocol)部分添加了协议的有条件遵循相关内容。 +* 在[关联类型约束中使用协议](../chapter2/22_Generics.md##using-a-protocol-in-its-associated-type’s-constraints)章节中添加了递归协议约束的内容。 +* 在[条件编译块](../chapter3/05_Statements.md#Conditional-Compilation-Block)章节中添加了 `canImport()` 和 `targetEnvironment()` 平台条件相关内容。 ### 2017-12-04 * 更新至 Swift 4.0.3。 -* 更新[Key-Path](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID563)表达式章节,现在 key path 支持下标子路径。 +* 更新[Key-Path](../chapter3/04_Expressions.md#key-path-expression)表达式章节,现在 key path 支持下标子路径。 ### 2017-09-19 * 更新至 Swift 4.0。 -* 在[内存安全](https://docs.swift.org/swift-book/LanguageGuide/MemorySafety.html)章节补充了内存互斥访问相关的内容。 -* 添加了[带有泛型 Where 子句联类型](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID557)章节,现在可以使用泛型 `where` 子句约束关联类型。 -* 在[字符串和字符](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html)的[字面量](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html#ID286)一节以及[词法结构](https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html)的[字符串字面量](https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID417)一节中新增了多行字符串字面量相关内容。 -* 更新了[声明属性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)中 `objc` 属性的讨论,现在该属性是在更少的位置推断出来的。 -* 添加了[范型下标](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID558)章节,现在下标也支持范型特性了。 -* 更新了[协议](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html)一章中[协议组合](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID282)部分以及[类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html)一章中[协议组合类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID454)部分的讨论,现在协议组合类型支持进行父类约束了。 -* 更新了[拓展声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID378)中关于协议的讨论,现在它们不支持 `final` 特性了。 -* 在[断言和前置条件](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID335)部分增加了部分前置条件和致命错误的内容。 +* 在[内存安全](../chapter2/24_MemorySafety.md)章节补充了内存互斥访问相关的内容。 +* 添加了[带有泛型 Where 子句联类型](../chapter2/22_Generics.md#associated-types-with-a-generic-where-clause)章节,现在可以使用泛型 `where` 子句约束关联类型。 +* 在[字符串和字符](../chapter2/03_Strings_And_Characters.md)的[字面量](../chapter2/03_Strings_And_Characters.md#string-literals)一节以及[词法结构](../chapter3/02_Lexical_Structure.md)的[字符串字面量](../chapter3/02_Lexical_Structure.md#string-literal)一节中新增了多行字符串字面量相关内容。 +* 更新了[声明属性](../chapter3/07_Attributes.md#Ideclaration-attributes)中 `objc` 属性的讨论,现在该属性是在更少的位置推断出来的。 +* 添加了[范型下标](../chapter2/22_Generics.md#generic-subscripts)章节,现在下标也支持范型特性了。 +* 更新了[协议](../chapter2/21_Protocols.md)一章中[协议组合](../chapter2/21_Protocols.md#protocol-composition)部分以及[类型](../chapter3/03_Types.md)一章中[协议组合类型](../chapter3/03_Types.md#protocol-composition)部分的讨论,现在协议组合类型支持进行父类约束了。 +* 更新了[拓展声明](../chapter3/06_Declarations.md#extension-declaration)中关于协议的讨论,现在它们不支持 `final` 特性了。 +* 在[断言和前置条件](../chapter2/01_TheBasics.md#assertions-and-preconditions)部分增加了部分前置条件和致命错误的内容。 ### 2017-03-27 * 更新至 Swift 3.1。 -* 增加[范型 Where 子句扩展](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID553),其中包含需要的扩展信息。 -* 增加了一个区间迭代的例子到[For-In 循环](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID121)。 -* 增加一个可失败数值转换的例子[到可失败构造器](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID224)章节。 -* 增加关于使用 Swift 语言版本的 `available` 特性内容到[声明特性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)章节。 -* 更新了[函数类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID449)章节中的描述,注意在写函数类型时不允许使用参数标签。 -* 更新了[条件编译块](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID539)章节中的 Swift 语言版本号的描述,现在可以使用可选的补丁版本号。 -* 更新了[函数类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID449)>章节的描述,现在 Swift 区分了采用多参数的函数和采用元组类型的单个参数的函数。 -* 从[表达式](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html)章节中删除了动态表达式的部分,现在 `type(of:)` 是 Swift 标准库函数。 +* 增加[范型 Where 子句扩展](../chapter2/22_Generics.md#extensions-with-a-generic-where-clause),其中包含需要的扩展信息。 +* 增加了一个区间迭代的例子到[For-In 循环](../chapter2/05_Control_Flow.md#for-in-loops)。 +* 增加一个可失败数值转换的例子[到可失败构造器](../chapter2/14_Initialization.md#failable-initializers)章节。 +* 增加关于使用 Swift 语言版本的 `available` 特性内容到[声明特性](../chapter3/07_Attributes.md#Ideclaration-attributes)章节。 +* 更新了[函数类型](../chapter3/03_Types.md#function_type)章节中的描述,注意在写函数类型时不允许使用参数标签。 +* 更新了[条件编译块](../chapter3/05_Statements.md#Conditional-Compilation-Block)章节中的 Swift 语言版本号的描述,现在可以使用可选的补丁版本号。 +* 更新了[函数类型](../chapter3/03_Types.md#function_type)>章节的描述,现在 Swift 区分了采用多参数的函数和采用元组类型的单个参数的函数。 +* 从[表达式](../chapter3/04_Expressions.md)章节中删除了动态表达式的部分,现在 `type(of:)` 是 Swift 标准库函数。 ### 2016-10-27 * 更新至 Swift 3.0.1。 -* 更新[自动引用计数](https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html)章节中关于 weak 和 unowned 引用的讨论。 -* 增加[声明标识符](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID381)章节中关于新的标识符 `unowned`,`unowend(safe)` 和 `unowned(unsafe)` 的描述。 -* 增加[Any 和 AnyObject 的类型转换](https://docs.swift.org/swift-book/LanguageGuide/TypeCasting.html#ID342)一节中关于使用类型 `Any` 作为可选值的描述。 -* 更新[表达式](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html)章节,把括号表达式和元组表达式的描述分开。 +* 更新[自动引用计数](../chapter2/23_Automatic_Reference_Counting.md)章节中关于 weak 和 unowned 引用的讨论。 +* 增加[声明标识符](../chapter3/06_Declarations.md#declaration-modifiers)章节中关于新的标识符 `unowned`,`unowend(safe)` 和 `unowned(unsafe)` 的描述。 +* 增加[Any 和 AnyObject 的类型转换](../chapter2/18_Type_Casting.md#type-casting-for-any-and-anyobject)一节中关于使用类型 `Any` 作为可选值的描述。 +* 更新[表达式](../chapter3/04_Expressions.md)章节,把括号表达式和元组表达式的描述分开。 ### 2016-09-13 * 更新至 Swift 3.0。 -* 更新[函数](https://docs.swift.org/swift-book/LanguageGuide/Functions.html)一章和[函数声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID362)部分关于函数的讨论,在一节中,标明所有函数参数默认都有函数标签。 -* 更新[高级操作符](https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html)章节中关于操作符的讨论,现在你可以作为类型函数来实现,替代之前的全局函数实现方式。 -* 增加[访问控制](https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html)章节中关于对新的访问级别描述符 `open` 和 `fileprivate` 的信息。 -* 更新[函数声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID362)中关于 `inout` 的讨论,注意它现在出现在参数类型的前面,而不是在参数名称的前面。 -* 更新[逃逸闭包](https://docs.swift.org/swift-book/LanguageGuide/Closures.html#ID546)和[自动闭包](https://docs.swift.org/swift-book/LanguageGuide/Closures.html#ID543)还有[属性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html)章节中关于 `@noescape` 和 `@autoclosure` 的讨论,现在他们是类型属性,而不是定义属性。 -* 增加[高级操作符](https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html)一章中[自定义中缀操作符的优先级](https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html#ID47)部分和[定义](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html)一章中[优先级组声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID550)部分中关于操作符优先级组的信息。 +* 更新[函数](../chapter2/06_Functions.md)一章和[函数声明](../chapter3/06_Declarations.md#function-declaration)部分关于函数的讨论,在一节中,标明所有函数参数默认都有函数标签。 +* 更新[高级操作符](../chapter2/26_Advanced_Operators.md)章节中关于操作符的讨论,现在你可以作为类型函数来实现,替代之前的全局函数实现方式。 +* 增加[访问控制](../chapter2/25_Access_Control.md)章节中关于对新的访问级别描述符 `open` 和 `fileprivate` 的信息。 +* 更新[函数声明](../chapter3/06_Declarations.md#function-declaration)中关于 `inout` 的讨论,注意它现在出现在参数类型的前面,而不是在参数名称的前面。 +* 更新[逃逸闭包](../chapter2/07_Closures.md#escaping-closures)和[自动闭包](../chapter2/07_Closures.md#autoclosures)还有[属性](../chapter3/07_Attributes.md)章节中关于 `@noescape` 和 `@autoclosure` 的讨论,现在他们是类型属性,而不是定义属性。 +* 增加[高级操作符](../chapter2/26_Advanced_Operators.md)一章中[自定义中缀操作符的优先级](./chapter2/26_Advanced_Operators.md#precedence-and-associativity-for-custom-infix-operators)部分和[定义](../chapter3/06_Declarations.md)一章中[优先级组声明](../chapter3/06_Declarations.md#precedence-group-declaration-modifiers)部分中关于操作符优先级组的信息。 * 更新一些讨论:使用 macOS 替换掉 OS X, Error 替换掉 ErrorProtocol,和更新一些协议名称,比如使用 ExpressibleByStringLiteral 替换掉 StringLiteralConvertible。 -* 更新[泛型](https://docs.swift.org/swift-book/LanguageGuide/Generics.html)和[泛型形参和实参](https://docs.swift.org/swift-book/ReferenceManual/GenericParametersAndArguments.html)章节中[泛型 Where 语句](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID192)部分,现在泛型的 where 语句写在一个声明的最后。 -* 更新[逃逸闭包](https://docs.swift.org/swift-book/LanguageGuide/Closures.html#ID546)一节,现在闭包默认为非逃逸的(noescaping)。 -* 更新[基础部分](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html)一章中[可选绑定](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID333)部分和[语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html)一章中[While 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID432)部分,现在 if,`while` 和 `guard` 语句使用逗号分隔条件列表,不需要使用 `where` 语句。 -* 在[控制流](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html)一章的[Switch](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID129)和[语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html)一章的[Switch 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID436)部分中增加关于 switch cases 可以使用多模式的信息。 -* 更新[函数类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID449)一节,现在函数参数标签不包含在函数类型中。 -* 更新[协议](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html)一章[协议组合](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID282)部分和[类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html)一章[协议组合类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID454)部分关于使用新的 Protocol1 & Protocol2 语法的信息。 +* 更新[泛型](../chapter2/22_Generics.md)和[泛型形参和实参](../chapter3/09_Generic_Parameters_And_Arguments.md)章节中[泛型 Where 语句](../chapter2/22_Generics.md#extensions-with-a-generic-where-clause)部分,现在泛型的 where 语句写在一个声明的最后。 +* 更新[逃逸闭包](../chapter2/07_Closures.md#escaping-closures)一节,现在闭包默认为非逃逸的(noescaping)。 +* 更新[基础部分](../chapter2/01_TheBasics.md)一章中[可选绑定](../chapter2/01_TheBasics.md#optional-binding)部分和[语句](../chapter3/05_Statements.md)一章中[While 语句](../chapter3/05_Statements.md#while-statement)部分,现在 if,`while` 和 `guard` 语句使用逗号分隔条件列表,不需要使用 `where` 语句。 +* 在[控制流](../chapter2/05_Control_Flow.md)一章的[Switch](../chapter2/05_Control_Flow.md#switch)和[语句](../chapter3/05_Statements.md)一章的[Switch 语句](../chapter3/05_Statements.md#switch-statement)部分中增加关于 switch cases 可以使用多模式的信息。 +* 更新[函数类型](../chapter3/03_Types.md#function_type)一节,现在函数参数标签不包含在函数类型中。 +* 更新[协议](../chapter2/21_Protocols.md)一章[协议组合](../chapter2/21_Protocols.md#protocol-composition)部分和[类型](../chapter3/03_Types.md)一章[协议组合类型](../chapter3/03_Types.md#protocol-composition)部分关于使用新的 Protocol1 & Protocol2 语法的信息。 * 更新动态类型表达式一节使用新的 `type(of:)` 表达式的信息。 -* 更新[行控制表达式](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID540)一节使用 `#sourceLocation(file:line:)` 表达式的信息。 -* 更新[永不返回函数](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID551)一节使用 新的 `Never` 类型的信息。 -* 增加[字面量表达式](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID390)一节关于 `playground` 字面量的信息。 -* 更新[In-Out 参数](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID545)一节,标明只有非逃逸闭包能捕获 `in-out` 参数。 -* 更新[默认参数值](https://docs.swift.org/swift-book/LanguageGuide/Functions.html#ID169)一节,现在默认参数不能在调用时候重新排序。 -* 更新[属性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html)章节中关于属性参数使用分号的说明。 -* 增加[重新抛出函数和方法](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID531)一节中关于在 catch 代码块中抛出错误的重新抛出函数的信息。 -* 增加[Selector 表达式](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID547)一节中关于访问 Objective-C 中 Selector 的 getter 和 setter 的信息。 -* 增加[类型别名声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID361)一节,标明函数类型作为参数类型必须使用括号包裹。 -* 增加[函数类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID449)一节中关于泛型类型别名和在协议内使用类型别名的信息。 -* 更新[属性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html)章节,标明 `@IBAction`,`@IBOutlet` 和 `@NSManaged` 隐式含有 `@objc` 属性。 -* 增加[声明属性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)一节中关于 `@GKInspectable` 的信息。 -* 更新[可选协议要求](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID284)一节中关于只能在与 `Objective-C` 交互的代码中才能使用可选协议要求的信息。 -* 删除[函数声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID362)一节中关于显式使用 `let` 关键字作为函数参数的信息。 -* 删除[语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html)一节中关于 `Boolean` 协议的信息, 现在这个协议已经被 Swift 标准库删除。 -* 更正[声明属性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)一节中关于 `@NSApplicationMain` 协议的信息。 +* 更新[行控制表达式](../chapter3/05_Statements.md#line-control-statement)一节使用 `#sourceLocation(file:line:)` 表达式的信息。 +* 更新[永不返回函数](../chapter3/06_Declarations.md#functions-that-never-return)一节使用 新的 `Never` 类型的信息。 +* 增加[字面量表达式](../chapter3/04_Expressions.md#literal-expression)一节关于 `playground` 字面量的信息。 +* 更新[In-Out 参数](../chapter3/06_Declarations.md#in-out_parameters)一节,标明只有非逃逸闭包能捕获 `in-out` 参数。 +* 更新[默认参数值](../chapter2/06_Functions.md#default-parameter-values)一节,现在默认参数不能在调用时候重新排序。 +* 更新[属性](../chapter3/07_Attributes.md)章节中关于属性参数使用分号的说明。 +* 增加[重新抛出函数和方法](../chapter3/06_Declarations.md#rethrowing-functions-and-methods)一节中关于在 catch 代码块中抛出错误的重新抛出函数的信息。 +* 增加[Selector 表达式](../chapter3/04_Expressions.md#selector-expression7)一节中关于访问 Objective-C 中 Selector 的 getter 和 setter 的信息。 +* 增加[类型别名声明](../chapter3/06_Declarations.md#type-alias-declaration)一节,标明函数类型作为参数类型必须使用括号包裹。 +* 增加[函数类型](../chapter3/03_Types.md#function_type)一节中关于泛型类型别名和在协议内使用类型别名的信息。 +* 更新[属性](../chapter3/07_Attributes.md)章节,标明 `@IBAction`,`@IBOutlet` 和 `@NSManaged` 隐式含有 `@objc` 属性。 +* 增加[声明属性](../chapter3/07_Attributes.md#Ideclaration-attributes)一节中关于 `@GKInspectable` 的信息。 +* 更新[可选协议要求](../chapter2/21_Protocols.md#optional-protocol-requirements)一节中关于只能在与 `Objective-C` 交互的代码中才能使用可选协议要求的信息。 +* 删除[函数声明](../chapter3/06_Declarations.md#function-declaration)一节中关于显式使用 `let` 关键字作为函数参数的信息。 +* 删除[语句](../chapter3/05_Statements.md)一节中关于 `Boolean` 协议的信息, 现在这个协议已经被 Swift 标准库删除。 +* 更正[声明属性](../chapter3/07_Attributes.md#Ideclaration-attributes)一节中关于 `@NSApplicationMain` 协议的信息。 ### 2016-03-21 * 更新至 Swift 2.2。 -* 增加了[编译配置语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID539)一节中关于如何根据 Swift 版本进行条件编译。 -* 增加了[显示成员表达式](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID400)一节中关于如何区分只有参数名不同的方法和构造器的信息。 -* 增加了[选择器表达式](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID547)一节中针对 Objective-C 选择器的 `#selector` 语法。 -* 更新了[关联类型](https://docs.swift.org/swift-book/LanguageGuide/Generics.html#ID189)和[协议关联类型声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID374)中的关于使用 `associatedtype` 关键词修饰关联类型的讨论。 -* 更新了[可失败构造器](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID224)一节中关于当构造器在实例完全初始化之前返回 `nil` 的相关信息。 -* 增加了[比较运算符](https://docs.swift.org/swift-book/LanguageGuide/BasicOperators.html#ID70)一节中关于比较元组的信息。 -* 增加了[关键字和标点符号](https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID413)一节中关于使用关键字作为外部参数名的信息。 -* 增加了[声明特性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)一节中关于 `@objc` 特性的讨论,并指出枚举和枚举用例。 -* 增加了[操作符](https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID418)一节中对于自定义运算符的讨论包含了 `.`。 -* 增加了[重新抛出错误的函数和方法](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID531)一节中关于重新抛出错误函数不能直接抛出错误的笔记。 -* 增加了[属性观察器](https://docs.swift.org/swift-book/LanguageGuide/Properties.html#ID262)一节中关于当作为 in-out 参数传递属性时,属性观察器的调用行为。 -* 增加了[Swift 初见](https://docs.swift.org/swift-book/GuidedTour/GuidedTour.html)一节中关于错误处理的内容。 -* 更新了[弱引用](https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html#ID53)一节中的图片用以更清楚的展示重新分配过程。 +* 增加了[编译配置语句](../chapter3/05_Statements.md#Conditional-Compilation-Block)一节中关于如何根据 Swift 版本进行条件编译。 +* 增加了[显示成员表达式](../chapter3/04_Expressions.md#explicit-member-expression)一节中关于如何区分只有参数名不同的方法和构造器的信息。 +* 增加了[选择器表达式](../chapter3/04_Expressions.md#selector-expression7)一节中针对 Objective-C 选择器的 `#selector` 语法。 +* 更新了[关联类型](../chapter2/22_Generics.md#associated-types)和[协议关联类型声明](../chapter3/06_Declarations.md#protocol_associated_type_declaration)中的关于使用 `associatedtype` 关键词修饰关联类型的讨论。 +* 更新了[可失败构造器](../chapter2/14_Initialization.md#failable-initializers)一节中关于当构造器在实例完全初始化之前返回 `nil` 的相关信息。 +* 增加了[比较运算符](../chapter2/BasicOperators.md#comparison-operators)一节中关于比较元组的信息。 +* 增加了[关键字和标点符号](../chapter3/02_Lexical_Structure.md#keywords-and-punctuation)一节中关于使用关键字作为外部参数名的信息。 +* 增加了[声明特性](../chapter3/07_Attributes.md#Ideclaration-attributes)一节中关于 `@objc` 特性的讨论,并指出枚举和枚举用例。 +* 增加了[操作符](../chapter3/02_Lexical_Structure.md#operator)一节中对于自定义运算符的讨论包含了 `.`。 +* 增加了[重新抛出错误的函数和方法](../chapter3/06_Declarations.md#rethrowing-functions-and-methods)一节中关于重新抛出错误函数不能直接抛出错误的笔记。 +* 增加了[属性观察器](../chapter2/10_Properties.md#property-observers)一节中关于当作为 in-out 参数传递属性时,属性观察器的调用行为。 +* 增加了[Swift 初见](./03_a_swift_tour.md)一节中关于错误处理的内容。 +* 更新了[弱引用](../chapter2/23_Automatic_Reference_Counting.md#weak-references)一节中的图片用以更清楚的展示重新分配过程。 * 删除了 C 语言风格的 `for` 循环,`++` 前缀和后缀运算符,以及 `--` 前缀和后缀运算符。 * 删除了对变量函数参数和柯里化函数的特殊语法的讨论。 ### 2015-10-20 * 更新至 Swift 2.1。 -* 更新了[字符串插值]和[字符串字面量]小节,现在字符串插值可包含字符串字面量。 -* 增加了在[非逃逸闭包]一节中关于 `@noescape` 属性的相关内容。 -* 更新了[声明特性]和[编译配置语句]小节中与 tvOS 相关的信息。 -* 增加了[In-Out 参数]小节中与 in-out 参数行为相关的信息。 -* 增加了在[捕获列表]一节中关于指定闭包捕获列表被捕获时捕获值的相关内容。 -* 更新了使用[可选链式调用访问属性]一节,阐明了如何通过可选链式调用进行赋值。 -* 改进了[自动闭包]一节中对自闭包的讨论。 -* 在[Swift 初见](https://docs.swift.org/swift-book/GuidedTour/GuidedTour.html)一节中更新了一个使用 `??` 操作符的例子。 +* 更新了[字符串插值](../chapter2/03_Strings_And_Characters.md#string-interpolation)和[字符串字面量](../chapter3/02_Lexical_Structure.md#string-literal)小节,现在字符串插值可包含字符串字面量。 +* 增加了在[逃逸闭包](../chapter2/07_Closures.md#escaping-closures)一节中关于 `@noescape` 属性的相关内容。 +* 更新了[声明特性]((../chapter3/07_Attributes.md#Ideclaration-attributes)和[编译配置语句](../chapter3/05_Statements.md#Conditional-Compilation-Block)小节中与 tvOS 相关的信息。 +* 增加了[In-Out 参数](../chapter3/06_Declarations.md#in-out_parameters)小节中与 in-out 参数行为相关的信息。 +* 增加了在[捕获列表](../chapter3/04_Expressions.md#capture-lists)一节中关于指定闭包捕获列表被捕获时捕获值的相关内容。 +* 更新了使用[可选链式调用访问属性](../chapter2/16_Optional_Chaining.md#accessing-properties-through-optional-chaining)一节,阐明了如何通过可选链式调用进行赋值。 +* 改进了[自动闭包](../chapter2/07_Closures.md#autoclosures)一节中对自闭包的讨论。 +* 在[Swift 初见](./03_a_swift_tour.md)一节中更新了一个使用 `??` 操作符的例子。 ### 2015-09-16 * 更新至 Swift 2.0。 -* 在[错误处理](https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html)一章中增加了关于错误处理的相关内容,包括[Do 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID533)、[Throw 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID518)、[Defer 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID532)以及[try 运算符](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID516)。 -* 更新了[错误表示和抛出](https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html#ID509)一节,现在所有类型都可以遵循 `ErrorType` 协议了。 -* 在[将错误装换成可选值](https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html#ID542)一节增加了 `try` 关键字相关信息。 -* 在[枚举](https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html)一章的[递归枚举](https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html#ID536)部分以及以及[声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html)一章的[任意类型用例的枚举](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID365)一节中新增了递归枚举相关信息。 -* 在[控制流](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html)一章的[API 可用性检查](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID523)一节和[语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html)一章的[可用性条件一节](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID522)中增加了关于 API 可用性检查相关的内容。 -* 在[控制流](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html)一章的[尽早退出](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID525)一节和[语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html)一章的[Guard 语句]部分新增了与 `guard` 语句相关的内容。 -* 在[协议](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html)一章中[协议扩展](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID521)一节中新增了关于协议扩展的内容。 -* 在[访问控制](https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html)一章的[单元测试 target 的访问级别](https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html#ID519)一节中新增了关于单元测试访问控制相关的内容。 -* 在[模式](https://docs.swift.org/swift-book/ReferenceManual/Patterns.html)一章的[可选模式](https://docs.swift.org/swift-book/ReferenceManual/Patterns.html#ID520)一节中增加了可选模式相关内容。 -* 更新了[Repeat-While](https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID126)一节中关于 `repeat-while` 循环相关的内容。 -* 更新了[字符串和字符](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html)一章,现在 `String` 类型在 Swift 标准库中不再遵循 `CollectionType` 协议。 -* 在[常量与变量打印](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID314)一节中增加了新 Swift 标准库中关于 `print(_:separator:terminator)` 相关内容。 -* 在[枚举](https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html)一章中的[原始值的隐式赋值](https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html#ID535)一节和[声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html)一章的[包含原始值类型的枚举](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID366)一节中增加了关于包含 `String` 原始值的枚举用例的行为相关内容。 -* 在[自动闭包](https://docs.swift.org/swift-book/LanguageGuide/Closures.html#ID543)一节中增加了关于 `@autoclosure` 特性的相关信息,包括它的 `@autoclosure(escaping)` 形式。 -* 更新了[声明特性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)一节中关于 `@avaliable` 和 `warn_unused_result` 特性的相关内容。 -* 更新了[类型特性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID350)一节中关于 `@convention` 特性的相关信息。 -* 在[可选绑定](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID333)一节中增加了关于使用 `where` 子句进行多可选绑定的相关内容。 -* 在[字符串字面量](https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID417)一节中新增了关于在编译时使用 `+` 运算符拼接字符串字面量的相关信息。 -* 在[元类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID455)一节中新增了关于元类型值的比较和使用它们通过构造器表达式构造实例相关内容。 -* 在[断言调试](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID336)一节中新增了关于用户定义断言何时会失效的注释内容。 -* 更新了[声明特性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)一节中对 `@NSManaged` 特性的讨论,现在这个特性可以被应用到一个确定实例方法。 -* 更新了[可变参数](https://docs.swift.org/swift-book/LanguageGuide/Functions.html#ID171)一节,现在可变参数可以声明在函数参数列表的任意位置中。 -* 在[重写可失败构造器](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID229)一节中新增了关于非可失败构造器相当于一个可失败构造器通过父类构造器的结果进行强制拆包的相关内容。 -* 在[任意类型用例的枚举](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID365)一节中增加了关于枚举用例作为函数的内容。 -* 在[构造器表达式](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID399)一节中新增关于显式引用一个构造器相关内容。 -* 在[编译控制语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID538)一节中新增了关于编译信息以及行控制语句相关信息。 -* 在[元类型](https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID455)一节中新增了关于如何从元类型值中构造类实例相关内容。 -* 在[弱引用](https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html#ID53)一节中关于弱引用作为缓存所存在的不足的注释说明。 -* 更新了[类型特性](https://docs.swift.org/swift-book/LanguageGuide/Properties.html#ID264)一节,提到了存储型特性其实是懒加载。 -* 更新了[捕获类型](https://docs.swift.org/swift-book/LanguageGuide/Closures.html#ID103)一节,阐明了变量和常量在闭包中如何被捕获。 -* 更新了[声明特性](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)一节,用以描述何时在类中使用 `@objc` 关键字。 -* 在[错误处理](https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html#ID512)一节中增加了关于执行 `throw` 语句的性能的讨论。在[Do 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID533)一节的 do 语句部分也增加了类似内容。 -* 更新了[类型特性](https://docs.swift.org/swift-book/LanguageGuide/Properties.html#ID264)一节中关于类、结构体和枚举的存储型和计算型特性相关的内容。 -* 更新了[Break 语句](https://docs.swift.org/swift-book/ReferenceManual/Statements.html#ID441)一节中关于带标签的 break 语句相关内容。 -* 在[属性观察器](https://docs.swift.org/swift-book/LanguageGuide/Properties.html#ID262)一节中更新了一处注释,用来明确 `willSet` 和 `didSet` 观察器的行为。 -* 在[访问级别](https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html#ID5)一节中新增了关于 `private` 作用域的相关信息说明。 -* 在[弱引用](https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html#ID53)一节中增加了关于弱应用在垃圾回收系统和 ARC 之间的区别的说明。 -* 更新了[字符串字面量中特殊字符](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html#ID295)一节中对 Unicode 标量更精确的定义。 +* 在[错误处理](../chapter2/17_Error_Handling.md)一章中增加了关于错误处理的相关内容,包括[Do 语句](../chapter3/05_Statements.md#do-statement)、[Throw 语句](../chapter3/05_Statements.md#throw-statement)、[Defer 语句](../chapter3/05_Statements.md##defer-statements)以及[try 运算符](../chapter3/04_Expressions.md#try-operator)。 +* 更新了[错误表示和抛出](../chapter2/17_Error_Handling.md#representing-and-throwing-errors)一节,现在所有类型都可以遵循 `ErrorType` 协议了。 +* 在[将错误装换成可选值](../chapter2/17_Error_Handling.md#converting_errors_to_optional_values)一节增加了 `try` 关键字相关信息。 +* 在[枚举](../chapter2/08_Enumerations.md)一章的[递归枚举](../chapter2/08_Enumerations.md#recursive-enumerations)部分以及以及[声明](../chapter3/06_Declarations.md)一章的[任意类型用例的枚举](../chapter3/06_Declarations.md#enumerations-with-cases-of-any-type)一节中新增了递归枚举相关信息。 +* 在[控制流](../chapter2/05_Control_Flow.md)一章的[API 可用性检查](../chapter2/05_Control_Flow.md#checking-api-availability)一节和[语句](../chapter3/05_Statements.md)一章的[可用性条件一节](../chapter3/05_Statements.md#availability-condition)中增加了关于 API 可用性检查相关的内容。 +* 在[控制流](../chapter2/05_Control_Flow.md)一章的[尽早退出](../chapter2/05_Control_Flow.md#early-exit)一节和[语句](../chapter3/05_Statements.md)一章的[Guard 语句](../chapter3/05_Statements.md#guard-statement)部分新增了与 `guard` 语句相关的内容。 +* 在[协议](../chapter2/21_Protocols.md)一章中[协议扩展](../chapter2/21_Protocols.md#protocol-extensions)一节中新增了关于协议扩展的内容。 +* 在[访问控制](../chapter2/25_Access_Control.md)一章的[单元测试 target 的访问级别](../chapter2/25_Access_Control.md#access-levels-for-unit-test-targets)一节中新增了关于单元测试访问控制相关的内容。 +* 在[模式](../chapter3/08_Patterns.md)一章的[可选模式](../chapter3/08_Patterns.md#optional-pattern)一节中增加了可选模式相关内容。 +* 更新了[Repeat-While](../chapter2/05_Control_Flow.md#repeat-while)一节中关于 `repeat-while` 循环相关的内容。 +* 更新了[字符串和字符](../chapter2/03_Strings_And_Characters.md)一章,现在 `String` 类型在 Swift 标准库中不再遵循 `CollectionType` 协议。 +* 在[常量与变量打印](../chapter2/01_TheBasics.md#printing)一节中增加了新 Swift 标准库中关于 `print(_:separator:terminator)` 相关内容。 +* 在[枚举](../chapter2/08_Enumerations.md)一章中的[原始值的隐式赋值](../chapter2/08_Enumerations.md#implicitly-assigned-raw-values)一节和[声明](../chapter3/06_Declarations.md)一章的[包含原始值类型的枚举](../chapter3/06_Declarations.md#enumerations-with-cases-of-a-raw-value-type)一节中增加了关于包含 `String` 原始值的枚举用例的行为相关内容。 +* 在[自动闭包](../chapter2/07_Closures.md#autoclosures)一节中增加了关于 `@autoclosure` 特性的相关信息,包括它的 `@autoclosure(escaping)` 形式。 +* 更新了[声明特性](../chapter3/07_Attributes.md#Ideclaration-attributes)一节中关于 `@avaliable` 和 `warn_unused_result` 特性的相关内容。 +* 更新了[类型特性](../chapter3/07_Attributes.md#type-attributes)一节中关于 `@convention` 特性的相关信息。 +* 在[可选绑定](../chapter2/01_TheBasics.md#optional-binding)一节中增加了关于使用 `where` 子句进行多可选绑定的相关内容。 +* 在[字符串字面量](../chapter3/02_Lexical_Structure.md#string-literal)一节中新增了关于在编译时使用 `+` 运算符拼接字符串字面量的相关信息。 +* 在[元类型](../chapter3/03_Types.md#metatype-type)一节中新增了关于元类型值的比较和使用它们通过构造器表达式构造实例相关内容。 +* 在[断言调试](../chapter2/01_TheBasics.md#debugging-with-assertions)一节中新增了关于用户定义断言何时会失效的注释内容。 +* 更新了[声明特性](../chapter3/07_Attributes.md#Ideclaration-attributes)一节中对 `@NSManaged` 特性的讨论,现在这个特性可以被应用到一个确定实例方法。 +* 更新了[可变参数](../chapter2/06_Functions.md#variadic-parameters)一节,现在可变参数可以声明在函数参数列表的任意位置中。 +* 在[重写可失败构造器](../chapter2/14_Initialization.md#overriding-a-failable-initializer)一节中新增了关于非可失败构造器相当于一个可失败构造器通过父类构造器的结果进行强制拆包的相关内容。 +* 在[任意类型用例的枚举](../chapter3/06_Declarations.md#enumerations-with-cases-of-any-type)一节中增加了关于枚举用例作为函数的内容。 +* 在[构造器表达式](../chapter3/04_Expressions.md#initializer-expression)一节中新增关于显式引用一个构造器相关内容。 +* 在[编译控制语句](../chapter3/05_Statements.md#compiler-control-statements)一节中新增了关于编译信息以及行控制语句相关信息。 +* 在[元类型](../chapter3/03_Types.md#metatype-type)一节中新增了关于如何从元类型值中构造类实例相关内容。 +* 在[弱引用](../chapter2/23_Automatic_Reference_Counting.md#weak-references)一节中关于弱引用作为缓存所存在的不足的注释说明。 +* 更新了[类型特性](../chapter2/10_Properties.md#type-properties)一节,提到了存储型特性其实是懒加载。 +* 更新了[捕获类型](../chapter2/07_Closures.md#capturing_values)一节,阐明了变量和常量在闭包中如何被捕获。 +* 更新了[声明特性](../chapter3/07_Attributes.md#Ideclaration-attributes)一节,用以描述何时在类中使用 `@objc` 关键字。 +* 在[错误处理](../chapter2/17_Error_Handling.md#handling-errors)一节中增加了关于执行 `throw` 语句的性能的讨论。在[Do 语句](../chapter3/05_Statements.md#do-statement)一节的 do 语句部分也增加了类似内容。 +* 更新了[类型特性](../chapter2/10_Properties.md#type-properties)一节中关于类、结构体和枚举的存储型和计算型特性相关的内容。 +* 更新了[Break 语句](../chapter3/05_Statements.md#break_statement)一节中关于带标签的 break 语句相关内容。 +* 在[属性观察器](../chapter2/10_Properties.md#property-observers)一节中更新了一处注释,用来明确 `willSet` 和 `didSet` 观察器的行为。 +* 在[访问级别](../chapter2/25_Access_Control.md#access-levels)一节中新增了关于 `private` 作用域的相关信息说明。 +* 在[弱引用](../chapter2/23_Automatic_Reference_Counting.md#weak-references)一节中增加了关于弱应用在垃圾回收系统和 ARC 之间的区别的说明。 +* 更新了[字符串字面量中特殊字符](../chapter2/03_Strings_And_Characters.md#special-characters-in-string-literals)一节中对 Unicode 标量更精确的定义。 ### 2015-4-8 * 更新至 Swift 1.2。 -* Swift 现在自身提供了一个 `Set` 集合类型,更多信息请看[Sets](https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html#ID484)。 -* `@autoclosure` 现在是一个参数声明的属性,而不是参数类型的属性。这里还有一个新的参数声明属性 `@noescape`。更多信息,请看[属性声明](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)。 -* 对于类型属性和方法现在可以使用 `static` 关键字作为声明描述符,更多信息,请看[类型变量属性](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID483)。 -* Swift 现在包含一个 `as?` 和 `as!` 的向下可失败类型转换运算符。更多信息,请看[协议遵循性检查](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID283)。 -* 增加了一个关于[字符串索引](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html#ID534)的新指导章节。 -* 从[溢出运算符](https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html#ID37)一节中移除了溢出除运算符(&/)和求余溢出运算符(&%)。 -* 更新了常量和常量属性在声明和构造时的规则,更多信息,请看[常量声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID355)。 -* 更新了字符串字面量中 Unicode 标量集的定义,请看[字符串字面量中的特殊字符](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html#ID295)。 -* 更新了[区间运算符](https://docs.swift.org/swift-book/LanguageGuide/BasicOperators.html#ID73)章节来提示当半开区间运算符含有相同的起止索引时,其区间为空。 -* 更新了[闭包引用类型](https://docs.swift.org/swift-book/LanguageGuide/Closures.html#ID104)章节来阐明对于变量的捕获规则。 -* 更新了[值溢出](https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html#ID38)章节堆有符号整数和无符号整数的溢出行为进行了阐明。 -* 更新了[协议声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID369)章节对协议声明时的作用域和成员等内容进行了阐明。 -* 更新了[捕获列表](https://docs.swift.org/swift-book/LanguageGuide/AutomaticReferenceCounting.html#ID58)章节对于闭包捕获列表中的弱引用和无主引用的使用语法进行了阐明。 -* 更新了[运算符](https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID418)章节,明确指明一些例子来说明自定义运算符所支持的特性,如数学运算符,各种符号,Unicode 符号块等。 -* 在函数作用域中的常量声明时可以不被初始化,它必须在第一次使用前被赋值。更多的信息,请看[常量声明](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID355)。 -* 在构造器中,常量属性有且仅能被赋值一次。更多信息,请看[在构造过程中给常量属性赋值](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID212)。 -* 多个可选绑定现在可以在`if`语句后面以逗号分隔的赋值列表的方式出现,更多信息,请看[可选绑定](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID333)。 -* 一个[可选链表达式](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID405)必须出现在后缀表达式中。 +* Swift 现在自身提供了一个 `Set` 集合类型,更多信息请看[Sets](../chapter2/CollectionTypes.md#sets)。 +* `@autoclosure` 现在是一个参数声明的属性,而不是参数类型的属性。这里还有一个新的参数声明属性 `@noescape`。更多信息,请看[属性声明](../chapter3/07_Attributes.md#Ideclaration-attributes)。 +* 对于类型属性和方法现在可以使用 `static` 关键字作为声明描述符,更多信息,请看[类型变量属性](../chapter3/06_Declarations.md#type-variable-properties)。 +* Swift 现在包含一个 `as?` 和 `as!` 的向下可失败类型转换运算符。更多信息,请看[协议遵循性检查](../chapter2/21_Protocols.md#checking-for-protocol-conformance)。 +* 增加了一个关于[字符串索引](../chapter2/03_Strings_And_Characters.md#string-indices)的新指导章节。 +* 从[溢出运算符](../chapter2/26_Advanced_Operators.md#overflow-operators)一节中移除了溢出除运算符(&/)和求余溢出运算符(&%)。 +* 更新了常量和常量属性在声明和构造时的规则,更多信息,请看[常量声明](../chapter3/06_Declarations.md#constant-declaration)。 +* 更新了字符串字面量中 Unicode 标量集的定义,请看[字符串字面量中的特殊字符](../chapter2/03_Strings_And_Characters.md#special-characters-in-string-literals)。 +* 更新了[区间运算符](../chapter2/BasicOperators.md#range-operators)章节来提示当半开区间运算符含有相同的起止索引时,其区间为空。 +* 更新了[闭包引用类型](../chapter2/07_Closures.md#closures-are-reference-types)章节来阐明对于变量的捕获规则。 +* 更新了[值溢出](../chapter2/26_Advanced_Operators.md#value-overflow)章节堆有符号整数和无符号整数的溢出行为进行了阐明。 +* 更新了[协议声明](../chapter3/06_Declarations.md#protocol-declaration)章节对协议声明时的作用域和成员等内容进行了阐明。 +* 更新了[捕获列表](../chapter2/23_Automatic_Reference_Counting.md#defining-a-capture-list)章节对于闭包捕获列表中的弱引用和无主引用的使用语法进行了阐明。 +* 更新了[运算符](../chapter3/02_Lexical_Structure.md#operator)章节,明确指明一些例子来说明自定义运算符所支持的特性,如数学运算符,各种符号,Unicode 符号块等。 +* 在函数作用域中的常量声明时可以不被初始化,它必须在第一次使用前被赋值。更多的信息,请看[常量声明](../chapter3/06_Declarations.md#constant-declaration)。 +* 在构造器中,常量属性有且仅能被赋值一次。更多信息,请看[在构造过程中给常量属性赋值](../chapter2/14_Initialization.md{#assigning-constant-properties-during-initialization)。 +* 多个可选绑定现在可以在`if`语句后面以逗号分隔的赋值列表的方式出现,更多信息,请看[可选绑定](../chapter2/01_TheBasics.md#optional-binding)。 +* 一个[可选链表达式](../chapter3/04_Expressions.md#optional-chaining-expression)必须出现在后缀表达式中。 * 协议类型转换不再局限于 `@obj` 修饰的协议了。 -* 在运行时可能会失败的类型转换可以使用 `as?` 和 `as!` 运算符,而确保不会失败的类型转换现在使用 `as` 运算符。更多信息,请看[类型转换运算符](https://docs.swift.org/swift-book/ReferenceManual/Expressions.html#ID388)。 +* 在运行时可能会失败的类型转换可以使用 `as?` 和 `as!` 运算符,而确保不会失败的类型转换现在使用 `as` 运算符。更多信息,请看[类型转换运算符](../chapter3/04_Expressions.md#type-casting-operator)。 ### 2014-10-16 * 更新至 Swift 1.1。 -* 增加了关于[失败构造器](https://docs.swift.org/swift-book/LanguageGuide/Initialization.html#ID224)的完整章节。 -* 增加了协议中关于失败构造器要求的描述。 +* 增加了关于[失败构造器](../chapter2/14_Initialization.md#failable-initializers)的完整章节。 +* 增加了协议中关于[失败构造器要求](../chapter2/21_Protocols.md#failable-initializer-requirements)的描述。 * 常量和变量的 `Any` 类型现可以包含函数实例。更新了关于 `Any` 相关的示例来展示如何在 `switch` 语句中如何检查并转换到一个函数类型。 -* 带有原始值的枚举类型增加了一个 `rawValue` 属性替代 `toRaw()` 方法,同时使用了一个以 `rawValue` 为参数的失败构造器来替代 `fromRaw()` 方法。更多的信息,请看[原始值](https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html#ID149)和[带原始值的枚举类型](https://docs.swift.org/swift-book/ReferenceManual/Declarations.html#ID366)部分。 -* 自定义运算符现在可以包含 `?` 字符,更新[运算符](https://docs.swift.org/swift-book/ReferenceManual/LexicalStructure.html#ID418)章节描述了改进后的规则,并且从[自定义运算符](https://docs.swift.org/swift-book/LanguageGuide/AdvancedOperators.html#ID46)章节删除了重复的运算符有效字符集合。 +* 带有原始值的枚举类型增加了一个 `rawValue` 属性替代 `toRaw()` 方法,同时使用了一个以 `rawValue` 为参数的失败构造器来替代 `fromRaw()` 方法。更多的信息,请看[原始值](../chapter2/08_Enumerations.md#raw-values)和[带原始值的枚举类型](../chapter3/06_Declarations.md#enumerations-with-cases-of-a-raw-value-type)部分。 +* 添加了一个关于 [Failable Initializer](../chapter3/06_Declarations.md#failable-initializers) 的新参考章节,它可以触发初始化失败。 +* 自定义运算符现在可以包含 `?` 字符,更新[运算符](../chapter3/02_Lexical_Structure.md#operator)章节描述了改进后的规则,并且从[自定义运算符](../chapter2/26_Advanced_Operators.md#custom-operators)章节删除了重复的运算符有效字符集合。 ### 2014-08-18 * 发布新的文档用以详述 Swift 1.0,苹果公司针对 iOS 和 OS X 应用的全新开发语言。 -* 在章节协议中,增加新的小节:[对构造器的规定](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID272)。 -* 在章节协议中,增加新的小节:[类专属协议](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID281)。 -* [断言](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID335)现在可以使用字符串内插语法,并删除了文档中有冲突的注释。 -* 更新了[连接字符串和字符](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html#ID291)小节来说明一个事实,那就是字符串和字符不能再用 `+` 号运算符或者复合加法运算符 `+=` 相互连接,这两种运算符现在只能用于字符串之间相连。请使用 `String` 类型的 `append` 方法在一个字符串的尾部增加单个字符。 -* 在[属性申明](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID348)章节增加了关于 `availability` 特性的一些信息。 -* [可选类型](https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html#ID330)若有值时,不再隐式的转换为 `true`,同样,若无值时,也不再隐式的转换为 `false`,这是为了避免在判别 optional `Bool` 的值时产生困惑。 替代的方案是,用`==` 或 `!=` 运算符显式地去判断 Optinal 是否是 `nil`,以确认其是否包含值。 -* Swift 新增了一个[Nil 合并运算符](https://docs.swift.org/swift-book/LanguageGuide/BasicOperators.html#ID72)(`a ?? b`), 该表达式中,如果 Optional `a` 的值存在,则取得它并返回,若 Optional `a`为`nil`,则返回默认值 `b` -* 更新和扩展[字符串的比较](https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html#ID298),用以反映和展示'字符串和字符的比较',以及'前缀(prefix)/后缀(postfix)比较'都开始基于扩展字符集(extended grapheme clusters)规范的等价比较。 -* 现在,你可以通过下标赋值或者[可选调用链](https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html)中的可变方法和操作符来给属性设值。相应地更新了有关[通过可选链接访问属性](https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html#ID248)的信息,并扩展了[通过可选链接调用方法](https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html#ID249)时检查方法调用成功的示例,以显示如何检查属性设置是否成功。 -* 在章节可选链中,增加一个新的小节[访问可选类型的下标脚注](https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html#ID251)。 -* 更新章节[访问和修改数组](https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html#ID110)以标示:从该版本起,不能再通过 `+=` 运算符给一个数组添加一个新的项。对应的替代方案是,使 `append` 方法,或者通过 `+=` 运算符来添加一个只有一个项的数组。 -* 添加了一个提示:在[范围运算符](https://docs.swift.org/swift-book/LanguageGuide/BasicOperators.html#ID73)中,比如, `a...b` 和 `a.. Data? { } ``` -### 禁用错误传递 #{disabling_error_propagation} +### 禁用错误传递 {#disabling_error_propagation} 有时你知道某个 `throwing` 函数实际上在运行时是不会抛出错误的,在这种情况下,你可以在表达式前面写 `try!` 来禁用错误传递,这会把调用包装在一个不会有错误抛出的运行时断言中。如果真的抛出了错误,你会得到一个运行时错误。 diff --git a/source/chapter3/02_Lexical_Structure.md b/source/chapter3/02_Lexical_Structure.md index 3c5084ff..f9a3e2a4 100755 --- a/source/chapter3/02_Lexical_Structure.md +++ b/source/chapter3/02_Lexical_Structure.md @@ -136,7 +136,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 > > *隐式参数名* → **$** [*十进制数字列表*](#decimal-digit) -## 关键字和标点符号 +## 关键字和标点符号 {#keywords-and-punctuation} 下面这些被保留的关键字不允许用作标识符,除非使用反引号转义,具体描述请参考 [标识符](#identifiers)。除了 `inout`、`var` 以及 `let` 之外的关键字可以用作某个函数声明或者函数调用当中的外部参数名,无需添加反引号转义。当一个成员与一个关键字具有相同的名称时,不需要使用反引号来转义对该成员的引用,除非在引用该成员和使用该关键字之间存在歧义 - 例如,`self`,`Type` 和 `Protocol` 在显式的成员表达式中具有特殊的含义,因此它们必须在该上下文中使用反引号进行转义。 @@ -149,7 +149,7 @@ Swift 的*“词法结构(lexical structure)”* 描述了能构成该语言 以下符号被当作保留符号,不能用于自定义运算符: `(`、`)`、`{`、`}`、`[`、`]`、`.`、`,`、`:`、`;`、`=`、`@`、`#`、`&`(作为前缀运算符)、`->`、`` ` ``、`?`、`!`(作为后缀运算符)。 -## 字面量 +## 字面量 {#literal} *字面量(literal)* 用来表示源码中某种特定类型的值,比如一个数字或字符串。 diff --git a/source/chapter3/03_Types.md b/source/chapter3/03_Types.md index ab39b8d2..d4c0a8fe 100644 --- a/source/chapter3/03_Types.md +++ b/source/chapter3/03_Types.md @@ -1,20 +1,5 @@ # 类型(Types) -本页包含内容: - -- [类型注解](#type_annotation) -- [类型标识符](#type_identifier) -- [元组类型](#tuple_type) -- [函数类型](#function_type) -- [数组类型](#array_type) -- [字典类型](#dictionary_type) -- [可选类型](#optional_type) -- [隐式解析可选类型](#implicitly_unwrapped_optional_type) -- [协议合成类型](#protocol_composition_type) -- [元类型](#metatype_type) -- [类型继承子句](#type_inheritance_clause) -- [类型推断](#type_inference) - Swift 语言存在两种类型:命名型类型和复合型类型。*命名型类型*是指定义时可以给定名字的类型。命名型类型包括类、结构体、枚举和协议。比如,一个用户定义类 `MyClass` 的实例拥有类型 `MyClass`。除了用户定义的命名型类型,Swift 标准库也定义了很多常用的命名型类型,包括那些表示数组、字典和可选值的类型。 那些通常被其它语言认为是基本或原始的数据型类型,比如表示数字、字符和字符串的类型,实际上就是命名型类型,这些类型在 Swift 标准库中是使用结构体来定义和实现的。因为它们是命名型类型,因此你可以按照 [扩展](../chapter2/20_Extensions.md) 和 [扩展声明](./06_Declarations.md#extension_declaration) 中讨论的那样,声明一个扩展来增加它们的行为以满足你程序的需求。 @@ -25,10 +10,10 @@ Swift 语言存在两种类型:命名型类型和复合型类型。*命名型 本节讨论 Swift 语言本身定义的类型,并描述 Swift 中的类型推断行为。 +#### type {#type} + > 类型语法 > - -#### type {#type} > *类型* → [*数组类型*](#array-type) > > *类型* → [*字典类型*](#dictionary-type) diff --git a/source/chapter3/05_Statements.md b/source/chapter3/05_Statements.md index a4bf77c0..2576b1a6 100755 --- a/source/chapter3/05_Statements.md +++ b/source/chapter3/05_Statements.md @@ -8,8 +8,6 @@ > 语句语法 > - -#### statement {#statement} > *语句* → [*表达式*](./04_Expressions.md#expression) **;**可选 > > *语句* → [*声明*](./06_Declarations.md#declaration) **;**可选 @@ -28,8 +26,6 @@ > > *语句* → [*编译器控制语句*](#compiler-control-statement) > - -#### statements {#statements} > *多条语句* → [*语句*](#statement) [*多条语句*](#statements)可选 > @@ -832,7 +828,7 @@ statements to compile if both compilation conditions are false > *文件名* → [*静态字符串字面量*](./02_Lexical_Structure.md#static-string-literal) > -### 编译时诊断语句 +### 编译时诊断语句 {#compile-time-diagnostic-statement} 编译时诊断语句允许编译器在编译的时候可以发出错误或者警告。语句形式如下: @@ -852,8 +848,6 @@ statements to compile if both compilation conditions are false > > *诊断语句* → **#warning** **(** [*diagnostic-message*](#grammar_diagnostic-message) **)** > - -#### grammar_diagnostic-message {#grammar-diagnostic-message} > *诊断语句* → [*静态字符串字面量*](./02_Lexical_Structure.md#static-string-literal) > diff --git a/source/chapter3/06_Declarations.md b/source/chapter3/06_Declarations.md index 9fe91231..d3ebee4f 100755 --- a/source/chapter3/06_Declarations.md +++ b/source/chapter3/06_Declarations.md @@ -1,4 +1,5 @@ # 声明(Declarations) {#declarations} + *声明(declaration)* 用以向程序里引入新的名字或者结构。举例来说,可以使用声明来引入函数和方法,变量和常量,或者定义新的具有命名的枚举、结构体、类和协议类型。还可以使用声明来扩展一个既有的具有命名的类型的行为,或者在程序里引入在其它地方声明的符号。 在 Swift 中,大多数声明在某种意义上讲也是定义,因为它们在声明时往往伴随着实现或初始化。由于协议并不提供实现,大多数协议成员仅仅只是声明而已。为了方便起见,也是因为这些区别在 Swift 中并不是很重要,“声明”这个术语同时包含了声明和定义两种含义。 From 09eb20007b9a5ba61b775b3c84f98b57646d6420 Mon Sep 17 00:00:00 2001 From: Jie Liang Date: Thu, 4 Apr 2019 18:21:36 -0500 Subject: [PATCH 093/107] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a1530aa2..747ce8f6 100755 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ # 在线阅读 -使用 GitBook 制作,可以直接[在线阅读](http://swiftguide.cn/)。 +使用 GitBook 制作,可以直接[在线阅读](https://swiftgg.gitbook.io/swift/)。 # 当前阶段 From 7fcd04ec5b67280856c94f142141ef233223cc92 Mon Sep 17 00:00:00 2001 From: Jax Wu Date: Sun, 7 Apr 2019 23:13:06 +0800 Subject: [PATCH 094/107] =?UTF-8?q?=E6=9B=BF=E6=8D=A2=E5=8E=9F=E6=9C=89=20?= =?UTF-8?q?Swift5=20Beat=20=E7=89=88=E6=9C=AC=E7=94=B5=E5=AD=90=E4=B9=A6?= =?UTF-8?q?=E4=B8=BA=E6=AD=A3=E5=BC=8F=E7=89=88=20(#919)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TheSwiftProgrammingLanguageSwift5.epub | Bin 1774124 -> 1739458 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/document/TheSwiftProgrammingLanguageSwift5.epub b/document/TheSwiftProgrammingLanguageSwift5.epub index a18a7e4455f391769264fa24d51bd93ba504aca8..4dc5b4833cdabf461c1965fe87d5995f379d0f20 100644 GIT binary patch delta 255138 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¥cDmgP<<4ZPIDN!q>Ar6lYA$$V1ly#$& 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 pUQ1+(39Du3iaL8cfQdb+A<*a3RC_J&eqB~fEb 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