跳到主要内容

Swift中的mutating作用?

参考答案:

在 Swift 中,mutating 关键字用于在类的实例方法中修改类的实例属性。当你尝试在一个类的实例方法中修改一个实例属性(即非计算属性)时,Swift 默认会阻止你这样做,因为这可能会违反类的封装性。为了允许在实例方法中修改实例属性,你需要使用 mutating 关键字。

以下是一个使用 mutating 的例子:

class Person {
    var name: String
    var age: Int

    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }

    mutating func incrementAge() {
        age += 1
    }
}

let person = Person(name: "Alice", age: 30)
person.incrementAge() // 使用mutating关键字,可以在实例方法中修改age属性
print(person.age) // 输出 31

在这个例子中,Person 类有一个实例属性 age。我们在类的方法 incrementAge() 中尝试修改 age 属性的值。由于 age 是一个实例属性,我们不能直接在实例方法中修改它,所以我们需要使用 mutating 关键字来告诉 Swift 我们打算在方法内部修改实例的属性。

注意,只有实例方法才能使用 mutating 关键字。类方法(使用 class 关键字定义的方法)不能修改实例属性,因此不能使用 mutating 关键字。