Skip to content

Commit e8d8559

Browse files
committed
fix: fix link error, translation error and format error
1 parent 8037f63 commit e8d8559

File tree

7 files changed

+62
-31
lines changed

7 files changed

+62
-31
lines changed

swift-6.docc/LanguageGuide/Concurrency.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -637,7 +637,8 @@ let handle = Task {
637637
let result = await handle.value
638638
```
639639

640-
要了解更多有关如何管理分离任务的信息,请查看 [`Task`](https://developer.apple.com/documentation/swift/task).
640+
要了解更多有关如何管理分离任务的信息,请查看 [`Task`](https://developer.apple.com/documentation/swift/task)
641+
641642
[`Task.init(priority:operation:)`]: https://developer.apple.com/documentation/swift/task/init(priority:operation:)-7f0zv
642643
[`Task.detached(priority:operation:)`]: https://developer.apple.com/documentation/swift/task/detached(priority:operation:)-d24l
643644

@@ -652,7 +653,7 @@ let result = await handle.value
652653

653654
你可以使用任务来将自己的程序分割为相互独立、并行的片段。任务之间时相互隔离的,这样他们才能安全地同时运行。但有时候,你需要在任务之前共享信息。此时,你就可以使用 actors 来安全地在并行代码之间共享这些信息。
654655

655-
就和类一样,actor 也是应用类型,所以在 <doc:ClassesAndStructures#类是引用类型> 一文中有关引用类型和值类型的对比,同时适用于类和 actor。与类不同的是,actor 在同一时刻只允许一项任务访问其可变状态,这样多个任务同时与 actor 交互时才不会产生安全性问题。举个例子,下面是一个用于记录温度的 actor:
656+
就和类一样,actor 也是引用类型,所以在 <doc:ClassesAndStructures#类是引用类型> 一文中有关引用类型和值类型的对比,同时适用于类和 actor。与类不同的是,actor 在同一时刻只允许一项任务访问其可变状态,这样多个任务同时与 actor 交互时才不会产生安全性问题。举个例子,下面是一个用于记录温度的 actor:
656657

657658
```swift
658659
actor TemperatureLogger {

swift-6.docc/LanguageGuide/Extensions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ extension SomeType: SomeProtocol, AnotherProtocol {
109109

110110
这种遵循协议的方式在 <doc:Protocols#在扩展里添加协议遵循> 中有描述。
111111

112-
扩展可以使用在现有泛型类型上,就像 <doc:Generics#Extending-a-Generic-Type> 中描述的一样。你还可以使用扩展给泛型类型有条件地添加功能,就像 <doc:Generics#Extensions-with-a-Generic-Where-Clause> 中描述的一样。
112+
扩展可以使用在现有泛型类型上,就像 <doc:Generics#泛型扩展> 中描述的一样。你还可以使用扩展给泛型类型有条件地添加功能,就像 <doc:Generics#具有泛型-Where-子句的扩展> 中描述的一样。
113113

114114
> 注意: 对一个现有的类型,如果你定义了一个扩展来添加新的功能,那么这个类型的所有实例都可以使用这个新功能,包括那些在扩展定义之前就存在的实例。
115115

swift-6.docc/LanguageGuide/Initialization.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
你可以通过定义*构造器*来实现这个构造过程,它就像是用来创建特定类型新实例的特殊方法。与Objective-C构造器不同,Swift构造器没有返回值,它们的主要作用是确保类型的新实例在首次使用前被正确构造。
77

8-
类的实例可以通过实现*析构器*来执行它释放之前自定义的清理工作。想了解析构器的更多内容,请参见 <doc:析构过程>.
8+
类的实例可以通过实现*析构器*来执行它释放之前自定义的清理工作。想了解析构器的更多内容,请参见 <doc:Deinitialization>.
99

1010
## 存储属性的初始赋值
1111

@@ -542,7 +542,7 @@ print(zeroByZero.width, zeroByZero.height)
542542
构造器可以调用其他构造器来完成实例的部分构造过程。这个过程被称为*构造器代理*,它避免了在多个构造器中重复代码。
543543

544544
构造器代理的实现规则和形式在值类型和类类型中有所不同。值类型(结构体和枚举类型)不支持继承,所以构造器代理的过程相对简单,因为它们只能代理给自己的其它构造器。
545-
然而,类不一样,它可以继承自其他类(请参考<doc:继承>)。这意味着类有责任保证其所有继承的存储型属性在构造时也能正确的初始化。这些责任将在后续章节<doc:类的继承和构造过程>中介绍。
545+
然而,类不一样,它可以继承自其他类(请参考<doc:Inheritance>)。这意味着类有责任保证其所有继承的存储型属性在构造时也能正确的初始化。这些责任将在后续章节<doc:类的继承和构造过程>中介绍。
546546

547547
对于值类型,你可以使用 `self.init` 在自定义的构造器中引用相同值类型的构造器。并且,你只能在构造器内部调用 `self.init`
548548

@@ -871,7 +871,7 @@ Swift 编译器将执行 4 种有效的安全检查,以确保两段式构造
871871
```
872872
-->
873873

874-
相反,如果你编写了一个和父类便利构造器相匹配的子类构造器,由于子类不能直接调用父类的便利构造器(每个规则都在上文<doc:类的构造器代理规则>有所描述)。
874+
相反,如果你编写了一个和父类便利构造器相匹配的子类构造器,由于子类不能直接调用父类的便利构造器(每个规则都在上文<doc:类类型的构造器代理>有所描述)。
875875
因此,严格意义上来讲,你的子类并未对一个父类构造器提供重写。最后的结果就是,你在子类中“重写”一个父类便利构造器时,不需要加 `override` 修饰符。
876876

877877
<!--
@@ -1912,7 +1912,7 @@ class AutomaticallyNamedDocument: Document {
19121912
```
19131913
-->
19141914

1915-
`AutomaticallyNamedDocument` 用一个不可失败构造器 `init?(name:)` 重写了父类的可失败构造器。因为子类用另一种方式处理了空字符串的情况,所以不再需要一个可失败构造器,因此子类用一个不可失败构造器代替了父类的可失败构造器。
1915+
`AutomaticallyNamedDocument` 用一个不可失败构造器 `init(name:)` 重写了父类的可失败构造器。因为子类用另一种方式处理了空字符串的情况,所以不再需要一个可失败构造器,因此子类用一个不可失败构造器代替了父类的可失败构造器。
19161916

19171917
你可以在子类的不可失败构造器中使用强制解包来调用父类的可失败构造器。比如,下面的 `UntitledDocument` 子类总是被命名为 `"[Untitled]"` 并且在初始化阶段使用父类的可失败构造器 `init(name:)`
19181918

swift-6.docc/LanguageGuide/NestedTypes.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
在另一个类型的作用域内定义类型。
44

5-
枚举常被创建以支持特定类或结构的功能。同样的,为了在更复杂类型的上下文中使用而定义纯工具性结构,以及通常与特定类型结合使用的协议,也显得十分便利。为了实现这一点,Swift 允许你定义 *嵌套类型*,即在支持的类型定义中嵌套枚举、结构和协议等辅助类型。
5+
枚举常被创建以支持特定类或结构的功能。同样的,为了在更复杂类型的上下文中使用而定义的纯工具性结构体,以及通常与特定类型结合使用的协议,也显得十分便利。为了实现这一点,Swift 允许你定义 *嵌套类型*,即在支持的类型定义中嵌套枚举、结构和协议等辅助类型。
66

77
要在一个类型中嵌套另一个类型,只需将其定义写在外部类型的大括号内。类型可以根据需要嵌套到任意层次。
88

@@ -112,7 +112,7 @@ struct BlackjackCard {
112112

113113
`BlackjackCard` 结构本身有两个属性 —— `rank``suit`。它还定义了一个名为 `description` 的计算属性,该属性使用 `rank``suit` 中存储的值来构建牌的名称和数值的描述。`description` 属性使用可选绑定来检查是否存在第二个值,如果有,则为第二个值插入额外的描述信息。
114114

115-
由于 `BlackjackCard` 是一个没有自定义初始化器的结构体,它具有一个隐式的成员逐一初始化器,正如在 [[doc:Initialization#Memberwise-Initializers-for-Structure-Types](doc:Initialization#Memberwise-Initializers-for-Structure-Types)]中所描述的那样。你可以使用这个初始化器来初始化一个名为 `theAceOfSpades` 的新常量:
115+
由于 `BlackjackCard` 是一个没有自定义初始化器的结构体,它具有一个隐式的成员逐一初始化器,正如在 <doc:Initialization#结构体类型的成员逐一构造器> 中所描述的那样。你可以使用这个初始化器来初始化一个名为 `theAceOfSpades` 的新常量:
116116

117117
```swift
118118
let theAceOfSpades = BlackjackCard(rank: .ace, suit: .spades)

swift-6.docc/ReferenceManual/Attributes.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
有些声明特性接受参数,这些参数指定有关特性的更多信息以及它如何适用于特定声明。这些*特性参数*被括号括起来,其格式由它们所属的特性定义。
1515

16-
附加宏和属性包装器也使用特性语法。有关宏如何展开的信息,参见 <doc:Expressions#宏展开表达式>。有关属性包装器的信息,参见 <doc:Attributes#属性包装器>
16+
附加宏和属性包装器也使用特性语法。有关宏如何展开的信息,参见 <doc:Expressions#宏扩展表达式>。有关属性包装器的信息,参见 <doc:Attributes#属性包装器>
1717

1818
## 声明特性
1919

@@ -999,7 +999,7 @@ class ExampleClass: NSObject {
999999

10001000
来自 Objective-C 的声明在导入时始终被视为带有 `preconcurrency` 特性标记。
10011001

1002-
### propertyWrapper
1002+
### 属性包装器
10031003

10041004
将此特性应用于类、结构体或枚举声明,以将该类型用作属性包装器。当你将此特性应用于某个类型时,你会创建一个与该类型同名的自定义特性。将该新特性应用于类、结构体或枚举的属性,以通过包装器类型的实例来包装对该属性的访问;将特性应用于局部存储变量声明,以相同方式包装对变量的访问。计算变量、全局变量和常量不能使用属性包装器。
10051005

swift-6.docc/ReferenceManual/Declarations.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
引入类型、运算符、变量以及其他名称和构造。
44

5-
*声明*将在程序中引入一个新的名称或构造例如,你使用声明来引入函数和方法,引入变量和常量,以及定义枚举、结构体、类和协议类型。你还可以使用声明来扩展现有具名类型的行为,并将其他地方声明的符号引入到你的程序中。
5+
*声明*将在程序中引入一个新的名称或构造。例如,你使用声明来引入函数和方法,引入变量和常量,以及定义枚举、结构体、类和协议类型。你还可以使用声明来扩展现有具名类型的行为,并将其他地方声明的符号引入到你的程序中。
66

77
在 Swift 中,大多数声明也是定义,因为它们在声明的同时被实现或初始化。但由于协议不实现它的成员,所以协议成员在此仅仅是声明。为了方便起见,而且这种区别在 Swift 中没那么重要,所以术语*声明*涵盖了声明和定义两种含义。
88

@@ -220,7 +220,7 @@ var <#variable name#>: <#type#> {
220220

221221
getter 用于读取值,setter 用于写入值。setter 子句是可选的,当只需要 getter 时,可以省略两个子句,直接返回请求的值,参见 <doc:Properties#只读计算属性>。但如果提供了 setter 子句,则必须同时提供 getter 子句。
222222

223-
*setter 名称*和括号是可选的。如果你提供了 setter 名称,它将用作 setter 参数的名称。如果你不提供 setter 名称,setter 的默认参数名称是 `newValue`,参见 <doc:Properties#简写Setter声明>
223+
*setter 名称*和括号是可选的。如果你提供了 setter 名称,它将用作 setter 参数的名称。如果你不提供 setter 名称,setter 的默认参数名称是 `newValue`,参见 <doc:Properties#简化-Setter-声明>
224224

225225
与存储的具名值和存储的变量属性不同,计算的具名值或计算属性的值并不会存储在内存中。
226226

@@ -1114,7 +1114,7 @@ func <#function name#>(<#parameters#>) throws(<#error type#>) -> <#return type#>
11141114

11151115
调用抛出函数或方法的必须被包裹在一个 `try``try!` 表达式中(即,在 `try``try!` 操作符的作用域内)。
11161116

1117-
函数的类型包括:它是否会抛出错误,以及它抛出的错误类型。非抛出函数是抛出函数的子类型。所以,可以在使用抛出函数的地方使用非抛出函数。有关抛出错误函数类型的更多信息,请参阅 <doc:Types#Function-Type>。有关处理具有显式类型的错误的示例,请参阅 <doc:ErrorHandling#Specifying-the-Error-Type>
1117+
函数的类型包括:它是否会抛出错误,以及它抛出的错误类型。非抛出函数是抛出函数的子类型。所以,可以在使用抛出函数的地方使用非抛出函数。有关抛出错误函数类型的更多信息,请参阅 <doc:Types#函数类型>。有关处理具有显式类型的错误的示例,请参阅 <doc:ErrorHandling#指定错误类型>
11181118

11191119
你不能仅根据函数是否会抛出错误来重载一个函数。不过,你可以根据函数的*参数*是否会抛出错误来重载函数。
11201120

swift-6.docc/ReferenceManual/Types.md

Lines changed: 47 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,21 @@
2222
本章讨论了 Swift 语言本身定义的类型,并描述了 Swift 的类型推断行为。
2323

2424
> 类型的语法:
25-
> > *type**function-type* \ > *type**array-type* \ > *type**dictionary-type* \ > *type**type-identifier* \ > *type**tuple-type* \ > *type**optional-type* \ > *type**implicitly-unwrapped-optional-type* \ > *type**protocol-composition-type* \ > *type**opaque-type* \ > *type**boxed-protocol-type* \ > *type**metatype-type* \ > *type**any-type* \ > *type**self-type* \ > *type***`(`** *type* **`)`**
25+
>
26+
> *type**function-type* \
27+
> *type**array-type* \
28+
> *type**dictionary-type* \
29+
> *type**type-identifier* \
30+
> *type**tuple-type* \
31+
> *type**optional-type* \
32+
> *type**implicitly-unwrapped-optional-type* \
33+
> *type**protocol-composition-type* \
34+
> *type**opaque-type* \
35+
> *type**boxed-protocol-type* \
36+
> *type**metatype-type* \
37+
> *type**any-type* \
38+
> *type**self-type* \
39+
> *type***`(`** *type* **`)`**
2640
2741
## 类型注解
2842

@@ -40,7 +54,8 @@ func someFunction(a: Int) { /* ... */ }
4054
类型注解可以在类型之前包含一个可选的类型属性列表。
4155

4256
> 类型注解的语法:
43-
> > *type-annotation***`:`** *attributes*_?_ *type*
57+
>
58+
> *type-annotation***`:`** *attributes*_?_ *type*
4459
4560
## 类型标识符
4661

@@ -75,6 +90,8 @@ someTuple = (left: 5, right: 5) // 错误: 名称不匹配
7590

7691
除了 Void 是空元组类型 () 的类型别名外,所有元组类型都包含两个或更多类型。
7792

93+
## 函数类型
94+
7895
函数类型表示函数、方法或闭包的类型,由一个参数类型和返回类型组成,用箭头(->)分隔:
7996

8097
```swift
@@ -162,13 +179,17 @@ func takesTwoFunctions(first: (() -> Void) -> Void, second: (() -> Void) -> Void
162179
如果你需要避免这个限制,可以将其中一个参数标记为逃逸的,或者使用 `withoutActuallyEscaping(_:do:)` 函数临时将其中一个非逃逸函数参数转换为逃逸函数。有关避免内存访问冲突的信息,请参阅 <doc:MemorySafety>
163180

164181
> 函数类型的语法:
165-
> > *function-type**attributes*_?_ *function-type-argument-clause* **`async`**_?_ *throws-clause*_?_ **`->`** *type*
166-
> > *function-type-argument-clause***`(`** **`)`** \
182+
>
183+
> *function-type**attributes*_?_ *function-type-argument-clause* **`async`**_?_ *throws-clause*_?_ **`->`** *type*
184+
>
185+
> *function-type-argument-clause***`(`** **`)`** \
167186
> *function-type-argument-clause***`(`** *function-type-argument-list* **`...`**_?_ **`)`**
168-
> > *function-type-argument-list**function-type-argument* | *function-type-argument* **`,`** *function-type-argument-list* \
187+
>
188+
> *function-type-argument-list**function-type-argument* | *function-type-argument* **`,`** *function-type-argument-list* \
169189
> *function-type-argument**attributes*_?_ *parameter-modifier*_?_ *type* | *argument-label* *type-annotation* \
170190
> *argument-label**identifier*
171-
> > *throws-clause***`throws`** | **`throws`** **`(`** *type* **`)`**
191+
>
192+
> *throws-clause***`throws`** | **`throws`** **`(`** *type* **`)`**
172193
173194
func polymorphicF<T>(a: Int) -> T { return a } 是一个泛型函数,可以返回任何类型的值。而 monomorphicF(a: Int) -> Int { return a } 是一个单态函数,只能返回 Int 类型的值。
174195

@@ -208,7 +229,8 @@ var array3D: [[[Int]]] = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
208229
有关 Swift 标准库 `Array` 类型的详细讨论,请参阅 <doc:CollectionTypes#数组>
209230

210231
> 数组类型的语法:
211-
> > *array-type***`[`** *type* **`]`**
232+
>
233+
> *array-type***`[`** *type* **`]`**
212234
213235
## 字典类型
214236

@@ -236,9 +258,8 @@ let someDictionary: Dictionary<String, Int> = ["Alex": 31, "Paul": 39]
236258
有关 Swift 标准库 `Dictionary` 类型的详细讨论,请参阅 <doc:CollectionTypes#字典>
237259

238260
> 字典类型的语法:
239-
> > *dictionary-type***`[`** *type* **`:`** *type* **`]`**
240-
241-
## 可选类型
261+
>
262+
> *dictionary-type***`[`** *type* **`:`** *type* **`]`**
242263
243264
## 可选类型
244265

@@ -267,7 +288,8 @@ optionalInteger! // 42
267288
有关更多信息和示例说明如何使用可选类型,请参阅 <doc:TheBasics#可选项>
268289

269290
> 可选类型的语法:
270-
> > *optional-type**type* **`?`**
291+
>
292+
> *optional-type**type* **`?`**
271293
272294
## 隐式解包可选类型
273295

@@ -296,7 +318,7 @@ let implicitlyUnwrappedArray: [Int]! // 正确
296318

297319
使用可选链来有条件地对隐式解包可选表达式执行操作。如果值为 `nil`,则不执行任何操作,因此也不会产生运行时错误。
298320

299-
有关隐式解包可选类型的更多信息,请参阅 <doc:TheBasics#隐式解析可选类型>
321+
有关隐式解包可选类型的更多信息,请参阅 <doc:TheBasics#隐式解包可选>
300322

301323
为参数编写不透明类型是使用泛型类型的一种语法糖,并且没有为泛型类型参数指定名称。这个隐式的泛型类型参数有一个约束,要求它遵循不透明类型中指定的协议。如果你编写了多个不透明类型,每一个都会创建自己的泛型类型参数。例如,下面的声明是等价的:
302324

@@ -417,7 +439,8 @@ let anotherInstance = metatype.init(string: "some string")
417439
```swifttest -> class AnotherSubClass: SomeBaseClass { let string: String required init(string: String) { self.string = string } override class func printClassName() { print("AnotherSubClass") } } -> let metatype: AnotherSubClass.Type = AnotherSubClass.self -> let anotherInstance = metatype.init(string: "some string") ``` -->
418440

419441
> 元类型语法:
420-
> > *metatype-type**type* **`.`** **`Type`** | *type* **`.`** **`Protocol`**
442+
>
443+
> *metatype-type**type* **`.`** **`Type`** | *type* **`.`** **`Protocol`**
421444
422445
## Any 类型
423446

@@ -461,7 +484,8 @@ if let first = mixed.first as? String {
461484
有关更多信息,请参阅 <doc:Protocols#类专属协议>[`AnyObject`](https://developer.apple.com/documentation/swift/anyobject)
462485

463486
> Any 类型语法:
464-
> > *any-type***`Any`**
487+
>
488+
> *any-type***`Any`**
465489
466490
## Self 类型
467491

@@ -500,7 +524,10 @@ if let first = mixed.first as? String {
500524
`Self` 类型指的是与 Swift 标准库中的 `type(of:)` 函数相同的类型。写 `Self.someStaticMember` 来访问当前类型的成员与写 `type(of: self).someStaticMember` 是一样的。
501525

502526
> Self 类型的语法:
503-
> > *self-type***`Self`**
527+
>
528+
> *self-type***`Self`**
529+
530+
## 类型继承子句
504531

505532
*类型继承子句* 用于指定命名类型继承自哪个类以及符合哪些协议。类型继承子句以冒号 (:) 开头,后跟一系列类型标识符。
506533

@@ -511,8 +538,11 @@ if let first = mixed.first as? String {
511538
对于为枚举案例分配原始值的枚举定义,类型继承子句可以是指定这些原始值类型的单个命名类型。有关使用类型继承子句指定其原始值类型的枚举定义示例,请参阅 <doc:Enumerations#原始值>
512539

513540
> 类型继承子句的语法:
514-
> > *type-inheritance-clause***`:`** *type-inheritance-list*
515-
> > *type-inheritance-list**attributes*_?_ *type-identifier* | *attributes*_?_ *type-identifier* **`,`** *type-inheritance-list*
541+
>
542+
> *type-inheritance-clause***`:`** *type-inheritance-list*
543+
> *type-inheritance-list**attributes*_?_ *type-identifier* | *attributes*_?_ *type-identifier* **`,`** *type-inheritance-list*
544+
545+
## 类型推断
516546

517547
Swift 广泛使用 *类型推断*,允许你在代码中省略许多变量和表达式的类型或部分类型。
518548

0 commit comments

Comments
 (0)