아삭아삭 iOS 개발

[Swift 독학] 패스트캠퍼스 챌린지 36일차_클로저 본문

Swift

[Swift 독학] 패스트캠퍼스 챌린지 36일차_클로저

바닐라머스크 2022. 2. 28. 22:53

 

■ 클로저

  • 참조타입
  • 코드에서 전달 및 사용할 수 있는 독립 기능 블록이며, 일급 객체의 역할을 할 수 있음
     -> 상수나 변수에 클로저를 대입할 수 있음
  • 보통 이름없는 함수, 익명함수를 지칭함 -> func 키워드 사용 안함
  •  named closure, unnamed closure 둘 다 포함하지만 보통 unnamed closure를 지칭함
< 클로저 표현식 >

 { (매개 변수) -> 리턴 타입 in
     실행 구문
   }

// 클로저 헤드 부분 : (매개 변수) -> 리턴 타입
//  클로저 바디 : 실행 구문

 

■ 클로저의 특징

1) 클로저는 일급 객체 함수의 특성을 갖는다.

-> 변수나 상수에 대입 가능
-> 
함수 파라미터로 전달받을  있음
-> 
리턴 타입으로 사용 가능

 

※ 일급 객체

- 전달 인자를 보낼 있고, 변수/상수 등으로 저장하거나 전달할 있으며, 함수의 반환 값이 수도 있음

 

2) 후행 클로저 기능을 할 수 있다.

- 클로저의 구문이 길어져서 가독이 떨어질 사용 가능
-
, 마지막 매개변수로 전달되는 클로저에만 해당
  (
그래서 매개변수오 클로저 여러 개를 전달할 때는 마지막 클로저만 후행 클로저를 사용 가능)
-
파라미터와 반환값이 없는 클로저를 전달받은 경우, 클로저를 정의할 파라미터와 반환값, in키워드까지 모두 생략 가능,
 
그리고 하나의 클로저만 매개변수로 전달하는 경우에는 소괄호도 생략 가능

 

3) 다중 후행 클로저 기능을 할 수 있다

- 매개변수에 클로저가 여러개 있는 경우 사용 가능
-
중괄호를 열고 닫음으로써 클로저를 표현
-
번째 클로저는 매개변수 레이블을 생략함

 

4) 클로저 표현을 간소화할 수 있다.
-
문법을 최적화해서 클로저를 단순하게 표현할 있음
(
약식인수의 이름 = 매개변수 이름을 대신하여 사용할 있는
-
실행구문에 return구문 하나만 남는다면 return이라는 키워드도 생략 가능
 (print
라는 구문도 존재하는 , 단일 return문이 아닐 경우에는 에러가 난다
-
후행클로저 표현으로 작성이 가능하고, 하나의 클로저만 매개변수로 전달하는 경우에는 소괄호도 생략 가능

 

5) escape closure로도 사용 가능

 

6) auto closure로도 사용 가능

 

7) 클래스 인스턴스의 프로퍼티로 클로저를 할당한다면, 클로저와 인스턴스 사이에 강한 순환 참조가 생겨메모리 발생할 수도 있음

 

 

본 게시물은 개인 공부 기록용이므로 내용에 오류가 있을 수 있습니다.

 fast campus강의  참조자료

[1] https://blog.yagom.net/555/

[2] https://bbiguduk.gitbook.io/swift/language-guide-1/closures

 

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.