Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 自定义初始值设定项实际上是如何实现的;初始化";?_Swift_Initialization - Fatal编程技术网

Swift 自定义初始值设定项实际上是如何实现的;初始化";?

Swift 自定义初始值设定项实际上是如何实现的;初始化";?,swift,initialization,Swift,Initialization,目前正在学习Swift,这也是我第一次学习编码。我正在研究初始值设定项,我被自定义初始值设定项的想法所困扰 看看下面的代码,我真的不确定这实际上是如何初始化实例的。将属性的值设置为未初始化的实例是否会导致另一个未初始化的属性 init (region: String, population: Int, stopLights: Int) { self.region = region self.population = population numberOfStoplight

目前正在学习Swift,这也是我第一次学习编码。我正在研究初始值设定项,我被自定义初始值设定项的想法所困扰

看看下面的代码,我真的不确定这实际上是如何初始化实例的。将属性的值设置为未初始化的实例是否会导致另一个未初始化的属性

init (region: String, population: Int, stopLights: Int) {
    self.region = region
    self.population = population
    numberOfStoplights = stopLights
}

感谢您的帮助。谢谢

init
在为对象(结构或类实例)分配内存后被调用。此时对象存在,但其字段(成员变量)包含未知(未定义)值


为了安全和类型一致性,Swift从不允许访问未定义的值。因此,您必须在
init
中为对象的每个字段指定一个值,即使这只是一些“默认”值。可选字段初始化为
nil

我明白了。为了确保我正确地解释了您:1)在初始化之前,该实例的值未定义,编译器无法处理。但是2)在我们使用
init
初始化它之后,该实例将成为未知(未定义)值。尽管此值未知,编译器仍会将其视为可接受的值。@GeoffreySetiawan“未知值”是什么意思?所有属性都在初始值设定项中赋值。@我想我真的不明白这一点。哈因此,
init
将实例
self.region
的值分配给
region
。既然
self.region
将是一个未初始化的值(首先是
init
的整点),那么如何从
init
初始化
region
?对不起…我对斯威夫特真的很陌生,所以你可能得把它放低一点…不,这是另一种方式
self.region
用参数
region
的值初始化
a=b
a
的值更改为
b
。是。我喜欢把
a=b
写成
a← b
。这是一项任务;你没有建立对等关系。