Was ist ein 'Option'?
Teil des Abschnitts Logic & Flow der Rust-Journey von Coddy — Lektion 35 von 66.
In der Programmierung begegnen Ihnen häufig Situationen, in denen ein Wert vorhanden sein kann oder auch nicht. Zum Beispiel könnte die Suche nach einem Element in einer Liste das Element finden, oder es existiert überhaupt nicht. Traditionelle Programmiersprachen verwenden oft spezielle Werte wie null oder -1, um „Nichts“ darzustellen, aber dieser Ansatz kann zu Fehlern und Abstürzen führen.
Rust verfolgt einen anderen Ansatz mit dem Option<T>-Enum. Dies ist ein integrierter Typ, der explizit die Möglichkeit des Fehlens darstellt. Anstatt zu raten, ob ein Wert existiert, zwingt Rust Sie dazu, beide Fälle im Voraus zu behandeln.
Das Option-Enum hat genau zwei Varianten:
Some(value) // Enthält einen Wert
None // Enthält keinen WertWenn eine Funktion möglicherweise keinen Wert zurückgibt, gibt sie ein Option zurück. Wenn ein Wert zurückgegeben werden soll, verpackt sie ihn in Some. Wenn kein Wert vorhanden ist, gibt sie None zurück.
Dies macht das potenzielle Fehlen im Typsystem explizit und verhindert, dass Sie versehentlich einen Wert verwenden, der nicht existiert.
Sie haben Option bereits in Aktion mit der .get()-Methode von Hash-Maps gesehen – sie gibt Some(&value) zurück, wenn ein Schlüssel existiert, oder None, wenn dies nicht der Fall ist. Dieses Muster taucht überall in Rust auf und macht Ihren Code sicherer und vorhersehbarer.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Spickzettel
Das Option<T>-Enum repräsentiert einen Wert, der vorhanden sein kann oder auch nicht, wodurch Fehler durch die Verwendung nicht existierender Werte verhindert werden.
Es hat zwei Varianten:
Some(value) // Enthält einen Wert
None // Enthält keinen WertFunktionen, die möglicherweise keinen Wert zurückgeben, verwenden Option. Zum Beispiel gibt die .get()-Methode einer Hash-Map Some(&value) zurück, wenn ein Schlüssel existiert, oder None, wenn dies nicht der Fall ist.
Probier es selbst
Diese Lektion enthält keine Programmieraufgabe.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logic & Flow
1Fortgeschrittener Kontrollfluss
Der 'match'-AusdruckAbgleichen mehrerer WerteBereiche abgleichenDer 'if let'-AusdruckSchleifen als AusdrückeRückblick – Einfacher Befehls-Parser4Daten gruppieren mit Structs
Was ist ein Struct?Übersicht über StructsZugriff auf Struct-FelderVeränderbare StructsStructs als FunktionsparameterTupel-StructsZusammenfassung – Ein Buch-Struct erstellen2Einführung in Vektoren
Was ist ein Vektor?Einen Vektor erstellenElemente mit push hinzufügenZugriff auf Vektor-ElementeÜber einen Vektor iterierenVeränderliche IterationElemente entfernenZusammenfassung – Einfacher Score-Tracker5Schlüssel-Wert-Paare mit Hash Maps
Was ist eine Hash Map?Erstellen einer Hash MapEinfügen von Schlüssel-Wert-PaarenZugreifen auf WerteIterieren über eine Hash MapAktualisieren eines WertesEntfernen eines PaaresZusammenfassung – Wortzähler8Projekt: Einfaches Artikelinventar
Projekt-SetupEinen Artikel hinzufügenLagerbestand prüfenEinen Artikel verkaufenAlles zusammenfügen11Abschluss-Herausforderungen
Wiederholung - Einzigartige ElementeWiederholung - Benutzerprofil-ValidatorWiederholung - Noten-Zusammenfassung3Kommandozeilen-To-Do-Liste
Projekt-SetupEine Aufgabe hinzufügenAlle Aufgaben anzeigenEine Aufgabe entfernenFinaler Code6Umgang mit fehlenden Werten mit 'Option'
Was ist ein 'Option'?'match' mit 'Option' verwendenis_some() und is_none()Ein 'Option' entpackenDie 'expect'-MethodeStandardwert bereitstellen: unwrap_orRückblick – Ein Element finden