클로저(3)
-
[iOS_Swift] 클로저(3) - 탈출클로저(Escaping Closure)
탈출클로저란? 함수 내부에 전달인자로 선언된 클로저를 함수외부로 반환된 후 실행이 되게 하는 클로저를 의미한다. 글로 적으면서도 말이 되게 어려운데, 최대한 쉽게 설명하면 함수가 종료된 뒤에 실행되는 클로저이다. 그럼 이게 왜 탈출클로저라는 명칭이 붙었느냐, 함수 내부에 전달인자로 있는 클로저가 함수가 종료되고 함수외부로 탈출!하기때문에 탈출클로저이다(..) 처음에 책을 봤을 때 이게 무슨 허무맹랑한 소리인가 싶었는데, 이해하고 다시 읽어보니 이보다 적합한 설명은 없는 것 같다. 어디에 주로 활용될까? 일반적으로 API를 호출하는 등 비동기 작업을 해야할 때 주로 쓰인다. 비동기 작업 자체가 한번에 여러작업을 하는 것이기에 순서가 뒤죽박죽이 될 수가 있다. 그렇기에 함수가 종료된 뒤에 실시하는 탈출클로저..
2021.12.31 -
[iOS_Swift] 클로저(2) - 기본 클로저
1편에서 클로저를 이해하기 위해 1급 객체에 대해 알아봤으니 본격적으로 클로저를 이해하고 어떻게 사용하면 좋을지 알아보려고 한다. 우선 클로저란 사용자의 코드에서 전달 및 사용할 수 있는 독립된 기능 블록이라고 한다. 이해가 잘 안가는 말인데 쉽게 생각하면 앞으로 사용하고 부르게 될 클로저들은 '이름 없는 함수'로 생각하면 편할 것 같다. 정확한 설명은 절대아니다! 이해의 편의를 위해.. 정확하게 클로저에 대해 분류를 하면 Named Closure, Unnamed Closure로 나눠 진다. 여기서 Named Closure가 우리가 흔히 알고 사용하는 함수이다. 즉 함수는 클로저의 일종인 것이다! Unnamed Closure가 바로 앞으로 계속 다루게 될 녀석이다. 즉 앞으로 언급하는 클로저는 전부 앞에..
2021.11.03 -
[iOS_Swift] 클로저(1) - 1급 객체(First-class Citizen)
클로저를 이해하기 위해서는 먼저 1급 객체(First-class Citizen)에 대한 이해가 반드시 수반되어야한다. 1급 객체란 어떠한 객체가 다음과 같은 조건을 만족할 때 1급 객체라고 한다. 1. 변수나 상수에 객체를 저장할 수 있는가? 2. 객체를 어떤 함수의 매개변수로 전달할 수 있는가? 3. 객체를 어떤 함수의 반환값으로 지정할 수 있는가? 이러한 조건을 충족할 때 우리는 해당 언어를 함수형 프로그래밍 언어라고 할 수 있다. 개인적으로 여기서 객체라는 개념이 늘 헷갈리는데(클래스나 구조체의 인스턴스 등) 여기서 말하는 객체, 함수형 프로그래밍 언어에서의 1급 객체는 '함수'를 의미하기도 한다! 좀 더 자세하게 함수가 어떻게 1급 객체의 요건을 충족시키는지 살펴보자 1. 변수나 상수에 객체(함수..
2021.10.25