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

Swift回忆录-属性

发布时间:2020-12-14 06:19:53 所属栏目:百科 来源:网络整理
导读:Swift回忆录-属性 存储属性 存储属性:存储在特定类或结构体实例里的一个常量或变量 延迟存储属性 :当第一次被调用的时候才会计算其初始值的属性。在属性声明前使用 lazy 来标示一个延迟存储属性。 例: class Score { var totalScore : Int?} class Studen

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 = 90
print(stu.totalScore) //190
stu.totalScore = 60
print(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 = 90
print(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:100n"
//"didSet:0n"
print(stu.totalScore) //100

(编辑:李大同)

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

    推荐文章
      热点阅读