궁금한 내용을 검색해보세요!
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
서근 개발노트
티스토리에 팔로잉
SWIFT/Grammar

Swift : 기초문법 [#3 후행 클로저 - Closure syntax]

서근
QUOTE THE DAY

-
Written by SeogunSEOGUN

반응형

후행 클로저

함수에 대한 마지막 매개 변수가 클로저인 경우 Swift는 후행클로저 구문이라는 특수 구문을 사용할 수 있습니다.

 

클로저를 매개변수로 전달하는 대신 { } 안의 함수 바로 뒤에 전달합니다. 

(후행 클로저 사용 시 가독성이 좋습니다)

func travel(action: () -> Void) {
    print("나는 나갈 준비를 하고있다.")
    action()
    print("나는 도착했다!")
}

마지막 매개변수가 클로저이기 때문에 다음과 같이 후행 클로저를 travel()구문을 사용하여 호출할 수 있습니다.

travel() {
    print("나는 지금 차를 타고 이동중이다.")
}

위 코드에는 실제로 다른 매개변수가 없기 때문에 ( ) 를 완전히 제거할 수 도 있습니다.

travel {
    print("나는 지금 차를 타고 이동중이다.")
}

후행 클로저 구문은 Swift에서 아주 일반적으로 사용되기 때문에 익숙해져야 합니다!

 

클로저와 후행클로저를 비교해보려면 여기를 클릭해주세요.

왜 후행클로저를 사용해야 하나요?

후행 클로저 구문은 Swift코드를 더 쉽게 읽을 수 있도록 설계되었습니다.

 

먼저 간단한 예제를 들어보도록 하겠습니다.

func animate(duration: Double, animations: () -> Void) {
    print("\(duration)초 의 애니메이션을 실행합니다.")
    animations()
}

위 코드를 후행 클로저 없이 호출할 수 있습니다.

animate(duration: 3, animation: {
    print("성공")
})

이 처럼 후행클로저후행 클로저 없이 호출하는 방법은 제일 일반적이고 많은 사람들이 후행 클로저를 사용하지 않습니다. 하지만 많은 Swift개발자들이 마지막에 있는 }) 를 보고 '아 깔끔하지 않네' 라고 생각합니다.

 

후행 클로저를 사용하면 이 문제를 없애는 동시에 비어있는 animation 매개변수레이블 도 제거할 수 있습니다.

animate(duration: 3) {
    print("성공")
}

어때요? 깔끔하죠?

 

후행클로저를 사용할지 말지 여부가 확실하지 않다면, 모든 곳에서 이 후행 클로저를 사용해보는 것이 좋습니다. 그러면 자연적으로 후행 클로저 사용법이 익숙해지게 되고 결정하기도 쉽게 되겠죠? 일단 익숙해지는 것이 제일 좋습니다 :)

 

 

후행 클로저 TEST : 문제를 풀려면 이곳을 클릭해주세요.

 

 

읽어주셔서 감사합니다🤟


잘못된 내용이 있으면 언제든 피드백 부탁드립니다.


서근


위처럼 이미지 와 함께 댓글을 작성할 수 있습니다.