跳到主要内容

Swift mutating关键字的使用?

参考答案:

在 Swift 中,mutating 关键字用于在结构体(struct)或枚举(enum)的方法中表明该方法会修改其所属实例的状态。由于结构体和枚举在 Swift 中是值类型,它们默认是不可变的,这意味着当你将一个结构体或枚举传递给一个函数或方法时,它会被复制,而原始实例不会改变。但如果你需要在方法内部修改结构体或枚举的属性,你需要将该方法标记为 mutating

下面是一个使用 mutating 关键字的例子:

struct Point {
    var x: Int
    var y: Int
    
    mutating func moveBy(x deltaX: Int, y deltaY: Int) {
        x += deltaX
        y += deltaY
    }
}

var point = Point(x: 1, y: 1)
point.moveBy(x: 2, y: 3) // 这里会修改 point 实例的 x 和 y 属性
print(point) // 输出 Point(x: 3, y: 4)

在这个例子中,Point 结构体有一个 moveBy(x:y:) 方法,它使用 mutating 关键字标记。这个方法会修改 Point 实例的 xy 属性。当我们调用 point.moveBy(x: 2, y: 3) 时,point 实例的 xy 属性会被更新。

需要注意的是,mutating 关键字只能用于结构体和枚举的方法中,不能用于类(class)的方法。类在 Swift 中是引用类型,其属性默认就是可变的,不需要 mutating 关键字来声明。