@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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- @typeInfoによるフィールドのリフレクション
- @Typeによる型の構築
- コンパイル時の検証と@compileError
- comptimeによるコード生成