Created
July 4, 2017 08:19
-
-
Save tranhieutt/86eb8408f8346847491e9260e0af1479 to your computer and use it in GitHub Desktop.
[Swift] - reduce
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/// Returns the result of combining the elements of the sequence using the | |
/// given closure. | |
/// | |
/// Use the `reduce(_:_:)` method to produce a single value from the elements | |
/// of an entire sequence. For example, you can use this method on an array | |
/// of numbers to find their sum or product. | |
/// | |
/// The `nextPartialResult` closure is called sequentially with an | |
/// accumulating value initialized to `initialResult` and each element of | |
/// the sequence. This example shows how to find the sum of an array of | |
/// numbers. | |
/// | |
/// let numbers = [1, 2, 3, 4] | |
/// let numberSum = numbers.reduce(0, { x, y in | |
/// x + y | |
/// }) | |
/// // numberSum == 10 | |
/// | |
/// When `numbers.reduce(_:_:)` is called, the following steps occur: | |
/// | |
/// 1. The `nextPartialResult` closure is called with `initialResult`---`0` | |
/// in this case---and the first element of `numbers`, returning the sum: | |
/// `1`. | |
/// 2. The closure is called again repeatedly with the previous call's return | |
/// value and each element of the sequence. | |
/// 3. When the sequence is exhausted, the last value returned from the | |
/// closure is returned to the caller. | |
/// | |
/// If the sequence has no elements, `nextPartialResult` is never executed | |
/// and `initialResult` is the result of the call to `reduce(_:_:)`. | |
/// | |
/// - Parameters: | |
/// - initialResult: The value to use as the initial accumulating value. | |
/// `initialResult` is passed to `nextPartialResult` the first time the | |
/// closure is executed. | |
/// - nextPartialResult: A closure that combines an accumulating value and | |
/// an element of the sequence into a new accumulating value, to be used | |
/// in the next call of the `nextPartialResult` closure or returned to | |
/// the caller. | |
/// - Returns: The final accumulated value. If the sequence has no elements, | |
/// the result is `initialResult`. | |
public func reduce<Result>(_ initialResult: Result, _ nextPartialResult: (Result, Element) throws -> Result) rethrows -> Result |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment