아삭아삭 iOS 개발

[Swift 독학] 패스트캠퍼스 챌린지 15일차_옵셔널 본문

Swift

[Swift 독학] 패스트캠퍼스 챌린지 15일차_옵셔널

바닐라머스크 2022. 2. 7. 23:33

■ 옵셔널

  • 값이 있을 수도 있고 없을 수도 있음을 의미
  • ? 혹은 !를 데이터 타입 뒤에 붙여서 사용
  • 아래 두 경우 모두 변수 someValue는 옵셔널 정수의 타입을 갖도록 선언됨
var someValue: Optional<Int>
var someValue: Int?

 

■ 옵셔널의 특징

  • nil의 가능성을 문서화 하지 않고도 코드만을 이용해 표현 가능
    → 문서나 주석을 작성하는 시간 절약 가능
  • 전달받은 값이 옵셔널이 아닐 경우, nil 체크를 안했어도 안심하고 사용 가능
    → 예외적인 상황을 최소화할 수 있음
  • 기본적으로 옵셔널 변수 또는 프로퍼티를 선언할 때, 초기값을 지정하지 않으면 기본값은 nil로 자동 설정함
    → 옵셔널 타입으로 변수나 상수를 생성하면, 초기값은 nil)
  • 옵셔널 표현식은 조건부 수행을 위해 옵셔널 체이닝과 옵셔널 바인딩을 사용할 수도 있음
  • 옵셔널 타입으로 암시적으로 변환되거나 명시적으로 선언될 수 있음

 

1) ‘!’ 를 사용한 옵셔널 (암시적 추출 옵셔널)

- 일반적인 변수처럼 사용 가능
- nil값을 할당할 있음
- nil 값을 갖는 옵셔널을 언래핑 하기위해 ‘!’연산자를 사용하면 런타임 오류가 발생할 있음

var someValue: Int! = 5

 

2) ‘?’ 를 사용한 옵셔널

- nil값을 할당할 있음

- 포장되어 있는 옵셔널 변수는 일반 타입 변수와 결합, 연산 등이 불가능

  (, 옵셔널 바인딩을 이용할 경우 가능)
-
옵셔널 타입에도 일반값을 넣을 있음
- 안정성이 장점인 swift의 경우, 값이 없을 수도 있는 변수에 optional을 사용한다면 값이 없는 변수에 접근을 해도 프로그램이 종료되지 않음
   (반면 일반적인 프로그래밍 언어에서는 값이 null변수에 접근하면 런타임 에러가 발생해 프로그램이 자동으로 종료됨)

var optoinalName: String? = “Apple”

 

※ nil

  • 값이 없음을 의미하는 값
  • 다른 언어에서는 null이라고 표현하기도 함
  • 모든 변수에 nil을 넣을 수 있는 것은 아님
    (단, 데이터 타입 뒤에 ‘?’를 추가하면 가능)
var name: String? = nil
var number: Int? = nil

 

 

 

본 게시물은 개인 공부 기록용이므로 내용에 오류가 있을 수 있습니다.

 fast campus강의  참조자료

[1] https://blog.yagom.net/550/

[2] https://bbiguduk.gitbook.io/swift/language-reference/types#optional-type

 

 

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.