2016-02-16 24 views
1

我在努力理解初始化程序委托的重点。我目前从大书呆子牧场书学习斯威夫特和下面的代码来:初始化者授权的要点是什么?

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

这是非常混乱给我。如果初始化实例的要点是给它一个值,那么为什么要初始化它两次?

回答

0

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

+0

不知道我还明白。在你的例子中,如果我们想让这个区域在不知道的情况下是“N/A”,那么我们不能在开始时将它初始化为“N/A”吗? –

+0

很难说,如果没有看到你描述的课程的整个代码。一个更好的例子可能是接受数据库ID的初始化程序,因此在该初始化程序中将查询数据库,并将生成的区域,总体和停车灯信息传递给具有这三个参数的默认初始化程序。 – mfessenden