클로저 표현식
{ (매개변수 목록) -> 반환타입 in
실행 코드
}
- 클로저 표현식은 중괄호 블록({})로 둘러쌓인 독립적이고 실행가능한 코드조각이다.
- 참조 타입이다.
- 변수 / 상수 등으로 저장할 수 있고 전달인자나 반환타입으로 사용될 수 있다.
클로저
- 클로저는 함수나 클로저 표현식과 같은 코드 블록이 주변의 하나 이상의 변수와 결합된 것이다.
- 클로저는 실행될 당시의 환경을 기억했다가 활용된다.
func add(a: Int) -> () -> Int {
let add: Int = a
return { (arg: Int) -> Int in
add + arg
}
}
var plus10 = add(10)
var plus20 = add(20)
print(plus10(1))
print(plus20(1))
- 위 예제에서 리턴되는 클로저는 실행될 당시의 환경(add(10), add(20))을 기억해 상수 add에 저장하고 호출시 활용한다.
후행 클로저
- 클로저를 사용하며 상당히 흥미로운 것을 발견했다. 만약 클로저가 함수인자의 가장 마지막에 넘겨주는 인자라면 마지막 매개변수 이름을 생략한 후 함수 소괄호 외부에 클로저를 구현할 수 있다는 점이다.
- 만약 넘겨줘야할 클로저가 여러 줄로 길어진다면 후행 클로저를 활용하자
func createCalculator(a: Int, b: Int, c: (Int, Int) - > Int) -> Int {
return c(a, b)
}
let one: Int = 1
let two: Int = 2
let result: Int = createCalculator(a: one, b: two) { (left: Int, right: Int) -> Int in
return left + right
}
print(result)
클로저 표현식과 클로저는 다르다!