클로저 고급

JG Ahn·2024년 10월 15일

swift 기초

목록 보기
16/23

1. 후행 클로저

  • 함수의 매개변수 마지막으로 전달되는 클로저는 함수 밖에 구현 가능
//기본 클로저 표현
func calculate(a: Int, b: Int, method: (Int, Int) -> Int) -> Int {
    return method(a,b)
}

var result: Int

//마지막 매개변수 클로저를 함수 밖에 구현
result = calculate(a: 10, b: 15) { (left: Int, right: Int) -> Int in
    return left + right
}

print(result) //결과 : 25

2. 반환타입 생략

  • 컴파일러가 클로저의 타입을 유추할 수 있는 경우 매개변수, 반환타입 생략 가능
//calculate 함수의 method 매개변수의 반환타입 생략
result = calculate(a: 10, b:25, method: { (left: Int, right: Int) in
    return left + right
})

print(result)

//후행클로저에서 반환타입 생략
result = calculate(a: 7, b:19) { (left: Int, right: Int) in
    return left + right
}

print(result)

3. 단축 인자이름

  • 클로저의 매개변수 이름이 불필요한 경우 $0, $1... 처럼 표현 가능
result = calculate(a: 8, b: 22, method: {
    return $0 + $1
})

print(result) //결과 : 30

//후행 클로저
result = calculate(a: 3, b: 13) {
    return $0 + $1
}

print(result) //결과 : 16

4. 암시적 반환 표현

  • 클로저의 반환값이 있을 경우 클로저의 마지막 줄은 암시적으로 반환값 취급
//"return" 생략
result = calculate(a: 6, b: 9) {
    $0 + $1
}

//한 줄 표현
result = calculate(a: 4, b: 2) { $0 + $1 }

5. 즉시 실행 클로저


※ 과도한 축약은 가독성이 떨어지므로 주의

0개의 댓글