본문 바로가기
🍎 Swift/iOS 학습 노트

[Swift🍎] Struct&Enum에서 mutating의 역할

by 솔비님 2025. 2. 19.

오랜만에 강의를 돌려보던 중 mutating이라는 생소한 것을 봤다

그래서 좀 찾아봄

 

 

mutating이란?

값  타입인 구조체(struct)와 열거형(enum)에서 인스턴스의 프로퍼티를 메서드 내부에서 변경할 수 있음

 

 

예를 들면 Int타입의 변수 count의 값에 1씩 추가하는 함수 increment를 만든다고 가정하자

 

이 코드에서 Struct(구조체)인 Counter는 값 타입(Value Type)이므로, 인스턴스가 복사 되어 전달된다

즉, 구조체 내부의 인스턴스는 불변 메서드로 간주된다(immutable)

self는 기본적으로 변경할 수 없는 값 타입이므로 내부 프로퍼티를 수정할 수 없다

 

 

mutating 키워드를 사용하게 되면 self를 변경할 수 있는 메서드가 되어 count 프로퍼티를 수정할 수 있다

→ count에 +1이 잘 되어 출력된다

 

 

 

반면 class는 참조타입이므로 self 값 변경이 가능해 mutating이 필요없다

여기서 struct와 class의 차이를 다시 한 번 알 수 있다