Wie man Enums in Rost benutzt

Wie man Enums in Rost benutzt
Aufzählungen oder Aufzüge ermöglichen es uns, einen Typ zu definieren und einen Wert aus einer Liste möglicher Varianten innerhalb der Liste auszuwählen.

In diesem Artikel werden wir untersuchen, wie man mit Enums in der Rost -Programmiersprache arbeitet.

Definieren einer Aufzählung

Betrachten wir ein Beispiel, bei dem wir einen Enum -Typ verwenden können. Wenn wir beispielsweise Anweisungen speichern müssen, können wir eine Aufzählung verwenden. Normalerweise können wir die Richtung in vier wichtigen möglichen Werten ausdrücken: Nordost, Süd und West.

Wenn wir die Richtung betrachten, kann sich ein Fahrzeug entweder in eine der möglichen Richtungen bewegen, aber nicht mehr gleichzeitig.

Dies macht einen Auflauf für eine solche Struktur stark angemessen.

Um einen Enum in Rost zu deklarieren, beginnen wir mit dem Keyword Enum, gefolgt von der Enum -Kennung. Nachfolgend finden Sie ein Beispiel:

Aufzündung
Norden,
Ost,
Süd,
West

Das vorherige Beispiel ermöglicht es uns, eine benutzerdefinierte Art der Typrichtung zu definieren, die wir im Programm wiederverwenden können.

Sie können auch eine Aufzählung mit einer Variante ohne damit verbundene Daten definieren, ähnlich einer Einheit-ähnlichen Struktur. Ein Auflauf kann auch Varianten mit benannten Daten und unbenannten Daten haben.

Ein Beispiel ist wie gezeigt:

enum Person
Lebendig,
Männlich (String, F64),
Weiblich Name: String, Alter: i32

Enums sind nützlich, wenn Sie einen Typ erstellen, wie im vorherigen Beispiel gezeigt. Wenn wir die Strukturdefinition verwenden würden, müssten wir mehrere Strukturen erstellen. Mit Aufzügen können wir alle Varianten unter einer einzigen Einheit speichern.

Enum -Werte

Nachdem wir eine Aufzählung deklariert haben, können wir eine Instanz einer Aufzählung unter Verwendung der möglichen Varianten erstellen, die im Typ verfügbar sind.

Zum Beispiel:

fn main ()
Sei n = Richtung :: Norden;
lass e = Richtung :: östlich;
Sei S = Richtung :: South;
lass w = Richtung :: west;

Um auf die Variante eines Enum zuzugreifen, verwenden wir den Doppeldarm, um den Varianten -Namensraum und seine Kennung zu trennen.

Übereinstimmung über Aufzüge

Eine wesentliche Verwendung von Enums ist die Musteranpassung. Wenn Sie mehrere potenzielle Übereinstimmungen in Ihrem Programm haben, kann die Option für einen IF-ELSE-Block möglicherweise keinen lesbaren Code erstellen. Für ein solches Szenario können wir Enums mit dem Match -Operator verwenden.

Mit dem Match -Operator können wir einen Wert mit einer Liste von Mustern vergleichen, wie z. B. Variablennamen, Literalwerte und Enum -Varianten.

Betrachten Sie das folgende Beispiel für die zuvor erstellten Anweisungen, die wir zuvor erstellt haben:

fn main ()
Sei Richtung: Richtung = Richtung :: Norden;
Übereinstimmungsrichtung
Richtung :: North =>
println!("Richtung ist nach Norden");
,
Richtung :: East =>
println!("Richtung ist östlich");
,
Richtung :: South =>
println!("Richtung ist südlich");
,
Richtung :: West =>
println!("Richtung ist westlich");


Im vorherigen Beispiel beginnen wir mit dem Keyword des Spiels, gefolgt von dem Ausdruck, den wir bewerten möchten. Obwohl die Syntax einer IF -Anweisung ähnlich erscheinen mag, gibt der Match -Ausdruck keinen booleschen oder falschen zurück. Der Rückgabetyp kann von jedem Typ sein. In unserem Fall ist der Rückgabetyp eine Richtungsumzählung.

Der nächste Block ist als Match -Arm bekannt. Ein Arm enthält das übereinstimmende Muster und den Codeblock, der ausgeführt werden soll, wenn die Übereinstimmung gefunden wird.

In unserem Beispiel enthält der erste Arm das Richtungsmuster :: North und den => Operator. Dadurch wird der Block geöffnet, damit der Code ausgeführt werden kann, wenn die Übereinstimmung gefunden wird. Für das vorherige Beispiel drucken wir die Nachricht für die übereinstimmende Richtung.

Der Compiler bewertet den Match -Ausdruck und vergleicht ein Matching -Muster in den bereitgestellten Armen. Wenn eine Übereinstimmung in einem bestimmten Arm gefunden wird, wird der Code innerhalb des Armblocks ausgeführt. Andernfalls setzt der Compiler die Bewertung fort.

Wir können den vorherigen Code wie folgt ausführen:

Rustc Enum.Rs
./Aufschwung

Der vorherige Code sollte wie folgt zurückgeben:

$ ./Aufschwung
Richtung ist nach Norden

Der Platzhalter

Angenommen, wir möchten nur bestimmte Funktionen für bestimmte Muster in einer Aufzählung ausführen. Dann machen Sie eine gemeinsame Handlung für alle anderen.

Für einen solchen Fall können wir den _ Operator verwenden, der alle anderen nicht spezifizierten Fälle innerhalb eines Übereinstimmungsausdrucks entspricht.

Nehmen wir die Anweisungen, die wir zuvor erstellt haben. Wir können eine Aktion definieren, wenn die Richtung nach Norden ist, und wenn nicht, führen wir eine globale Nachricht für alle anderen Fälle durch. Der resultierende Code ist wie unten gezeigt:

fn main ()
Sei Richtung: Richtung = Richtung :: Norden;
Übereinstimmungsrichtung
Richtung :: North =>
println!("Richtung ist nach Norden");
,
_ =>
println!("Andere Richtung")


Wenn wir den Wert der „Richtung“ ändern, sollten wir die folgende Ausgabe erhalten wie bei:

Sei Richtung: Richtung = Richtung :: Ost;
$ Frachtlauf
Andere Richtung

Der Code im _ Block wird ausgeführt, da wir keinen Übereinstimmungsfall für Direction East definiert haben.

Null Variante

Wir können auch eine Aufzählung ohne Varianten erstellen. Diese sind als nullvariante Aufenthalte bekannt, und wir können sie nicht instanziieren.

Ein Beispiel für nullvariante Enums finden Sie unten:

Enum Zeroenum

Wir können keine Varianten -Enums auf andere Typen geben.

Abschluss

In diesem Artikel haben wir die Grundlagen der Arbeit mit Aufschwungentypen in der Rost -Programmiersprache untersucht. Wir haben hervorgehoben, wie man mit Enums in Rost arbeitet, einschließlich der Definition eines Enum, der Verwendung von Enum -Werten und wie man über Enums übereinstimmt. Wir hoffen, Sie haben diesen Artikel hilfreich gefunden. Weitere Tipps und Informationen finden Sie in den anderen Linux -Hinweisartikeln.