Odczytywanie argumentów wiersza poleceń
Analizuj argv za pomocą alokatora.
Odczytywanie argumentów wiersza poleceń to bezpłatna lekcja Zig Academy na CoddyKit. To lekcja 1 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.
Dlaczego argumenty mają znaczenie
Prawdziwe narzędzie CLI reaguje na to, co użytkownik wpisuje po jego nazwie. Te słowa to argumenty wiersza poleceń, a ich odczytanie jest pierwszym krokiem. 🛠️
Zig nie ukrywa niczego
Inne języki udostępniają specjalną zmienną argv. Zig pozostaje jawny: samodzielnie pobierasz argumenty z przestrzeni nazw std.process.
const std = @import("std");Argumenty wymagają alokatora
Dekodowanie argumentów może wymagać alokacji pamięci, dlatego Zig od razu prosi o alokator. Żadna alokacja nie odbywa się za kulisami.
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
const a = gpa.allocator();argsAlloc zwraca wycinek
Wywołaj std.process.argsAlloc, przekazując swój alokator. Funkcja zwraca wycinek napisów — po jednym na każdy argument — którego jesteś pełnym właścicielem.
const args = try std.process.argsAlloc(a);Zwalniaj to, co alokujesz
Ponieważ jesteś właścicielem tego wycinka, musisz go zwolnić za pomocą argsFree. Umieszczenie defer bezpośrednio po wywołaniu automatyzuje sprzątanie.
defer std.process.argsFree(a, args);Pierwszy argument to program
Zgodnie z konwencją args[0] zawiera ścieżkę do własnego programu, a nie dane wejściowe użytkownika. Rzeczywiste interesujące Cię wartości zaczynają się od indeksu 1.
const program = args[0];Policz otrzymane argumenty
Wycinek przechowuje własną długość, więc args.len informuje, ile argumentów otrzymano. Należy sprawdzić tę wartość przed odwołaniem się do dowolnego indeksu.
if (args.len < 2) return error.MissingArgument;Iteruj po danych wejściowych
Iteruj po wartościach użytkownika, pomijając nazwę programu przez utworzenie wycinka. Pętla for po args[1..] odwiedza każdy argument w kolejności.
for (args[1..]) |arg| {
std.debug.print("{s}\n", .{arg});
}Każdy argument to bajty
Każdy argument ma typ []const u8, czyli jest wycinkiem bajtów. Od tego momentu porównywanie lub analizowanie argumentu to zwykła praca z napisami w Zig.
if (std.mem.eql(u8, arg, "--help")) {}Zamieniaj tekst na liczby
Argumenty są przekazywane jako tekst. Aby uzyskać liczbę, przeanalizuj tekst za pomocą std.fmt.parseInt, które jasno sygnalizuje błąd, jeśli tekst nie jest prawidłową liczbą całkowitą.
const n = try std.fmt.parseInt(i32, args[1], 10);Alternatywa w postaci iteratora
Wolisz przetwarzanie strumieniowe? std.process.argsWithAllocator udostępnia iterator przesuwany za pomocą next(), co jest wygodne przy przetwarzaniu argumentów pojedynczo.
var it = try std.process.argsWithAllocator(a);
defer it.deinit();Szybkie sprawdzenie
Zastanów się, co znajduje się na początku wycinka argumentów.
Podsumowanie
Odczytywałeś argumenty za pomocą argsAlloc, zwalniałeś je przez argsFree, pomijałeś args[0] i analizowałeś tekst, aby uzyskać wartości. Twoje CLI potrafi już odbierać dane od użytkownika. 🎯
Często zadawane pytania
Czy lekcja „Odczytywanie argumentów wiersza poleceń” jest bezpłatna?
Tak — pełny tekst „Odczytywanie argumentów wiersza poleceń” 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 „Odczytywanie argumentów wiersza poleceń”?
Analizuj argv za pomocą alokatora. Ć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 1 z 4.
Ile czasu zajmuje lekcja „Odczytywanie argumentów wiersza poleceń”?
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
- Odczytywanie argumentów wiersza poleceń
- Odczytywanie plików i stdin
- Zapisywanie danych wyjściowych i kody zakończenia
- Pakowanie i wydawanie pliku binarnego