SpreadとNull対応Spread
1つのコレクションを別のコレクション内に展開する
「SpreadとNull対応Spread」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。
コレクションを組み合わせる
あるリストの全要素を別のリストに追加したいことはよくあります。Dartのspread operatorを使えば、コレクション全体を1回の操作で展開できます。
3つのドットを使う
spread operatorは、リスト、set、mapリテラル内でコレクションの前に3つのドットを置く記法です。その要素がそのまま中へ展開されます。
var more = [4, 5];
var all = [1, 2, 3, ...more];スプレッドの結果
スプレッドは元の要素を新しいコレクションへコピーします。結果はfreshなリストになり、元のコレクションは変更されません。
どこにでも配置できる
スプレッドはstart、middle、endのどこにでも置けます。同じリテラル内で、通常の要素と複数のスプレッドを組み合わせることもできます。
var x = [0, ...a, 9, ...b];nullの問題
スプレッドするコレクションがnullの場合、通常のスプレッドではエラーが発生します。元のコレクションがまだ存在しない可能性があるときは危険です。
null対応スプレッド
疑問符の後に3つのドットを書くnull-aware spreadを使います。元のコレクションがnullなら、何も追加されません。
var all = [1, 2, ...?maybeNull];スキップしてクラッシュしない
null-aware spreadでは、nullのコレクションは単にskippedになります。残りの要素は取得でき、実行時エラーも発生しません。
setでも使えるスプレッド
スプレッドはリスト専用ではありません。setリテラル内でも要素を展開でき、重複は除かれてsetの一意性が保たれます。
var s = {1, 2, ...other};mapでも使えるスプレッド
1つのmapを別のmapへ展開して、エントリを結合できます。後から指定したキーが優先されるため、スプレッドで先の値をきれいに上書きできます。
var m = {'a': 1, ...defaults};spreadとaddAllの違い
spreadはliteral内に新しいコレクションを作るのに対し、addAllは既存のコレクションを変更します。新しい結果が必要なときはspreadを使ってください。
読みやすい理由
spreadを使うと意図が明確になります。新しいコレクションを構成する要素が、1つのすっきりしたliteral内にすべて示されます。📦
確認問題
nullのコレクションにnull-aware spreadを使うとどうなりますか?
まとめ
spread(...)はコレクションをリテラル内に展開し、null-aware spread(...?)はnullの元コレクションを安全にスキップします。リスト、set、mapで使用できます。🎯
よくある質問
「SpreadとNull対応Spread」レッスンは無料ですか?
はい。「SpreadとNull対応Spread」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。
「SpreadとNull対応Spread」で何を学びますか?
1つのコレクションを別のコレクション内に展開する ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Dart Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「SpreadとNull対応Spread」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDart Academyレッスンでコードを書いて実行できますか?
はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- カスケード演算子(..)
- Null短絡カスケード(?..)
- SpreadとNull対応Spread
- コレクションのifとfor