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

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

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

expand()は受け取った要素を0〜複数の要素に加工し展開できるメソッド。
引数のconvert()関数で加工処理を記述し、値を生成する。convert()関数の戻り値はIterable<S>型なので、同期型のsync*とyieldで生成した値を返せる。
asyncExpand()等同じように加工するメソッドがあるが、asyncが付くものはconvert()関数の戻り値は「非同期型」である。

コーディングで動作を確認。
要素が”Orange”の場合は空の値を返し、それ以外は1〜3の番号を付けて返す。

void main() {
  final listTest =
      Stream.fromIterable(["Apple", "Orange", "Banana", "Pineapple"]);
  final ex = listTest.expand((element) sync* {
    if (element == "Orange") {
      return;
    }
    for (int i = 1; i <= 3; i++) {
      yield "$element $i";
    }
  });
  ex.listen((event) {
    print(event);
  });
}

実行結果。

Apple 1
Apple 2
Apple 3
Banana 1
Banana 2
Banana 3
Pineapple 1
Pineapple 2
Pineapple 3

コメント

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