스위프트 핵심어 Mutating | 스위프트강좌 Swift

스위프트 핵심어 Mutating 

스위프트에서 구조체와 열거형은 Value Type이기 때문에 생성된 객체의 메소드 안에서 해당 Value Type의 속성값을 바꿀 수 없습니다.그래서 나타난 스위프트 핵심어 Mutating 을 알아보겠습니다.

이런 전제하에서 스위프트 Mutating 핵심어는 해당 Value Type 내의 메소드가 속성값을 바꿀 수 있도록 만듭니다.

애플의 예제를 보겠습니다. 

스위프트 핵심어 Mutating

위 코드에서 Point 구조체는 x와 y 속성값을 가지고 있습니다. 그런데 구조체 내부의 메소드 moveByX를 이용해서 구조체 내부의 속성값을 바꿀 수 있도록 mutating을 함수 앞에 붙여줍니다. 

그럼 다음과 같이 코드를 실행했을 때, 

var somePoint = Point(x: 1.0, y: 2.0)
somePoint.moveByX(1.0, y: 5.0)
print("\(somePoint.x), \(somePoint.y)")

첫 줄의 객체의 속성값 x(1.0)과 y(2.0)이 2.0과 7.0으로 각각 값이 바뀌게 됩니다. 

중요한 것은 mutating 핵심어를 빼면 오류가 발생한다는 것입니다. 왜냐면 mutating 핵심어는 Value Type 내부 속성의 값을 변경하는 것을 가능케 하기 때문인데 mutating을 빼면 그것이 불가능해지기 때문입니다. 

 

답글 남기기