Swift 中的存儲屬性和計算屬性

/// 類中如果有非可選屬性,需要進行處理;要么聲明的時候就直接初始化,要么提供初始化方法來初始化聲明的非可選變量
class Animal: NSObject {
    /// 存儲屬性:值的獲取和存儲通過自身完成,不依賴其他的變量
    // 名字
    var name: String, // 提供初始化方法進行初始化
        age: Int = 0 // 聲明的時候直接初始化
        
    // 可選屬性沒有初始化默認值是 nil
    var address: String?,
        postCode: Int?
    
    /// 計算屬性(讀、寫):不通過變量自己本身進行值的獲取和存儲,值的獲取和存儲依賴其他變量,計算屬性需要聲明類型,同時,計算屬性不能使用 let 關鍵字
    var virtualAge: Int {
        get {
            return age
        }
        // 可以聲明一個變量,也可以不聲明變量,使用 `newValue` 代替
        // set (myValue) {
        //    age = myValue * 4
        //}
        set {
              age = newValue * 4
        }
    }
    
    /// 計算屬性(只讀),計算屬性需要聲明類型
    var actualAge: Int {
        get {
            return age * 8
        }
    }
    
    /// 計算屬性(只讀),計算屬性需要聲明類型
    /// 省略 get
    var virtual: Int {
        return age * 8
    }
    
    /// 計算屬性(只讀),計算屬性需要聲明類型
    /// 省略 return
    var actual: Int {
        age * 8
    }
    
    // 初始化方法
    init(_ nameStr: String) {
        self.name = nameStr
    }
}

計算屬性跟存儲屬性的區(qū)別:

  1. 計算屬性值的獲取跟存儲不是由自身完成的,需要其他的存儲屬性。即計算屬性本身是不能存儲屬性的;
  2. 存儲屬性值的存儲通過自身就可以完成;
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容