Dart Academy · レッスン

Null短絡カスケード(?..)

Nullableなオブジェクトに対して安全にカスケードする

レッスン 2/413 ステップ

「Null短絡カスケード(?..)」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。

nullable値の落とし穴

nullの可能性がある値に通常のcascadeを使うと、クラッシュします。nullに対してメソッドを呼び出すと、どの行も実行される前にエラーが発生します。

null短絡cascade

Dartには安全な形式として、疑問符の後にドットを2つ書くnull-shorting cascadeがあります。オブジェクトがnullでない場合にだけ実行されます。

button?..text = 'Save'
      ..onTap = save;

短絡の仕組み

対象がnullの場合、cascade全体がスキップされ、式の値は単にnullになります。クラッシュせず、中途半端に処理されることもありません。

必要なのは最初のドットだけ

question markは最初のcascadeに1度だけ書きます。後続の行は通常のドット2つのままです。Dartはすでにオブジェクトがnullでないことを把握しています。

obj?..a()
   ..b()
   ..c();

すべて実行するか何もしない

null短絡はall or nothingです。オブジェクトが存在すればすべての行が実行され、nullなら1行も実行されません。チェーンが途中まで実行されることはありません。

通常のcascadeとの比較

通常のcascadeはオブジェクトが存在することを前提とします。null短絡形式は、型がnullableで値が存在しない可能性があるときの安全策です。

nullable型を返す

結果がオブジェクトまたはnullになり得るため、式全体の型はnullableになります。取得した値はnullの可能性があるものとして扱ってください。

実際の例

まだ存在しない可能性がある設定を考えてみましょう。Null-shortingを使えば、設定が存在するときだけ、1つのすっきりした行で設定できます。🛡️

settings?..theme = dark
        ..save();

記号を繰り返さない

毎行question markを書くのは誤りで、Dartに指摘されます。短絡するかどうかの判断は、チェーンの先頭で1度だけ行われます。

Null safetyとの相性

null短絡はDartのnull safetyの考え方に適しています。コンパイラーは、最初のドット以降の行が実在するnullでないオブジェクトに対してのみ実行されると判断できます。

使う場面

変数がnullableで、cascadeの周囲に別途if-nullチェックを書くことなく設定したい場合は、null短絡を使ってください。

確認問題

null短絡cascadeはどのように正しく記述しますか?

まとめ

null-shorting cascade(?..)は、オブジェクトが存在するときだけチェーン全体を実行し、nullならすべてをスキップします。記号は1度だけ必要です。🎯

無料で開始

AI チューターと学ぶ Dart — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「Null短絡カスケード(?..)」レッスンは無料ですか?

はい。「Null短絡カスケード(?..)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。

「Null短絡カスケード(?..)」で何を学びますか?

Nullableなオブジェクトに対して安全にカスケードする ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Dart Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「Null短絡カスケード(?..)」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDart Academyレッスンでコードを書いて実行できますか?

はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. カスケード演算子(..)
  2. Null短絡カスケード(?..)
  3. SpreadとNull対応Spread
  4. コレクションのifとfor
← Dart Academyに戻る