ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Swift] Optional Unwrapping - 옵셔널 바인딩(if let)
    ► Swift/문법 2024. 2. 2. 20:02
    반응형

     

    if, while, guard 3가지 방식으로 옵셔널바인딩을 할 수 있다.

    while문은 거의 안쓰이고, if와 guard문을 주로 이용한다.

     

    오늘은 if문을 알아보려고 한다.

     


     

    if let 메커니즘

     

    ▼ 샘플코드

    import Foundation
    
    func test(_ n: Int) -> Int{
        
        let nilChk:Int? = nil                   // output: nil
    
        if let optChk = nilChk {
         // when nilChk is not nil
            print(optChk)				// output: 8                      
            print(nilChk)				// output: Optional(8)
            print("-1-")				// output: -1-
        }else{
         // when nilChk is nil
         // print(optChk)                       // output: err 사용불가
            print(nilChk)                       // output: nil
            print("-2-")                        // output: -2-
        }
    
        return 0
    }
    
    test(8)

     

    1. if let문에서 nilChk이 nil인지 판별한다.

    2. nilChk이 nil이 아닌 경우, optChk으로 unwrapping한 값을 보낸다.

    3. if let optChk은 if문 내에서만 사용가능하다.

     


     

    argument 가 optional 또는 Int일 때의 상태

     

    Optional인 상태
    import Foundation
    
    func test(_ n: Int) -> Int{
        
        let nilChk:Int? = n             // output: Optional(8)
    
        if let optChk = nilChk {
            print(optChk)               // output: 8
            print(nilChk)               // output: Optional(8)
            print("-1-")		    // output: -1-
        }else{
            print("-2-")
        }
    
        return 0
    }
    
    test(8)

    Optional일 때는 if문의 true(-1-)가 발생하여 리턴된다.

     


     

    nil인 상태
    import Foundation
    
    func test(_ n: Int) -> Int{
        
        let nilChk:Int? = nil                   // output: nil
    
        if let optChk = nilChk {
            print("-1-")
        }else{
          //print(optChk)                       // output: err
            print(nilChk)                       // output: nil
            print("-2-")                        // output: -2-
        }
    
        return 0
    }
    
    test(8)

    Optional일 때는 if문의 false(-2-)가 발생하여 리턴된다.

     


     

    변수명 설정

    if문을 쓸때, 두개의 변수를(optChk, nilChk) 똑같이 chk이라고 사용해도된다.

    if let optChk = nilChk 
    if let chk = chk

     


     

    참고링크

     

     

    https://babbab2.tistory.com/17

     

    Swift) Optional 부수기 (3) Optional Unwrapping - 옵셔널 바인딩(if let vs guard let)

    안녕하세요 소들입니다 💀 (헬쓱) 퇴근 후 포스팅은 피곤하네여.. 요즘 회사 일은 Objective-C로 개발하고 포스팅 및 개인 프로젝트는 Swift로 하니까 혼돈의 카오스 옵젝씨 코드에 세미콜론 빼먹어

    babbab2.tistory.com

     


    개인적으로 개발시행착오를 겪으면서, 그런 경험들을 기록하기도하고, 모은정보들을 메모하며, 개인공부내용을 공유하는 게시물입니다. 친절한 조언과 다양한 의견 남겨주시고, 소통해주시는분들은 언제든지 환영합니다 :D

     

    반응형
Designed by Tistory.