Swift
[Swift]옵셔널(Optional) - 3
느려도천천히
2022. 1. 6. 21:52
옵셔널 바인딩
1)if 구문 내에서 조건식 대신 옵셔널 값을 일반 변수나 상수에 할당하는 구문을 사용하는 방식
2)조건문 내에서 일반 상수에 옵셔널 값을 대입하는 방식
3)반드시 조건문에서 사용해야만 한다
4)옵셔널 값을 대입한 결과는 true/false로 리턴
예제를 확인해봅시다
var str = "swift"
//if문
if let STR = Int(str) {
print("Int형으로 변환됩니다")
} else {
print("실패!")
}
//guard문
guard let STR = Int(str) else {
print("실패!")
return
}
전편과 비슷해보이지만, STR가 상수도 선언되었으며 옵셔널이 아닌 일반 타입
강제 해제 연산자(!)를 사용하지 않아도 옵셔널 값이 일반 변수나 상수에 할당되면서 자연스럽게 옵셔널 타입이 해제되지만,
값이 nil이더라도 할당이 실패하여 결과값이 false로 반환될 뿐 오류 발생하지 않습니다
컴파일러에 의한 옵셔널 자동 해제
!를 붙여서 강제 해제하는 방법과 옵셔널 바인딩을 통해 일반 자료형으로 바꿔주든 해야하지만, 컴파일러에서 자동으로 옵셔널을 해제 해주는 경우가 있습니다
let num = Int("123")
if (num == 123) {
print("123")
} else {
print("실패")
}
//결과: 123
위와 같이 num은 옵셔널 값으로 optional(123)이지만 컴파일러가 자동으로 123으로 인식하고 if문 조건이 충족하여 결과가 123으로 나옵니다
왜그럴까? 이유는 비교 연산자를 사용하여 비교하는 경우에는 자동으로 옵셔널이 해제된 상태로 비교 연산을 수행합니다
이걸로 간단한 옵셔널에 대해 알아보았습니다