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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- オプショナル型を宣言する
- ifとorelseで安全にアンラップする
- オプショナルポインターと?*T
- nullとundefinedの違い