HulkCodeer의 기술 블로그

클로저를 아십니까?

April 20, 2019 | 0 Minute Read

어느날 나의 부사수가 이게 뭐예요?? 하면서 물어본게 있었다. 아 이건 클로저라고 하는데 간단하게 말하면 함수내에서 작성된 함수고….
함수내에서 익명 함수 형태로 내부함수를 정의하고 리턴하여 외부함수 바깥에서 사용하고…. 일급 객체이며…코드 블럭이며…등등

근데 나는 급하게 iOS업무를 맡게 되었고, 공부할 시간도 부족한 상태인데… 부사수가 물어본 코드를 보고 당연하게 클로저라고 했고, 클로저에 대한 설명을 주저리주저리 하고 자리에 다시 오는 순간 갑자기 번개같은것이 날 내리쳤다.

그리고는 재은씨의 스위프트 기본편 책을 읽어내려갔다. 휴…스위프트에도 클로저가 있었디.

계속 Objective-C로 라이브러리 작업을 하고, Swift로 된 프로젝트는 한개밖에 안해봐서 클로저가 있는지 없는지도 모르는데 클로저라고 대답을 해버렸다ㅠㅠ 다행히 클로저란 개념이 있어서 다행이지 없었으면 잘못가르켜 준건데…ㅠㅠ

나는 서버 개발자로 일을 할때 수많은 클로저를 사용했었다. 자바스크립트에서 말이다. 자바스크립트에서는 Scope를 이용해서 생명 주기가 끝난 외부함수의 변수를 참조할 경우가 있기 때문이며, 멋져보이고(?), 전역변수의 오/남용이 없는 코드 작성을 위해 썼었다.

Swift에서도 여러 개념이 비슷하지만 Swift에서는 여러가지 축약형 클로저가 존재한다.