● Closures 클로저란?
간단하게 말하자면, 특정 함수가 반환되어 사라져도 그 속의 instance들은 소멸되지 않도록 보존해주는 캡쳐본(복사본)이라고 할 수 있다.
1) 클로저는 특정 context에서 모든 상수 및 변수에 대한 참조를 캡쳐하고 저장할 수 있다.
* Capturing Values 값 캡쳐 : 클로저는 특정 context의 상수(constants)나 변수(variables)의 값을 캡쳐하여, 원본 값이 사라지더라도 클로저의 body 안에서 그 값을 활용할 수 있도록 해준다.
(Swift에서 값을 캡처 할 수 있는 가장 간단한 형태의 클로저는 다른 함수의 본문 내에 작성된 중첩 함수(Nested functions)로, 중첩함수는 외부 함수의 인수 및 외부 함수 내에 정의된 모든 상수나 변수를 캡쳐할 수 있다.)
2) 클로저는 참조타입(reference type)이다.
3) 클로저의 세가지 형태 Three forms of closures (함수는 클로저의 한 형태로, 이름이 있는 클로저를 말한다.)
- 전역 함수 Global Functions : 이름이 있고 값을 캡쳐하지 않는 클로저
- 중첩 함수 *Nested Functions : 이름이 있고 (자신을 둘러싼) 외부 함수에서 값을 캡쳐할 수 있는 클로저
- 클로저 표현식 Closure Expressions : 주변 context에서 값을 캡쳐할 수 있는 간결한 구문으로 작성된, 이름이 없는 클로저
(명확성이나 의도를 잃지 않고, 동일한 기능을 보다 간결하고 핵심적인 구문으로 *inline closures를 작성하는 방식.)
4) 클로저 표현식 구문 Closure Expression Syntax
*inline closure : 이처럼 함수가 따로 정의된 형태가 아닌, 인자로 직접 들어가 있는 형태의 클로저를 inline closure라고 한다.
쉽게 예를 들어보자면, inline value는 다른 변수에 할당하지 않고 바로 사용되는 값을 의미하는데,
let number = 1
print(number) // 이렇게 변수에 값을 할당하고 이를 받아오는 방식이 아니라
print (1) // 값을 직접 그대로 갖다 쓰는 것을 말한다.
클로저에서도 마찬가지로 inline closure는 클로저를 다른 변수나 함수에 할당하지 않고 직접 쓰이는 형태를 말한다.
'Swift iOS 앱 개발 > Swift' 카테고리의 다른 글
[Swift iOS] 상단 NavigationBar 설정 (0) | 2021.03.11 |
---|---|
[Swift UIKit] All about UIButton() (0) | 2021.03.11 |
[Swift] higher order function? (0) | 2021.01.18 |
[Swift iOS] UIGestureRecognizer 터치 이벤트 제어하기 (0) | 2020.12.28 |
[Swift 용어] Value Type / Reference Type (0) | 2020.12.26 |