[swift] 변수와 상수의 사용 제한

Swift에서는 변수(variable)와 상수(constant)를 사용하여 데이터를 저장할 수 있습니다. 하지만 변수와 상수의 사용은 몇 가지 제한이 있습니다. 이번 글에서는 Swift에서 변수와 상수를 사용하는 데에 어떤 제한이 있는지 살펴보도록 하겠습니다.

1. 상수의 값 변경 제한

상수(constant)는 한 번 할당된 값은 변경할 수 없는 특징을 가지고 있습니다. 상수를 선언하고 값을 할당한 후에는 해당 상수의 값을 변경할 수 없습니다. 이런 특성은 코드의 안정성을 높이고 예측 가능성을 높이는 데에 도움을 줄 수 있습니다.

let name = "John"
name = "Mike" // Error: 상수의 값을 변경할 수 없음

2. 변수와 상수의 사용 범위 제한

Swift에서는 변수(variable)와 상수(constant)의 사용 범위를 제한할 수 있습니다. 사용 범위에는 다음과 같은 종류가 있습니다.

1) 지역 범위 (Local Scope)

지역 범위는 함수, 메서드, 반복문 등의 블록 내에서 변수와 상수를 정의하는 범위를 말합니다. 지역 범위 내에서 선언된 변수와 상수는 해당 블록 내에서만 유효하며, 벗어나면 사용할 수 없습니다.

func printName() {
    let name = "John"
    print(name) // "John" 출력
    
    if true {
        print(name) // "John" 출력
    }
}

printName()

print(name) // Error: name은 지역 범위에서 선언되었으므로 사용할 수 없음

2) 전역 범위 (Global Scope)

전역 범위는 어떠한 함수나 메서드의 범위를 벗어난 모든 부분을 의미합니다. 전역 범위에서 정의된 변수와 상수는 어디에서든지 사용할 수 있습니다.

let name = "John"

func printName() {
    print(name) // "John" 출력
}

printName()

print(name) // "John" 출력

3. 변수와 상수의 타입 제한

Swift에서 변수와 상수는 선언시 타입을 명시하거나, 타입 추론을 통해 타입이 결정됩니다. 따라서 변수와 상수의 타입은 선언 이후 변경할 수 없습니다.

var age: Int = 20
age = "hello" // Error: age의 타입은 Int로 선언되었으므로 문자열을 할당할 수 없음

let height = 180
height = 190 // Error: height는 타입 추론을 통해 Int로 결정되었는데 값 변경이 불가능함

4. 변수와 상수의 가시성 제한

Swift에서는 변수와 상수의 가시성을 제한할 수 있습니다. 가시성은 해당 변수 또는 상수의 접근 범위를 제한하는 역할을 합니다. 기본적으로 변수와 상수는 작성한 코드의 어디에서나 접근 가능합니다.

만약 변수나 상수의 가시성을 제한하고 싶다면 private, fileprivate, internal, public, open 등의 접근 제어자를 사용해야 합니다.

public var name = "John" // 외부 모듈에서 접근 가능
internal let age = 20 // 내부 모듈에서 접근 가능
fileprivate var height = 180 // 같은 파일 내에서 접근 가능
private var weight = 70 // 같은 범위 내에서 접근 가능

변수와 상수의 사용은 Swift에서 중요한 역할을 합니다. 이러한 제한은 코드의 안정성을 높이고 예측 가능성을 높이는 데에 도움이 되며, 프로그래머가 실수로 변경되지 않아야 하는 값을 변경하는 일을 방지할 수 있습니다.