나의 기록, 현진록

[Swift] 8.1 옵셔널 본문

Programming/Swift

[Swift] 8.1 옵셔널

guswlsdk 2021. 7. 13. 14:32
반응형

스위프트 프로그래밍 3판 - 야곰 지음

 

스위프트의 특징 중 하나인 안정성을 문법으로 담보하는 기능이다. 다른 언어에서는 찾아볼 수 없는 개념이기도 하다.

 

 

옵셔널은 선택적으로 값을 가질 수 있다. 즉, 값이 "있을 수도, 없을 수도" 있다. 안철수 같은 개념.

 

 

옵셔널의 개념은 함수형 프로그래밍 패러다임에서 자두 등장하는 모나드 개념과 나란히 할 수 있다. 모나드는 추후에 포스팅할 것이다.

 

옵셔널 변수 또는 상수 등은 데이터 타입 뒤에 ?를 붙여 표현할 수 있다.

 

var myName: String = "hyunjin"
myName = nil // error

 

옵셔널로 선언되지 않은 변수에 nil을 할당할 수 없다.

 

 

var myName: String? = "hyunjin"
print(myName)
myName = nil 
print(myName)

옵셔널 데이터 타입을 출력하면 Optional()로 표현되는 것이 정상이다.

그 다음 nil이 출력되지만 컴파일러 경고가 발생할 수 있다 이 또한 정상이다.

 

옵셔널은 어떠한 상황에 사용할까?

 

우리가 만든 함수에 전달되는 전달인자 값이 잘못된 값일 경우 제대로 처리하지 못했음을 nil을 반환하여 표현하는 것을 들 수 있다. 또는 매개변수를 굳이 넘기지 않아도 된다는 뜻으로 매개변수의 타입을 옵셔널로 정의할 수 있다. 

 

 

 

 

반응형