0Pricing
Zig Academy · Lección

Reflejar campos con @typeInfo

Inspeccione la estructura de un tipo en tiempo de compilación.

Reflejar campos con @typeInfo es una lección gratuita de Zig Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Zig Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Zig Academy incluye 4 lecciones en total.

Examine cualquier tipo

Zig permite que su código examine sus propios tipos durante la compilación. El elemento integrado @typeInfo le proporciona la estructura completa de un tipo como datos. 🔎

Devuelve un valor Type.Info

@typeInfo recibe un tipo y devuelve un valor std.builtin.Type. Ese valor es una unión etiquetada que describe exactamente qué clase de tipo se ha pasado.

const info = @typeInfo(u32);

La etiqueta indica de qué tipo se trata

La etiqueta de la unión indica la categoría: una estructura, un entero, un puntero, etc. Puede usar switch sobre ella para reaccionar ante cada clase de tipo.

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

Acceda a la información de la estructura

Cuando el tipo es una estructura, la variante .Struct contiene información sobre sus campos, declaraciones y disposición.

const s = @typeInfo(Point).Struct;

Los campos están en un array

La información de la estructura contiene un array de fields. Cada entrada es un StructField que contiene el nombre, el tipo y otros detalles de un campo.

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

Lea el nombre y el tipo de un campo

Cada StructField expone una cadena name y un tipo. Ambos son valores conocidos en tiempo de compilación que puede imprimir o usar en ramificaciones.

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

Recorra los campos con inline for

Como la lista de campos se conoce en tiempo de compilación, puede iterarla con inline for. El bucle se desenrolla y proporciona a cada campo su propio código concreto.

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

Examine también los tipos enteros

Para un entero, la variante .Int revela si tiene signo y su anchura en bits, de modo que puede adaptar la lógica al tipo numérico exacto.

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

Los enums exponen sus miembros

La variante .Enum enumera cada campo del enum con su nombre y valor entero, lo que permite generar código para cada opción.

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

Los punteros revelan su destino

Para los punteros, la variante .Pointer indica el tipo hijo, la clase de tamaño y si es const, para que pueda desenvolver sus capas.

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

Esto impulsa bibliotecas reales

La reflexión impulsa el código propio de JSON y de formato de Zig: leen los campos con @typeInfo y gestionan cualquier estructura que les proporcione. ✨

Comprobación rápida

Quiere obtener en tiempo de compilación la lista de campos de una estructura. ¿Qué expresión se la proporciona?

Resumen

@typeInfo convierte un tipo en datos: use switch sobre su etiqueta y, después, lea sus campos, bits o miembros y recórralos con inline for. 🎯

Preguntas frecuentes

¿La lección «Reflejar campos con @typeInfo» es gratis?

Sí — el texto completo de «Reflejar campos con @typeInfo» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Zig Academy, actualiza a CoddyKit PRO. El curso de Zig Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Reflejar campos con @typeInfo»?

Inspeccione la estructura de un tipo en tiempo de compilación. Practicas Zig Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Zig Academy?

No se requiere experiencia previa. Zig Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Reflejar campos con @typeInfo»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Zig Academy?

Sí. Cada lección de Zig Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Reflejar campos con @typeInfo
  2. Construir tipos con @Type
  3. Validación en tiempo de compilación y @compileError
  4. Generar código con comptime
← Volver a Zig Academy