Argumenty wiersza poleceń rdzy

Argumenty wiersza poleceń rdzy
Argumenty wiersza poleceń odnoszą się do zestawu wartości lub specyfikacji, które są przekazywane do nazwy programu terminalowego. Argumenty te mogą zatem modyfikować zachowanie programu zgodnie z definicją w kodzie źródłowym.

Na przykład możesz przekazać katalog, który chcesz wymienić do polecenia LS. Stąd ścieżka do katalogu jest znana jako argument o polecenie LS.

W tym artykule zostanie przekazane podstawy akceptowania i analizowania argumentów wiersza poleceń w języku programowania rdzy za pomocą modułu ENV ze standardowej biblioteki.

Konfiguracja i import

Pierwszym krokiem jest utworzenie katalogu do przechowywania naszego kodu źródłowego. Dla uproszczenia wygenerujmy pakiet rdzy za pomocą ładunku jako:

$ cargo nowe rust_arguments

Zmień nazwę swojego projektu na dowolną nazwę, którą uważasz.

Następnie przejdź do katalogu źródłowego i otwórz główną.plik RS z ulubionym edytorem tekstu.

$ cd rust_arguments/src && vim main.Rs

Drugim krokiem jest zaimportowanie wymaganych modułów. Użyjemy modułu ENV ze standardowej biblioteki, aby przeanalizować argumenty wiersza poleceń dla tego artykułu.

Moduł ENV zapewnia funkcję pracy ze zmiennymi środowiskowymi, argumentami itp. Aby go używać, zaimportuj go jako:

Użyj std :: env;

Wektor argumentu

W ramach głównej funkcji musimy utworzyć wektor ciągów, który będzie utrzymywał argumenty, które przekazamy do programu.

Możemy to zrobić, dodając następujący wiersz:

Niech args: vec = env :: args ().zbierać();

Powyższy kod wykorzystuje metodę zbierania do iteracji argumentu przekazywanego do argumentów i dodania ich do wektora. Wektor ma typowe ciągi zgodnie z adnotacjami VEC w naszym przypadku. Dzieje się tak, ponieważ rdza nie może wywnioskować rodzaju kolekcji wektorów.

Wydrukuj argumenty

Teraz, gdy możemy zaakceptować argumenty poleceń i przechowywać je w wektorze, spróbujmy je wydrukować. Możemy to zrobić z funkcją ITER, jak pokazano poniżej:

Użyj std :: env;
fn main ()
Niech args: vec = env :: args ().zbierać();
za arg w argsach.iter ()
println!(„”, arg);

Funkcja ITER itera każdego argumentu przekazanego do programu i wydrukuje. Jeśli uruchomimy powyższy kod, powinniśmy zobaczyć dane wyjściowe jako:

Program zwraca nazwę pliku wykonywalnego. Rust będzie traktował nazwę wykonywalnej jako pierwszego argumentu. Stąd argument przy indeksie 0 w wektorze argumentu jest ścieżką do nazwy programu.

Jest to powszechna funkcja w innych językach programowania, w tym C, Python, GO itp.

Jeśli podamy inne argumenty po nazwie programu, rdza dołączy je do indeksu 1, 2, 3… do wektora argumentu.

Na przykład:

Cargo Run Argument1 Argument2 Argument3… Argumentn

Zauważ, że powyższy przykład przekazuje 5 argumentów do programu. Wynik jest tak, jak pokazano:

Target \ debug \ rust_cmd_args.exe
Argument1
Argument2
Argument3

Argumentn

Jak widać, program drukuje wszystkie przekazane argumenty.

Dostęp i oszczędzanie argumentów

Do tej pory wydrukowaliśmy tylko argumenty z programu. Chociaż ilustruje to, jak działają wektory argumentów, to tak naprawdę niewiele robi.

Możemy uzyskać dostęp i zapisać każdy argument na zmiennej, aby rozwinąć nasz program.

Aby uzyskać dostęp do argumentu, możemy użyć indeksu jako:

Użyj std :: env;
fn main ()
Niech args: vec = env :: args ().zbierać();
println!(„”, args [1]);

W powyższym przykładzie uzyskujemy dostęp do pierwszego argumentu za pomocą indeksu 1. Wynik jest tak, jak pokazano:

Ładuj ładunek cześć!

Możemy zapisać argument w zmiennej jako:

Użyj std :: env;
fn main ()
Niech args: vec = env :: args ().zbierać();
Niech pozdrowienia = i args [1];
jeśli pozdrów == "hi"
println!("Witaj ponownie!");
w przeciwnym razie
println!(„Akceptujemy tylko pozdrowienia!")

W powyższym programie akceptujemy zapisanie pierwszego argumentu i zapisanie go w zmiennej. Następnie używamy jego wartości w if… inaczej, aby wykonać akcję.

Możemy uruchomić powyższy kod jako:

$ cargo run hi

Program powinien powrócić „Cześć!" Jak:

Jeśli przekazamy inny argument, który nie jest równy „cześć”, wykonaliśmy bloków drugiego jako:

$ cargo un'ego

Wniosek

Fantastyczny! Mamy program, który może zaakceptować, analizować, oszczędzać i argumenty z tym. Ćwicz dalej, aby dowiedzieć się więcej.