defer문

썹스·2022년 11월 21일
0

Swift 문법

목록 보기
44/68

defer{ }문

  • defer{ }문은 할 일을 미루는 코드 블록입니다.

  • defer{ }문 안의 코드는 스코프(범위)가 종료되는 시점에 작동됩니다.

  • 일반적으로 defer{ }문은 어떠한 코드의 동작을 마무리하기 위해 사용합니다.

  • defer{ }문은 최소 한 번의 접근(호출)이 있어야 해당 구문을 실행합니다.

  • defer{ }문은 코드 불록에서 1개만 사용하는 것을 권장하고 있습니다. (여러 개 사용하면 복잡함)

✅ 일반적인 defer{ }문의 사용

  • defer{ }문은 어떠한 코드의 동작을 마무리하기 위해 사용합니다.
func hello(){
    defer{  // 함수의 동작을 마무리 코드
        print("hello() 함수 종료")
    }
    print("안녕")
}

hello()

/*출력 결과
 안녕
 hello() 함수 종료
 */

✅ 접근(호출)없이 종료되는 코드

  • defer{ }문은 최소 한 번의 접근(호출)이 있어야 해당 구문을 실행합니다.
func hello(){
    if true{
        print("안녕")
        return  // 함수 탈출
    }
   
    defer{  // return문에 의해 defer문이 작동하지 않는다.
        print("hello() 함수 종료")
    }
}

hello()

/*출력 결과
 안녕
 */

✅ defer{ }문의 후입 선출 (Last In - First Out)

  • defer{ }문은 후입 선출 방식의 특징을 가지고 있습니다.
func number(){
    defer{
        print("1")
    }
    defer{
        print("2")
    }
    defer{
        print("3")
    }
}

number()

/*출력 결과
 3
 2
 1
 */

✅ 반복문(for)에서의 defer{ }문

  • defer{ }문 안의 코드는 스코프(범위)가 종료되는 시점에 작동됩니다.
for i in 1...3{
    print("func: \(i)")
   
    defer{  // 반복문의 사이클이 한 번씩 돌 때마다 실행
        print("defer: \(i)")
    }
}

/*
 출력 결과
 func: 1
 defer: 1
 func: 2
 defer: 2
 func: 3
 defer: 3
 */
profile
응애 나 코린이(비트코인X 코딩O)

0개의 댓글