定義在類中的變數稱為類變數。類變數的值可在定義時即給定,也可用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來引用。即在局域變數作用域內,局域變數會代替同名全局變數。