Dart Streamクラスreduce()メソッド

Dar言語StreamクラスtoSet()メソッドDart

Dart Streamクラスのreduce()メソッドについてメモ書き。

reduce()は前後の値を結合して一つにするメソッド。
引数でcombine関数を指定する。combine関数は第1引数と第2引数で前後の値を受け取る。combine関数はStreamイベントから受け取った値に対して繰り返し処理を行い、最終結果を返す。
reduce()の戻り値はFuture<T>型。

言葉ではcombine関数の動作を説明しづらいので、コーディングで確認する。
combine関数の第1引数と第2引数がどのように変化していくか見ていく。

void main() async {
  final stream = Stream.fromIterable({1, 2, 3, 4, 5});
  await stream.reduce((previous, element) {
    print("previous:$previous");
    print("element:$element");
    return previous + element;
  }).then(print);
}

実行結果。
previousとelementに代入される値が分かると思う。最終行はreduce()が返した値。

previous:1
element:2
previous:3
element:3
previous:6
element:4
previous:10
element:5
15

次はreduce()の戻り値だけ出力する。

void main() async {
  final stream = Stream.fromIterable({1, 2, 3, 4, 5});
  await stream.reduce((previous, element) => previous + element).then(print);
}

実行結果。

15

コメント

タイトルとURLをコピーしました