// 출처: https://developer.apple.com/documentation/swift/array/2298686-reduce
let numbers = [1, 2, 3, 4, 5, 6]
let total = numbers.reduce(0) { partialResult, num in
print("partialResult: \(partialResult), num: \(num)")
return partialResult + num
}
reduce의 첫번째 parameter는 (위에서 0인 부분) 초기값이다. 처음 reduce의 클로저가 호출되면 이 초기값이 partialResult로 넘어간다. 클로저가 호출될 때 마다 클로저의 parameter들이 어떻게 변화되는지 보면..
partialResult: 0, num: 1
partialResult: 1, num: 2
partialResult: 3, num: 3
partialResult: 6, num: 4
partialResult: 10, num: 5
partialResult: 15, num: 6
클로저의 리턴 값이 partialResult(클로저의 첫번째 파라미터)가 되고 num에는 reduce를 호출한 배열의 요소가 순차적으로 들어간다.
위처럼 각 값을 더하는 reduce는 아래처럼 확 줄여서 작성할 수도 있다.
let total = numbers.reduce(0, +)
반응형
'swift & iOS > swift' 카테고리의 다른 글
[swift] 딕셔너리 요소 삭제하기 (0) | 2022.02.07 |
---|---|
[swift] 빈 딕셔너리 dictionary 선언하기 (0) | 2022.02.07 |
[swift] 배열에서 nil 이 아닌 값만 추려내기 (compactMap) (0) | 2022.02.04 |
[swift] 배열에 요소를 추가하는 append와 insert 그리고 딸기 케이크 (?) (0) | 2022.02.04 |
[swift] for ... in 에서 배열의 인덱스로 접근하기 (0) | 2022.02.04 |