struct 結構體名 { ①
static var(或let) 存儲屬性 = "xxx" ②
......
static var 計算屬性名 : 屬性數據類型 { ③
get {
return 計算后屬性值
}
set (新屬性值) {
......
}
}
}
enum 枚舉名 { ④
static var(或let) 存儲屬性 = "xxx" ⑤
......
static var 計算屬性名 : 屬性數據類型 { ⑥
get {
return 計算后屬性值
}
set (新屬性值) {
......
}
}
}
class 類名 { ⑦
......
class var 計算屬性名 : 屬性數據類型 { ⑧
get {
return 計算后屬性值
}
set (新屬性值) {
......
}
}
}
上述代碼中,第①行是定義結構體,結構體中可以定義靜態存儲屬性和計算屬性。第②代碼是定義靜態存儲屬性,聲明關鍵字是static,這個屬性可以是變量屬性,也可以是常量屬性。第③行代碼是定義靜態計算屬性,聲明使用的關鍵字是static,計算屬性不能為常量,這里只能是變量。結構體靜態計算屬性也可以是只讀的,語法如下:static var 計算屬性名 : 屬性數據類型 { return 計算后屬性值}第④行是定義枚舉,枚舉中不可以定義實例存儲屬性,但可以定義靜態存儲屬性,也可以定義靜態計算屬性。定義枚舉靜態屬性與定義結構體靜態屬性的語法完全一樣,這里就不再贅述了。第⑦行是定義類,類中可以定義實例存儲屬性,但不可以定義靜態存儲屬性。類中可以定義靜態計算屬性。聲明使用的關鍵字是class,這與結構體和枚舉的聲明不同。我們對上述說明進行了歸納,見下表。
提示 在靜態計算屬性中不能訪問實例屬性(包括存儲屬性和計算屬性),但可以訪問其他靜態屬性。在實例計算屬性中能訪問實例屬性,也能訪問靜態屬性。