[Swift] 클로저

Martin Kim·2021년 7월 27일
0

Swift

목록 보기
1/11
post-thumbnail

클로저 표현식

{ (매개변수 목록) -> 반환타입 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))    // 11
print(plus20(1))    // 21
  • 위 예제에서 리턴되는 클로저는 실행될 당시의 환경(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)    // 3

클로저 표현식과 클로저는 다르다!

profile
학생입니다

0개의 댓글