🔥 소개

150자
2분

클로저(Closures)는 코드에서 전달하고 사용할 수 있는 독립적인 코드 덩어리예요. Swift의 클로저는 다른 프로그래밍 언어의 익명 함수, 람다, 블록과 비슷합니다.

클로저는 정의된 주변 환경에서 모든 상수와 변수를 캡처하고 저장할 수 있어요. 이렇게 캡처된 상수와 변수는 클로저가 실행되는 동안 계속 사용할 수 있죠.

예를 들어볼까요?

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
func makeCounter() -> () -> Int {
    var count = 0
    return {
        count += 1
        return count
    }
}
 
let counter = makeCounter()
print(counter()) // 1
print(counter()) // 2
print(counter()) // 3

여기서 makeCounter 함수는 count라는 변수를 정의하고, 클로저를 반환해요. 반환된 클로저는 count 변수를 캡처해서 저장하고 있어요.

클로저가 호출될 때마다 캡처한 count 변수의 값을 증가시키고 반환하죠. 클로저 밖에서 정의된 count를 클로저 내부에 가둬두는 것처럼 보여서 "closing over"라고 표현해요.

Swift는 캡처를 위한 모든 메모리 관리를 자동으로 처리해 줍니다.

함수에서 배운 전역 함수와 중첩 함수는 사실 클로저의 특별한 경우랍니다. 클로저는 다음 세 가지 형태로 나타납니다:

  • 전역 함수는 이름이 있고 값을 캡처하지 않는 클로저예요.

YouTube 영상

채널 보기
AI를 이해하는 첫걸음, 선형대수학
모순과 귀닙법 | MIT 컴퓨터 과학을 위한 수학
AI에서 선형대수가 중요한 이유
AI를 위한 선형대수학 - 행렬은 공간을 바꾼다
AI를 위한 선형대수학 - 데이터 증강의 믹스업
AI 데이터는 결국 선형대수로 표현됩니다
AI에서 고차원 임베딩이 무엇일까?
AI를 위한 선형대수 - 신경망의 선형 결합