Metody i parametr self
Dodawaj zachowanie do struktur.
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. 🔧
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
- Deklarowanie struktur i pól
- Metody i parametr self
- Domyślne wartości pól
- Struktury anonimowe i krotki