统一链接格式 (#953)

* 术语表更新

* 更新文档内术语

* 术语表更新

* update Control Flow

* update Version Compatibility

* update Methods

* update Types

* 术语表更新

* update Types

* Update 03_Types.md

* update links

* update Links
This commit is contained in:
DanziChen
2019-06-28 06:35:37 +08:00
committed by Jie Liang
parent 0f2ab87dca
commit 1a6d56d228
27 changed files with 5317 additions and 5317 deletions

View File

@ -53,7 +53,7 @@
* 增加关于使用 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/03_Types.md#function_type) 章节的描述,现在 Swift 区分了采用多参数的函数和采用元组类型的单个参数的函数。
* 从 [表达式](../chapter3/04_Expressions.md) 章节中删除了动态表达式的部分,现在 `type(of:)` 是 Swift 标准库函数。
### 2016-10-27
@ -75,7 +75,7 @@
* 增加 [高级操作符](../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。
* 更新 [泛型](../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/07_Closures.md#escaping-closures) 一节,现在闭包默认为非逃逸的。
* 更新 [基础部分](../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) 一节,现在函数参数标签不包含在函数类型中。
@ -122,7 +122,7 @@
* 更新至 Swift 2.1。
* 更新了 [字符串插值](../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 相关的信息。
* 更新了 [声明特性](../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) 一节,阐明了如何通过可选链式调用进行赋值。
@ -180,7 +180,7 @@
* 对于类型属性和方法现在可以使用 `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)一节中移除了溢出除运算符(&/)和求余溢出运算符(&%)。
* [溢出运算符](../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) 章节来提示当半开区间运算符含有相同的起止索引时,其区间为空。
@ -232,7 +232,7 @@
* 在 [声明修饰符](../chapter3/06_Declarations.md#declaration-modifiers) 章节增加关于 `dynamic` 声明修饰符的信息。
* 增加 [字面量](../chapter3/02_Lexical_Structure.md#literal) 的类型推导内容。
* 为章节 Curried Functions 添加了更多的信息。
* 加入新的章节[权限控制(../chapter2/25_Access_Control.md)。
* 加入新的章节 [权限控制](../chapter2/25_Access_Control.md)。
* 更新了 [字符串和字符](../chapter2/03_Strings_And_Characters.md) 章节用以表明,在 Swift 中,`Character` 类型现在代表的是扩展字符集extended grapheme cluster中的一个 Unicode为此新增了小节 [Extended Grapheme Clusters](../chapter2/03_Strings_And_Characters.md#extended-grapheme-clusters)。同时,为小节 [Unicode 标量](../chapter2/03_Strings_And_Characters.md#unicode-scalars-representation) 和 [字符串比较](../chapter2/03_Strings_And_Characters.md#comparing-strings) 增加了更多内容。
* 更新 [字符串字面量](../chapter2/03_Strings_And_Characters.md#string-literals) 章节在一个字符串中Unicode 标量Unicode scalars`\u{n}`的形式来表示,`n` 是一个最大可以有8位的16进制数。
* `NSString` `length` 属性已被映射到 Swift 的内建 `String`类型。(注意,这两属性的类型是`utf16Count`,而非 `utf16count`)。

View File

@ -235,7 +235,7 @@ for (index, value) in shoppingList.enumerated() {
// Item 5: Bananas
```
更多关于 `for-in` 循环的介绍请参见[for 循环](05_Control_Flow.html#for_loops)。
更多关于 `for-in` 循环的介绍请参见 [For 循环](05_Control_Flow.html#for_loops)。
## 集合Sets {#sets}

View File

@ -772,7 +772,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` 上,增量操作完成。

View File

@ -2,7 +2,7 @@
Swift 使用*自动引用计数ARC*机制来跟踪和管理你的应用程序的内存。通常情况下Swift 内存管理机制会一直起作用你无须自己来考虑内存的管理。ARC 会在类的实例不再被使用时,自动释放其占用的内存。
然而在少数情况下为了能帮助你管理内存ARC 需要更多的,代码之间关系的信息。本章描述了这些情况,并且为你示范怎样才能使 ARC 来管理你的应用程序的所有内存。在 Swift 使用 ARC 与在 Obejctive-C 中使用 ARC 非常类似,具体请参考[过渡到 ARC 的发布说明](https://developer.apple.com/library/content/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html#//apple_ref/doc/uid/TP40011226)
然而在少数情况下为了能帮助你管理内存ARC 需要更多的,代码之间关系的信息。本章描述了这些情况,并且为你示范怎样才能使 ARC 来管理你的应用程序的所有内存。在 Swift 使用 ARC 与在 Obejctive-C 中使用 ARC 非常类似,具体请参考 [过渡到 ARC 的发布说明](https://developer.apple.com/library/content/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html#//apple_ref/doc/uid/TP40011226)
> 注意
>

View File

@ -275,7 +275,7 @@ var emptyDictionary: [String : Double] = [:]
Xcode 使用 playground 字面量对程序编辑器中的颜色、文件或者图片创建可交互的展示。在 Xcode 之外的空白文本中playground 字面量使用一种特殊的字面量语法来展示。
更多关于在 Xcode 中使用 playground 字面量的信息,请参阅 [添加颜色、文件或图片字面量](https://help.apple.com/xcode/mac/current/#/dev4c60242fc)
更多关于在 Xcode 中使用 playground 字面量的信息,请参阅 [添加颜色、文件或图片字面量](https://help.apple.com/xcode/mac/current/#/dev4c60242fc)
> 字面量表达式语法
>
@ -464,7 +464,7 @@ myFunction { $0 + $1 }
使用闭包表达式时,可以不必将其存储在一个变量或常量中,例如作为函数调用的一部分来立即使用一个闭包。在上面的例子中,传入 `myFunction` 的闭包表达式就是这种立即使用类型的闭包。因此,一个闭包是否逃逸与其使用时的上下文相关。一个会被立即调用或者作为函数的非逃逸参数传递的闭包表达式是非逃逸的,否则,这个闭包表达式是逃逸的。
关于逃逸闭包的内容,请参阅[逃逸闭包](./chapter2/07_Closures.md#escaping_closures)
关于逃逸闭包的内容,请参阅 [逃逸闭包](./chapter2/07_Closures.md#escaping_closures)
## 捕获列表 {#capture-lists}
默认情况下,闭包会捕获附近作用域中的常量和变量,并使用强引用指向它们。你可以通过一个*捕获列表*来显式指定它的捕获行为。
@ -772,7 +772,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 与 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 表达式语法
>
@ -899,7 +899,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.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.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)
> 注意
>
@ -1082,7 +1082,7 @@ t.0 = t.1
对于模块的成员来说,只能直接访问顶级声明中的成员。
使用 `dynamicMemberLookup` 属性声明的类型包含可以在运行时查找的成员,具体请参阅 [属性](./07_Attributes.md)
使用 `dynamicMemberLookup` 属性声明的类型包含可以在运行时查找的成员,具体请参阅 [属性](./07_Attributes.md)
为了区分只有参数名有所不同的方法或构造器,在圆括号中写出参数名,参数名后紧跟一个冒号,对于没有参数名的参数,使用下划线代替参数名。而对于重载方法,则需使用类型注解进行区分。例如:

View File

@ -998,7 +998,7 @@ protocol 协议名称: 继承的协议 {
可以通过类型的扩展声明来采纳协议,从而为之前声明的类型添加协议一致性。在扩展中,必须实现所有采纳协议的要求。如果该类型已经实现了所有的要求,可以让这个扩展声明的主体留空。
默认地,符合某个协议的类型必须实现所有在协议中声明的属性、方法和下标。即便如此,可以用 `optional` 声明修饰符标注协议成员声明,以指定它们的实现是可选的。`optional` 修饰符仅仅可以用于使用 `objc` 特性标记过的协议。因此,仅仅类类型可以采用并符合包含可选成员要求的协议。更多关于如何使用 `optional` 声明修饰符的信息,以及如何访问可选协议成员的指导——例如不能确定采纳协议的类型是否实现了它们时——请参阅 [可选协议要求](../chapter2/21_Protocols.md#optional_protocol_requirements)
默认地,符合某个协议的类型必须实现所有在协议中声明的属性、方法和下标。即便如此,可以用 `optional` 声明修饰符标注协议成员声明,以指定它们的实现是可选的。`optional` 修饰符仅仅可以用于使用 `objc` 特性标记过的协议。因此,仅仅类类型可以采用并符合包含可选成员要求的协议。更多关于如何使用 `optional` 声明修饰符的信息,以及如何访问可选协议成员的指导——例如不能确定采纳协议的类型是否实现了它们时——请参阅 [可选协议要求](../chapter2/21_Protocols.md#optional_protocol_requirements)
为了限制协议只能被类类型采纳,需要使用 `AnyObject` 关键字来标记协议,将 `AnyObject` 关键在写在冒号后面的继承的协议列表的首位。例如,下面的协议只能被类类型采纳:
@ -1760,7 +1760,7 @@ Swift 定义了大量的优先级组来与标准库的运算符配合使用,
`unowned(unsafe)`
该修饰符用于修饰存储型变量、常量或者存储型变量属性,表示该变量或属性持有其存储对象的无主引用。如果在此存储对象释放后尝试访问该对象,会直接访问该对象释放前存储的内存地址,因此这是非内存安全的操作。如同弱引用一样,该引用类型的变量或属性必须是类类型。与弱引用不同的是,这种类型的变量或属性是非可选的。关于 `unowned` 更多的信息和例子,请参阅 [无主引用](
该修饰符用于修饰存储型变量、常量或者存储型变量属性,表示该变量或属性持有其存储对象的无主引用。如果在此存储对象释放后尝试访问该对象,会直接访问该对象释放前存储的内存地址,因此这是非内存安全的操作。如同弱引用一样,该引用类型的变量或属性必须是类类型。与弱引用不同的是,这种类型的变量或属性是非可选的。关于 `unowned` 更多的信息和例子,请参阅 [无主引用](../chapter2/23_Automatic_Reference_Counting.md#resolving_strong_reference_cycles_between_class_instances)。
`weak`

View File

@ -51,7 +51,7 @@ simpleMax(3.14159, 2.71828) // T 被推断为 Double 类型
泛型函数或构造器可以重载,但在泛型形参子句中的类型形参必须有不同的约束或要求,抑或二者皆不同。当调用重载的泛型函数或构造器时,编译器会根据这些约束来决定调用哪个重载函数或构造器。
更多关于泛型 where 从句的信息和关于泛型函数声明的例子,可以看一看 [泛型 where 子句](../chapter2/22_Generics.md#where_clauses)
更多关于泛型 where 从句的信息和关于泛型函数声明的例子,可以看一看 [泛型 where 子句](../chapter2/22_Generics.md#where_clauses)
> 泛型形参子句语法
>