Swift

[Swift]옵셔널(Optional) - 1

느려도천천히 2021. 12. 28. 21:58

옵셔널(Optional)

스위프트에서 도입된 새로운 개념으로 언어 차원에서 프로그램의 안전성을 높이기 위해 사용하는 개념입니다
한 문장으로 정의하자면 nil을 사용할 수 있는 타입과 사용할 수 없는 타입을 구분, 사용할 수 있는 타입을 가리켜 옵셔널 타입이라고 부른다

여기서 nil이란 값이 없음을 의미하는 특수한 값입니다

let capital = ["KR": "Seoul", "CN": "Beijing", "JP": "Tokyo"]
capital["KK"] // nil

위와 같이 capital에 KK라는 키와 값은 없습니다
이러한 경우 스위프트는 nil이라는 값을 반환합니다
하지만 모든 타입에서 nil을 반환할 수 있는 것은 아니며, 오직 옵셔널 타입만 nil을 반환할 수 있습니다

옵셔널은 오류가 발생할 수 있는 가능성이라는 것입니다
무조건 오류가 발생하지 않는다면 좋지만, 만약에라도 오류가 발생하는 것을 막기위해 옵셔널 타입을 사용합니다

let num = Int("123")
//이러한 경우에는 123을 정수형으로 변경할 수 있지만
let num = Int("pro")
//이러한 경우는 프로그램에서 값을 반환하지 못합니다

위와 같은 경우를 보아 num에서는 pro를 정수형으로 반환할 수 없는 경우에 스위프트에서는 억지로라도 반환하려고 하기 때문에,
오류가 발생하여 앱이 중단되는 경우가 나타납니다
이러한 이유로 중단되는 것을 막기위해 옵셔널이라는 개념을 도입하여 값이 없거나 안된다면 nil을 반환하도록 하는 것 입니다

옵셔널 타입(Optional Type)

옵셔널 타입으로 선언된 자료형은 nil값을 저장할 수 있습니다
옵셔널 타입이란 반환 하고자 하는 값을 옵셔널 객체로 다시 한 번 감싼 형태를 의미
한번 let num = Int("pro")를 옵셔널 타입으로 정의해봅시다

let num: Int? = Int("123")
// Optional(123)
let num: Int? = Int("pro")
// nil
//둘 다 옵셔널 타입입니다

위와 같이 ?은 옵셔널 타입을 만드는 방법으로, Optional Int 타입을 의미합니다
옵셔널 타입으로 둘러싸여 있는 형태를 옵셔널 래핑(Optional Wrapping)이라고 합니다

다음은 옵셔널 값 처리에 대해 알아보도록 하겠습니다

+
다음편