swift-计算型属性和存储型属性的区别

存储型属性:用于存储一个常量或者变量

class Person1 {
            var name: String = "lili"
            let age: Int = 10

            lazy var p1:Person1 = Person1()     }

// 用lazy 修饰的,是延迟加载,必须用 var 修饰
// 用 var 修饰的 name,可以在外界改变值,而用let 修
// 饰的属性age,外面不可以改变其值

**简单来说,存储型属性主要就是用来存储值的

计算型属性: 计算性属性不直接存储值,而是用 get / set 来取值 和 赋值,可以操作其他属性的变化.

// get 用来取值
// set 用来赋值

class Person2{
   var weight: Int = 10
   var height: Int = 5

   // age 实现了get 和set 方法,可以在外面给这个属性赋值.
   var age: Int {

    get {
       return height * 3
        }

    set(newValue){  // 或者直接用 newAge
       height = newValue * 5
        }
 }

//如果不实现set 方法,是不能给其赋值的,这种类型的属于只读计算属性.只读计算属性是可以省略get 的,直接返回即可.如 size 属性
 var size: Int{
    return height * 3
    }

//MARK: 计算属性死循环情况
 /*
  计算属性值是不固定的,不能用 let 修饰,只能用 var
  计算型属性不能直接赋值
 */
// 下面的 get 和 set 方法都会导致死循环
  var name: String{

    get {          
     return name // 这里会调用 get 方法
        }

    set {
     name = newValue // 这里调用 set 方法
        }
 }
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值