2024년 4월 2일 화요일
3월에 공부했던 클로저와 고차함수를 제대로 이해하기 위해 연습하기
[Swift] Closure, Higher Order Function 1
복. 씁. 하. 기.
Closure (클로저)
- 동작을 저장할 수 있다.
- 변수/상수에 저장할 수 있다.
- 파라미터로 전달할 수 있다.
- 함수에서 반환할 수 있다.
- 타입을 가진다 = Function Type
- 함수는 Closure의 한 종류(Named Closure) 이다.
+ Quiz / SayHello 함수의 Function Type은?
func sayHello(name: String) {
}
(String) -> ()
(String) -> Void
Higher Order Function (고차함수)
- "함수를 파라미터로 받는 함수"
+ 아래 add 함수의 result 를 가지고 업그레이드 된 고차함수를 만들어보기!
func add(first: Int, second: Int) {
let result = first + second
}
+ completionHandler parameter 추가하기
func add(first: Int, second: Int, completionHandler: (Int) -> Void) {
let result = first + second
completionHandler(result) // result 값을 전달하며 호출됨
}
// completionHandler 에 우리가 할 동작을 전달
// 우리가 호출하면서 전달한 클로져가 add 함수 내부에서 호출된다.
add(first: 1,
second: 2,
completionHandler: { number in
print("결과는 \(number)"입니다!)
})
+ closure parameter 이름 생략하기 ($0)
func add(first: Int, second: Int, completionHandler: (Int) -> Void) {
let result = first + second
completionHandler(result)
}
add(first: 1,
second: 2,
completionHandler: {
print("결과는 \($0)"입니다!)
})
+ trailing closure 이름 생략하기 ($0)
add(first: 1, second: 2) { number in
print("결과는 \(number)"입니다!)
}
'iOS 앱 개발자 프로젝트 > Swift 문법 정복하기' 카테고리의 다른 글
[Swift] 객체 지향 프로그래밍 (Object-Oriented Programming) (1) | 2024.04.10 |
---|---|
[Swift] Inheritance & Override (2) (0) | 2024.04.10 |
[Swift] Struct vs. Class (2) | 2024.03.28 |
[Swift] Closure, Higher Order Function (0) | 2024.03.16 |
[Swift] Escaping closure (0) | 2024.03.15 |