ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Swift] Closure 이해하기
    Swift 2024. 3. 15. 00:03

    Closure


    Closure의 정의

    Closure 함수처럼 기능을 수행하는 코드 블럭, 이름없는 함수(익명 함수)입니다.

    문법은 다음과 같습니다.

     

    { (parameters) -> return type in
    	statements
    }

    () 안에는 인자가 들어가고, 화살표(->) 다음에는 리턴할 타입을 씁니다.

    수행할 코 statements에 작성하면 됩니다.

     

    Closure의 특징

    • 인자로 받을 수 있다.
    • 값을 리턴할 수 있다.
    • Closure를 변수처럼 함수에도 넘겨줄 수 있다.
    • First Class Type이다.

     

    First Calss Type이란?

    First Class Type가 뭔지 모르는 사람들을 위해 설명하자면,

    • 변수에 할당할 수 있다.
    • 인자로 받을 수 있다
    • 리턴할 수 있다.

    Int나 String과 같은 타입을 변수에 할당하고, 함수나 메소드에 인자로 받고 리턴할 수 있는 것 처럼

    함수와 클로저도 이 3가지를 할 수 있습니다.

     

     

    Closure가 자주 쓰이는 형태

    Closure가 자주 쓰이는 형태는 다음과 같습니다.

    • Completion Block
    • Higher Order Functions

     

    Completion Block

    어떠한 Task가 완료되었을 때 특정 일이 동작할 수 있도록 할 수 있습니다.

    예를 들어,

    네트워크를 통해서 데이터를 받아오는 경우

    데이터는 네트워크 환경에 따라 빨리 받아질 수도 있고, 늦게 받아질 수도 있습니다.

    Task가 언제 끝날 지 모를 때(비동기적) Closure를 사용합니다.

     

    Task - 네트워크를 통해서 데이터를 받아오기

    Closure - 받아온 데이터를 화면에 보여주기

    데이터를 화면에 보여주는 것은 데이터가 받아왔을 때 수행되어야 합니다.

    그렇기 때문에 데이터를 화면에 보여주는 코드를 Closure를 사용하여 구현하면 Task가 완료된 후 데이터를 화면에 뿌릴 수 있습니다.

     

    즉, Completion(Task를 완료했을 때) 수행하는 Block(코드 블럭)을 말합니다.

     

    Higher Order Functions

    input으로 함수를 받을 수 있는 유형의 function

    - map, filter, reduce

     

     

    Trailing Closure

    함수에서 인자가 여러 개가 있고, 마지막 인자로 Closure가 들어가는 경우에는 

    Closure에 해당하는 코드 블럭{} 을 마지막에 쓸 수 있습니다.

Designed by Tistory.