0Pricing
Zig Academy · レッスン

nullとundefinedの違い

異なる2種類の不在を学びます。

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

2つの語、2つの意味

Zigにはnullとundefinedの両方がありますが、同じものではありません。混同すると、分かりにくいバグの典型的な原因になります。

nullは値がないことを表す

nullは実際に定義された状態で、optionalが意図的に何も保持していないことを示します。意味があり、チェックできる値です。

const x: ?i32 = null;

undefinedは未指定を表す

undefinedは、格納領域は存在するものの内容が不定であることを表します。読み取る前に実際の値を書き込むことを保証する必要があります。

var buf: [4]u8 = undefined;

nullを保持できるのはoptionalだけ

nullを代入できるのはoptional型だけです。不在は型の一部ではないため、通常のi32がnullを受け入れることはありません。

どの型でもundefinedにできる

一方、ほぼすべての変数はundefinedで開始できます。先にメモリだけ確保し、すぐ後で値を格納する場合に使います。

var total: i32 = undefined;

nullの読み取りは問題ない

optionalとnullを比較するのは完全に安全で、想定された操作です。これが値の不在を検出する方法です。

undefinedの読み取りはバグ

まだundefinedである値を読み取るのは不正な動作です。安全ビルドでは、誤りを明らかにするため0xAAバイトで埋められることさえあります。

自分自身への約束

undefinedは契約だと考えてください。使用前に代入することを自分に約束するのです。破ると、意味のない予測不能なデータを読み取ることになります。

バッファーでよく使うパターン

よくある慣用句は、バッファーをundefinedとして宣言し、その直後に読み取りやフォーマット呼び出しの結果を格納する方法です。

var line: [256]u8 = undefined;

適切な方法を選ぶ

本当にoptionalであることを表すにはnullを使います。すぐに上書きする冗長な初期化だけを省略したい場合に、undefinedを使います。

まったく異なる問い

nullは「値が存在するか」に答え、undefinedは「メモリにまだ書き込まれていないか」に答えます。両者を分けて扱うことが安全につながります。

確認問題

var buf: [8]u8 = undefined;と宣言し、書き込む前にbuf[0]を読み取った場合、それは何ですか?

まとめ

null(optionalsで使う実在する不在値)と、undefined(先に書き込む必要がある未初期化メモリ)を区別しました。2つの概念を、決して混同しないようにしましょう。🧠

よくある質問

「nullとundefinedの違い」レッスンは無料ですか?

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

「nullとundefinedの違い」で何を学びますか?

異なる2種類の不在を学びます。 ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「nullとundefinedの違い」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. オプショナル型を宣言する
  2. ifとorelseで安全にアンラップする
  3. オプショナルポインターと?*T
  4. nullとundefinedの違い
← Zig Academyに戻る