-
[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에 해당하는 코드 블럭{} 을 마지막에 쓸 수 있습니다.
'Swift' 카테고리의 다른 글
[Swift] 열거형(enumeration) (2/2) 열거형 배열로 사용, 열거형 항목 비교 (0) 2024.03.17