티스토리 뷰
Closure 개념은 Swift 문법을 배우면서 가장 어려웠던 개념 중 하나였습니다. (저만 그럴 수도...)
언뜻 보면 함수와 다를 게 없어 보이는 Closure.... 무엇인지 함께 봅시다!
Closure
- 이름이 없는 함수 (코드 블록)
- 함수와 같이 변수/상수로 할당, 매개변수로 전달, 값을 반환할 수 있습니다.
Closure 문법
{ (매개변수들) -> 반환 타입 in
실행 코드
}
Closure 사용
//Fuction
func fun(a: Int, b: Int) -> Int {
return a + b
}
//Closure
let clo: (Int, Int) -> Int = { (a: Int, b: Int) in
return a + b
}
//Closure 사용
let result:Int = clo(2,4)
print(result) // 6
- 함수와 다르게 func 키워드를 사용하지 않습니다.
함수의 파라미터로 Closure 사용
let plus: (Int, Int) -> Int = { (a: Int, b: Int) in
return a + b
}
func result(a: Int, b: Int, method: (Int, Int) -> Int) -> Int {
return method(a, b)
}
print( result(a: 4, b: 5, method: plus) ) // 9
Closure의 생략 (다양한 표현)
// 주어진 Closure를 파라미터로 받는 함수
func fun(a: Int, b: Int, method: (Int, Int) -> Int) -> Int {
return method(a, b)
}
// 기본 표현
result = fun(a: 5, b: 8, method : {
a, b in return a + b // 13
})
// 마지막 파라미터를 분리한 Closure
result = fun(a: 5, b: 8) {
a, b in return a + b // 13
}
// 단축 인자를 이용한 Closure
result = fun(a: 5, b: 8, method: {
return $0 + $1 // 13
})
// return 표현을 생략한 Closure
result = fun(a: 5, b: 8) {$0 + $1} // 13
- 다음은 전부 같은 값을 반환하는 표현입니다. (의미가 같습니다.)
1. 함수 호출 시 마지막 파라미터에 클로저 파라미터가 있다면 밖으로 분리하여서 중괄호를 통해 생략할 수 있습니다.
2. 단축 인자를 이용하여 생략하는 방법도 있습니다. ($0, $1 => 클로저의 첫 번째 인자, 두 번째 인자를 뜻합니다)
3. 클로저가 반환하는 값이 존재한다면 return 없이도 마지막 줄의 값이 반환됩니다. (return 생략)
※ 협업 시 너무 축약된 코드는 알아보기 힘들 수 있습니다.
Reference :
'Swift' 카테고리의 다른 글
[iOS] 옵셔널 체이닝 (Optional Chaining) (0) | 2021.03.18 |
---|---|
[iOS] Swift 프로퍼티, 프로퍼티 감시자 (Property, Property Observer) (0) | 2021.03.10 |
[iOS] Swift 열거형 (enum) (0) | 2021.02.22 |
[iOS] Swift Collection Types (Array, Dictionary, Set) (0) | 2021.02.17 |
[iOS] Swift Fuction 정리 (0) | 2021.02.11 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- setBackgroundColor
- 디프만
- 프로세스
- Xcode
- 스레드
- URLComponents
- OS
- RxSwift
- returnKey
- 스냅킷
- isNetworkAccessAllowed
- PHAsset
- rxcocoa
- PHImageRequestOptions
- cs
- 쓰레드
- sharedmemory
- 프로세스간통신
- swiftsoup
- 부캠
- Swift
- webcrawl
- 운영체제
- 멀티프로세스
- 개발동아리
- optional
- WKUIDelegate
- 슈퍼스칼라
- 개발대외활동
- ios
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함