[Swift] 옵셔널(Optional)이란?

choe_ju·2023년 9월 21일

📖 옵셔널 타입이란?

  • 옵셔널(optional)타입은 스위프트에 특징중인 타입으로 nil(임시값)을 포함할 수 있도록 타입입니다.

swift에서는 일반적인 데이터 타입의 경우 값이 비어있는 것은 오류로 처리합니다. 이러한 부분에서 값이 없는 경우 nil(임시값)을 부여하여 오류를 줄여주는 타입입니다.


✏️ 옵셔널(Optional) 타입 선언하기

  • 선언 방식은 아래와 같이 타입 뒤 "?"를 붙여 선언하며 값을 정의하지 않을 경우 "nil"값으로 대체됩니다.
var number: Int?	
// 타입 뒤에 "?"를 붙여 옵셔널 타입 선언
// 아무값도 부여하지 않을 시 nil값으로 처리

print(number)	// 출력 결과 : Optional(nil)

아래에 보면 기본 타입을 출력할 때는 number1를 출력하는 상황처럼 나오지만, 옵셔널(optional)타입값의 경우 값이 감싸져있는 상태이기에 출력할 경우 아래의 number2 출력 결과와 같이 nil이 아닐 경우에는 Optinonal(해당값) 과 같은 형식으로 출력됩니다.
var number1: Int = 111
var number2: Int? = 222

// 옵셔널 타입을 출력 시 nil이 아닐 경우에는 Optional(해당값) 형태로 출력
print(number1)	// 출력 결과 : 111
print(number2)	// 출력 결과 : Optional(222)

📎 옵셔널(Optional) 타입 값 사용 시 주의사항

  • 옵셔널 타입에 값 대입은 가능하지만, 기존 데이터 타입과 다른게 피연산자로 취급하기에 옵셔널 값과 혹은 유사한 값과 연산이 불가능합니다. 이러한 점을 해결하고 사용하기 위해서는 언래핑(Unwrapping)을 해야 동일하게 사용 가능합니다.
var number1: Int = 111
var number2: Int? = 222
var number3: Int? = 333

number2 = number1	// Int값 >> Int?(정수 옵셔널타입)에 대입
print(number2)	// 출력 결과 : Optional(111)
//반대로 옵셔널 값을 일반 데이터 타입에 대입은 불가능

var sum: Int? = number2 + number3	// 오류!!!
  • 옵셔널 타입 출력 결과 : Optinonal(해당값)
  • 옵셔널 타입 = 기본 타입 --> 대입 가능 -> 값이 옵셔널 타입으로 기록 됨
  • 옵셔널 타입끼리 연산 불가능 (언래핑, 바인딩 필수!!)

📎 옵셔널 값 사용하기

  • 옵셔널 타입의 값을 일반타입처럼 활용하기 위해서는 옵셔널 타입을 벗겨 값을 추출해야 일반 타입처럼 사용이 가능합니다.
  • 추출이 필요한 이유는 위에서 설명했듯이 옵셔널 타입끼리는 연산이 불가능하기때문에 활용하기 위해서는 추출 과정이 필요합니다.

    옵셔널 추출 방법 내용은 아래 참고하세요!
    [Swift]옵셔널 추출하기(Optional Unwrapping)

0개의 댓글