ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 클로저 (1급 객체)
    Swift/swift 문법 2023. 4. 18. 19:03

    : 보통은 익명 함수를 뜻함. 일반적인 함수는 named closure이다. 

     

    클로저는 익명함수지만 1급 객체 함수의 특성을 지닌다. 

    -> 1급 객체*의 특성

    : 함수를 타입으로 인식

    1. 함수를 변수에 할당할 수 있음

    2. 어떤 함수를 호출할 때 파라미터로서 전달할 수 있음

    3. 함수에서 함수를 반환할 수 있음. 

     

     

    표현식

    var closure : (parameter) -> return_type = {(value : type) -> return_type in
        //code
    }
    
    //ex
    // "Hello World"를 출력하는 익명함수
    var str_closure : () -> String = { () -> String in
        return "Hello World"
    }
    
    var str_closure = {() -> String in
        return "Hello World"
    }

    탈출 클로저 (@escaping)

    클로저의 실행이 본래 함수를 벗어나서도 실행되도록 하는 키워드

    언제 사용하는가?

    1. 내부 클로저를 외부 변수에 저장
    2. GCD (비동기 코드 사용)
    func something2(a: Int, mainwork2: @escaping () -> () ) {
        print(a)
        DispatchQueue.main.async {
            mainwork2()
        }
        print("종료")
    }

     

     

    클로저는 언제 사용하는가?

    : 함수를 사용할 때.. 이외에도 콜백함수로 주로 사용 된다.

    //⭐️함수 실행 시⭐️ 실행될 클로저를 정의해주어야함
    func something(a: Int, mainwork1: @escaping () -> () ) {
        print(a)
        DispatchQueue.main.async {
            mainwork1()
        }
        print("종료")
    }
    
    //실행 시에 mainwork1 클로저 실행 내용 서술
    something(a: 1) {
        print("mainwork1 클로저의 실행입니다. ")
    }

    'Swift > swift 문법' 카테고리의 다른 글

    클래스와 구조체  (0) 2023.04.22
    메모리 안전  (0) 2023.04.21
    리턴형이 never 타입인 함수  (0) 2023.04.16
    강한참조 사이클 - weak vs unowned  (0) 2023.04.11
    hashable 프로토콜  (0) 2023.04.09
Designed by Tistory.