iOS/Swift

[문법/키워드] mutating, Associated Value (연관 값)

태애니 2025. 5. 20. 23:09
728x90

 

 

1. mutating

mutating 키워드는 구조체(struct)나 열거형(enum)에서 인스턴스 자신의 속성을 변경하고자 할 때 사용한다.

클래스(class)는 참조 타입이라서 메서드 내에서 속성 수정이 자유롭지만,
구조체/열거형은 값 타입이라 기본적으로 메서드 내에서 속성 변경이 금지됩니다.
이를 허용하기 위해 mutating 키워드를 사용합니다.

 

 

struct Counter {
    var count = 0

    mutating func increment() {
        count += 1
    }
}

var c = Counter()
c.increment()
print(c.count) // 1

 

 

2. Associated Value (연관값) 

열거형(enum) 에서 각 case에 값을 함께 저장하고 싶을 때 사용. 마치 case가 값과 함께 동작하는 것처럼 만들어줌.

 

enum NetworkResult {
    case success(data: String)
    case failure(errorCode: Int, message: String)
}

let result = NetworkResult.failure(errorCode: 404, message: "Not Found")

switch result {
case .success(let data):
    print("성공: \(data)")
case .failure(let code, let message):
    print("실패: \(code) - \(message)")
}

// 실패: 404 - Not Found

 

enum LoginState {
    case loggedOut
    case loggingIn(username: String)
    case loggedIn(userID: Int, nickname: String)
}

let state = LoginState.loggedIn(userID: 122, nickname: "taenee")

switch state {
case .loggedOut:
    print("로그아웃 상태입니다.")
case .loggingIn(let username):
    print("\(username)님 로그인 중...")
case .loggedIn(let id, let name):
    print("\(name)(\(id))님 로그인되었습니다.")
}

// taenee(122)님 로그인되었습니다.

 

 

 

728x90