Streamクラスtransform()メソッド

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

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

transform()は受け取ったStreamを別のStreamに変換するメソッド。
transform()は引数にStreamTransformerクラスを受け取る。StreamTransformer<T,S>で指定し、Tには変換前の型、Sには変換後の型を指定する。例えば、変換前のStreamの型がint、変換後の型がStringだとすると、StreamTransformer<int,String>のように指定する。

コーディングで動作確認。
StreamTransformerはdart:asyncライブラリに含まれているので、importしておく。

import 'dart:async';

void main() {
  Stream<int> stream = Stream.fromIterable([1, 2, 3, 4, 5]);

  // 引数で渡すStreamTransformerを作成。int型をString型に変換
  var transformer = StreamTransformer<int, String>.fromHandlers(
    handleData: (value, sink) {
      sink.add('data:$value');
    },
  );

  // transformメソッドを実行
  Stream<String> transformedStream = stream.transform(transformer);

  // 新しいStreamの各要素を出力
  transformedStream.listen((value) {
    print(value);
  });
}

上記はStreamTransformerクラスのfromHandlersコンストラクを使用している。fromHandlersの名前付き引数handleData:でStreamの変換処理を記述している。第1引数のvalueには受け取った値が入り、第2引数のsink.add()で変換後の値を追加している。StreamTransformer<int,String>にしているので、valueはint型でsink.add()はString型となる。

実行結果。
int型のStreamがString型のStreamに変換されている。

data:1
data:2
data:3
data:4
data:5

コメント

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