在Swift中初始化类的首选方法

时间:2014-11-02 04:40:03

标签: class swift initialization init

在学习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

为什么我会使用一种方法而不是另一种方法?

2 个答案:

答案 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