为类、结构体以及枚举添加方法
2021-10-05 本文已影响0人
一个栗
实例方法
- 实例方法是属于特定类实例、结构体实例或者枚举实例的函数。他们为这些实例提供功能性,要么通过提供访问和修改实例属性的方法,要么通过提供与实例目的相关的功能。
实例方法 - self
- 每一个类的实例都隐含一个叫做 self 的属性,它完完全全与实例本身相等。你可以使用 self 属性来在当前实例当中调用它自身的方法。
- 实际上,你不需要经常在代码中写 self。如果你没有显示地写出 self, Swift 会在你于方法中使用已知属性或者方法的时候假定你是调用了当前实例中的属性或者方法。
- 例外就是当一个实例方法的形式参数名与实例中某个属性拥有相同名字的时候。在这种情况下,形式参数名具有优先权,并且调用属性的时候使用更加严谨的方式就很有必要了。你可以使用 self 属性来区分形式参数名和属性名。
在实例方法中修改属性
- 结构体和枚举是值类型。默认情况下,值类型属性不能被自身的实例方法修改。
- 你可以选择在 func 关键字前放一个 mutating 关键字来指定方可以修改属性。
在 mutating 方法中赋值给 self
- Mutating 方法可以指定整个实例给隐含的 self 属性。
枚举的 mutating 方法
- 枚举的异变方法可以设置隐含的 self 属性为相同枚举里的不同成员。
类型方法
- 通过在 func 关键字之前使用 static 关键字来明确一个类型方法。类同样可以使用 class 关键字来允许子类重写父类对类型方法的实现。