跳到主要内容

Swift 代码中mutaing 的作用是什么?

参考答案:

在 Swift 中,mutating 是一个关键字,它用于在值类型(如结构体和枚举)的方法中表明该方法会修改该值类型的实例本身。由于值类型在 Swift 中是不可变的,除非明确指定,否则你不能直接在它们的方法中修改它们的属性。通过使用 mutating 关键字,你可以告诉 Swift 编译器该方法将修改其实例的状态。

这是 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) // 使用mutating方法修改point的值
print(point) // 输出: Point(x: 3, y: 4)

在这个例子中,Point 是一个结构体,它有一个 moveBy 方法,该方法使用 mutating 关键字进行标记。这个方法修改了 Point 实例的 xy 属性。如果我们没有使用 mutating 关键字,编译器会报错,因为默认情况下,你不能在结构体或枚举的方法中修改其实例的属性。

需要注意的是,mutating 方法不能在常量或 let 绑定的值类型实例上调用,因为常量是不允许修改的。如果你试图这样做,编译器会报错。你只能在变量(使用 var 声明的)实例上调用 mutating 方法。