Swift回忆录-属性

Swift回忆录-属性,第1张

概述Swift回忆录-属性 存储属性 存储属性:存储在特定类或结构体实例里的一个常量或变量 延迟存储属性 :当第一次被调用的时候才会计算其初始值的属性。在属性声明前使用 lazy 来标示一个延迟存储属性。 例: class Score{ var totalScore : Int?}class Student{ //存储属性 let name : String? = ni Swift回忆录-属性 存储属性

存储属性:存储在特定类或结构体实例里的一个常量或变量

延迟存储属性 :当第一次被调用的时候才会计算其初始值的属性。在属性声明前使用 lazy 来标示一个延迟存储属性。

例:

class score{    var totalscore : Int?}class Student{    //存储属性    let name : String? = nil    var num : Int?    //延迟存储属性    lazy var score = score()}

延迟存储属性必须声明为变量(var),因为属性的初始值可能在实例构造完成之后才会得到,而常量属性在构造过程完成之前必须要有初始值,因此无法声明成延迟属性

计算属性

计算属性:直观点来说就是给属性提供一个 getter 和一个可选的 setter,来间接获取和设置其他属性或变量的值

例:

class Student{    var core : Int = 0    var totalscore : Int {        get{            return core + 100        }        /** set(newscore){ core = newscore }**/        //备注-1        set{            core = newValue        }    }}var stu = Student()stu.core = 90print(stu.totalscore) //190stu.totalscore = 60print(stu.core) //60

备注-1 :如果计算属性的 setter 没有定义表示新值的参数名,则可以使用默认名称 newValue。

只读计算属性

只读计算属性 : 只有 getter 没有 setter 的计算属性

例:

class Student{    var core : Int = 0    /** 备注-2 var totalscore : Int { get{ return core + 100 } } **/    var totalscore : Int {        return core + 100    }}var stu = Student()stu.core = 90print(stu.totalscore) //190

备注-2 :只读计算属性的声明可以去掉 get 关键字和花括号

属性观察器

属性观察器 : 作用于监控和响应属性值的变化,Swift中提供了两个观察器:

willSet :新的值被设置之前调用 dIDSet :新的值被设置之后立即调用

willSet 观察器会将新的属性值作为常量参数传入,如果不为该参数指定名称,可使用默认名称newValue

同样,dIDSet观察器会将旧的属性值作为参数传入,如果不为该参数指定名称,可使用默认名称oldValue

例:

class Student{    var totalscore : Int = 10{        willSet(newTotalscore){            print("willSet:\(newTotalscore)")        }        dIDSet{            print("dIDSet:\(oldValue)")        }    }}var stu = Student()stu.totalscore = 100//"willSet:100\n"//"dIDSet:0\n"print(stu.totalscore) //100
总结

以上是内存溢出为你收集整理的Swift回忆录-属性全部内容,希望文章能够帮你解决Swift回忆录-属性所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1063930.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存