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
'iOS > Swift' 카테고리의 다른 글
[Foundation/Class] NotificationCenter (2) | 2025.07.02 |
---|---|
[문법/키워드] Computed Property / Extension (0) | 2025.05.21 |
Swift에서 closure 함수 쓸 때 사용되는 @escaping 은 뭘까? (0) | 2025.05.14 |
Swift Closure (0) | 2025.05.03 |
Swift 접근 제어 요약 (0) | 2025.05.02 |