옵션(option)의 단어 뜻을 떠올려보며, 있을 수도 있고 없을 수도 있다는 특징을 떠올려 봅시다.
즉, 값이 있는지 없는지 모를 때를옵셔널
이라 합니다.
자료형 뒤에
?
를 붙여서 나타냅니다.
ex)
var someVariable : Int? = nil
💬 nil
은 값이 없음
을 의미함
if someVariable == nil {
someVariable = 90
}
print("someVariable: ", someVariable)
>>> someVariable: Optional(90)
💬 옵셔널 변수
는 값이 Optional()
함수 안에 감싸서 나타남
만약 상수 값이 비어있을 경우 (nil), 기본값으로 넣고 싶은 값이 있으면
??
를 적습니다.
ex)
someVariable = nil
let myValue = someVariable ?? 10 // nil일 때, 10을 넣겠다!
print("myValue : \(myValue)")
>>> myValue : 10
직역해보면
랩(wrap)
, 즉 감싸져 있는 것을벗기는(un-)
일 입니다.
감싸져 있는 옵셔널을 벗겨 봅시다.
새로운 상수를 생성하고 값을 집어 넣습니다.
ex)
if let otherVariable = someVariable {
print("언래핑되었다. 즉 값이 있다. otherVariable : \(otherVariable)")
} else {
print("값이 없다.")
}
>>> 언래핑되었다. 즉 값이 있다. otherVariable : 90
가드(guard)
를 활용합니다.
ex)
var firstValue : Int? = 30
var secondValue : Int? = 50 // 두 값을 모두 언랩핑해보자
💬 언랩핑하는 함수를 만듦
func unwrap(parameter : Int?) { // 메소드 안에 들어가는 값을 파라메터라 함
print("unwrap() called")
// 값이 없으면 리턴 해버린다.
// 즉 지나간다.
guard let unWrappedParam = parameter else {
return
}
print("unWrappedParam : \(unWrappedParam)")
}
unwrap(parameter : firstValue)
unwrap(parameter : secondValue)
>>> unwrap() called
unWrappedParam : 30
unwrap() called
unWrappedParam : 50
➡️ 여기에서 () 안에 'parameter :' 쓰는 게 번거롭다면, 함수 작성할 때 'parameter' 앞에 _
를 붙이면 됨
unwrap(firstValue) // 이렇게!!