加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift 学习笔记(22)-属性(存储属性/延迟属性)

发布时间:2020-12-14 06:37:07 所属栏目:百科 来源:网络整理
导读:属性有很多类型,比如存储属性:赋值存值的,延迟属性,差不多和 oc 中的懒加载类似,计算属性,类型属性.还有属性观察器等 存储属性 class Person { // 属性由 var 修饰,如果类实例也是 var 修饰,则类实例的属性值可变 var name = "zhangsan" var age = 23 } // v

属性有很多类型,比如存储属性:赋值存值的,延迟属性,差不多和 oc 中的懒加载类似,计算属性,类型属性.还有属性观察器等
存储属性

class Person{
    // 属性由 var 修饰,如果类实例也是 var 修饰,则类实例的属性值可变
    var name = "zhangsan"
    var age = 23

}

//var 修饰类实例,属性值可变,类实例也可以重新赋值

var person1 = Person()
person1.name = "wangwu"
print(person1.name)
person1.name = "张三"
print(person1.name)

person1 = Person()



//let 修饰类实例,var属性值可变,let 修饰的属性值不可变,类实例 不可以重新赋值

let person2 = Person()
person2.name = "zhaoliu"
print(person2.name)
person2.name = "赵六"
print(person2.name)

//let 修饰的类实例不可以重新赋值
//person2 = Person()





//结构体

struct Point {
    var x = 0
    var y = 0

}


//var 修饰结构体实例,类实例也可以重新赋值

var p1 = Point()
p1.x = 20
print(p1.x)
p1.x = 30
print(p1.x)


//let 修饰的结构体实例不可以重新赋值,属性也不可以重新赋值,不管属性是 var 还是 let 修饰,都默认为 let 不能修改

 let p2 = Point()
print(p2.y)

//p2.y = 11
// p2 = Point()

延迟属性
注意观察属性调用的时间(有了 lazy 关键字,只有当属性第一次被调用的时候才会初始化)

class Man{
    var  name = "wangxiao"
// 延迟属性 lazy 前面加 lazy 关键字
   lazy var car = Car(car:"baoma")
}
class Car{
    var car = "dazhong"
    init(car:String) {
        self.car = car
        for i in 1...1000{
            print(i)
        }
    }

}

// 如果 Man 的car 属性不加 lazy,就会立刻执行 car 类中的 for 循环进行初始化
var man = Man()
// 如果加了 lazy 在这里才会初始化 car
//man.car = Car(car: "baoma")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读