@@ -178,7 +178,7 @@ print("The second number is \(secondNumber).")
178
178
179
179
* 变量声明* 会在你的程序中引入一个具名的变量值,并使用 ` var ` 关键字进行声明。
180
180
181
- 变量声明有多种形式,用于定义各种有名称的、可变的值,包括存储变量和计算变量及属性、存储变量和属性观察者,以及静态变量属性。使用哪种形式取决于变量声明的范围以及你打算声明的变量类型 。
181
+ 变量声明有多种形式,用于定义各种有名称的、可变的值,包括存储变量和计算变量及属性、存储变量和属性观察者,以及静态变量属性。使用哪种形式取决于变量声明的作用域以及你打算声明的变量类型 。
182
182
183
183
> 注意:
184
184
> 你还可以在协议声明的上下文中声明属性,参见 < doc:Declarations#Protocol-Property-Declaration > 。
@@ -193,11 +193,11 @@ print("The second number is \(secondNumber).")
193
193
var < #variable name#> : < #type #> = < #expression #>
194
194
```
195
195
196
- 你可以在全局作用域、函数的局部作用域,类或结构体声明的上下文中定义这种形式的变量声明。当这种形式的变量声明在全局范围或函数的局部范围内声明时 ,它被称为* 存储变量* 。当它在类或结构体声明的上下文中声明时,它被称为* 存储变量属性* 。
196
+ 你可以在全局作用域、函数的局部作用域,类或结构体声明的上下文中定义这种形式的变量声明。当这种形式的变量声明在全局作用域或函数的全局作用域内声明时 ,它被称为* 存储变量* 。当它在类或结构体声明的上下文中声明时,它被称为* 存储变量属性* 。
197
197
198
198
构造器* 表达式* 不能出现在协议声明中,但在其他场景下,构造器* 表达式* 是可选的。也就是说,如果没有构造器* 表达式* ,变量声明必须包含显式类型注释(` : ` * type* )。
199
199
200
- 与常量声明一样,如果变量声明省略了构造器* 表达式* ,则在第一次读取该变量之前必须为其设置一个值。同样,像常量声明一样, 如果* 变量名* 是一个元组模式,则元组中每个项的名称都绑定到构造器* 表达式* 中的相应值。
200
+ 与常量声明一样,如果变量声明省略了构造器* 表达式* ,则在第一次读取该变量之前必须为其设置一个值。同样,如果* 变量名* 是一个元组模式,则元组中每个项的名称都绑定到构造器* 表达式* 中的相应值。
201
201
202
202
如其名称所示,存储变量或存储变量属性的值存储在内存中。
203
203
@@ -216,7 +216,7 @@ var <#variable name#>: <#type#> {
216
216
}
217
217
```
218
218
219
- 你可以在全局范围、函数的局部范围或类 、结构体、枚举或扩展声明的上下文中定义这种形式的变量声明。当这种形式的变量声明在全局范围或函数的局部范围内声明时 ,它被称为* 计算变量* 。当它在类、结构体或扩展声明的上下文中声明时,它被称为* 计算属性* 。
219
+ 你可以在全局作用域、函数的全局作用域或类 、结构体、枚举或扩展声明的上下文中定义这种形式的变量声明。当这种形式的变量声明在全局作用域或函数的全局作用域内声明时 ,它被称为* 计算变量* 。当它在类、结构体或扩展声明的上下文中声明时,它被称为* 计算属性* 。
220
220
221
221
getter 用于读取值,setter 用于写入值。setter 子句是可选的,当只需要 getter 时,可以省略两个子句,直接返回请求的值,参见 < doc:Properties#Read-Only-Computed-Properties > 。但如果提供了 setter 子句,则必须同时提供 getter 子句。
222
222
@@ -241,7 +241,7 @@ var <#variable name#>: <#type#> = <#expression#> {
241
241
}
242
242
```
243
243
244
- 你可以在全局范围、函数的局部范围或类或结构体声明的上下文中定义这种变量声明形式。当这种形式的变量声明在全局范围或函数的局部范围内声明时 ,观察者被称为* 存储变量观察者* 。当它在类或结构体声明的上下文中声明时,观察者被称为* 属性观察者* 。
244
+ 你可以在全局作用域、函数的全局作用域或类或结构体声明的上下文中定义这种变量声明形式。当这种形式的变量声明在全局作用域或函数的全局作用域内声明时 ,观察者被称为* 存储变量观察者* 。当它在类或结构体声明的上下文中声明时,观察者被称为* 属性观察者* 。
245
245
246
246
你可以为任何存储属性添加属性观察者。你还可以通过在子类中重写属性,为任何继承属性(无论是存储的还是计算的)添加属性观察者,参见 < doc:Inheritance#Overriding-Property-Observers > 。
247
247
@@ -1704,7 +1704,7 @@ protocol <#protocol name#>: <#inherited protocols#> {
1704
1704
}
1705
1705
```
1706
1706
1707
- 协议声明可以出现在全局范围内 ,或嵌套在非泛型类型或非泛型函数内部。
1707
+ 协议声明可以出现在全局作用域内 ,或嵌套在非泛型类型或非泛型函数内部。
1708
1708
1709
1709
协议的主体包含零个或多个* 协议成员声明* ,这些声明描述了任何采用该协议的类型必须满足的遵循性要求。特别是,协议可以声明遵循的类型必须实现某些属性、方法、构造器和下标。协议还可以声明特殊类型的类型别名,称为* 关联类型* ,可以指定协议中各种声明之间的关系。协议声明不能包含类、结构体、枚举或其他协议声明。* 协议成员声明* 将在下面详细讨论。
1710
1710
@@ -2782,7 +2782,7 @@ Swift 定义了许多优先级组,以配合 Swift 标准库提供的运算符
2782
2782
2783
2783
- ` required ` :将此修饰符应用于类的指定或便利构造器,以指示每个子类必须实现该构造器。子类对该构造器的实现也必须标记为 ` required ` 修饰符。
2784
2784
2785
- - ` static ` :将此修饰符应用于结构体、类、枚举或协议的成员,以指示该成员属于类型本身,而不是该类型实例的成员。在类声明的范围内 ,将 ` static ` 修饰符应用于成员声明上,与在该成员声明上写 ` class ` 和 ` final ` 修饰符具有相同的效果。然而,类的常量类型属性是一个例外:在这种情况下,` static ` 具有其通常的、非类相关的含义,因为在这些声明上不能使用 ` class ` 或 ` final ` 。
2785
+ - ` static ` :将此修饰符应用于结构体、类、枚举或协议的成员,以指示该成员属于类型本身,而不是该类型实例的成员。在类声明的作用域内 ,将 ` static ` 修饰符应用于成员声明上,与在该成员声明上写 ` class ` 和 ` final ` 修饰符具有相同的效果。然而,类的常量类型属性是一个例外:在这种情况下,` static ` 具有其通常的、非类相关的含义,因为在这些声明上不能使用 ` class ` 或 ` final ` 。
2786
2786
2787
2787
- ` unowned ` :将此修饰符应用于存储变量、常量或存储属性,以指示该变量或属性对作为其值存储的对象具有一个无主引用。如果在对象被释放后尝试访问该变量或属性,将会引发运行时错误。与弱引用类似,属性或值的类型必须是类类型;与弱引用不同,类型是非可选的。有关 ` unowned ` 修饰符的示例和更多信息,请参见 < doc:AutomaticReferenceCounting#Unowned-References > 。
2788
2788
@@ -2806,13 +2806,13 @@ Swift 提供五种访问控制级别:open、public、internal、file private
2806
2806
2807
2807
- ` fileprivate ` :将此修饰符应用于声明,以指示该声明只能被与声明在同一源文件中的代码访问。
2808
2808
2809
- - ` private ` :将此修饰符应用于声明,以指示该声明只能被声明的直接封闭范围内的代码访问 。
2809
+ - ` private ` :将此修饰符应用于声明,以指示该声明只能被声明的直接封闭作用域内的代码访问 。
2810
2810
2811
2811
出于访问控制的目的,扩展的行为如下:
2812
2812
2813
- - 如果同一个文件中有多个扩展,并且这些扩展都扩展了相同的类型,那么所有这些扩展具有相同的访问控制范围 。这些扩展和它们扩展的类型可以在不同的文件中。
2813
+ - 如果同一个文件中有多个扩展,并且这些扩展都扩展了相同的类型,那么所有这些扩展具有相同的访问控制作用域 。这些扩展和它们扩展的类型可以在不同的文件中。
2814
2814
2815
- - 如果扩展与其扩展的类型在同一文件中,则扩展具有与其扩展的类型相同的访问控制范围 。
2815
+ - 如果扩展与其扩展的类型在同一文件中,则扩展具有与其扩展的类型相同的访问控制作用域 。
2816
2816
2817
2817
- 在类型声明中声明的私有成员可以从该类型的扩展中访问。在一个扩展中声明的私有成员可以从其他扩展和扩展类型的声明中访问。
2818
2818
0 commit comments