属性
存储属性
最简单情况下,作为特定类和结构体实例一部分的常量或者变量
常量结构体实例的存储属性
不能修改常量结构体实例的属性,但是类的可以
类似于const修饰指针
延迟存储属性
在第一次使用时才进行计算,通过在声明前标注lazy来表示,且必须声明为var
存储属性与实例变量
在OC中,可以使用propery和类里面定义两种方式声明一个属性,Swift中不再有
计算属性
实际并不存储值,但提供一个读取器getter
和一个可选的设置器setter
来间接得到和设置其他的属性和值
简写设置器声明
不为设置器将要被设置的值定义一个名字,默认被命名为newValue
只读计算属性
去掉getter,并且去掉其他大括号
属性观察者
willSet、didSet
全局和局部变量
都可以拥有读取器、设置器、观察器
类型属性
static
关键字修饰,同样可以拥有读取器、设置器、观察器
使用类来访问,不能使用实例访问
方法
实例方法
在实例方法中修改值类型
默认情况下,值类型属性不能被自身的实例方法修改,如果要改,可以选择将这个方法异变,使用mutating
关键是对函数进行修饰
在异变方法里指定自身
struct Point {
var x = 0.0, y = 0.0
mutating func moveBy(x deltaX: Double, y deltaY: Double) {
self = Point(x: x + deltaX, y: y + deltaY)
}
}
类型方法
子类对类型方法重写的使用使用
class
关键字修饰
下标
类、结构体和枚举可以定义下标,可以作为访问集合、列表或者序列成员元素的快捷方式
可以为一个类型定义多个下标,并且下标会基于传入的索引值的类型选择合适的下标重载使用
下标的语法
下标允许通过实例名后面的方括号内写一个或多个值对该类的实例进行查询。语法类似于实例方法和计算属性。与实例方法不同的是,下标可以是读写也可以是只读的。
subscript(index: Int) -> Int {
get {
// return an appropriate subscript value here
}
set(newValue) {
// perform a suitable setting action here
}
}
下标用法
下标选项
可以接收任意数量的输入形式参数,并且这些输入形式参数可以是任意类型。下标也可以返回任意类型。下标可以使用变量形式参数和可变形式参数,但是不能使用输入输出形式参数或者提供默认形式参数。