0Pricing
Zig Academy · レッスン

@typeInfoによるフィールドのリフレクション

コンパイル時に型の構造を調べます

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

あらゆる型の内部を見る

Zig では、コンパイル中にコードから自身の型を調べられます。組み込みの @typeInfo によって、型の完全な構造をデータとして取得できます。🔎

Type.Info 値を返す

@typeInfo は型を受け取り、std.builtin.Type 値を返します。この値はタグ付き union で、渡した型が正確にどの種類であるかを表します。

const info = @typeInfo(u32);

タグが種類を示す

union のタグは、struct、int、pointer などのカテゴリを示します。タグに対して switch し、型の各 kind に応じて処理します。

switch (@typeInfo(T)) {
    .Struct => {},
    else => {},
}

Struct のペイロードにアクセスする

型が struct の場合、.Struct バリアントにフィールド、宣言、レイアウトを表すペイロードが格納されています。

const s = @typeInfo(Point).Struct;

フィールドは配列に格納される

struct のペイロードには fields 配列があります。各要素は StructField で、1つのフィールドの名前、型、その他の詳細を保持します。

const fields = @typeInfo(Point).Struct.fields;

フィールドの名前と型を読む

各 StructField は name 文字列と型を公開します。どちらもコンパイル時の値であり、出力したり分岐に使用したりできます。

const f = @typeInfo(Point).Struct.fields[0];
const n = f.name;

inline for でフィールドを走査する

フィールドの一覧は comptime であるため、inline for を使って反復します。ループが展開され、各フィールド専用の具体的なコードになります。

inline for (@typeInfo(T).Struct.fields) |field| {
    _ = field.name;
}

整数型も調べる

int では .Int バリアントから符号の有無とビット幅が分かるため、正確な数値型に合わせてロジックを変更できます。

const i = @typeInfo(i16).Int;
const bits = i.bits;

enum はメンバーを公開する

.Enum バリアントには、すべての enum フィールドが名前と整数値とともに一覧表示されるため、各選択肢に応じたコードを生成できます。

const e = @typeInfo(Color).Enum;
const fields = e.fields;

ポインターから対象が分かる

ポインターでは .Pointer バリアントから、子型、サイズ種別、const かどうかが分かるため、層をほどいていけます。

const p = @typeInfo(*u8).Pointer;
const child = p.child;

実用的なライブラリを支える

リフレクションは、Zig 自身の JSON やフォーマット処理を支えています。これらは @typeInfo でフィールドを読み取り、渡された任意の struct を処理します。✨

クイックチェック

コンパイル時に struct のフィールド一覧が必要です。どの式で取得できますか。

まとめ

@typeInfo は型をデータに変換します。タグに対して switch し、フィールド、ビット、メンバーを読み取り、inline for で反復します。🎯

よくある質問

「@typeInfoによるフィールドのリフレクション」レッスンは無料ですか?

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

「@typeInfoによるフィールドのリフレクション」で何を学びますか?

コンパイル時に型の構造を調べます ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「@typeInfoによるフィールドのリフレクション」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. @typeInfoによるフィールドのリフレクション
  2. @Typeによる型の構築
  3. コンパイル時の検証と@compileError
  4. comptimeによるコード生成
← Zig Academyに戻る