我们知道,在swift中,值类型,也就是struct,enum等类型,其内部是可以定义自己的方法的(这点比oc牛逼),然而默认情况下,它里面定义的实例方法中是不可以修改值类型的属性的。
比如下面的例子中
1 | struct Point { |
在方法getOptionXY中更改变量a的值,编译器是会报错的,说明确实不能再实例方法中修改属性值。
为了能够在值类型的实例方法中修改属性值,引入了mutating修饰词,他是用于值类型里的方法前面。
1 | struct Point { |
如上。
另外,在值类型的实例方法中,也可以直接修改self属性值。
1 | enum SwitchState { |
SwitchState枚举定义了一个三个状态的开关,在next实例方法中动态改变self属性的值。