'mutating'은 Swift에서 구조체('struct') 내부에서 메서드가 자신을 수정할 수 있는지를 나타내는 특별한 키워드입니다.
기본적으로 구조체와 열거형은 값 타입이므로 해당 인스턴스의 프로퍼티를 변경하려면 메서드가 '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: 10, y: 20)
print("Before move: \(point)") // Before move: Point(x: 10, y: 20)
point.moveBy(x: 5, y: 5)
print("After move: \(point)") // After move: Point(x: 15, y: 25)
클래스는 값을 변경가능하지만 스트럭트는 불가능합니다.
스트럭트는 값을 그냥 출력하는것은 문제가 되지 않지만, 스트럭트가 가지고 있는 값을 변경하려고 하는 경우에는 에러가 발생합니다.
클래스는 참조 타입. 스트럭트는 값 타입.
참고(출처) : 개발하는 정대리, 야곰(Swift 5)
저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!