|
1 | 1 | # 构造过程
|
2 |
| -设置类型的初始值并执行一次性构造过程。 |
| 2 | +设置类型中存储属性的初始值并执行一次性构造过程。 |
3 | 3 |
|
4 | 4 | *构造过程*是使用类、结构体或枚举等实例之前的准备过程。这个过程包括为该实例的每个存储属性设置初始值,并执行任何其他必要的设置或构造过程,以确保新实例在使用前已经完成正确的构造。
|
5 | 5 |
|
6 |
| -你可以通过定义*构造器*来实现这个构造过程,它就像是用来创建特定类型新实例的特殊方法。与Objective-C构造器不同,Swift构造器不返回值,它们的主要作用是确保新类型实例在首次使用前被正确构造。 |
| 6 | +你可以通过定义*构造器*来实现这个构造过程,它就像是用来创建特定类型新实例的特殊方法。与Objective-C构造器不同,Swift构造器没有返回值,它们的主要作用是确保类型的新实例在首次使用前被正确构造。 |
7 | 7 |
|
8 |
| -类的实例在被释放之前,可以通过*析构器*进行任何自定义清理操作。想了解析构器的更多内容,请参见 <doc:析构过程>. |
| 8 | +类的实例可以通过实现*析构器*来执行它释放之前自定义的清理工作。想了解析构器的更多内容,请参见 <doc:析构过程>. |
9 | 9 |
|
10 | 10 | ## 存储属性的初始赋值
|
11 | 11 |
|
12 |
| -类和结构体*必须*在其实例被创建时为所有的存储属性设置一个适当的初始值。存储属性不能处于不确定的状态。 |
| 12 | +创建类和结构体的实例时,*必须*为它们所有的存储属性设置一个适当的初始值。存储属性不能处于不确定的状态。 |
13 | 13 |
|
14 | 14 | 你可以在构造器中为存储属性设置初始值,或者在定义属性时赋予默认值。以下部分将会详细介绍这两种方法。
|
15 | 15 |
|
@@ -67,7 +67,7 @@ print("The default temperature is \(f.temperature)° Fahrenheit")
|
67 | 67 | ```
|
68 | 68 | -->
|
69 | 69 |
|
70 |
| -这个结构体定义了一个不带形参的构造器 `init`,并在里面将存储型属性 `temperature` 的值初始化为 `32.0`(华氏温度下水的冰点)。 |
| 70 | +这个结构体只定义了一个不带形参的构造器 `init`,并在里面将存储型属性 `temperature` 的值初始化为 `32.0`(华氏温度下水的冰点)。 |
71 | 71 |
|
72 | 72 | ### 默认属性值
|
73 | 73 |
|
@@ -95,7 +95,7 @@ struct Fahrenheit {
|
95 | 95 |
|
96 | 96 | ## 自定义构造过程
|
97 | 97 |
|
98 |
| -你可以通过输入形参和可选属性类型,或在初始化期间分配常量属性来定制初始化过程,这些都将在后面章节中提到。 |
| 98 | +你可以自定义构造过程,比如提供输入的形参、可选属性类型或者给常量属性赋值,这些都将在后面章节中提到。 |
99 | 99 |
|
100 | 100 | ### 形参的构造过程
|
101 | 101 |
|
@@ -141,7 +141,7 @@ let freezingPointOfWater = Celsius(fromKelvin: 273.15)
|
141 | 141 | ```
|
142 | 142 | -->
|
143 | 143 |
|
144 |
| -第一个构造器拥有一个构造形参,其实参标签为 `fromFahrenheit`,形参命名为 `fahrenheit`;第二个构造器也拥有一个构造形参,其实参标签为 `fromKelvin`,形参命名为 `kelvin`。这两个构造器都将单一的实参转换成摄氏温度值,并保存在属性 `temperatureInCelsius` 中。 |
| 144 | +第一个构造器只拥有一个构造形参,其实参标签为 `fromFahrenheit`,形参命名为 `fahrenheit`;第二个构造器也拥有一个构造形参,其实参标签为 `fromKelvin`,形参命名为 `kelvin`。这两个构造器都将单一的实参转换成摄氏温度值,并保存在属性 `temperatureInCelsius` 中。 |
145 | 145 |
|
146 | 146 | <!--
|
147 | 147 | TODO: I need to provide an example of default values for initializer parameters,
|
@@ -324,7 +324,7 @@ cheeseQuestion.response = "Yes, I do like cheese."
|
324 | 324 | ```
|
325 | 325 | -->
|
326 | 326 |
|
327 |
| -对调查问题的回答在问题被问到之前是未知的,因此 `response` 属性被声明为 `String?` 类型,即“可选的 `String` ”。当一个新的 `SurveyQuestion` 实例被初始化时,它会自动被赋予默认值 `nil`,表示“尚无字符串”。 |
| 327 | +对调查问卷问题的答案,唯有提问后方能揭晓,因此 `response` 属性被声明为 `String?` 类型,即“可选的 `String` ”。当一个新的 `SurveyQuestion` 实例被初始化时,它会自动被赋予默认值 `nil`,表示“尚无字符串”。 |
328 | 328 |
|
329 | 329 | ### 构造过程中常量属性的赋值
|
330 | 330 |
|
|
0 commit comments