Swift将protocol的方法声明为mutating

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修饰符的话,会编译不通过。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容