Funciones que reciben un tipo
Genéricos mediante parámetros comptime T.
Funciones que reciben un tipo 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.
Los genéricos al estilo de Zig
Zig no tiene una sintaxis de genéricos independiente. En su lugar, una función puede aceptar un tipo como uno de sus parámetros y utilizarlo como cualquier otro valor. ✨
Un parámetro de tipo es comptime
Como un tipo debe conocerse al compilar el código, el parámetro de tipo siempre se marca como comptime. Quien llama proporciona un tipo real.
fn first(comptime T: type, items: []const T) T {
return items[0];
}type es un tipo real
En Zig, la palabra type es a su vez un tipo, por lo que un parámetro puede declararse como type para representar cualquier tipo.
comptime T: typeUsar T en la firma
Una vez que asigna al tipo el nombre T, puede utilizarlo en los parámetros posteriores y en el tipo de retorno para relacionarlos entre sí.
fn max(comptime T: type, a: T, b: T) T {
return if (a > b) a else b;
}Llamar a una función genérica
Para llamarla, pase primero el tipo concreto y después los argumentos normales. Aquí pedimos el mayor de dos valores i32.
const m = max(i32, 3, 9);Una función, muchos tipos
La misma función funciona con cualquier tipo que admita las operaciones utilizadas. Sustituya i32 por f64 y el código seguirá siendo válido.
const f = max(f64, 1.5, 2.5);Zig especializa cada llamada
Por cada tipo distinto que pase, Zig genera una copia específica de la función. Esto es la monomorfización, que se realiza en tiempo de compilación.
El cuerpo sigue siendo genérico
Escriba el tipo explícitamente en la llamada, pero el cuerpo sigue siendo genérico. Zig comprueba que las operaciones utilizadas sean válidas para cualquier valor que llegue como T.
type significa que no hay boxing oculto
Pasar un type real es diferente del polimorfismo en tiempo de ejecución: no hay vtable ni boxing, solo una copia concreta elegida en el momento de compilación.
Los errores aparecen en tiempo de compilación
Si llama a max con un tipo que no tiene un operador mayor que, Zig informa del problema al compilar esa especialización, no en tiempo de ejecución.
Los parámetros de tipo van primero
Por convención, el parámetro de tipo comptime se escribe antes que los parámetros de valor, para que el tipo se conozca antes de describir los datos.
fn clone(comptime T: type, value: T) T {
return value;
}Comprobación rápida
Quiere una función que funcione con muchos tipos en Zig. ¿Cómo declara su parámetro de tipo?
Resumen
Pase un parámetro comptime T: type para hacer genérica una función. Zig compila una versión especializada para cada tipo que utilice realmente. 🎯
Aprende Zig con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 30
- Lecciones
- 120
Preguntas frecuentes
¿La lección «Funciones que reciben un tipo» es gratis?
Sí — el texto completo de «Funciones que reciben un tipo» 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 «Funciones que reciben un tipo»?
Genéricos mediante parámetros comptime T. 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 «Funciones que reciben un tipo»?
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
- Funciones que reciben un tipo
- Estructuras de datos genéricas
- @TypeOf y reflexión de tipos
- Parámetros anytype