汎用インスタンスメソッド


reduce(_:_:)


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


iOS 15.0+ iPadOS 15.0+ macOS 12.0+ Mac Catalyst 15.0+

tvOS 15.0+ watchOS 8.0+ visionOS 1.0+ Xcode 13.0+

func reduce<Result>(
_ initialResult: Result,
_ nextPartialResult: (Result, Run) throws -> Result
) rethrows -> Result





パラメータ


initialResult

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


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

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


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















トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ