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
关键字。