Swift的mutating关键字修饰方法是为了能在该方法中修改struct或是enum的变量
struct
是不能在方法里随意的改变自己的成员变量的,所以必须要用mutating
关键词来修饰。
class
是不需要mutating
修饰符,因为class
可以随意更改自己的成员变量。
protocol Vehicle {
var numberOfWheels: Int {get}
var color: UIColor {get set}
mutating func changeColor()
}
struct MyCar: Vehicle {
var numberOfWheels: Int
var color: UIColor = .blue
mutating func changeColor() {
color = .red
}
}
如果不加mutating
修饰符的话,会编译不通过。