제라스의 iOS 공부/Swift 문법
[Swift 문법] 멀티 트레일링 클로저(multi-trailing Closure)
Xerath(제라스)
2023. 8. 18. 13:02
728x90
반응형
이건 뭘까?
우리는 클로저를 매개변수로 받아오는 함수를 구현하기도 하는데...
이때, 만약 여러개의 클로저를 넣는다면 클로저를 넣는 것을 간략하게 줄여서도 쓸 수 있다.
다음 코드를 보면 바로 이해가 갈 것이다.
일단, 하나의 클로저 매개변수를 갖는 함수는 이렇다.
// 우리는 보통 이런 식으로 클로저를 함수의 매개변수로 쓴다.
func someFunction(completion: () -> Void){
print(#fileID, #function, #line, "- ")
completion()
}
// 이걸 호출 시엔 이렇게 담아주면 되는데
someFunction(completion: {
print(#fileID, #function, #line, "- hohoho 1")
})
// 이걸 줄이면 이렇게도 쓸 수 있었다.
someFunction {
print(#fileID, #function, #line, "- hohoho 2")
}
다음은 여러개의 클로저 매개변수를 갖는 함수다.
// 여러개의 클로저가 매개변수로 쓰인다면, 다음과 같이 작성할 수도 있다.
func someFunctionWithClosures(first: () -> Void,
second: (String) -> Void,
third: (Int) -> Void){
print(#fileID, #function, #line, "- ")
first()
second("호롤롤로")
third(3)
}
// 이걸 호출 시에 각각 이렇게 넣어줄 수도 있지만,
someFunctionWithClosures(first: {
print("첫번째")
}, second: {
print("두번째: \($0)")
}, third: {
print("세번째: \($0)")
})
// 이걸 trailing 즉, 연이어서 써주려면 이렇게도 쓸 수 있다. 이게 멀티 트레일링 클로저다.
someFunctionWithClosures{
print("first")
} second: { string in
print("string: \(string)")
} third: { number in
print("number: \(number)")
}
728x90
반응형