Skip to content

Commit fe59179

Browse files
committed
fix: per code review
1 parent 9f0d64f commit fe59179

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

swift-6-beta.docc/ReferenceManual/Declarations.md

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

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

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

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

99
> 声明的语法:
1010
>
@@ -28,11 +28,11 @@
2828
2929
## 顶级代码
3030

31-
Swift 源文件中的顶级代码由零个或多个语句、声明和表达式组成。默认情况下,在源文件顶层声明的变量、常量和其他具名声明可以被同一模块中每个源文件的代码访问。你可以通过使用访问级别修饰符来覆盖此默认行为,具体说明见 <doc:Declarations#Access-Control-Levels>
31+
Swift 源文件中的顶级代码由零个或多个语句、声明和表达式组成。默认情况下,在源文件顶层声明的变量、常量和其他具名声明可以被同一模块中每个源文件的代码访问。你可以使用访问级别修饰符来覆盖此默认行为,具体说明见 <doc:Declarations#Access-Control-Levels>
3232

3333
有两种类型的顶级代码:顶级声明和可执行的顶级代码。顶级声明仅由声明组成,允许出现在所有 Swift 源文件中。可执行的顶级代码包含语句和表达式,而不仅仅是声明,仅允许作为程序的顶级入口点。
3434

35-
你编译的 Swift 代码可以包含最多以下一种方法来标记顶级入口点,无论代码如何组织成文件和模块`main` 特性`NSApplicationMain` 特性`UIApplicationMain` 特性`main.swift` 文件,或包含顶级可执行代码的文件。
35+
编译 Swift 代码生成可执行文件时,无论文件和模块中的代码如何组织,都只能通过以下方法之一来指定顶级入口点`main` 特性`NSApplicationMain` 特性`UIApplicationMain` 特性`main.swift` 文件,或包含顶级可执行代码的文件。
3636

3737
> 顶级声明的语法:
3838
>
@@ -69,7 +69,7 @@ Swift 源文件中的顶级代码由零个或多个语句、声明和表达式
6969
import <#module#>
7070
```
7171

72-
提供更多细节可以限制导入哪些符号——你可以指定特定的子模块或模块或子模块内的特定声明。当使用这种详细形式时,只有被导入的符号(而非声明它的模块)在当前作用域中可用
72+
提供更多细节可以限制导入哪些符号——可以指定特定的子模块,也可以指定模块或子模块中特定的声明。使用这种限制后,在当前作用域中,只有被导入的符号是可用的,而不是整个模块中的所有声明
7373

7474
```swift
7575
import <#import kind#> <#module#>.<#symbol name#>
@@ -97,10 +97,10 @@ let <#constant name#>: <#type#> = <#expression#>
9797

9898
常量声明定义了*常量名称*与构造器*表达式*的值之间的不可变绑定;一旦常量的被赋值,就无法更改。也就是说,如果常量是用类对象初始化的,对象本身可以改变,但常量名称与它所指向的对象之间的绑定不能改变。
9999

100-
当在全局范围内声明常量时,必须用一个值进行初始化。当在函数或方法的上下文中发生常量声明时,可以稍后初始化,只要保证在第一次读取其值之前已为其赋值。如果编译器能够证明常量的值从未被读取,则不要求该常量必须设置值。此分析称为*确定初始化*——编译器保证一个值在读取之前值已被赋值。
100+
当常量声明在全局作用域时,常量必须赋值。当常量声明在函数或者方法的上下文中时,可以稍后初始化,只要保证在第一次读取其值之前已为其赋值。如果编译器能够证明常量的值从未被读取,则不要求该常量必须赋值。此分析称为*确定初始化*——编译器保证一个值在读取之前值已被赋值。
101101

102102
> 注意:
103-
> 确定初始化无法构建需要领域知识的证明,并且它在条件语句中跟踪状态的能力是有限的。如果你可以确定常量始终有一个值,但编译器无法证明这一点,请尝试简化设置该值的代码路径,或改用变量声明。
103+
> 确定初始化无法分析包含特定领域的内容,并且对条件语句中的状态跟踪能力也有限。如果你可以确定常量始终有一个值,但编译器无法证明这一点,请尝试简化设置该值的代码路径,或改用变量声明。
104104
105105
<!--
106106
In the most general case,
@@ -110,7 +110,7 @@ as shown by Rice's theorem.
110110

111111
当常量声明出现在类或结构体声明的上下文中时,它被视为一个*常量属性*。常量声明不是计算属性,因此没有 getter 或 setter。
112112

113-
如果常量声明的*常量名称*是一个元组模式,则元组中每个项的名称都绑定到构造器*表达式*中相应的值
113+
如果*常量名称*是元组形式,元组中每一项的名称都会和初始化*表达式*中对应的值进行绑定
114114

115115
```swift
116116
let (firstNumber, secondNumber) = (10, 42)
@@ -144,9 +144,9 @@ print("The second number is \(secondNumber).")
144144
```
145145
-->
146146

147-
在常量声明中,当可以推断出*常量名称*的类型时,类型注释(`:` *type*)是可选的,祥见 <doc:Types#Type-Inference>
147+
在常量声明中,当可以推断出*常量名称*的类型时,类型注释(`:` *type*)是可选的,详见 <doc:Types#Type-Inference>
148148

149-
要声明一个常量类型属性,请使用 `static` 声明修饰符标记该声明。类的常量类型属性总是隐式为 final;你不能使用 `class``final` 声明修饰符来允许或禁止子类重写。类型属性的讨论请参见 <doc:Properties#Type-Properties>
149+
要声明一个常量类型属性,请使用 `static` 声明修饰符标记该声明。类的常量类型属性总是隐式为 final;你无法用 class 或 final 声明修饰符实现允许或禁止被子类重写的目的。类型属性的讨论请参见 <doc:Properties#Type-Properties>
150150

151151
<!--
152152
- test: `class-constants-cant-have-class-or-final`
@@ -178,7 +178,7 @@ print("The second number is \(secondNumber).")
178178

179179
*变量声明*会在你的程序中引入一个具名的变量值,并使用 `var` 关键字进行声明。
180180

181-
变量声明有几种形式,用于声明不同类型的具名可变值,包括存储变量和计算变量及属性、存储变量和属性观察者,以及静态变量属性。使用何种适当的形式取决于变量声明的范围以及你打算声明的变量类型
181+
变量声明有多种形式,用于定义各种有名称的、可变的值,包括存储变量和计算变量及属性、存储变量和属性观察者,以及静态变量属性。使用哪种形式取决于变量声明的范围以及你打算声明的变量类型
182182

183183
> 注意:
184184
> 你还可以在协议声明的上下文中声明属性,参见 <doc:Declarations#Protocol-Property-Declaration>
@@ -193,9 +193,9 @@ print("The second number is \(secondNumber).")
193193
var <#variable name#>: <#type#> = <#expression#>
194194
```
195195

196-
你可以在全局范围、函数的局部范围或类或结构体声明的上下文中定义这种形式的变量声明。当这种形式的变量声明在全局范围或函数的局部范围内声明时,它被称为*存储变量*。当它在类或结构体声明的上下文中声明时,它被称为*存储变量属性*
196+
你可以在全局作用域、函数的局部作用域,类或结构体声明的上下文中定义这种形式的变量声明。当这种形式的变量声明在全局范围或函数的局部范围内声明时,它被称为*存储变量*。当它在类或结构体声明的上下文中声明时,它被称为*存储变量属性*
197197

198-
构造器*表达式*不能出现在协议声明中,但在所有其他上下文中,构造器*表达式*是可选的。也就是说,如果没有构造器*表达式*,变量声明必须包含显式类型注释(`:` *type*)。
198+
构造器*表达式*不能出现在协议声明中,但在其他场景下,构造器*表达式*是可选的。也就是说,如果没有构造器*表达式*,变量声明必须包含显式类型注释(`:` *type*)。
199199

200200
与常量声明一样,如果变量声明省略了构造器*表达式*,则在第一次读取该变量之前必须为其设置一个值。同样,像常量声明一样,如果*变量名*是一个元组模式,则元组中每个项的名称都绑定到构造器*表达式*中的相应值。
201201

0 commit comments

Comments
 (0)