Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[8주차] Closure에 대하여 설명하시오. Closure와 함수와의 관계에 대해 설명하시오. #19

Open
kangddong opened this issue Jan 17, 2023 · 1 comment

Comments

@kangddong
Copy link
Contributor

No description provided.

@obtusa07
Copy link

Closure

클로저란 다른 프로그래밍 언어의 람다와 비슷한 요소이다. 변수나 상수가 선언된 위치에서 Reference를 Capture하고 저장할 수 있다.
이것은 변수의 클로징 혹은 상수의 클로징이라고 부르는데 여기서 클로저라는 이름이 나온 것이다.

클로저의 세가지 형태

  1. 이름이 있으며 어떤 값도 획득하지 않는 전역 함수
  2. 이름이 있고 다른 함수 내부의 값을 획득할 수 있는 중첩된 함수의 형태
  3. 이름이 없고 주변 문맥에 따라 값을 획득할 수 있는 축약 문법으로 작성한 형태
{  (매개변수) -> 반환 타입 in
        실행 코드
}

단축 인자($0, $1, $2, ...)를 이용해서 편리하게 보여주고 in과 같은 키워드를 생략하는 것도 가능하다.

값 획득 (Capture)

클로저가 주변에 정의한 상수, 변수가 더 이상 존재하지 않아도 해당 상수나 변수 값을 자신 내부에서 참조하고 수정할 수 있다.
비동기 작업에 유용한 특성이다. 클로저를 이용하여 비동기 콜백을 작성하는 경우, 현재 상태를 미리 획득하지 않으면
실제로 클로저의 기능을 실행하는 순간에 주변에 상수나 변수가 이미 메모리에 존재하지 않는 경우가 있다.

ref:
야곰 스위프트 프로그래밍 3판 257p

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants