方法是与特定类型相关联的函数。类,结构和枚举都可以定义实例方法,它们封装了与给定类型的实例一起工作的特定任务和功能。类,结构和枚举也可以定义与类型本身相关联的类型方法。类型方法类似于Objective-C中的类方法。
结构和枚举可以在Swift中定义方法的事实与C和Objective-C有着很大的不同。在Objective-C中,类是唯一可以定义方法的类型。在Swift中,你可以选择是定义一个类,结构还是枚举,还可以灵活地定义你创建的类型的方法。
使用 mutating 关键字修饰方法是为了能在该方法中修改 struct 或是 enum 的变量
1.从实例方法中修改值类型
结构和枚举是值类型。默认情况下,值类型的属性不能从其实例方法中修改。
但是,如果需要修改特定方法中的结构或枚举的属性,则可以选择对该方法进行变异。然后该方法可以在方法中改变(也就是改变)它的属性,并且当方法结束时,它所做的任何改变都被写回到原始结构中。该方法还可以为其隐式self属性指派一个全新的实例,当该方法结束时,这个新实例将替换现有的实例。
您可以通过将该mutating关键字放在该方法的关键字之前来加入此行为func:
2.赋值给自己
3.类方法
实例方法是在特定类的实例上调用的方法。您也可以定义在类本身上调用的方法。这些类的方法称为类方法。通过static在方法的func关键字之前写入关键字来指示类方法。类也可以使用class关键字来允许子类重写超类的该方法的实现。