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
コメント