結構體、枚舉和類定義靜態屬性

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,這與結構體和枚舉的聲明不同。我們對上述說明進行了歸納,見下表。

提示 在靜態計算屬性中不能訪問實例屬性(包括存儲屬性和計算屬性),但可以訪問其他靜態屬性。在實例計算屬性中能訪問實例屬性,也能訪問靜態屬性。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容