Menu
Coddy logo textTech

Einführung in Implementierungsblöcke

Teil des Abschnitts Objektorientierte Programmierung der Rust-Journey von Coddy. Lektion 1 von 61.

In Rust legen Strukturen fest, welche Daten ein Typ enthält, aber sie definieren nicht, was dieser Typ tun kann. Um einer Struktur Verhalten zu verleihen, verwenden wir Implementierungsblöcke mit dem Schlüsselwort impl.

Ein Implementierungsblock verbindet Funktionen (sogenannte Methoden) mit einer bestimmten Struktur. Hier ist die grundlegende Struktur:

struct Dog {
    name: String,
    age: u8,
}

impl Dog {
    fn bark(&self) {
        println!("{} says woof!", self.name);
    }
}

Der Block impl Dog teilt Rust mit, dass alles darin zur Struktur Dog gehört. Diese Trennung hält deine Datendefinition übersichtlich und ermöglicht es dir gleichzeitig, im Implementierungsblock so viele Methoden wie nötig hinzuzufügen.

Um eine Methode aufzurufen, verwende die Punktnotation bei einer Instanz:

fn main() {
    let my_dog = Dog {
        name: String::from("Rex"),
        age: 3,
    };
    
    my_dog.bark(); // Ausgabe: Rex sagt woof!
}

Dieses Muster der Trennung von Daten (dem struct) und Verhalten (dem impl-Block) ist grundlegend für die Organisation von Rust-Code. In den kommenden Lektionen werden wir untersuchen, wie Methoden über den &self-Parameter, den Sie im obigen Beispiel sehen, auf struct-Daten zugreifen.

challenge icon

Aufgabe

Einfach

Erstelle eine Cat-Struktur mit zwei Feldern: name (String) und lives (u8).

Füge einen Implementierungsblock für Cat mit einer Methode namens meow hinzu, die &self entgegennimmt und den Namen der Katze gefolgt von " says meow!" ausgibt.

Du erhältst zwei Eingaben:

  • Erste Zeile: der Name der Katze (String)
  • Zweite Zeile: die Anzahl der Leben (u8)

Erstelle eine Cat-Instanz mit den bereitgestellten Werten und rufe die meow-Methode für sie auf.

Erwartetes Ausgabeformat:

{name} says meow!

Probier es selbst

use std::io;

// TODO: Definiere das Cat-Struct mit den Feldern 'name' (String) und 'lives' (u8)


// TODO: Füge einen Implementierungsblock für Cat mit einer 'meow'-Methode hinzu


fn main() {
    let mut name = String::new();
    io::stdin().read_line(&mut name).expect("Failed to read line");
    let name = name.trim().to_string();
    
    let mut lives_input = String::new();
    io::stdin().read_line(&mut lives_input).expect("Failed to read line");
    let lives: u8 = lives_input.trim().parse().expect("Failed to parse lives");
    
    // TODO: Erstelle eine Cat-Instanz und rufe die meow-Methode auf
    
}
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 Objektorientierte Programmierung

Übe selbstständig: Online-Rust-Compiler