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
实例的 x
和 y
属性。当我们调用 point.moveBy(x: 2, y: 3)
时,point
实例的 x
和 y
属性会被更新。
需要注意的是,mutating
关键字只能用于结构体和枚举的方法中,不能用于类(class
)的方法。类在 Swift 中是引用类型,其属性默认就是可变的,不需要 mutating
关键字来声明。