Optionals
Optional Binding
Implicitly Unwrapped Optionals
Type! IUO로 자동으로 추출된다고 생각하면 된다.
let num : Int! = 2
let a = num
a // ontional(2)
형식 추론으로는 언레핑 되지않는다.
let b: int = num
b // 2
이런식으로 특정 조건에서 언레핑 되어야할때 바로 언레핑이 되게 한다.
그래서 nil값이 있다면 에러가 발생한다. 잘 사용하지 않는다.
옵셔널 바인딩을 쓰는것이 다 합당하다.
Nil-Coalescing Operator
var msg = ""
var input: String? = "Swift"
if let inputName = input {
msg = "Hello," + inputName
} else {
msg = "Hello, Stranger"
}
print(msg) // "Hello, Swift"
var str = "Hello," + (input != ? input! : "Stranger")
print(str) // "Hello, Swift"
둘다 같은 방식이다
Nil-Coalescing Operator - 문법 a ?? b
str = "Hello, " + (input ?? "Stranger")
print(str) // "Hello, Swift"
input = nil
str = "Hello, " + (input ?? "Stranger")
print(str) // "Hello, Stranger"
?? 뒤에 만약 해당 값이 nil이라면 나올 값을 지정한다(타입은 같아야한다.)
논리 연산자와 마찬가지로 단락을 평가하여 왼쪽 값이 없다면(nil)일때 값을 리턴해주는 값이다.
Optional Chaining
옵셔널을 연속해서 호출하기