初始化器委派的重点是什么?

时间:2016-02-16 04:44:05

标签: swift initialization

我很难理解初始化程序委员会的意义。我目前正在从Big Nerd Ranch书中学习Swift,并且遇到了以下代码:

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)
}

这对我来说非常困惑。如果初始化一个实例的全部要点是给它一个值,那么为什么要将它初始化两次呢?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

根据Apple开发者库:

  

初始化程序可以调用其他初始化程序来执行实例初始化的一部分。此过程称为初始化程序委派,可避免跨多个初始化程序复制代码。

https://developer.apple.com/library/mac/documentation/Swift/Conceptual/Swift_Programming_Language/Initialization.html#//apple_ref/doc/uid/TP40014097-CH18-ID215