Swift
Swift) 옵셔널(Optional)
나태한개발
2024. 4. 29. 20:14
알고리즘 문제를 풀던도중 다른사람들 코드에 느낌표(!) 가 많이 보였다.
이게 뭔지 궁금해서 찾아보던중 스위프트는 옵셔널 타입이란 타입이 존재 하는것을 알게 되었다.
옵셔널이란?
nil(값이 없음) 이란 값을 가질수 있는 타입이라고 한다.
오류대신 nil 을 반환함으로써 안정성을 높인다고 한다.
일반적인 자료형에 nil 이란 값을 넣으려고 하면 오류가 난다.
옵셔널 타입을 선언하는 방법은 타입 뒤에 물음표(?) 를 붙여 주면 된다.
var nonOptioanl: String
nonOptional = nil //오류
var optional: String?
optional = nil //오류 안남
옵셔널 사용법
String 이라도 옵셔널인지 아닌지에 따라 다른 타입이 된다.
선언 후 타입을 출력해보면 알수 있다.
var nonOptional: String
var optional: String?
print(type(of:nonOptional)) //String
print(type(of:optional)) //Optional<String>
이러한 옵셔널 타입을 사용하려면 추가 작업이 필요하다.
추가작업에는 조건이 있는데
작업하고자 하는 값이 nil 이면 안된다는것이다.
if let
값을 사용 하고 싶을때는 선언한 nonOptional 변수를 사용하면 된다.
let optional: Int? = 10
if let nonOptional = optional {
print(nonOptional) //optional 이 nil 이 아니면 실행한다. (10 반환)
} else {
print(optional) //optional 이 nil 이면 실행한다. (nil 반환)
}
같은 변수명을 사용하고 싶으면 똑같이 지정해줘도 된다.
let optional: Int? = 10
if let optional = optional {
print(optional) //optional 이 nil 이 아니면 실행한다. (10 반환)
} else {
print(optional) //optional 이 nil 이면 실행한다. (nil 반환)
}
단 if 문 밖에서는 사용 불가
let optional: Int? = 10
if let optional = optional {
print(optional) //optional 이 nil 이 아니면 실행한다. (10 반환)
} else {
print(optional) //optional 이 nil 이면 실행한다. (nil 반환)
}
print(optional) //-사용불가-
guard let
if let과 비슷하지만 값이 nil 일때 그냥 함수를 종료 시켜버린다.
let optioanl: String? = "승원이는 전설이다."
guard let nonOptional = optional else {
return //값이 nil 이면 함수 종료
}
print(nonOptional) //승원이는 전설이다. 출력 if let 과 다르게 guard let 구문 밖에서 사용가능