ストリームの変換:map、where、take
イベント列の形を変える
「ストリームの変換:map、where、take」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。
Streamは変換できる
リストと同じように、ストリームにもイベントの形を便利に変えるメソッドがあります。元のストリームに触れずに、ストリームをtransformして新しいストリームを作成できます。
mapで各イベントを変換する
mapメソッドはすべてのイベントに関数を適用し、その結果を発行します。1つの値のストリームを、変換後の値のストリームに変えます。
final doubled = numbers.map((n) => n * 2);mapは個数を維持する
mapではイベントの数は変わらず、形だけが変わります。入力が3つなら、必ず出力も正確に3つになります。✨
Stream.fromIterable([1, 2, 3])
.map((n) => 'Item $n');whereでイベントをフィルタリングする
whereメソッドは、テストに合格したイベントだけを残します。falseを返したものは、新しいストリームから取り除かれます。
final evens = numbers.where((n) => n.isEven);whereでStreamを小さくできる
mapとは異なり、whereは受け取った数より少ないイベントを発行することがあります。テストに合格するものがなければ、結果のストリームは空のままです。
takeで個数を制限する
takeメソッドは最初のn個のイベントだけを発行し、その後Listenを停止します。長いストリームから少数の値だけが必要な場合に最適です。🎯
final firstThree = bigStream.take(3);takeは早期にキャンセルする
n個のイベントを届けると、takeはソースへのサブスクリプションを自動的にキャンセルします。元のストリームは、あなたに対するイベントの生成を停止します。
変換を連結する
これらのメソッドは新しいストリームを返すため、メソッドをchainできます。チェーンは左から右へ、フィルタリング、変換、制限の順に読みます。
numbers
.where((n) => n.isEven)
.map((n) => n * 10)
.take(2);本質的にLazy
変換はlazyです。Listenするまで何も実行されません。チェーンはイベントが到着したときに、1つずつ処理します。
その他のツール:takeWhileとskip
基本の3つ以外にも、takeWhileはテストに失敗するまで発行し、skipは最初のn個のイベントを無視します。同じようにメソッドを連結できます。
stream.skip(2).takeWhile((n) => n < 100);結果を利用する
変換後は、await forまたはListenを使って新しいストリームを読み取ります。発行される各値は、すでにチェーン全体を通過しています。
await for (final v in transformed) {
print(v);
}簡単な確認
イベント数を減らせるメソッドはどれですか?
まとめ
mapで変換し、whereでフィルタリングし、takeで制限することで、ストリームの形を変えられます。いずれもListenするまで遅延実行され、連結も可能です。🎉
AI チューターと学ぶ Dart — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「ストリームの変換:map、where、take」レッスンは無料ですか?
はい。「ストリームの変換:map、where、take」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。
「ストリームの変換:map、where、take」で何を学びますか?
イベント列の形を変える ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Dart Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「ストリームの変換:map、where、take」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDart Academyレッスンでコードを書いて実行できますか?
はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- await forでリッスンする
- 単一購読ストリームとブロードキャストストリーム
- ストリームの変換:map、where、take
- async*でストリームを作成する