Einführung
In diesem Lab wird der Typenschlussmotor für seine Fähigkeit hervorgehoben, den Typ einer Variable anhand seiner Verwendung und der Wertzuweisung zu deduzieren, was in einem fortgeschrittenen Beispiel mit der Programmiersprache Rust demonstriert wird.
Hinweis: Wenn das Lab keinen Dateinamen angibt, können Sie einen beliebigen Dateinamen verwenden. Beispielsweise können Sie
main.rsverwenden und es mitrustc main.rs &&./mainkompilieren und ausführen.
Typenschluss
Der Typenschlussmotor ist ziemlich intelligent. Er macht mehr als nur auf den Typ des Wertausdrucks beim Initialisieren zu schauen. Er schaut auch, wie die Variable danach verwendet wird, um ihren Typ zu inferieren. Hier ist ein fortgeschrittenes Beispiel für Typenschluss:
fn main() {
// Aufgrund der Annotation weiß der Compiler, dass `elem` vom Typ u8 ist.
let elem = 5u8;
// Erstellt einen leeren Vektor (ein wachsender Array).
let mut vec = Vec::new();
// Zu diesem Zeitpunkt weiß der Compiler nicht den genauen Typ von `vec`, er
// weiß nur, dass es ein Vektor von etwas ist (`Vec<_>`).
// Fügt `elem` in den Vektor ein.
vec.push(elem);
// Aha! Jetzt weiß der Compiler, dass `vec` ein Vektor von `u8`-Werten ist (`Vec<u8>`)
// TODO ^ Versuchen Sie, die Zeile `vec.push(elem)` auszukommentieren
println!("{:?}", vec);
}
Es war keine Typannotation der Variablen erforderlich, der Compiler ist zufrieden und auch der Programmierer!
Zusammenfassung
Herzlichen Glückwunsch! Sie haben das Lab Typenschluss abgeschlossen. Sie können in LabEx weitere Labs absolvieren, um Ihre Fähigkeiten zu verbessern.