고차함수란?
- 다른 함수를 전달인자로 전달받거나, 함수 실행의 결과를 함수로 반환하는 함수
- 말이 너무 어렵다... 단순하게는?
매개변수로 함수를 가지는 함수
- 특히 컬렉션(배열, 딕셔너리, 집합) 정리하는 기능으로 많이 사용합니다
ㄴ 왜 쓰나요?
함수형 프로그래밍의 장점을 사용하기 위해서!
- 코드 간결
- 코드 재사용 쉬움
- 컴파일러 최적화 측면에서의 성능 차이
- 멀티스레드 환경에서 부작용 방지
Reduce(_:_:)
- 주어진 요소의 모든 내부 값을 더해서 반환하는 함수입니다
- 매개변수로 전달받은 클로저의 연산 결과를 반환한다고도 말해요
func reduce<Result>(
_ initialResult: Result,
_ nextPartialResult: (Result, Self.Element) throws -> Result
) rethrows -> Result
- initialResult -> 초깃값을 지정해요
- 초깃값은 클로저가 처음 실행될 때만 전달됩니다
- nextPartialResult -> 연산을 위한 클로저를 작성해요
- 결과 누적값을 반환해서 반복적으로 연산을 할 수 있게 해줍니다
- 예시
let numbers = [1, 2, 3, 4]
let numberSum = numbers.reduce(0, { x, y in
x + y
})
// numberSum == 10
- 초깃값 0, 연산을 위한 클로저는 x + y 를 리턴하는 reduce 함수를 작성했어요
- x, y는 각각 첫번째 매개변수, 두번째 매개변수를 의미합니다
- $0, $1 로도 사용할 수 있어요
let numbers = [1, 2, 3, 4]
let numberSum = numbers.reduce(0, {
$0 + $1
})
// numberSum == 10
'iOS > Swift' 카테고리의 다른 글
[Swift] 예외처리(Error, throw, throw, do-catch, try) (0) | 2023.12.07 |
---|---|
[Swift] 고차함수(3/3) filter(_:) (0) | 2023.11.23 |
[Swift] 고차함수(1/3) map (0) | 2023.11.23 |
[Swift] 상속 Inheritance (0) | 2023.11.21 |
[Swift] 프로퍼티 감시자 Property Observer (0) | 2023.11.21 |