Zig Academy · Lección

Métodos y el parámetro self

Asocie comportamiento a sus structs.

Lección 2 de 413 pasos

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. 🔧

Gratis para empezar

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

  1. Declarar structs y campos
  2. Métodos y el parámetro self
  3. Valores predeterminados de los campos
  4. Structs anónimos y tuplas
← Volver a Zig Academy