Optional이란
optional은 enum이다. (An Optional is just an enum.)
Swift
Array와 같은 일반적인 타입이다.
의 의미는 옵셔널이 모든 타입의 옵셔널이 될 수 있다는 뜻
? and !
Swift
추출을 한다면 x에 대한 switch가 된다. (옵셔널을 추출해서 연관값을 가져오는 방법이 switch)
x의 switch를 만들어서 Some case에는 let value를 해서 연관값을 가져오도록하고, y에 그 값을 넣어준다.
None이 되는 경우는 앱이 충돌한다. (할당되지 않은 옵셔널을 추출하는 것은 충돌이 나게 되어있다.)
if let
Swift
if let
을 하는 경우에는 x에 switch 조건을 주되
Some case에서는 저 y값을 가져와서 y를 사용하는 코드를 넣어주면 if let이 여기서 동작하게 된다.
None case에서는 switch 밖으로 나가서 아무것도 하지 않는다.
Optional은 체이닝이 가능하다.(Optionals can be “chained”.)
Swift
옵셔널을 선언할 때가 아니라 값을 사용하려 할 때
?
를 사용하게 되면 일단 추출을 시도해보고 추출할 수 있다면 그 값을 이용해서 다음걸로 이동하고 추출할 수 없다면 이 전체 표현에서 nil을 반환한다.(이 중에서 어느 지점에서든지 추출했을 때 nil을 반환하는 걸로 밝혀진다면)
let x 는 옵셔널 Int 타입이다.
Operator ??
There is also an Optional “defaulting” operator ??
Swift
s가 nil이 아니라면 값이 추출되어서 사용될거고, 그렇지 않다면 “ “ 빈 공간으로 두겠다는 뜻.