[swift] 구조체와 열거형의 값 변경 관리 방법

Swift에서는 구조체(struct)와 열거형(enum)이 값 타입(value type)으로 선언됩니다. 이는 변수에 할당될 때 값이 복사되어 새로운 인스턴스가 생성된다는 의미입니다. 따라서 값의 변경을 다룰 때 주의해야 합니다. 이번 글에서는 Swift에서 구조체와 열거형의 값을 안전하게 변경하는 방법에 대해 알아보겠습니다.

구조체에서 값 변경 관리

구조체의 내부 프로퍼티를 변경할 때에는 해당 구조체가 변수에 저장되어 있어야 합니다. 구조체 인스턴스를 상수(let)에 저장하면 내부 값을 변경할 수 없습니다.

struct Person {
    var name: String
}

var person1 = Person(name: "John")
person1.name = "Jane" // 허용

let person2 = Person(name: "Alice")
person2.name = "Bob" // 허용되지 않음

열거형에서 값 변경 관리

열거형의 경우 연관값(associated values)을 포함하는 경우 값 변경에 유의해야 합니다. 열거형의 연관값은 상수로 선언된 열거형 케이스와 함께 사용될 수 있습니다. 따라서 연관값을 변경하기 위해서는 해당 값이 변수에 저장되어 있어야 합니다.

enum MobileDevice {
    case phone(brand: String)
    case tablet(brand: String)
}

var device1 = MobileDevice.phone(brand: "Apple")
device1 = .tablet(brand: "Samsung") // 허용

let device2 = MobileDevice.phone(brand: "Google")
device2 = .tablet(brand: "LG") // 허용되지 않음

값 변경 방지

값 변경을 방지하고 싶을 때는 상수(let) 키워드를 사용하여 변수를 선언하면 됩니다. 이를 통해 값이 변경되지 않도록 보장할 수 있습니다.

결론

Swift에서는 구조체와 열거형이 값 타입으로 동작하므로 값 변경에 대한 관리가 중요합니다. 변수에 할당된 프로퍼티의 값 변경 여부를 고려하여 코드를 설계하고 작성하는 것이 안전한 프로그래밍을 위한 좋은 습관이 될 것입니다.

참고 자료: The Swift Programming Language - Enumerations, The Swift Programming Language - Structures and Classes