Swift 类与结构体:属性、方法、初始化器及访问控制详解
1. 类与结构体定义及计算属性
类和结构体的定义大致相同,区别仅在于使用 class
或 struct
关键字来定义。我们对计算属性的读写操作与存储属性相同,类或结构体外部的代码无需知道该属性是计算属性。
以下是一个 EmployeeStruct
结构体的示例:
var f = EmployeeStruct(firstName: "Jon", lastName: "Hoffman",
salaryYear: 39000)
print(f.salaryWeek) // 输出 750.00
f.salaryWeek = 1000
print(f.salaryWeek) // 输出 1000.00
print(f.salaryYear) // 输出 52000.00
在这个例子中,设置 salaryWeek
或 salaryYear
属性会改变两者返回的值。计算属性对于提供同一数据的不同视图非常有用,例如存储长度值时,可以用厘米存储,再通过计算属性计算米、毫米和千米的值。
2. 属性观察器
属性观察器会在属性值被设置时调用。我们可以为任何非延迟存储属性添加属性观察器,也可以通过在子类中重写属性,为继承的存储或计算属性添加属性观察器。
Swift 中有两个属性观察器: willSet
和