함수의 마지막 파라미터가 클로저일 때,이를 파라미터 값 형식이 아닌 함수 뒤에 붙여 작성하는 문법
이때, Argument Label은 생략된다.
아래 예시들을 통해서 확인해보자!
우리는 클로저가 1급 객체인 것을 알고 있으니 → 파라미터로 클로저를 받을 수 있다는 것도 다 알고 있을거얌! 이때 우리는 아래와 같이 코드를 작성할 수 있찌~!
func doSomething(closure: () -> ()) {
closure()
}
doSomething(closure: { () -> () in
print("Hello!")
})
근데 솔직히 말해서.. 가독성이 너무 떨어진다는 생각 안드니..? 일단 }) 이런거도 헷갈리고
⇒ 그래서 이렇게 클로저 한개를 파라미터로 받는 함수에서는 파라미터를 묶는 소괄호를 앞으로 빼서
표현이 가능하다!
⇒ 그리고 이 과정에서 closure라는 ArgumentLabel은 생략
이 된다!
+) 만약 모든 파라미터를 다 합쳐서.. 진짜 클로저 한개밖에 없다? → 소괄호도 생략이 가능
하다!
func doSomething(closure: () -> ()) {
closure()
}
doSomething { () -> () in
print("Hello!")
}
아래와 같이 파라미터가 여러개인 함수도 우리는 트레일링 클로져를 활용해서 조금 더 가독성을 높일 수 있다!
func fetchData(success: () -> (), fail: () -> ()) {
//do something...
}
fetchData(success: { () -> () in
print("Success!")
}, fail: { () -> () in
print("Fail!")
})
이렇게 아래와 같은 코드가 나오게 된다~!
fetchData(success: { () -> () in
print("Success!")
}) { () -> () in
print("Fail!")
}