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.