Optional
-
변수에 값이 존재하지 않을 수도 있다는 것을 명시한다. ###
다른 말로 하면 옵셔널이 아닌 변수는 무조건 값을 가져야한다.
- 값이 꼭 필요한 변수에는 옵셔널이 아닌 타입으로 선언함으로서 , 사전에
nil
이 들어오는 걸 막을 수 있다. - 또 ,
Optional
로 선언함으로서 ,nil
이 들어올 수 있으니 , 대처가 필요하다는 것을 프로그래머에게 인지 시켜줄 수 도 있다.
Optional 은 제네릭 타입을 지원하는 열거형이다.
enum Optional<T>{
case .some // 값이 존재하는 경우
case .none // nil 인 경우
}
<img src=”“data:image/jpeg;base64,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”>
Optional<Int> = Int? // 동일한 표현이다
optional
은.some/.none
두가지경우 중 하나를 를 무조건적으로 가지는 열거형 이다.
Optional 에서 값을 얻어오기
struct Box{
var item
}
var mysteryBox : Box?
Optional Binding : 옵셔널 바인딩
guard let fullBox = mysteryBox as? Box else { return // 값의 부재 nil } fullBox.item // 값이 존재하는 지 확인후 Unwrapping
Optional Chaining : 옵셔널 체이닝
mysteryBox?.item // mysteryBox 유효하면 item에 접근한다.
Unconditional Unwrapping: 강제추출
mysteryBox!.item // 값의 유무를 확인하지 않고 강제적으로 Unwrapping한다