在学习Swift时,似乎有两种初始化类实例的方法:
// Approach A
class Person {
let first: String = "bob"
let last: String = "barker"
}
let worker = Person()
worker.first
worker.last
// Approach B
class Person2 {
let first2: String
let last2: String
init() {
self.first2 = "bill"
self.last2 = "williams"
}
}
let dealer = Person2()
dealer.first2
dealer.last2
为什么我会使用一种方法而不是另一种方法?
答案 0 :(得分:2)
“如果属性始终采用相同的初始值,请提供默认值,而不是在初始值设定项中设置值。最终结果是相同的,但默认值将属性的初始化与其声明更紧密地联系在一起。它使更短,更清晰的初始化程序,并使您能够从其默认值推断属性的类型。默认值还使您可以更轻松地利用默认初始化程序和初始化程序继承,如本章后面所述。“
摘自:Apple Inc.“The Swift Programming Language。”iBooks。 https://itun.es/us/jEUH0.l
答案 1 :(得分:0)
当我将一个已知的默认值放入变量时,我使用的是第一个版本。我根据我传入init的内容,使用第二个来改变。
所以我上面的首选版本是:
// Approach A
class Person {
let first: String = "bob"
let last: String = "barker"
}
let worker = Person()
worker.first
worker.last
// Approach B
class Person2 {
let first2: String
let last2: String
init(first2: String, last2: String) {
self.first2 = first2
self.last2 = last2
}
}
let dealer = Person2(first2: "bill", last2: "williams")
dealer.first2
dealer.last2