類變數

定義在類中的變數稱為類變數。類變數的值可在定義時即給定,也可用init(_ input: Type)初始化器在生成類實例時從輸入中給定。前種方法會先於init()執行,即如果init()中包含該變數,則初始化後該變數為init()中的值。

class test {
    var a = 0
    
    init(_ a: Int) {
        print(self.a)
        self.a = a
    }
}

print(test(1).a) //輸出0 1

除了使用init(),亦可先在定義變數時即賦值,再在函數中用類似的方法改變類變數的值。

class test {
    var a = 0
    
    func assignment() {
        self.a = 1
    }
}

let c = test()
c.assignment()
print(c.a) //輸出1

類似於init(),函數也可以把輸入的參數賦值給類變數。

class test {
    var a = 0
    
    func assignment(_ a: Int) {
        self.a = a
        change()
        print(a)
    }
    
    func change() {
        a = 3
    }
}

let c = test()
c.assignment(1) //輸出1
print(c.a) //輸出3

但要注意的是,如果函數的參數與類變數同名,那麼在函數中,該變數名為局域變數而非類變數,因此想在該函數中使用類變數時須用self.var來引用。即在局域變數作用域內,局域變數會代替同名全局變數。

留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *