问:我不明白 Swift 中初始化程序的目的。没有它,一切似乎都一样。
答:总是有一个 init 方法,无论您是自己明确地编写一个方法,还是使用在幕后自动定义的 init 方法。在结构中,它们会自动为您创建一个 init 方法,但您可以创建自己的方法。在类中,您必须定义一个 init 方法,否则它将无法编译。如果您的类是从另一个类继承的,它会继承其 init 方法,因此您可以自动获取一个方法,但您也可以覆盖它。
init 方法是您创建对象的新实例时调用的方法,因此该方法内部发生的事情与首次创建时将发生的事情相同。您可以在此处定义如何设置对象的属性。也许有默认值。也许 init 方法接受设置为属性值的参数,并且它可能会在设置值之前修改它们。
能够自己编写 init 方法的优点是,您可以根据自己的意愿立即自定义该方法,而不必稍后在其他代码行中对您的对象进行更改。