일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 앱개발
- 이론
- MVVM
- SwiftUI
- 구름톤 유니브
- struct
- 딕셔너리
- 네트워크
- 세종대학교
- 반응형
- 학과별커뮤니티
- 프로토콜
- mvc
- 스트럭트
- ios
- async
- 토이프로젝트
- AppStore
- 협업
- RxSwift
- CS
- collectionview
- 대표
- forEach
- WeatherKit
- 디자인 패턴
- 실습
- uikit
- swift
- 기초문법
- Today
- Total
스윞한 개발자
Swift 기초 문법 - 멀티트레일링 클로져 본문
이번 포스팅은 멀티트레일링 클로져! 입니다.
멀티트레일링 클로저(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)
'Swift 이론' 카테고리의 다른 글
IOS AVFoundation (0) | 2024.01.27 |
---|---|
Swift 기초 문법 - 디자인패턴 빌더패턴 (0) | 2024.01.27 |
Swift 기초 문법 - 코더블 Codable (0) | 2024.01.25 |
Swift 기초 문법 - getter / setter (0) | 2024.01.25 |
Swift 기초 문법 - 의존성 주입 Dependency (0) | 2024.01.25 |