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
只读计算属性
只读计算属性 : 只有 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中提供了两个观察器:
例:
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
原文地址:https://www.jb51.cc/swift/321828.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。