[swift] 구조체의 mutating 메서드와 값 변경

Swift에서 구조체는 값 타입으로, 인스턴스의 속성이나 메서드를 변경하려면 mutating 키워드를 사용해야 합니다. 이 글에서는 구조체의 mutating 메서드를 사용하여 값의 변경에 대해 살펴보겠습니다.

구조체와 값 타입

Swift에서 구조체는 값 타입으로, 변수에 할당될 때는 값이 복사됩니다. 이는 구조체의 속성을 변경하기 위해 mutating 메서드가 필요한 이유입니다.

Mutating 메서드

구조체 내부의 메서드가 자신의 속성을 변경해야 할 때 mutating 키워드를 메서드 선언 앞에 추가해야 합니다. 이렇게 하면 해당 메서드가 구조체의 속성을 변경할 수 있게 됩니다.

struct Point {
    var x = 0.0, y = 0.0

    mutating func moveBy(x deltaX: Double, y deltaY: Double) {
        x += deltaX
        y += deltaY
    }
}

위 예시에서 moveBy(x:y:) 메서드는 mutating 키워드로 선언되어 있으며, 메서드 내에서 속성 xy를 변경하고 있습니다.

사용 예시

var point = Point(x: 1.0, y: 1.0)
print(point) // Point(x: 1.0, y: 1.0)

point.moveBy(x: 2.0, y: 3.0)
print(point) // Point(x: 3.0, y: 4.0)

위 예시에서 moveBy(x:y:) 메서드를 통해 point의 위치가 변경되었음을 확인할 수 있습니다.

결론

구조체의 값을 변경하기 위해서는 mutating 키워드가 필요하며, 이를 통해 구조체의 메서드 내에서 속성을 변경할 수 있습니다.

이것은 Swift에서 구조체의 값 타입 특성을 유지하기 위한 필수적인 규칙이며, 값의 변경이 필요한 경우 mutating 키워드를 이용하여 해당 동작을 지원하게 됩니다.

더 자세한 내용은 Swift 공식 문서를 참고할 수 있습니다.