728x90
728x90
Swift에서 변수와 상수는 프로그램 실행 중 값을 저장하고 사용하기 위한 기본적인 요소입니다. 이 둘의 차이점과 함께, Swift에서 변수와 상수를 다룰 때 자주 사용되는 키워드, 타입 추론, 형 변환에 대해 자세히 알아보겠습니다.
1. 변수 (var) vs. 상수 (let)
- 변수 (var): 값을 변경할 수 있는 저장 공간입니다. 프로그램 실행 중에 값을 여러 번 할당하고 변경할 수 있습니다.
- 상수 (let): 한 번 값을 할당하면 변경할 수 없는 저장 공간입니다. 값이 변경되지 않도록 보장해야 할 때 사용합니다.
예시:
var name = "홍길동" // 변수: 값을 변경할 수 있음
name = "김철수"
let age = 30 // 상수: 값을 변경할 수 없음
// age = 31 // 컴파일 에러 발생
2. 타입 추론 (Type Inference)
Swift는 타입 추론 기능을 지원하여, 변수나 상수를 선언할 때 타입을 명시하지 않아도 컴파일러가 초기화된 값을 보고 자동으로 타입을 유추합니다.
var num = 42 // 컴파일러는 num이 Int 타입임을 추론
let pi = 3.14159 // 컴파일러는 pi가 Double 타입임을 추론
3. 타입 어노테이션 (Type Annotation)
타입 추론 기능을 사용하지 않고, 명시적으로 타입을 지정하고 싶을 때 타입 어노테이션을 사용합니다.
var greeting: String = "Hello, world!"
let count: Int = 42
4. 형 변환 (Type Casting)
다른 타입의 값을 다른 타입으로 변환하는 것을 형 변환이라고 합니다. Swift에서는 안전한 형 변환을 위해 as?와 as! 연산자를 제공합니다.
- as?: 안전한 형 변환으로, 변환이 가능하면 변환된 값을 반환하고, 불가능하면 nil을 반환합니다.
- as!: 강제 형 변환으로, 변환이 불가능하면 런타임 에러가 발생합니다.
let intValue = 42
let doubleValue = Double(intValue) // Int를 Double로 변환
let anyValue: Any = "Hello"
if let stringValue = anyValue as? String {
print(stringValue) // "Hello" 출력
} else {
print("String이 아닙니다.")
}
5. 변수와 상수 사용 시 주의사항
- 상수는 한 번만 값을 할당: 상수는 한 번 값을 할당한 후에는 변경할 수 없습니다.
- 타입 안전성: Swift는 타입 안전성을 강조하기 때문에, 서로 다른 타입의 값을 직접 할당할 수 없습니다.
- 옵셔널 타입: 값이 없을 수도 있는 경우를 나타내기 위해 옵셔널 타입을 사용합니다. 옵셔널 바인딩을 통해 안전하게 값을 추출할 수 있습니다.
6. 실제 코드 예시
var name = "Apple" // 변수 선언
let pi = 3.14159 // 상수 선언
// 타입 추론
var age = 25 // Int 타입으로 추론
let isStudent = true // Bool 타입으로 추론
// 형 변환
let doubleValue: Double = Double(age) // Int를 Double로 변환
// 옵셔널 타입
var optionalString: String? = "Hello"
print(optionalString ?? "값이 없습니다") // 옵셔널 바인딩
// 배열
var numbers = [1, 2, 3]
numbers.append(4) // 배열에 값 추가
// 딕셔너리
var person: [String: String] = ["name": "홍길동", "age": "30"]
print(person["name"] ?? "이름 없음")
결론
Swift의 변수와 상수는 타입 안전성과 강력한 타입 추론 기능을 통해 안정적이고 효율적인 코드 작성을 지원합니다. 변수와 상수의 개념을 확실히 이해하고, 적절하게 사용하여 깔끔하고 가독성이 좋은 Swift 코드를 작성할 수 있도록 노력해야 합니다.
728x90
728x90