[Swift ] 고차함수 시리즈(Higher-order-function) - Reduce
2022. 5. 23. 16:55ㆍAlgorithm & DataStructure
Reduce 정의
결합(combine) 에 가까운 기능.
컨테이너 내부의 콘텐츠를 하나로 합하는 기능을 실행하는 고차함수.
배열이라면 배열의 모든 값을 전달인자로 전달받은 클로저의 연산 결과로 합해준다.
Reduce 형태
1. 클로저가 각 요소를 전달받아 연산한 후 값을 다음 클로저 실행을 위해 반환해 컨테이너를 순환하는 형태
(배열의 각 항목들을 재귀적으로 클로저를 적용시켜 하나의 값을 만들어 줌. )
기본형태
public func reduce<Result>(_ initialResult: Result,_ nextPartialResult: (Result, Element) throws -> Result) rethrows -> Result
2. 리듀스 메서드는 컨테이너를 순환하며 클로저가 실행되지만 클로저가 따로 결괏값을 반환하지 않는 형태
* 대신 inout 매개변수 사용해 초깃값에 직접 연산을 실행하게 됨
public func reduce<Result>(into initialResult: Result,_ updateAccumulatingResult: (inout Result, Element) throws -> ()) rethrows -> Result
Reduce 메서드 사용
let numbers: [Int] = [10,20,30,40,50]
let sumFromThree: Int = numbers.reduce(11) {
print("\($0) + \($1)")
return $0 + $1
}
print(sumFromThree)
코드를 돌리면 reduce 메서드의 초깃값 11 이 $0 이 되고, 그 다음 $1 이 10 이 됨.
둘이 더해진 값에 그 다음 인덱스 값 또 더해주고 그 값 더해진 결괏값을 그 다음 $0 에 값이 담기고 연산됨을
아래 콘솔창에 프린트된 값들로 확인할 수 있음!
📌 단축 인자 이름
매개변수 이름 단축시켜주는 것
→ 첫 번째 전달인자부터 $0, $1, $2, $3,...순서로 $ 와 숫자의 조합으로 표현
단축 인자 표현을 쓰면 매개변수 및 반환 타입, 실행 코드를 구분하기 위한 키워드 in 사용할 필요 X
Reference
야곰 스위프트 프로그래밍(3판) - Swift 5
swift.org
'Algorithm & DataStructure' 카테고리의 다른 글
[ Array ] String 을 배열로 쪼개라! (0) | 2023.08.14 |
---|---|
[ 정리 중 ..] Split 과 Components (0) | 2022.05.24 |
[ Swift 알고리즘 입문 ] 기본적으로 알아둬야 할 사항들!! (0) | 2022.05.19 |
[ 자료구조 기초] 내가 뒤늦게 자료구조와 알고리즘 공부를 다시 하는 이유.. (0) | 2022.03.17 |