Menu
Coddy logo textTech

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.

challenge icon

Aufgabe

Einfach

Sie 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 drei i32-Feldern
  • Lesen Sie die erste Eingabe ein und konvertieren Sie diese in i32 für den Rotwert
  • Lesen Sie die zweite Eingabe ein und konvertieren Sie diese in i32 für den Grünwert
  • Lesen Sie die dritte Eingabe ein und konvertieren Sie diese in i32 fü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 Wert

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]
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logic & Flow