
// 옵셔널 변수 선언
var optionalString: String? = nil // nil로 초기화
optionalString = "Hello, Swift!" // 값 할당
if optionalString != nil {
print(optionalString!) // "Hello, Swift!" 출력
}
// if let을 사용한 옵셔널 바인딩
if let unwrappedString = optionalString {
print(unwrappedString) // "Hello, Swift!" 출력
} else {
print("값이 없습니다.")
}
// guard let을 사용한 옵셔널 바인딩
func printString() {
guard let unwrappedString = optionalString else {
print("값이 없습니다.")
return
}
print(unwrappedString) // "Hello, Swift!" 출력
}
let defaultString = optionalString ?? "기본 값"
print(defaultString) // "Hello, Swift!" 출력 (값이 있을 경우)
class Person {
var name: String?
}
let person: Person? = Person()
person?.name = "Alice"
// 옵셔널 체이닝을 사용하여 값에 접근
let name = person?.name?.uppercased() ?? "이름 없음"
print(name) // "ALICE" 출력
강제 언래핑의 위험: 강제 언래핑을 사용할 때는 항상 옵셔널이 nil이 아닌지 확인하는 것이 중요합니다.
nil일 경우 앱이 크래시 날 수 있습니다.
옵셔널 타입 사용의 장점: 옵셔널을 사용하면 값의 존재 여부를 명확히 표현할 수 있어 코드의 안전성을 높이고, 런타임 오류를 줄이는 데 기여합니다.