Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.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,我正在努力理解初始授权代表团的目的是什么。我目前正在从《大书呆子牧场》一书中学习斯威夫特,并遇到了以下代码: init (region: String, population: Int, stopLights: Int) { self.region = region self.population = population numberOfStoplights = stopLights } init (population: Int, stopLights: Int {

我正在努力理解初始授权代表团的目的是什么。我目前正在从《大书呆子牧场》一书中学习斯威夫特,并遇到了以下代码:

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

init (population: Int, stopLights: Int {
    self.init(region: “N/A”, population: population, stopLights: stopLights)
}

这让我很困惑。如果初始化实例的全部目的是给它一个值,那么为什么要初始化它两次呢?

第二个init()只是用不同参数初始化类的另一种方法。在本例中,如果区域未知,您仍然可以使用区域的默认值“N/a”初始化类。

第二个init()只是使用不同参数初始化类的另一种方法。在本例中,如果区域未知,您仍然可以使用区域获得默认值“N/a”来初始化类。

根据Apple Developer库:

初始化者可以调用其他初始化者来执行实例初始化的一部分。此过程称为初始值设定项委派,可避免在多个初始值设定项之间重复代码


根据苹果开发者库:

初始化者可以调用其他初始化者来执行实例初始化的一部分。此过程称为初始值设定项委派,可避免在多个初始值设定项之间重复代码


我不确定我是否仍然理解它。在你的例子中,如果我们想让区域为“N/A”,如果它碰巧是未知的,那么我们不能在开始时将其初始化为“N/A”吗?很难说没有看到你描述的类的完整代码。更好的示例可能是接受数据库id的初始值设定项,因此在该初始值设定项中,将查询数据库,并将生成的区域、人口和红绿灯信息传递给带有这三个参数的默认初始值设定项。我不确定是否仍能理解它。在你的例子中,如果我们想让区域为“N/A”,如果它碰巧是未知的,那么我们不能在开始时将其初始化为“N/A”吗?很难说没有看到你描述的类的完整代码。更好的示例可能是接受数据库id的初始值设定项,因此在该初始值设定项中,将查询数据库,并将生成的区域、人口和红绿灯信息传递给具有这三个参数的默认初始值设定项。