Métodos y el parámetro self
Asocie comportamiento a sus structs.
Métodos y el parámetro self es una lección gratuita de Zig Academy en CoddyKit. Esta es la lección 2 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.
Datos y comportamiento
Un struct puede contener más que campos. Puede declarar métodos dentro de él: funciones que actúan sobre los datos a los que pertenecen.
Las funciones viven dentro
Escriba un fn normal dentro del cuerpo del struct. Quedará dentro del espacio de nombres del tipo y podrá llamarse como Type.name.
const Point = struct {
x: i32,
y: i32,
fn origin() Point {
return Point{ .x = 0, .y = 0 };
}
};El parámetro self
Un método que trabaja con una instancia recibe el valor como primer parámetro, denominado self por convención.
fn magnitude(self: Point) i32 {
return self.x + self.y;
}Llámelo con un punto
Llame a un método a través de una instancia usando un punto. Zig le pasa automáticamente la instancia como self.
const p = Point{ .x = 3, .y = 4 };
const m = p.magnitude();self es solo un argumento
No hay ninguna magia oculta. La llamada con punto p.magnitude() es exactamente igual que Point.magnitude(p).
const m = Point.magnitude(p);Leer self por valor
Recibir self por valor le proporciona una copia. Esto funciona para leer campos, pero los cambios que haga no se conservarán.
fn sum(self: Point) i32 {
return self.x + self.y;
}Para modificarlo se necesita un puntero
Para cambiar campos, reciba self como un puntero mediante *Point. Así, las escrituras se aplican a la instancia original y no a una copia.
fn moveRight(self: *Point) void {
self.x += 1;
}Referencia automática en la llamada
Cuando un método necesita *Point, Zig obtiene automáticamente la dirección de su var. Usted sigue escribiendo simplemente p.moveRight().
var p = Point{ .x = 0, .y = 0 };
p.moveRight();Use @This para el tipo
Dentro del cuerpo puede referirse al tipo contenedor mediante @This(), lo que resulta útil cuando el tipo todavía no tiene un nombre externo.
const Counter = struct {
n: i32,
fn get(self: @This()) i32 {
return self.n;
}
};Métodos sin self
Un método no tiene por qué recibir self. Los constructores y las funciones auxiliares suelen omitirlo y actuar como funciones dentro del espacio de nombres.
fn init(x: i32, y: i32) Point {
return Point{ .x = x, .y = y };
}Organización mediante métodos
Agrupar el comportamiento junto a los datos mantiene el código ordenado. Los métodos hacen que un struct se lea como un pequeño componente autónomo.
Comprobación rápida
¿Qué necesita un método para cambiar los campos de una instancia?
Resumen
Ha añadido métodos: funciones dentro de un struct, con self como instancia. Use self: Point para leer y self: *Point para modificar. 🔧
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 «Métodos y el parámetro self» es gratis?
Sí — el texto completo de «Métodos y el parámetro self» 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 «Métodos y el parámetro self»?
Asocie comportamiento a sus structs. 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 2 de 4.
¿Cuánto tiempo toma la lección «Métodos y el parámetro self»?
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
- Declarar structs y campos
- Métodos y el parámetro self
- Valores predeterminados de los campos
- Structs anónimos y tuplas