[Swift] 구조체(Struct)의 mutating 이란?

Oni·2023년 10월 27일
0

기술면접

목록 보기
3/13
post-thumbnail

1. 구조체(Struct)

구조체는 값(vlaue)타입의 데이터 구조를 정의하는데 사용된다.
또한, 구조체는 복사(copy)되어 전달되고 수정될 때 원본 데이터에 영향을 주지 않는다.
🔗 지난 블로그 참조


2. mutating

Swift에서 구조체(Struct)는 값 타입(value type)이며, 기본적으로 인스턴스의 속성을 변경할 수 없다. 그러나 특정 메서드 내에서 구조체의 속성을 변경하고 싶을 때 mutating 키워드를 사용할 수 있다.

mutating 키워드는 구조체나 열거형(enum) 내에서 선언된 메서드가 해당 구조체의 속성을 수정할 수 있음을 나타낸다. 이렇게 선언된 메서드는 해당 메서드 내에서 구조체의 속성을 수정할 수 있고, 메서드 외부에서도 구조체의 속성을 변경할 수 있게 된다.

예를 들어, 구조체 내에서 mutating 키워드를 사용하여 메서드를 선언할 수 있다.

struct Point {
    var x: Int
    var y: Int

    mutating func moveX(newX: Int) {
        self.x = newX
    }
}

위에서 moveX 메서드는 mutating 키워드를 사용하여 선언되었다. 이 메서드는 구조체의 속성인 x를 변경하고 있으며, 이제 해당 메서드를 사용하여 구조체의 속성을 변경할 수 있다.

var myPoint = Point(x: 1, y: 2)
print(myPoint) // 출력: Point(x: 1, y: 2)

myPoint.moveX(newX: 5)
print(myPoint) // 출력: Point(x: 5, y: 2)

mutating 키워드를 사용하여 구조체의 메서드가 구조체의 속성을 변경할 수 있게 해준다.

profile
하지만 나는 끝까지 살아남을 거야!

0개의 댓글