Tupel-Structs
Teil des Abschnitts Logic & Flow 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.
Ein Tuple-Struct kombiniert die Vorteile der Erstellung eines neuen Typs mit der Einfachheit eines Tuples. Sie definieren es mit dem struct-Schlüsselwort, 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 eines Tuple-Structs zu erstellen, geben Sie 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]
Spickzettel
Ein Tupel-Struct ist ein Struct ohne benannte Felder. Es kombiniert die Vorteile der Erstellung eines neuen Typs mit der Einfachheit eines Tupels.
Definieren Sie ein Tupel-Struct mit dem Schlüsselwort struct, gefolgt vom Typnamen und den Feldtypen in Klammern:
struct Color(i32, i32, i32);Erstellen Sie eine Instanz, indem Sie Werte in Klammern angeben:
let red = Color(255, 0, 0);Greifen Sie auf Felder über die Punktnotation mit dem Feldindex zu:
red.0 // erster Wert
red.1 // zweiter Wert
red.2 // dritter WertProbier 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 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