안녕하세요.
이번에는 mutating 설정에 대해 알아볼게요.
Swift에서 구조체(Structure)나 Enum은 value 타입입니다.
value 타입은 기본적으로 인스턴스 method 안에서 프로퍼티를 수정할 수 없습니다.
여기까지 말했으니... 이번 글의 주제가 뭔지 대충 감이 잡히시겠죠??ㅎㅎ..ㅋㅋㅋ
value 타입의 프로퍼티를 인스턴스 method 안에서 수정할 수 있는 방법이 있기 때문이죠.
바로 mutating과 함께라면!!ㅎㅎ..
어렵지 않으니 바로 예제로 알아볼게요.
Point라는 구조체를 선언하고 moveBy(x:y:) method 안에서 x, y 프로퍼티 값을 수정해보겠습니다.
컴파일하면 에러가 발생합니다. (value 타입의 프로퍼티를 인스턴스 method 안에서 직접 수정하려고 했으니까요!)
이럴 때 인스턴스 method에 mutating 키워드를 붙여주면, 인스턴스 method 안에서도 프로퍼티를 직접 수정할 수 있게 됩니다.
새로운 인스턴스를 만들어서 self 프로퍼티에 할당시켜줄 수도 있어요.
mutating 키워드가 사용되고 있는 곳 중 하나는 String의 append method 입니다.
Swift에서 String은 구조체(=value 타입) 이기 때문에, 기본적으로는 인스턴스 method에서 값을 변경할 수 없지만 mutating 키워드를 붙였기 때문에 값을 변경할 수 있었던 것이죠ㅎㅎ
(간단하게 구현한다면 아마 이런 코드가 되겠죠??)
# 참고
- https://docs.swift.org/swift-book/LanguageGuide/Methods.html#ID239
이번 글은 여기서 마무리.
'Swift' 카테고리의 다른 글
@dynamicMemberLookup (0) | 2023.03.06 |
---|---|
computed property vs method (0) | 2023.01.13 |
@autoclosure (2) | 2022.12.15 |
Optional에서의 map, flatMap (0) | 2022.09.04 |
@inlinable, @usableFromInline (0) | 2022.08.15 |