티스토리 뷰

반응형

 

 

 


Closures
클로저


클로저(Closures)는 코드 상에서 전달되어 사용될 수 있는 독립적인 블록입니다. Swift의 함수들은 전부 클로져이며 이름이 존재하냐, 없냐의 차이가 있을 뿐입니다.
또한 클로져는 할당받기, 인자전달, 반환 등이 모두 가능한 1급객체입니다. Swift의 클로져는 C언어, Objective-C언어 등의 타 프로그래밍 언어 상의 람다와 유사합니다. 

클로져는 정의되어 있는 상수나 변수들에 대해 참조 및 저장해서 사용할 수 있습니다. 이를 "클로저가 상수, 변수들을 닫아둔다" 라고도 합니다. Swift에서는 클로저 캡쳐링 간의 메모리 관리를 방법을 제공합니다. 

NOTE
클로져 캡쳐링(Closure Capturing)과 관련해서 익숙하지 않더라도 걱정할 필요는 없습니다. 더 자세한 내용은 Capturing Values 문서를 참고하시기 바랍니다.

 

 


클로저 종류

전역함수, 중첩함수(함수 안의 함수) 등의 함수들은 실제로 클로져의 특이 케이스에 해당합니다. 일반적인 클로져(Closure)는 아래의 3가지 형식 중 하나를 취하게 됩니다. 

1) 전역 함수(Global Functions)는 이름을 갖고 있는 클로져이머, 어떠한 값도 캡쳐(참조)하지 않습니다. 
2) 중첩 함수(Nested Functions)는 이름을 갖고 있으며, 클로져 내 블럭에서 값들을 캡쳐(참조)할 수 있습니다.
3) 일반 클로져의 경우 이름없는 클로져이며, 간단한 구문으로 표현됩니다. 일반 클로져도 값들을 캡쳐할 수 있습니다. 

 

 


Characteristics of Closure
클로저 특징

Swift의 클로져 표현은 깨끗하고, 명확, 간결하도록 최적화되어있습니다. 또한 보통의 시나리오에서 가독성 있는 문맥으로 표현됩니다. 해당 최적화 사항들은 아래의 내용들을 포함합니다. 

1) 문맥 상 추론할 수 있는 인자, 반환 타입들 제공
2) 단일 표현 클로져 상의 암시적 반환값
3) 간단하게 작성 가능한 인자 이름
4) 후행 클로저 방식 표현 제공

 

반응형
댓글
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함