swift & iOS/swift

[swift] reduce

whale3 2022. 2. 4. 17:04
// 출처: 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, +)

 

반응형