Zig Academy · Lekcja

Metody i parametr self

Dodawaj zachowanie do struktur.

Lekcja 2 z 413 kroki

Metody i parametr self to bezpłatna lekcja Zig Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Zig Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Zig Academy zawiera 4 lekcji w sumie.

Dane i zachowanie

Struktura może zawierać więcej niż same pola. Można zadeklarować w niej metody: funkcje działające na danych, do których należą.

Funkcje znajdują się wewnątrz

Wewnątrz ciała struktury należy zapisać zwykłą funkcję fn. Zostanie ona umieszczona w przestrzeni nazw typu i będzie dostępna jako Type.name.

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

Parametr self

Metoda działająca na instancji przyjmuje wartość jako pierwszy parametr, który zgodnie z konwencją nosi nazwę self.

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

Wywołanie za pomocą kropki

Metodę wywołuje się przez instancję za pomocą kropki. Zig automatycznie przekazuje instancję jako self.

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

self to zwykły argument

Nie ma tu żadnej ukrytej magii. Wywołanie przez kropkę p.magnitude() jest dokładnie tym samym co Point.magnitude(p).

const m = Point.magnitude(p);

Odczyt self przez wartość

Przyjęcie self przez wartość daje kopię. To wystarcza do odczytu pól, ale zmiany kopii nie zostaną zachowane.

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

Modyfikowanie wymaga wskaźnika

Aby zmieniać pola, należy przyjąć self jako wskaźnik typu *Point. Zapisy będą wtedy trafiać do oryginalnej instancji, a nie do kopii.

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

Automatyczne pobieranie adresu przy wywołaniu

Gdy metoda oczekuje typu *Point, Zig automatycznie pobiera adres zmiennej var. Nadal wystarczy napisać p.moveRight().

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

Użyj @This dla typu

Wewnątrz treści można odwołać się do otaczającego typu za pomocą @This(), co jest przydatne, gdy typ nie ma jeszcze zewnętrznej nazwy.

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

Metody bez self

Metoda wcale nie musi przyjmować self. Konstruktory i funkcje pomocnicze często go pomijają i działają jak zwykłe funkcje z przestrzeni nazw.

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

Porządkowanie kodu za pomocą metod

Grupowanie zachowania obok danych pomaga utrzymać porządek w kodzie. Metody sprawiają, że struktura przypomina mały, samodzielny komponent.

Szybkie sprawdzenie

Czego potrzebuje metoda, aby zmienić pola instancji?

Podsumowanie

Dodano metody: funkcje wewnątrz struktury, w których self oznacza instancję. Użyj self: Point do odczytu, a self: *Point do modyfikowania. 🔧

Bezpłatny start

Ucz się Zig dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
30
Lekcje
120

Często zadawane pytania

Czy lekcja „Metody i parametr self” jest bezpłatna?

Tak — pełny tekst „Metody i parametr self” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Zig Academy, przejdź na CoddyKit PRO. Kurs Zig Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Metody i parametr self”?

Dodawaj zachowanie do struktur. Ćwiczysz Zig Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Zig Academy?

Nie wymagamy żadnego doświadczenia. Zig Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Metody i parametr self”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Zig Academy?

Tak. Każda lekcja Zig Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Deklarowanie struktur i pól
  2. Metody i parametr self
  3. Domyślne wartości pól
  4. Struktury anonimowe i krotki
← Powrót do Zig Academy