インスタンスメソッド
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 に初期化された累積値とシーケンスの各要素を使用して順番に呼び出されます。以下の例では、数値の配列の合計を求める方法を示します。
- let numbers = [1, 2, 3, 4]
- let numberSum = numbers.reduce(0, { x, y in
x + y
- })
- // numberSum == 10
numbers.reduce(_:_:) が呼び出されると、以下の手順が実行されます。
- nextPartialResult クロージャは initialResult (この場合は 0) と numbers の最初の要素で呼び出され、合計 1 を返します。
- クロージャは、前の呼び出しの戻り値とシーケンスの各要素で繰り返し呼び出されます。
- シーケンスが使い果たされると、クロージャから返された最後の値が呼び出し元に返されます。
シーケンスに要素がない場合、nextPartialResult は決して実行されず、initialResult は、reduce(_:_:) の呼び出しの結果になります。
複雑さ:
O(n)、ここで、n はシーケンスの長さです。
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ