Swift 计算属性和存储属性

  • 计算属性,仅用于存储值

  • 存储属性,用于计算,可以理解为该属性的值通过 getter 获取,通过 setter 赋值,其中 getter 是必须的,setter 是可选的

作用范围:计算属性可以用于 类、结构体、枚举中,存储属性仅可以用于 类、结构体 中,换言之:存储属性不能被用于枚举中

声明:计算属性仅可以用 var 关键字声明,存储属性可以用 letvar 声明

举例:

  • 存储属性:
class cls {
    
    var a = 1
    var b = {
        return "hi"
    }()
}

a 是直接赋值的计算属性
b 是通过调用闭包获取返回值赋值的

  • 计算属性
class cls2 {
    
    let m = 10
    
    var c_store = 0;
    
    var a: Int {
        return self.m + 1
    }
    
    var b: Int {
        
        get {
            return self.m + 2
        }
        
    }
    
    var c: Int {
        
        get {
            
            return self.c_store + 1
        }
        
        set(num) {
            self.c_store += num
        }
    }
}

其中 a, b, c 都是计算属性

a 和 b 都是只有一个 getter, 其中 a 省略了 get{}
c 则是包括 gettersetter

你可能感兴趣的:(Swift 计算属性和存储属性)