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
    }
}

计算属性跟存储属性的区别:

  1. 计算属性值的获取跟存储不是由自身完成的,需要其他的存储属性。即计算属性本身是不能存储属性的;
  2. 存储属性值的存储通过自身就可以完成;
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容