Swift 공식문서 읽기...Day3

김민종·2021년 8월 18일
0

Swift Doc

목록 보기
3/26

Closures에 관한 설명이다.

클로저는 세가지 형태로 나타낸다.

전역 함수 : 이름이 있고 어떤 값도 캡쳐하지 않는 클로저
중첩 함수 : 이름이 있고 관련한 함수로 부터 값을 캡쳐 할 수 있는 클로저
클로저 표현 : 경량화 된 문법으로 쓰여지고 관련된 문맥으로부터 값을 캡쳐할 수 있는 이름이 없는 클로저

함수는 클로저의 한 형태이다!는 사실을 처음 알았다.함수의 형태가 아닌 인자의 형태로 들어가 있는 클로저를 인라인 클로저라고 부르고 이는 클로저의 몸통 in 다음에 시작한다.

문맥에서 타입 추론 (Inferring Type From Context)
sorted method에서 이미 해당 타입의 인자를 알고있기 때문에 생략가능하다. 간단한 형태의 함수로 기술가능하다. 간단하지만 가독성 및 코드를 읽는 사람들을 위해 풀어서 쓰기도 가능하다.

단일표현클로저에서는 return 키워드를 생략하여 쓸 수 있다.
또 $를 이용해서 in키워드 역시 생략하여 사용가능...심지어 그냥 > 기호를 사용하기도한다....??(swift는 효율성에 미쳐있는 언어 같다..시간이 많이 아깝나봄..)

값 캡처
클로저는 상수나 변수의 값을 캡쳐할 수 있습니다. 원본값이 사라져도 값을 활용할 수 있는데 이는 중첩함수가 대표적인 예시이다. 값 캡처를 통해 함수를 생성하면 실제 함수 실행시 변수를 입력하지 않더라도 변수를 공유하기 때문에 값이 반환된다.

이스케이핑 클로저
함수밖에서 실행되는 클로저나 비동기로 실행되는 클로저는 @escaping키워드를 붙혀야한다. 그리고 self를 표시해야한다. escaping을 붙이지 않으면 컴파일 시 오류가남.

자동클로저
자동클로저는 실제 실행이 되기 전까지 실행되지 않는다. 오토클로저를 사용할때는 @autoclosure를 사용해야한다.

profile
신입 ios개발자입니다!

0개의 댓글