方法是与某些特定类型相关联的函数。类、结构体、枚举都可以定义实例方法和类型方法
实例方法是属于某个特定类、结构体或者枚举类型实例的方法,通过 . 语法调用
类型的每一个实例都有一个隐含属性叫做 self,self 完全等同于该实例本身。可以实例方法中使用self 属性来引用当前实例。
一般情况下是不需要写 self 的,只有在 属性 和 形参 重名的时候需要写来区分,列如:
结构体和枚举是值类型。默认情况下,值类型的属性不能在它的实例方法中被修改。但是可以为这个方法选择 可变(mutating)行为,就可以从其方法内部改变它的属性;并且这个方法做的任何改变都会在方法执行结束时写回到原始结构中。方法还可以给它隐含的 self 属性赋予一个全新的实例,这个新实例在方法结束时会替换现存实例
struct Point {
var x = 0.0
var y = 0.0
mutating func updateX(x:Double) {
self.x = x
}
}
var point = Point(x: 1.1, y: 1.1)
point.updateX(x: 2.2)
print(point)代码中 Point 结构体定义了一个可变方法 updateX(x:),来更新 x,调用时是修改这个点,而不是创建新点
在可变方法中给 self 赋值
定义在类型本身上调用的方法,叫做类型方法,在方法前加上关键字 static,来指定类型方法。类还可以用关键字 class 来允许子类重写父类的方法实现。
用 . 语法来调用
关键字 discardableResult
可以看出没用 discardableResult 时是有警告的,用了就没有了
| 留言与评论(共有 0 条评论) “” |