0Pricing
Zig Academy · Lekcja

Metody enumów i liczby całkowite bazowe

Dodawaj zachowanie i kontroluj reprezentację.

Metody enumów i liczby całkowite bazowe to bezpłatna lekcja Zig Academy na CoddyKit. To lekcja 4 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.

Enumy mogą mieć zachowanie

Enum jest rzeczywistym typem, więc może zawierać metody. Funkcje deklaruje się wewnątrz ciała enuma, obok nazw wartości.

Metoda enuma

Należy zapisać funkcję wewnątrz enuma i przyjąć self jako pierwszy parametr. Działa to tak samo jak metoda w struct.

const Color = enum { red, green, fn isRed(self: Color) bool { return self == .red; } };

Wywoływanie metod enuma

Metodę wywołuje się za pomocą składni kropkowej na wartości. Wartość staje się self, więc metoda wie, dla której odmiany ją wywołano.

const ok = c.isRed();

Każdy enum ma reprezentację całkowitoliczbową

Wewnętrznie każda wartość enuma odpowiada liczbie całkowitej. Zig wybiera mały typ całkowitoliczbowy reprezentacji, który mieści wszystkie wartości.

Domyślna numeracja zaczyna się od zera

Domyślnie pierwsza wartość to 0, a każda kolejna zwiększa się o jeden. Zatem red ma wartość 0, green — 1 i tak dalej, zgodnie z kolejnością.

const Color = enum { red, green, blue }; // 0, 1, 2

Wybieranie typu reprezentacji

Typ całkowitoliczbowy reprezentacji można podać w nawiasach, na przykład enum(u8). Ustala to dokładną szerokość i ma znaczenie dla układu pamięci oraz współdziałania z innymi systemami.

const Code = enum(u8) { a, b, c };

Ustawianie jawnych wartości

Konkretną liczbę przypisuje się wartości za pomocą =. Jest to przydatne, gdy liczby całkowite muszą odpowiadać protokołowi lub sprzętowemu rejestrowi.

const Status = enum(u8) { ok = 0, busy = 1, err = 255 };

Enum na liczbę całkowitą

Wartość enuma można zamienić na liczbę za pomocą @intFromEnum. Otrzymuje się w ten sposób bazową liczbę całkowitą do wysłania lub zapisania.

const n = @intFromEnum(Status.err); // 255

Liczba całkowita na enum

W drugą stronę można przejść za pomocą @enumFromInt, konwertując liczbę z powrotem na wartość enuma oczekiwanego typu.

const s: Status = @enumFromInt(1);

Konwertowanie z rozwagą

@enumFromInt zakłada, że liczba jest prawidłową odmianą. W kompilacjach bezpiecznych nieprawidłowa wartość zostanie wykryta; w pozostałych przypadkach należy ją samodzielnie zweryfikować.

Metody i tagi razem

Można połączyć oba pomysły: wybrać typ reprezentacji na potrzeby układu pamięci, ustawić wartości zgodne z protokołem i dodać metody, aby enum pozostał samowystarczalny.

Szybkie sprawdzenie

Ma Pan/Pani wartość enuma Status i potrzebuje jej bazowej liczby. Którego wbudowanego elementu należy użyć?

Podsumowanie

Enumy zyskały metody z self, wybrano całkowitoliczbowy typ reprezentacji, taki jak enum(u8), ustawiono jawne wartości i wykonano konwersję w obie strony za pomocą @intFromEnum oraz @enumFromInt. 🔢

Często zadawane pytania

Czy lekcja „Metody enumów i liczby całkowite bazowe” jest bezpłatna?

Tak — pełny tekst „Metody enumów i liczby całkowite bazowe” 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 enumów i liczby całkowite bazowe”?

Dodawaj zachowanie i kontroluj reprezentację. Ć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 4 z 4.

Ile czasu zajmuje lekcja „Metody enumów i liczby całkowite bazowe”?

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. Enum dla ustalonego zbioru wartości
  2. Unie przechowujące jeden z wielu typów
  3. Unie otagowane i switch
  4. Metody enumów i liczby całkowite bazowe
← Powrót do Zig Academy