클로저는 일정 기능을 하는 코드를 하나의 블록으로 모아놓은 것을 말한다. (함수는 클로저의 한 형태로, 이름이 있는 클로저라고 보면 된다.)
변수, 상수 등으로 저장이 가능하고, 전달인자로도 전달이 가능하다.
- 클로저 정의
{ (매개변수 목록) -> 반환타입 in
실행 코드
}
- 클로저 사용 예시

클로저는 주로 함수의 전달 인자로 많이 사용된다. (콜백 함수 등)
- 함수 전달인자로 클로저 사용 예시

클로저 고급
클로저를 더 편리하고 간결하게 사용하기 위해서 아래와 같은 방법들을 사용해 줄 수 있다.
- 후행 클로저
- 반환타입 생략
- 단축 인자이름
- 암시적 반환 표현
[ 후행 클로저 ]
클로저가 함수의 마지막 전달인자라면 마지막 매개변수 이름을 생략한 후, 함수 소괄호 외부에 클로저를 구현할 수 있다.
괄호 위치가 헷갈리지 않고, 가독성이 좋아지는 방법임

[ 반환타입 생략 ]
클로저를 매개변수로 전달할 때 반환값을 이미 알고 있다면 생략해 줄 수 있다.

[ 단축 인자이름 ]
클로저의 매개변수 이름을 굳이 사용하지 않고, 단축 인자이름을 활용할 수 있다.
단축 인자이름은 클로저 매개변수의 순서대로 $0, $1, ... 처럼 표현한다.

[ 암시적 반환 표현 ]
클로저가 반환하는 값이 있다면 클로저의 마지막 줄의 결과값은 암시적으로 반환값으로 취급하기 때문에 return 키워드를 사용하지 않아도 자동으로 반환값으로 인식해준다.

위에서 설명한 기법들로 축약한 클로저 문법과 기존의 축약하지 않은 클로저 문법을 비교해보면 코드가 훨씬 간결하고 읽기 편해졌다는 것을 확인해볼 수 있다.
하지만 너무 축약하는 것도 다른 사람들이 코드를 이해하는 데 어려움을 줄 수도 있으니 상황에 따라 코드를 이해할 수 있는 수준으로 적절하게 축약해 주도록 하자.

'Swift' 카테고리의 다른 글
[ Swift ] Swift 기초 문법10 - 인스턴스의 생성과 소멸 (0) | 2023.02.19 |
---|---|
[ Swift ] Swift 기초 문법9 - 프로퍼티 (0) | 2023.02.17 |
[ Swift ] Swift 기초 문법7 - 값 타입과 참조 타입 (클래스, 구조체, 열거형 비교) (0) | 2023.01.30 |
[ Swift ] Swift 기초 문법6 - 열거형 (0) | 2023.01.30 |
[ Swift ] Swift 기초 문법5 - 구조체, 클래스 (0) | 2023.01.29 |
클로저는 일정 기능을 하는 코드를 하나의 블록으로 모아놓은 것을 말한다. (함수는 클로저의 한 형태로, 이름이 있는 클로저라고 보면 된다.)
변수, 상수 등으로 저장이 가능하고, 전달인자로도 전달이 가능하다.
- 클로저 정의
{ (매개변수 목록) -> 반환타입 in
실행 코드
}
- 클로저 사용 예시

클로저는 주로 함수의 전달 인자로 많이 사용된다. (콜백 함수 등)
- 함수 전달인자로 클로저 사용 예시

클로저 고급
클로저를 더 편리하고 간결하게 사용하기 위해서 아래와 같은 방법들을 사용해 줄 수 있다.
- 후행 클로저
- 반환타입 생략
- 단축 인자이름
- 암시적 반환 표현
[ 후행 클로저 ]
클로저가 함수의 마지막 전달인자라면 마지막 매개변수 이름을 생략한 후, 함수 소괄호 외부에 클로저를 구현할 수 있다.
괄호 위치가 헷갈리지 않고, 가독성이 좋아지는 방법임

[ 반환타입 생략 ]
클로저를 매개변수로 전달할 때 반환값을 이미 알고 있다면 생략해 줄 수 있다.

[ 단축 인자이름 ]
클로저의 매개변수 이름을 굳이 사용하지 않고, 단축 인자이름을 활용할 수 있다.
단축 인자이름은 클로저 매개변수의 순서대로 $0, $1, ... 처럼 표현한다.

[ 암시적 반환 표현 ]
클로저가 반환하는 값이 있다면 클로저의 마지막 줄의 결과값은 암시적으로 반환값으로 취급하기 때문에 return 키워드를 사용하지 않아도 자동으로 반환값으로 인식해준다.

위에서 설명한 기법들로 축약한 클로저 문법과 기존의 축약하지 않은 클로저 문법을 비교해보면 코드가 훨씬 간결하고 읽기 편해졌다는 것을 확인해볼 수 있다.
하지만 너무 축약하는 것도 다른 사람들이 코드를 이해하는 데 어려움을 줄 수도 있으니 상황에 따라 코드를 이해할 수 있는 수준으로 적절하게 축약해 주도록 하자.

'Swift' 카테고리의 다른 글
[ Swift ] Swift 기초 문법10 - 인스턴스의 생성과 소멸 (0) | 2023.02.19 |
---|---|
[ Swift ] Swift 기초 문법9 - 프로퍼티 (0) | 2023.02.17 |
[ Swift ] Swift 기초 문법7 - 값 타입과 참조 타입 (클래스, 구조체, 열거형 비교) (0) | 2023.01.30 |
[ Swift ] Swift 기초 문법6 - 열거형 (0) | 2023.01.30 |
[ Swift ] Swift 기초 문법5 - 구조체, 클래스 (0) | 2023.01.29 |