옵셔널(optional)이란?

devapploper·2021년 1월 30일
0

스위프트 zero to hero

목록 보기
1/10

정보를 표현할 때 값이 들어있는 상황도 있지만, 값이 없는 상황도 분명 존재한다.

예를 들어 사람들의 이름과 나이 그리고 직업에 대한 정보를 담는 상황을 가정해보자

var 이름 = "유재석"
var 나이 = 48
var 직업 = "코미디언"

사람은 누구나 이름과 나이가 있다. 그렇기 때문에 어느 누구의 정보던 간에 이름과 나이는 항상 값이 존재할 것이다. 그치만 모든 사람이 직업이 있는 것은 아니다.

var 이름 = "어느할아버지"
var 나이 = 82
var 직업 = 없음

이렇게 값이 없는 상황에서 값의 부재를 표현할 수 있는 방법이 필요하다. 스위프트에서는 값의 부재를 표현하기 위해 nil을 사용한다. 따라서 직업이 없는 경우에는 nil을 할당하여 값의 부재를 나타낼 수 있다.

항상 값이 있는 이름 및 나이와는 다르게 직업은 값이 있을 수도 있고 값이 없을 수도 있다.

스위프트에서 값이 항상 있는 정보들과, 값이 있을 수도 있고 없을 수도 있는 정보들을 명시적으로 나눠서 나타내기 위해 만들어 놓은 것이 바로 옵셔널이다

스위프트에서는 값이 들어 있을 수도 있고, 없을 수도 있음을 나타내기 위해 옵셔널을 사용한다.

옵셔널 변수를 선언하고자 할 때는 타입 뒤에 물음표를 붙여주어 꼭 옵셔널이란 것을 명시해주어야한다.

var 이름: String = "유재석"
var 나이: Int = 48
var 직업: String? = "코미디언"

만약 유재석씨가 은퇴를 하게 되면 다음과 같이 nil을 할당하여 값의 부재를 나타낼 수 있다.

var 이름: String = "유재석"
var 나이: Int = 48
var 직업: String? = "코미디언"
직업 = nil
나이 = nil // Error: nil cannot be assigned to type Int

나이에 nil을 할당하면 에러가 나게 되는데, 나이는 옵셔널이 아니기 때문이다.nil은 옵셔널 타입에만 할당할 수 있다.

profile
iOS, 알고리즘, 컴퓨터공학에 관련 포스트를 정리해봅니다

0개의 댓글