250x250
반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

스윞한 개발자

Swift 기초 문법 - 멀티트레일링 클로져 본문

Swift 이론

Swift 기초 문법 - 멀티트레일링 클로져

스윞남 2024. 1. 26. 22:37
728x90
반응형
SMALL

이번 포스팅은 멀티트레일링 클로져! 입니다.

 

 

멀티트레일링 클로저(Multi-trailing Closure)는 Swift에서 클로저가 함수의 마지막 매개변수로 전달될 때 사용되는 문법적인 편의성을 제공합니다. 이를 사용하면 코드의 가독성을 향상시킬 수 있습니다. 멀티트레일링 클로저는 함수 호출 시 클로저의 중괄호를 괄호 밖으로 빼내어 사용하는 것을 의미합니다.

func someFunction(completion: () -> Void) {
    // 함수 구현
    completion()
}

// 클로저를 전달할 때 중괄호를 괄호 안에 두는 경우
someFunction {
    // 클로저 구현
}

 

일반적인 클로저 전달 방법은 위와 같습니다. 하지만 멀티트레일링 클로저를 사용하면 클로저를 괄호 밖으로 뺄 수 있습니다!

 

멀티트레일링 클로저는 여러 개의 클로저가 함수에 전달되는 경우에 특히 유용합니다. 예를 들어, UIView의 애니메이션 메서드인 UIView.animate를 사용할 때 다양한 애니메이션 옵션과 완료 핸들러를 전달할 수 있습니다.

 

UIView.animate(withDuration: 0.5) {
    // 애니메이션 구현
} completion: { finished in
    // 애니메이션 완료 후의 동작 구현
}

 

위 예제에서 animate(withDuration:completion:) 메서드는 두 개의 클로저를 받습니다. 멀티트레일링 클로저를 사용하면 가독성을 향상시킬 수 있으며 코드를 더 간결하게 작성할 수 있습니다.

 
func performOperations(a: Int, b: Int, operation1: (Int) -> Int, operation2: (Int) -> Int) {
let result1 = operation1(a)
let result2 = operation2(b)
print("Result 1: (result1)")
print("Result 2: (result2)")
}


performOperations(a: 5, b: 10) { $0 * 2 } operation2: { $0 + 5 }

위의 코드에서 함수는 두 개의 클로저를 인자로 받습니다. operation1은 클로저 a값을 받아서 연산을 수행하고, operation2 클로저는 b 값을 받아서 연산을 수행합니다.

함수 호출에서는 멀티트레일링 클로저를 사용하여 인자를 전달하였습니다.

 

 

*주의
첫 번째 클로저를 지정할 때는 클로저 레이블을 생략해도 됩니다. 이후의 클로저부터는 클로저 레이블을 생략할 수 없습니다.

 

참고(출처) : 개발하는 정대리, 야곰(Swift5)

728x90
반응형
LIST