Swift 기초문법 18 - 스트럭트 mutating

정성윤·2023년 7월 17일
0

Swift 이론

목록 보기
20/64

'mutating'은 Swift에서 구조체('struct') 내부에서 메서드가 자신을 수정할 수 있는지를 나타내는 특별한 키워드입니다.

기본적으로 구조체와 열거형은 값 타입이므로 해당 인스턴스의 프로퍼티를 변경하려면 메서드가 'mutating'으로 표시되어야 합니다.

'mutating' 키워드를 사용하면 구조체 내부에서 프로퍼티의 값을 변경하거나, 다른 메서드를 호출하여 자신을 수정할 수 있습니다. 구조체가 값 타입이지만 메서드 내부에서 상태를 변경하거나 특정 작업을 수행할 수 있도록 허용해줍니다.

struct Point {
    var x: Int
    var y: Int
    
    mutating func moveBy(x deltaX: Int, y deltaY: Int) {
        x += deltaX
        y += deltaY
    }}
    var point = Point(x: 10, y: 20)
    print("Before move: \(point)")  // Before move: Point(x: 10, y: 20)
    point.moveBy(x: 5, y: 5)
    print("After move: \(point)")   // After move: Point(x: 15, y: 25)

클래스는 값을 변경가능하지만 스트럭트는 불가능합니다.
스트럭트는 값을 그냥 출력하는것은 문제가 되지 않지만, 스트럭트가 가지고 있는 값을 변경하려고 하는 경우에는 에러가 발생합니다.
클래스는 참조 타입. 스트럭트는 값 타입.

참고(출처) : 개발하는 정대리, 야곰(Swift 5)

profile
이유있는 스위프트 개발자

1개의 댓글

comment-user-thumbnail
2023년 7월 17일

저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!

답글 달기