이전 클로저 작성내용

클로저는 어떤 상수나 변수의 참조를 캡쳐(capture)해 저장할 수 있습니다. Swift는 이 캡쳐와 관련한 모든 메모리를 알아서 처리합니다.

전역함수(global Function)와 중첩함수(nested function)은 실제 클로저의 특별한 경우입니다.


<aside> 💡 클로저는 주로 한 함수의 인자값이 다른 함수의 결과값일 때 자주 활용된다. 즉 함수 A가 수행된 결과로 산출된 값이 함수 B의 인자로 활용되는 경우를 말합니다.

</aside>

클로저를 사용하는 이유중 하나는 기능을 저장하는 것

  1. 딜레이 후 일부 코드를 실행합니다.
  2. 애니메이션이 완료된 후 일부 코드를 실행합니다.
  3. 다운로드가 완료되면 일부 코드를 실행합니다.
  4. 사용자가 메뉴에서 옵션을 선택한 경우 일부 코드를 실행합니다.
  5. 클로저를 통해 일부 기능을 단일 변수로 마무리하고 어딘가에 저장할 수 있습니다. 또한 기능에서 return 하고 클로저를 다른 곳에 보관 할 수도 있습니다. 클로저는 Swift를 처음 배울 때 특히 자신의 매개 변수를 accept 하거나 return 할 때 읽기가 어렵습니다. 하지만 클로저를 자주 보게 되면 쉽게 익숙 해 질 거예요!

클로저를 함수로 전달

클로저는 String 과 Int 처럼 사용할 수 있으므로 이것을 함수에 전달할 수 있습니다. 이건 처음배우는 분들에겐 정말 복잡하고 어렵기 때문에 단계별로 진행하도록 하겠습니다.

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

위 클로저를 함수에 전달하여 함수 내에서 실행 할 수 있도록 하려면 매개변수 유형을 () -> void 즉, 매개변수를 작성하지 않고 아무것도 반환하지 않아야 합니다. 따라서 아래와 같이 작성할 수 있습니다. 함수에 반환하는 곳을 잘 확인해주세요.