文書   >   Swift   >   Swift 標準ライブラリ   >   Collections   >   Range   >   reduce(into:_:)


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


reduce(into:_:)


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





宣言


func reduce<Result>(into initialResult: Result, _ updateAccumulatingResult:
	 (inout Result, Bound) throws -> ()) rethrows -> Result

BoundStrideable に準拠し、Bound.StrideSignedInteger に準拠する場合に使用可能です。


パラメータ


initialResult初期累積値として使用する値。
updateAccumulatingResultシーケンスの要素で累積値を更新するクロージャ。


戻り値


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


議論


reduce(into:_:) メソッドを使用して、シーケンス全体の要素から単一の値を生成します。たとえば、整数の配列に対してこのメソッドを使用して、隣接する等しいエントリーまたは count の頻度をフィルターすることができます。


このメソッドは、結果がコピーオンライト型 (ArrayDictionary など) の場合に効率を上げるために reduce(_:_:) よりも好まれます。


updateAccumulatingResult クロージャは、initialResult およびシーケンスの各要素に初期化された変更可能な累積値で順次呼び出されます。この例では、文字列の文字の頻度の辞書を作成する方法を示します。


let letters = "abracadabra"
let letterCount = letters.reduce(into: [:]) { counts, letter in
    counts[letter, default: 0] += 1
}
// letterCount == ["a": 5, "b": 2, "r": 2, "c": 1, "d": 1]


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


  1. updateAccumulatingResult クロージャは、最初の累積値 - この場合は [:] - と letters の最初の文字で呼び出され、キー "a" に 1 を設定して累積値を変更します。

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

  3. シーケンスが使い尽くされると、累積値が呼び出し元に返されます。

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


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


以下も見よ





Range の要素を変換





目次
Xcode の新機能

  • 言語:Swift
  • SDK
  • Xcode 10.0+
  • フレームワーク
  • Swift 標準ライブラリ
  • 宣言
  • パラメータ
  • 戻り値
  • 議論
  • 以下も見よ












  • トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)












    トップへ(Swift 標準ライブラリ)