Search
Duplicate

(Swift) Struct내부 메서드로 내부 변수 변경하기

간단소개
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
Swift
Scrap
태그
9 more properties

Swift Struct의 특징

Swift에서 Struct와 Class는 많은 차이가 있다. 차이에 대해 조금 더 알고 싶다면 아래 링크를 보자!
Struct를 쓸 때 가장 중요한 것 중 하나는 일반적인 내부 메서드로 내부 변수를 변경할 수 없다는 것이다. 아래 예제를 보자
// error!!! let name: String var citizens: [String] var resources: [String: Int] ... func harvestRice() { resources["Rice"] = 100 } }
Swift
복사
내부 변수인 resources arr의 값을 넣어주는함수 harvestRice()를 작성했는데 에러가 발생한다. 그렇다면 struct 내부 메서드로는 내부 변수를 바꿀 방법이 없을까?
일반적으로 Struct의 내부는 immutable. 즉, 수정 불가능한 개체이다. 함수 앞에 특별한 장치가 필요하다. 바로 mutating 키워드이다. 아래 예제를 보자.
// OK!! can change state of struct mutating func harvestRice() { resources["Rice"] = 100 }
Swift
복사
이제 우리는 mutating키워드를 활용해서 Struct내부 메서드를 활용해서 Struct의 내부 변수를 변경할 수 있다!