이름이 없는 매서드(함수)라고 생각하면 됨
Completion Block (뭔가 일이 끝나고 돌아갈 코드 블럭을 만들 때)
: 네트워크를 통해 데이터를 받아올 때 데이터를 빨리 혹은 늦게 받아오게 된다
비동기적으로 언제 끝날지 모르는 일일 경우. 해당 일이 끝났을 때 행동하도록
데이터를 뿌려주거나 하는 등의 코드블럭 자체를 수행시킬 때 closure를 사용한다
Higher Order Functions (함수인데 인자를 함수로 받을 수 있는 함수를 만들 때)
: input으로 함수를 받을 수 있는 유형의 함수. 한국말로 고계함수
map, filler 이런 게 고계함수 - 이런 것을 쓸 때 closure을 사용한다
바깥 scope에서는 안쪽 scope에서 선언한 변수 사용 불가능
안쪽 scope에서는 바깥 scope에서 선언한 변수 사용 가능
printClosure는 if문을 벗어나도 사용 가능 - name 컨스턴트도 사용 가능
closure에게 잡혀서 사용 가능
이것을 captured 됐다고 함