티스토리 뷰

Swift

[swift]Closure란? + Closure축약 과정

real_water 2021. 11. 25. 22:46

1.클로저란?


 공식 문서를 보면

-클로저란 코드 안에서 전달되고 사용가능한  함수 블록이다.  ( {}를 이용해 클로저 구문을 작성한다)

-람다함수와 비슷하다.

-자신이 정의된 문맥으로부터 모든 상수와 변수의 값을 캡처하거나 저장할 수 있다.(아직 뭔소린지 모르겠음)

 

+)

일회용 함수를 작성할 수 있는 구문

익명함수(일반 func함수는 이름이 있는 클로저이다.)

2.클로저 표현


closure는 함수이긴 하지만 func를 사용하지 않는다.

 

1.매개변수와 반환타입이 없는 클로저

+)클로저는 변수 또는 상수에 할당이 가능하다.

 

2.반환 값이 없는 클로저

+)클로저를 할당없이 직접 호출해야 하는 경우 ()로 감싸준다.(거의 쓰이지 않음)

 

3.클로저 축약


배열을 내림차순으로 정렬하는 sort함수를 예시로 들었다.

1.기본형

2.if문 간결하게 작성

인자 두개를 받아서 첫번째 인자가 크면 true, 작으면 false를 return하는 함수이다.

False이면 두 인자 값의 위치를 바꾼다.

다 돌고나면 내림차순으로 정렬된 걸 확인할 수 있다

 

3.반환값 생략

컴파일러는 반환 값이 생략되면 return값 s1 > s2를 통해서 반환 값의 타입을 유추할 수 있다.

(s1>s2 의 결과는 true or false이므로)

 

4.타입 어노테이션 생략

타입을 명시해주지 않으면 대입되는 값을 보고 추론한다.

(타입이 모호할 가능성이 있으면 타입 명시해주기)

 

6.매개변수 생략

$0은 첫번째 인자, $1는 두번째 인자를 의미한다.

(인자가 많아지면 $2, $3, ...$n 이렇게 써주면 됨 )

 

7.return 생략

 

8.연산자 함수

연산자만을 사용하여 의미하는 바를 정확히 나타낼 수 있을 때 사용

반응형

'Swift' 카테고리의 다른 글

[Swift]Property Wrapper  (0) 2022.05.03
MVVM in SwiftUI  (0) 2022.03.30
[swift]어노테이션  (1) 2021.10.26
[xcode]fail to prepare for communication with playground for an unknown reason  (0) 2021.10.26
Swift 시작하기  (0) 2021.06.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함