🔥 소개
150자
2분
클로저(Closures)는 코드에서 전달하고 사용할 수 있는 독립적인 코드 덩어리예요. Swift의 클로저는 다른 프로그래밍 언어의 익명 함수, 람다, 블록과 비슷합니다.
클로저는 정의된 주변 환경에서 모든 상수와 변수를 캡처하고 저장할 수 있어요. 이렇게 캡처된 상수와 변수는 클로저가 실행되는 동안 계속 사용할 수 있죠.
예를 들어볼까요?
func makeCounter() -> () -> Int { var count = 0 return { count += 1 return count } } let counter = makeCounter() print(counter()) // 1 print(counter()) // 2 print(counter()) // 3
swift
여기서 makeCounter
함수는 count
라는 변수를 정의하고, 클로저를 반환해요. 반환된 클로저는 count
변수를 캡처해서 저장하고 있어요.
클로저가 호출될 때마다 캡처한 count
변수의 값을 증가시키고 반환하죠. 클로저 밖에서 정의된 count
를 클로저 내부에 가둬두는 것처럼 보여서 "closing over"라고 표현해요.
Swift는 캡처를 위한 모든 메모리 관리를 자동으로 처리해 줍니다.
함수에서 배운 전역 함수와 중첩 함수는 사실 클로저의 특별한 경우랍니다. 클로저는 다음 세 가지 형태로 나타납니다:
- 전역 함수는 이름이 있고 값을 캡처하지 않는 클로저예요.