Tupel-Structs
Teil des Abschnitts Logik & Kontrollfluss der Rust-Journey von Coddy. Lektion 25 von 66.
Während reguläre Structs benannte Felder verwenden, bietet Rust einen weiteren Typ namens Tupel-Structs an. Diese bieten eine prägnantere Möglichkeit, benutzerdefinierte Typen zu erstellen, wenn man die einzelnen Felder nicht einzeln benennen muss.
Eine Tupelstruktur vereint die Vorteile der Erstellung eines neuen Typs mit der Einfachheit eines Tupels. Du definierst sie mithilfe des Schlüsselworts struct, gefolgt vom Typnamen und den Feldtypen in Klammern:
struct Color(i32, i32, i32);Dies erstellt einen Color-Typ, der drei i32-Werte enthält, die RGB-Farbwerte repräsentieren. Im Gegensatz zu regulären Structs geben Sie keine Feldnamen an – Sie greifen auf die Werte über ihre Position zu, genau wie bei Tupeln.
Um eine Instanz einer Tupelstruktur zu erstellen, gibst du Werte in Klammern an:
let red = Color(255, 0, 0);Sie können auf einzelne Felder über die Punktnotation mit dem Feldindex zugreifen: red.0 liefert Ihnen den ersten Wert, red.1 den zweiten und so weiter.
Aufgabe
EinfachSie erhalten drei Eingaben: einen Rotwert (als Ganzzahl), einen Grünwert (als Ganzzahl) und einen Blauwert (als Ganzzahl). Definieren Sie eine Color-Tupel-Struktur, die drei i32-Werte enthält, die RGB-Farbkomponenten darstellen. Erstellen Sie eine Instanz dieser Tupel-Struktur unter Verwendung der Eingabewerte, greifen Sie dann auf jede Farbkomponente mittels Index-Notation zu und geben Sie diese aus.
Anforderungen:
- Definieren Sie eine
Color-Tupel-Struktur mit dreii32-Feldern - Lesen Sie die erste Eingabe ein und konvertieren Sie diese in
i32für den Rotwert - Lesen Sie die zweite Eingabe ein und konvertieren Sie diese in
i32für den Grünwert - Lesen Sie die dritte Eingabe ein und konvertieren Sie diese in
i32für den Blauwert - Erstellen Sie eine Instanz der
Color-Tupel-Struktur mit diesen Werten - Greifen Sie auf jedes Feld mittels Punktnotation mit Indizes (0, 1, 2) zu und geben Sie die Farbinformationen im unten gezeigten exakten Format aus
Eingabe:
- Erste Zeile: Rotwert als Ganzzahl (z. B.
255) - Zweite Zeile: Grünwert als Ganzzahl (z. B.
128) - Dritte Zeile: Blauwert als Ganzzahl (z. B.
0)
Ausgabe:
- Erste Zeile:
Red: [red_value] - Zweite Zeile:
Green: [green_value] - Dritte Zeile:
Blue: [blue_value]
Probier es selbst
use std::io;
// TODO: Definiere hier deine Color-Tupel-Struktur
fn main() {
// Rot-Wert einlesen
let mut red_input = String::new();
io::stdin().read_line(&mut red_input).expect("Failed to read line");
let red: i32 = red_input.trim().parse().expect("Invalid input");
// Grün-Wert einlesen
let mut green_input = String::new();
io::stdin().read_line(&mut green_input).expect("Failed to read line");
let green: i32 = green_input.trim().parse().expect("Invalid input");
// Blau-Wert einlesen
let mut blue_input = String::new();
io::stdin().read_line(&mut blue_input).expect("Failed to read line");
let blue: i32 = blue_input.trim().parse().expect("Invalid input");
// TODO: Erstelle eine Instanz der Color-Tupel-Struktur unter Verwendung der Eingabewerte
// TODO: Greife auf jede Farbkomponente über die Index-Notation zu und gib sie aus
// Format: Red: [value], Green: [value], Blue: [value]
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Kontrollfluss
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Übe selbstständig: Online-Rust-Compiler