[Swift] Mutating Keyword 사용법 & 예제

728x90

Mutating Keyword 사용법 & 예제


인스턴스 메서드란?

인스턴스 메서드는 특정 타입의 인스턴스에 속한 함수를 뜻 합니다.
인스턴스 내부의 프로퍼티 값을 변경하거나 특정 연산 결과를 반환하는 등 인스턴스와 관련된 기능을 실행합니다.

인스턴스 메서드는 함수와 달리 특정 타입 내부에 구현하기 때문에 인스턴스가 존재 할 때만 사용할 수 있습니다. (이 점이 함수와 유일한 차이점)

자신의 프로퍼티 값을 수정할 때 클래스의 인스턴스 메서드는 크게 신경안써도 되지만,
구조체나 열거형 등은 값 타입이므로 , mutaitng 키워드를 붙여서 해당 메서드가 인스턴스 내부의 값을 변경 한다는 것을 암시 해야합니다.


사용 예제

struct LevelStruct {
    var level: Int = 0 {
        didSet {
            print("Level \(level)")
        }
    }

    mutating func levelUp() {
        print("Level Up!")
        level += 1
    }

    mutating func levelDown() {
        print("Level Down")
        level -= 1
        if level < 0 {
            reset()
        }
    }

    mutating func jumpLevel(to: Int) {
        print("Jump to \(to)")
        level = to
    }

    mutating func reset() {
        print("Reset!")
        level = 0
    }
}

var levelStructInstance: LevelStruct = LevelStruct()
levelStructInstance.levelUp()
//Level 1
levelStructInstance.levelDown()
//Level 0
levelStructInstance.levelDown()
//Level -1
levelStructInstance.jumpLevel(to: 3)
//Level 3

출처 : SWIFT 스위프트 프로그래밍(야곰)
728x90

댓글

Designed by JB FACTORY