Zugriff auf Struct-Felder
Teil des Abschnitts Logic & Flow der Rust-Journey von Coddy — Lektion 22 von 66.
Sobald Sie eine Struct-Instanz erstellt haben, benötigen Sie eine Möglichkeit, die darin gespeicherten Werte abzurufen. Rust verwendet die Punktnotation, um auf einzelne Felder innerhalb eines Structs zuzugreifen.
Die Syntax ist unkompliziert: Sie schreiben den Namen der Struct-Instanz, gefolgt von einem Punkt und dann dem Namen des Feldes, auf das Sie zugreifen möchten:
let product = Product {
name: String::from("Laptop"),
price: 999,
};
println!("Product: {}", product.name);
println!("Price: ${}", product.price);Diese Punktnotation funktioniert genau wie der Zugriff auf Eigenschaften in anderen Programmiersprachen. Sie können die abgerufenen Werte in Ausdrücken verwenden, sie Variablen zuweisen oder sie an Funktionen übergeben – sie verhalten sich genau wie jeder andere Wert dieses Typs.
Aufgabe
EinfachSie erhalten drei Eingaben: einen Automodellnamen, das Baujahr des Autos (als Ganzzahl) und seinen Kilometerstand (als Ganzzahl). Definieren Sie ein Car-Struct mit drei Feldern: model vom Typ String, year vom Typ i32 und mileage vom Typ i32. Erstellen Sie eine Instanz dieses Structs unter Verwendung der Eingabewerte, greifen Sie dann auf jedes Feld zu und geben Sie es aus.
Anforderungen:
- Definieren Sie ein
Car-Struct mit den Feldern:model: String,year: i32undmileage: i32 - Lesen Sie die erste Eingabe als Automodell ein
- Lesen Sie die zweite Eingabe ein und konvertieren Sie diese in
i32für das Jahr - Lesen Sie die dritte Eingabe ein und konvertieren Sie diese in
i32für den Kilometerstand - Erstellen Sie eine Instanz des
Car-Structs mit diesen Werten - Verwenden Sie die Punktnotation, um auf jedes Feld zuzugreifen, und geben Sie die Autoinformationen in dem unten gezeigten exakten Format aus
Eingabe:
- Erste Zeile: Automodell (z. B.
Tesla Model 3) - Zweite Zeile: Jahr als Ganzzahl (z. B.
2022) - Dritte Zeile: Kilometerstand als Ganzzahl (z. B.
15000)
Ausgabe:
- Erste Zeile:
Car: [model] - Zweite Zeile:
Year: [year] - Dritte Zeile:
Mileage: [mileage] km
Spickzettel
Um auf Felder innerhalb einer Struct-Instanz zuzugreifen, verwende die Punktnotation:
let product = Product {
name: String::from("Laptop"),
price: 999,
};
println!("Product: {}", product.name);
println!("Price: ${}", product.price);Die Syntax lautet: instance_name.field_name. Aufgerufene Werte können in Ausdrücken verwendet, Variablen zugewiesen oder an Funktionen übergeben werden.
Probier es selbst
use std::io;
// TODO: Definieren Sie hier die Car-Struktur mit den Feldern: model, year und mileage
fn main() {
// Das Automodell einlesen
let mut model = String::new();
io::stdin().read_line(&mut model).expect("Failed to read line");
let model = model.trim().to_string();
// Das Jahr einlesen
let mut year_input = String::new();
io::stdin().read_line(&mut year_input).expect("Failed to read line");
let year: i32 = year_input.trim().parse().expect("Invalid year");
// Den Kilometerstand einlesen
let mut mileage_input = String::new();
io::stdin().read_line(&mut mileage_input).expect("Failed to read line");
let mileage: i32 = mileage_input.trim().parse().expect("Invalid mileage");
// TODO: Erstellen Sie eine Instanz der Car-Struktur unter Verwendung der Eingabewerte
// TODO: Greifen Sie auf jedes Feld zu und geben Sie es im erforderlichen Format aus
// Car: [model]
// Year: [year]
// Mileage: [mileage] km
}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 Code