Zig Academy · Lektion

Metoder och self-parametern

Koppla beteende till era structs

Lektion 2 av 413 steg

Metoder och self-parametern är en gratis lektion i Zig Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Zig Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Zig Academy innehåller totalt 4 lektioner.

Data plus beteende

En struct kan innehålla mer än fält. Du kan deklarera metoder i den: funktioner som arbetar med de data de hör till.

Funktioner finns inuti

Skriv en vanlig fn inuti structens kodblock. Den blir namnområdesindelad under typen och kan anropas som Type.name.

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

self-parametern

En metod som arbetar med en instans tar värdet som sin första parameter, som enligt konventionen heter self.

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

Anropa med en punkt

Anropa en metod via en instans med en punkt. Zig skickar automatiskt instansen som self åt dig.

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

self är bara ett argument

Det finns ingen dold magi. Punktanropet p.magnitude() är exakt samma sak som Point.magnitude(p).

const m = Point.magnitude(p);

Läs self som ett värde

Om du tar emot self som ett värde får du en kopia. Det fungerar bra när du läser fält, men ändringar i kopian sparas inte.

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

Ändringar kräver en pekare

För att ändra fält tar du emot self som en pekare med *Point. Då går skrivningarna till originalinstansen, inte till en kopia.

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

Automatisk referens vid anrop

När en metod förväntar sig *Point tar Zig adressen till din var åt dig. Du skriver fortfarande bara p.moveRight().

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

Använd @This för typen

Inuti kroppen kan du referera till den omslutande typen med @This(), vilket är praktiskt när typen ännu inte har något yttre namn.

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

Metoder utan self

En metod behöver inte ta emot self alls. Konstruktorer och hjälpfunktioner utelämnar ofta self och fungerar då som vanliga namespaced-funktioner.

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

Strukturera med metoder

Att gruppera beteende intill data håller koden välordnad. Metoder får en struct att likna en liten, fristående komponent.

Snabb kontroll

Vad behöver en metod för att kunna ändra fälten i en instans?

Sammanfattning

Du har lagt till metoder: funktioner inuti en struct, där self är instansen. Använd self: Point för att läsa och self: *Point för att ändra. 🔧

Gratis att börja

Lär dig Zig med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
30
Lektioner
120

Vanliga frågor

Är lektionen ”Metoder och self-parametern” gratis?

Ja – hela texten till ”Metoder och self-parametern” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Zig Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Zig Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Metoder och self-parametern”?

Koppla beteende till era structs Ni övar på Zig Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Zig Academy?

Du behöver inga förkunskaper. Utbildningen i Zig Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Metoder och self-parametern”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Zig Academy-lektionen?

Ja. Varje Zig Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Deklarera structs och fält
  2. Metoder och self-parametern
  3. Standardvärden för fält
  4. Namnlösa structs och tupler
← Tillbaka till Zig Academy