屬性
存儲屬性
最簡單情況下,作為特定類和結構體實例一部分的常量或者變量
常量結構體實例的存儲屬性
不能修改常量結構體實例的屬性,但是類的可以
類似于const修飾指針
延遲存儲屬性
在第一次使用時才進行計算,通過在聲明前標注lazy來表示,且必須聲明為var
存儲屬性與實例變量
在OC中,可以使用propery和類里面定義兩種方式聲明一個屬性,Swift中不再有
計算屬性
實際并不存儲值,但提供一個讀取器getter
和一個可選的設置器setter
來間接得到和設置其他的屬性和值
簡寫設置器聲明
不為設置器將要被設置的值定義一個名字,默認被命名為newValue
只讀計算屬性
去掉getter,并且去掉其他大括號
屬性觀察者
willSet、didSet
全局和局部變量
都可以擁有讀取器、設置器、觀察器
類型屬性
static
關鍵字修飾,同樣可以擁有讀取器、設置器、觀察器
使用類來訪問,不能使用實例訪問
方法
實例方法
在實例方法中修改值類型
默認情況下,值類型屬性不能被自身的實例方法修改,如果要改,可以選擇將這個方法異變,使用mutating
關鍵是對函數進行修飾
在異變方法里指定自身
struct Point {
var x = 0.0, y = 0.0
mutating func moveBy(x deltaX: Double, y deltaY: Double) {
self = Point(x: x + deltaX, y: y + deltaY)
}
}
類型方法
子類對類型方法重寫的使用使用
class
關鍵字修飾
下標
類、結構體和枚舉可以定義下標,可以作為訪問集合、列表或者序列成員元素的快捷方式
可以為一個類型定義多個下標,并且下標會基于傳入的索引值的類型選擇合適的下標重載使用
下標的語法
下標允許通過實例名后面的方括號內寫一個或多個值對該類的實例進行查詢。語法類似于實例方法和計算屬性。與實例方法不同的是,下標可以是讀寫也可以是只讀的。
subscript(index: Int) -> Int {
get {
// return an appropriate subscript value here
}
set(newValue) {
// perform a suitable setting action here
}
}
下標用法
下標選項
可以接收任意數量的輸入形式參數,并且這些輸入形式參數可以是任意類型。下標也可以返回任意類型。下標可以使用變量形式參數和可變形式參數,但是不能使用輸入輸出形式參數或者提供默認形式參數。