Swift

mutating

Phililip
728x90

안녕하세요.

 

이번에는 mutating 설정에 대해 알아볼게요.

 


Swift에서 구조체(Structure)나 Enumvalue 타입입니다.

 

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

 

Methods — The Swift Programming Language (Swift 5.7)

Methods Methods are functions that are associated with a particular type. Classes, structures, and enumerations can all define instance methods, which encapsulate specific tasks and functionality for working with an instance of a given type. Classes, struc

docs.swift.org

 

 


이번 글은 여기서 마무리.

 

 

 

반응형

'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