Jak używać wyliczania w rdzy

Jak używać wyliczania w rdzy
Wyliczenia lub wyliczenia pozwalają nam zdefiniować typ i wybrać wartość z listy możliwych wariantów na liście.

W tym artykule zbadamy, jak pracować z wyliczkami w języku programowania rdzy.

Definiowanie enum

Rozważmy przykład, w którym możemy użyć typu enum. Na przykład, jeśli potrzebujemy przechowywania wskazówek, możemy użyć enum. Zazwyczaj możemy wyrazić kierunek w czterech głównych możliwych wartościach: Północno -Wschodni, Południa i Zachodniej.

Jeśli weźmiemy pod uwagę kierunek, pojazd może poruszać się w jednym ze wszystkich możliwych kierunków, ale nie więcej raz w tym samym czasie.

To sprawia, że ​​enum jest mocno odpowiednie dla takiej struktury.

Aby zadeklarować enum w rdzy, zaczynamy od wyliczenia słów kluczowych, a następnie identyfikator enum. Przykład znajduje się poniżej:

Enum Direction
Północ,
Wschód,
Południe,
Zachód

Poprzedni przykład pozwala nam zdefiniować niestandardowy kierunek typu, którego możemy ponownie wykorzystać w programie.

Możesz także zdefiniować enum z wariantem bez powiązanych z nim danych, podobnie jak struktura podobna do jednostki. Enum może również mieć warianty z nazwanymi danymi i bezimiennymi danymi.

Przykładem jest jak pokazano:

Enum Osoba
Żywy,
Mężczyzna (String, F64),
Żeńska nazwa: ciąg, wiek: i32

Wyliczenia są przydatne podczas tworzenia typu, jak pokazano w poprzednim przykładzie. Gdybyśmy użyli definicji struktury, musielibyśmy utworzyć wiele struktur. Enums pozwalają nam przechowywać wszystkie warianty pod jednym jednostką.

Wartości enum

Po ogłoszeniu enum możemy utworzyć instancję wyliczania za pomocą możliwych wariantów dostępnych w typu.

Na przykład:

fn main ()
Niech n = kierunek :: na północ;
Niech e = kierunek :: wschód;
Niech s = kierunek :: na południe;
Niech W = Direction :: West;

Aby uzyskać dostęp do wariantu wyliczenia, używamy podwójnej okrężnicy do oddzielenia przestrzeni nazwy wariantu i jej identyfikatora.

Dopasuj się do wyliczania

Jednym z głównych zastosowań wyliczania jest dopasowywanie wzorów. Jeśli masz wiele potencjalnych dopasowań w programie, opcja dla bloku IF-Else może nie utworzyć czytelnego kodu. W przypadku takiego scenariusza możemy używać wyliczania z operatorem dopasowania.

Operator dopasowania pozwala nam porównać wartość z listą wzorców, takich jak nazwy zmiennych, wartości dosłowne i warianty enum.

Rozważ poniższy przykład wyliczenia wskazówek, które utworzyliśmy wcześniej:

fn main ()
Niech kierunek: kierunek = kierunek :: na północ;
Dopasowanie kierunku
Direction :: North =>
println!(„Kierunek to północ”);
,
Direction :: East =>
println!(„Kierunek to wschód”);
,
Direction :: South =>
println!(„Kierunek to południe”);
,
Direction :: West =>
println!(„Kierunek to zachód”);


W poprzednim przykładzie zaczynamy od słowa kluczowego dopasowania, a następnie wyrażenie, które chcemy ocenić. Chociaż składnia może wydawać się podobna do stwierdzenia IF, wyrażenie dopasowania nie zwraca logicznej prawdy czy fałszu. Typ powrotu może być dowolnego typu. W naszym przypadku typ powrotu jest wyliczeniem kierunku.

Następny blok jest znany jako ramię dopasowania. Ramię zawiera dopasowanie wzoru i blok kodu do wykonania, jeśli zostanie znaleziony mecz.

W naszym przykładzie pierwsze ramię zawiera wzór kierunku :: North and the => Operator. To otwiera blok do wykonania kodu po znalezieniu dopasowania. W poprzednim przykładzie drukujemy wiadomość dla kierunku dopasowania.

Kompilator oceni wyrażenie dopasowania i porównuje wzór dopasowywania w dostarczonych ramionach. Jeśli dopasowanie zostanie znalezione w określonym ramieniu, kod w bloku ramienia jest wykonywany. W przeciwnym razie kompilator kontynuuje ocenę.

Możemy uruchomić poprzedni kod w następujący sposób:

Rustc wyliczają.Rs
./Enums

Poprzedni kod powinien zwrócić w następujący sposób:

$ ./Enums
Kierunek jest na północ

_ Symbol zastępczy

Załóżmy, że chcemy wykonywać określone funkcje dla poszczególnych wzorów w enum. Następnie wykonaj jedną wspólną akcję dla wszystkich innych.

W takim przypadku możemy użyć operatora _, który pasuje do wszystkich innych niespecyfikowanych przypadków w wyrażeniu dopasowania.

Weźmy wskazówki, które utworzyliśmy wcześniej. Możemy zdefiniować działanie, jeśli kierunek jest na północ, a jeśli nie, uruchamiamy globalną wiadomość dla wszystkich innych przypadków. Powstały kod jest jak pokazano poniżej:

fn main ()
Niech kierunek: kierunek = kierunek :: na północ;
Dopasowanie kierunku
Direction :: North =>
println!(„Kierunek to północ”);
,
_ =>
println!(„Inny kierunek”)


Jeśli zmienimy wartość „kierunku”, powinniśmy uzyskać następujące dane wyjściowe jako:

Niech kierunek: kierunek = kierunek :: wschód;
$ Cargo Run
Inny kierunek

Kod wewnątrz bloku _ jest wykonywany, ponieważ zdefiniowaliśmy nie dopasowanie obudowy dla kierunku na wschód.

Zero wariantu wyliczania

Możemy również stworzyć enum bez wariantów. Są one znane jako zero-variant enums i nie możemy ich utworzyć.

Przykład zero-variant enums jest podany poniżej:

Enum Zeroenum

Nie możemy rzucić wariantu zerowego wyliczenia na inne typy.

Wniosek

W tym artykule zbadaliśmy podstawy pracy z typami enum w języku programowania rdzy. Podkreśliliśmy, jak pracować z wyliczkami w rdzy, która obejmuje definicję wyliczenia, użycie wartości enum i jak dopasować się do wyliczeń. Mamy nadzieję, że ten artykuł jest pomocny. Sprawdź inne artykuły z Linux, aby uzyskać więcej wskazówek i informacji.