Mutating 이란?
5년전에 iOS를 처음 접할때는 Objective-C란 언어를 쓰고 있었다.
Objective-C에는 클래스란 개념이 개념이 없어서 Mutating이란 용어가 없었는데 Swift에는 자바처럼 클래스, 구조체, 열거형이 생기게 되었다.
클래스는 참조 타입이므로 인스턴스 메소드를 이용하여 프로퍼티들의 값을 변경 할 수 있다. 하지만 밸류 타입인 구조체, 열거형은 인스턴스 메소드로 프로퍼티들의 값을 변경 할 수 없는 특징이 있는데, 이는 참조 타입과, 밸류 타입이란것을 생각해 보면 당연한 일일지도 모른다.
구조체나 열거형이 밸류 타입이란것은 이미 자기 자신이 값인데 자기자신을 바꾸라니(?) 어찌보면 이상한 명령일 수 있으나, Mutating이란 키워드는 그것을 가능하게 한다는 것이다.
프로퍼티 변경 불가능한 구조체 부터 살펴 보도록 하자.
xCode님께서 갑자기 화를 내실 것이다..이상한짓 하지말라고…
네…ㅠㅠ 수정하겠습니다
xCode님께서 좋아하시는 코드를 대령 했습니다.
음…좋다…통과
위의 코드는 Enum에서도 똑같이 적용된다.