swift에서 mutating
키워드는 구조체 struct
나 열거형 enum
내에서 인스턴스의 프로퍼티를 수정할 수 있는 메서드를 정의할 때 사용된다.
기본적으로 구조체
와 열거형
은 값
타입이기 때문에 인스턴스 메서드는 인스턴스의 프로퍼티를 직접 수정할 수 없다.
mutating
키워드를 사용하면 이를 가능하게 할 수 있다.
struct Point{
var x : Int
var y : Int
var z : String
// 사용자 정의 Initializer
init(x:Int, y:Int){
self.x = x
self.y = y
self.z = "for test"
}
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)
print(point)
// Point(x:3, y:4, z:"for test")