Unwrapping(??와 if let, guard let)

라무·2023년 8월 9일

Unwrapping이란?

Optional로 감싸져 있는 변수를 벗긴다는 것을 의미한다

optional은 generic type으로 모든 자료형이 들어갈 수 있다!!!!!!

??

정의

Optional값을 Unwrapping하는 과정

사용

  • if let 변수명: 자료형 = 다른 변수 ?? “”
    • 변수명은 optional값이 들어갈 수 없다
    • 만약에 다른 변수가 nil이라면 “”이 들어간다

예시

var myName: String? = "rayoung"

let name: String = myName ?? "값이 없음" 

if let(var)

정의

Optional값을 Unwrapping하는 과정

🔥 if문 안의 조건문의 값이 nil인가 아닌가를 체크

사용

  • if let 변수 = optional 변수 {}
  • optional 변수가 nil이 아니라면 optional이 벗겨져서 변수에 들어가지고 {}안에가 실행된다
  • optional 변수가 nil이라면 else구문이 실행된다

주의점

  1. if let은 if문이다!! → {}안에 구문이 실행된다
  2. if let뿐만 아니라 if var도 가능하다
  3. if let name: String? = “rayoung”
    • 이거일때는 String이 optional로 감싸진것이다 → 즉, optional로 wrapping된 것
  4. if let 다음에

예제

var myName : String? = "빡코딩"

//unwarpping하는 과정
if var value : String = myName {
    print("value: \(value)")
} else {
    print("값 없음")
}

//unwrapping하는 과정
if var myName = myName {
 print("value: \(value)")
} else {
	print("값 없음")
}

guard let(var)

정의

optional을 unwrapping하는데 사용한다

🔥 guard 안의 조건문이 참(true)이 아니면 else문이 실행되는 문법이다!

사용

  • guard let 변수 = 또 다른 변수 else {}
    • 또 다른 변수에 값이 있으면 변수가 그 값이 들어간다
    • 아니면 else가 실행된다
    • 변수에 값이 있다면 그대로 쭉 진행이 되고 값이 없다면 {}가 실행된다
    • guard let을 통해서 값을 넣었기 때문에 밖에서 값을 사용할 수 있다
  • 조건문이 참이면 바로 아래가 실행된다
  • if not이라고 생각 할 수도 있다

예제

  • myName의 값이 있으면 value에 myName의 값이 들어가고 print(”value: (value))가 실행된다
  • 값이 없다면 else { print(”하하”) }가 실행된다
fileprivate func unwrapSomething() {
    guard var value : String = myName else {
        print("하하")
        return
    }

//    value = "sdfsdf" //값이 있다면 값을 변경할 수 있다
    
    print("value: \(value)")
}

unwrapSomething()

참고한 블로그

[Swift] if let vs guard let (기본편)

profile
ios 개발을 하고있는 라무의 사적인 기술 블로그

0개의 댓글