3월 5일 TIL (Optional)

이승원·2024년 3월 6일
1

TIL

목록 보기
28/75
post-thumbnail

옵셔널 (Optional)


  • 값이 없을 수 있는 상황에서 옵셔널 (Optional)을 사용한다.
  • 옵셔널은 ? 로 나타낸다.
  • 옵셔널을 사용하는 방법은 두가지로 볼 수 있다.
    - 값이 있고 옵셔널로 래핑 (Wrapping) 해놓은 값을 언래핑 (Unwrapping) 하여 값을 접근한다.
    • 값이 전혀 없다 (Nil)

옵셔널 바인딩 (Optional Binding)

  • 옵셔널 바인딩은 옵셔널 값이 nil인지 아닌지 검사 한후, 존재한다면 그 값을 다른 변수에 대입시켜 바인딩하는 것을 의미한다.
  • 강제로 언래핑보다 훨씬 안전하다.
  • if let / if var , guard let / guard var 을 써서 옵셔널 바인딩을 할 수 있다.
  • if let 과 guard let 의 차이점:
    - 지역변수와 전역변수의 차이다.
    - if let 은 if 문 안에서만 해당 상수 사용이 가능하고, guard let은 guard문 밖에서도 사용이 가능하다.

옵셔널 강제 언래핑 (Force unwrapping)

  • 옵셔널 강제 언래핑은 ! 를 써서 강제로 옵셔널을 추출한다.
  • 강제가 붙어 있는 만큼 확신이 있을때, 즉 옵셔널에 값이 확실히 있는걸 알 경우에만 사용해야 한다.

옵셔널 값이 nil일떄를 위해 기본값 설정하기 (nil-coalescing)

  • 아래 예시를 보자
var temp1 : Int? = 3
var temp2 : Int? = nil
let number1 = temp1 ?? 5
let number2 = temp2 :: 5
print(number1) // 출력결과 : 3
print(number2) // 출력결과 : 5
  • 위 코드처럼 nil 이 아니라면 temp1을 number1에 대입하고 nil이면 5를 대입해라, 라는 의미로 해석하면 된다.

옵셔널 체이닝 (Optioanl Chaining)

  • 옵셔널을 연쇄적으로 사용하는 것을 말한다.
  • 쉽게 말하면 옵셔널 타입인 구조체가 있다고 가정하면 그 아래 요소들을 접근할떄도 옵셔널 체이닝을 사용해야한다.
profile
개발자 (진)

0개의 댓글