インスタンスメソッド


reduce(_:_:)


与えられたクロージャを使用してシーケンスの要素を結合した結果を返します。


System Swift iOS 14.0+ iPadOS 14.0+ Mac Catalyst 14.0+

macOS 11.0+ tvOS 14.0+ visionOS 1.0+ watchOS 7.0+

func reduce<Result>(
_ initialResult: Result,
_ nextPartialResult: (Result, Self.Element) throws -> Result
) rethrows -> Result




パラメータ


initialResult

初期累積値として使用すべき値。initialResult は、クロージャが初めて実行されるときに nextPartialResult に渡されます。


nextPartialResult

累積値とシーケンスの要素を新しい累積値に結合し、nextPartialResult クロージャの次の呼び出しで使用されるか、呼び出し元に返されるクロージャ。



戻り値


最終的な累積値。シーケンスに要素がない場合、結果は initialResult になります。。



議論


シーケンス全体の要素から単一の値を生成するには、reduce(_:_:) メソッドを使用して下さい。たとえば、このメソッドを数値の配列で使用して、その合計または積を求めることができます。


nextPartialResult クロージャは、initialResult に初期化された累積値とシーケンスの各要素を使用して順番に呼び出されます。以下の例では、数値の配列の合計を求める方法を示します。


  1. let numbers = [1, 2, 3, 4]
  2. let numberSum = numbers.reduce(0, { x, y in
  3. x + y
  4. })
  5. // numberSum == 10

numbers.reduce(_:_:) が呼び出されると、以下の手順が実行されます。


  1. nextPartialResult クロージャは initialResult (この場合は 0) と numbers の最初の要素で呼び出され、合計 1 を返します。

  2. クロージャは、前の呼び出しの戻り値とシーケンスの各要素で繰り返し呼び出されます。

  3. シーケンスが使い果たされると、クロージャから返された最後の値が呼び出し元に返されます。

  4. シーケンスに要素がない場合、nextPartialResult は決して実行されず、initialResult は、reduce(_:_:) の呼び出しの結果になります。


    複雑さ:

    O(n)、ここで、n はシーケンスの長さです。













    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ