ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • defer
    Swift 2020. 9. 21. 06:59

    안녕하세요 :) 오늘은 다소 생소한 문법(지극히 주관적 의견)인 defer에 대해서 간단하게 알아보겠습니다.

    공식문서엔 다음과 같이 설명이 되어있어요

    Defer Statement

    A defer statement is used for executing code just before transferring program control outside of the scope that the defer statement appears in.

    스코프 밖의 프로그램 컨트롤에 전달하기 직전에 수행되는 문법이라고 하네요 !
    말을 조금 어렵게 써놨지만, 기본적으로 함수는 return 된 다음에 실행되는 것이 불가능해서 이렇게 장황한 설명이 붙은 것 같습니다. 우리가 단편적으로 느끼기에는 함수가 끝나고 실행되는 것 '같은' 효과를 줄 때 사용합니다.

    이런 식으로 사용한다고 해요,

    func f() {
        defer { print("First defer") }
        defer { print("Second defer") }
        print("End of function")
    }
    f()
    // Prints "End of function"
    // Prints "Second defer"
    // Prints "First defer"

    defer를 선언한 순서대로 가장 늦게 실행되는 모습을 볼 수 있네요 :)
    계산을 하다가 함수 작업이 끝나고 실행해주고 싶을 때가 있죠? 그럴 때 사용해볼 수 있을 것 같습니다.

    가령 연산 후에 값을 0으로 바꾸고 싶을 때..?

    var money = 0
    
    func add(balance: Int) -> Int {
        defer { money = 0 }
        money += balance
        return money
    }
    
    print(add(balance: 100)) // 100
    print(money) // 0

    몰라도 크게 문제는 되지 않겠지만 알면 꽤나 유용하게 사용될 수 있겠네요.

    감사합니다!!

     

    참고

    swift.org

     

    'Swift' 카테고리의 다른 글

    ARC (Automatic Reference Counting)  (0) 2021.01.11
    순수함수 Pure function  (0) 2020.08.04
    람다 λ lambda  (0) 2020.08.04
    Reduce  (0) 2020.08.04
    ~= 연산자 in Swift  (0) 2020.07.07

    댓글

Designed by Tistory.