📷
클로저 (Closure)
March 06, 2023
💡 클로저 (Closure)
- 클로저는 사용자의 코드 안에서 전달되어 사용할 수 있는 로직을 가진 중괄호{}로 구분된 코드의 블럭을 의미
- 전역함수(global function)와 중첩함수(nested function)기 모두 클로저에 포함
- 보통 클로저는 Unnamed Closure를 의미하는 것이지만, Named Closure(함수) 또한 Closure에 포함
- Named Closure (함수)
func doSomething() {
print("Named Closure")
}
다음 코드와 같이 우리가 일반적으로 func()을 사용해 정의하는 이름이 있는 함수를 의미 단지, 이를 클로저로 부르는 것이 아니라, 그냥 함수로 명칭
- Unnamed Closure (익명함수)
let closure = { print("Unnamed Closure") }
보통 Closure의 의미는 다음과 같이 이름을 붙이지 않고 사용하는 함수(익명함수)를 말함
- 따라서 클로저는 익명이긴 하지만 함수이기에 1급 객체 함수의 특성을 모두 가짐
1급 객체 함수의 특성
- 변수나 상수에 저장 및 할당 가능
- 파라미터(객체의 인자)로 전달 가능
- 함수(객체)에서 return 가능
Swift의 클로저와 같은 것들
- C, C++, Objective-C : block
- Java : Lambda funciton
- C# : Delegates
💡 클로저 표현식
{ (parameters) -> return type in
statements
}
in을 기준으로 앞부분 ((parameters) -> return type)은 Closure Head, 뒷부분 statements는 Closure Body