Closure
Closure는 간단하게 설명하자면 이름이 없는 함수라고 할 수 있다.
Closure는 First Class Type으로 변수에 할당할 수 있고, 인자로 받을 수 있고, 리턴할 수 있다.
Closure가 자주 쓰이는 2가지 경우
- Completion Block
네트워크 통해서 데이터 받아올 때, 비동기 수행 시킬 때
- Higher Order Functions (input에 함수를 받을 수 있는 펑션)
map, filter 같은 함수들의 input에 클로저를 넣어서 사용
Closure의 3가지 종류
- Global functions
- Nested functions
- Closure expressions
우리가 알아볼거는 Closure expressions다.
Closure의 기본 문법
기본 문법을 이용한 closure 사용 예시이다.
Closure는 아래 4가지 특성을 이용해 기본 문법보다 더욱 간편하게 사용할 수 있다.
1. Inferring parameter and return value types from context
Context로부터 타입을 유추해서 타입을 생략하고 (a, b) 이렇게 사용할 수 있다.
2. Implicit returns from single-expression closures
Single-Expression Closures에서는 반환 타입이 명확하기 때문에 return을 생략하여 사용할 수 있다.
3. Shorthand argument names
Swift는 자동으로 inline closure 축약 인자 이름을 부여해서 $0,$1 이런 식으로 인자를 사용할 수 있다.
4. Trailing closure syntax
함수의 마지막 인자로 closure가 들어갈 때 Trailing Closures 이용할 수 있다.
'( )' 밖에 쓸 수 있어서 파라미터가 많거나 코드가 길어질 때 사용하면 좋다.
Capturing Values
Closure는 자신의 원래 Scope이 아닌 주변 Context에 있는 상수와 변수의 값을 참조하고 수정할 수 있다.
위와 같이 원래 count 변수는 closure의 scope에 없지만 count를 capturing 해서 incrememter()를 통해 count를 1 증가시킬 수 있다.
'iOS' 카테고리의 다른 글
[ iOS / Swift ] 온보딩(Onboarding) 화면 만들기 - (1) UIPageControl, UIPageViewController (0) | 2023.08.02 |
---|---|
[swift] Struct and Class (0) | 2023.07.31 |
[Swift] Collection - Set (0) | 2023.07.28 |
[Swift] Collection - Dictionary (0) | 2023.07.27 |
[Swift] Collection - Array (0) | 2023.07.26 |