struct에서의 'mutating'

moonazn·2025년 4월 9일

Swift

목록 보기
5/11

struct의 내부 메소드에서 struct의 data(내부 프로퍼티)를 수정하려면 mutating 키워드를 선언해야 한다.

만약 하지 않는다면❓

<error 이유>

struct = 값 타입⭐️
값 타입 인스턴스의 프로퍼티 변경 시 원본 값은 변경되지 않고 인스턴스를 복사해서 변경한다.
즉, 원본 값은 그대로이기 때문에 수정 사항 반영이 되지 않는다.

🧠 메모리 구조 관점에서 보면..

struct Counter {
    var count = 0

    func increase() {
        count += 1  // ❌ 컴파일 에러
    }
}

var counter = Counter()
counter.increase()
  1. counter는 값 타입 → stack에 저장됨

  2. increase()를 호출하면, counter의 복사본이 함수 안에 전달

  3. 복사본 내부의 count += 1 → 복사본만 바뀜, 원본은 그대로

  4. 함수 끝나면 복사본은 사라짐

    📌 즉, 아무리 바꿔도 원본 데이터에는 아무런 변화가 없음!

따라서 Swift는 이러한 수정을 막고, mutating 키워드를 통해 의도를 명확히 표현하도록 강제한다.
(언어 설계적 안전장치🔒)

profile
개발 공뷰

0개의 댓글