Zig Academy · Aula

Métodos e o parâmetro self

Associe comportamentos às suas estruturas.

Aula 2 de 413 etapas

Métodos e o parâmetro self é uma aula grátis de Zig Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Zig Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Zig Academy inclui 4 aulas no total.

Dados e comportamento

Uma estrutura pode conter mais do que campos. Você pode declarar métodos dentro dela: funções que atuam sobre os dados aos quais pertencem.

As funções vivem dentro

Escreva uma fn normal dentro do corpo da estrutura. Ela ficará no espaço de nomes do tipo e poderá ser chamada como Type.name.

const Point = struct {
    x: i32,
    y: i32,
    fn origin() Point {
        return Point{ .x = 0, .y = 0 };
    }
};

O parâmetro self

Um método que atua sobre uma instância recebe o valor como seu primeiro parâmetro, chamado convencionalmente de self.

fn magnitude(self: Point) i32 {
    return self.x + self.y;
}

Chame com um ponto

Chame um método por meio de uma instância usando um ponto. Zig passa automaticamente a instância como self para você.

const p = Point{ .x = 3, .y = 4 };
const m = p.magnitude();

self é apenas um argumento

Não há mágica oculta. A chamada com ponto p.magnitude() é exatamente igual a Point.magnitude(p).

const m = Point.magnitude(p);

Lendo self por valor

Receber self por valor fornece uma cópia. Isso é adequado para ler campos, mas as alterações feitas nela não persistirão.

fn sum(self: Point) i32 {
    return self.x + self.y;
}

Para alterar, é preciso usar um ponteiro

Para alterar campos, receba self como um ponteiro usando *Point. Agora as escritas vão para a instância original, não para uma cópia.

fn moveRight(self: *Point) void {
    self.x += 1;
}

Referência automática na chamada

Quando um método espera *Point, Zig obtém o endereço da sua variável automaticamente. Você ainda escreve apenas p.moveRight().

var p = Point{ .x = 0, .y = 0 };
p.moveRight();

Use @This para o tipo

Dentro do corpo, você pode se referir ao tipo envolvente com @This(), o que é útil quando o tipo ainda não tem um nome externo.

const Counter = struct {
    n: i32,
    fn get(self: @This()) i32 {
        return self.n;
    }
};

Métodos sem self

Um método não precisa receber self. Construtores e funções auxiliares geralmente o omitem e atuam como funções simples em um namespace.

fn init(x: i32, y: i32) Point {
    return Point{ .x = x, .y = y };
}

Organização com métodos

Agrupar o comportamento junto aos dados mantém seu código organizado. Os métodos fazem uma estrutura parecer um pequeno componente autocontido.

Verificação rápida

Do que um método precisa para alterar os campos de uma instância?

Recapitulação

Você adicionou métodos: funções dentro de uma estrutura, com self como a instância. Use self: Point para ler e self: *Point para modificar. 🔧

Grátis para começar

Aprenda Zig com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
30
Aulas
120

Perguntas Frequentes

A aula “Métodos e o parâmetro self” é grátis?

Sim — o texto completo de “Métodos e o parâmetro self” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Zig Academy, atualize para CoddyKit PRO. O curso de Zig Academy inclui 4 aulas no total.

O que vou aprender em “Métodos e o parâmetro self”?

Associe comportamentos às suas estruturas. Você pratica Zig Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Zig Academy?

Nenhuma experiência prévia é necessária. Zig Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Métodos e o parâmetro self”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Zig Academy?

Sim. Cada aula de Zig Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Declarando estruturas e campos
  2. Métodos e o parâmetro self
  3. Valores padrão dos campos
  4. Estruturas anônimas e tuplas
← Voltar para Zig Academy