Menu
Coddy logo textTech

Closures mit Parametern

Teil des Abschnitts Logic & Flow der Rust-Journey von Coddy — Lektion 61 von 66.

Während Closures, die keine Parameter entgegennehmen, nützlich sind, werden Sie meistens Daten an Ihre Closures übergeben wollen, um sie flexibler und leistungsfähiger zu machen. Das Hinzufügen von Parametern zu Closures folgt demselben Muster, das Sie zuvor gelernt haben, jedoch mit Werten innerhalb der vertikalen Striche.

So definieren Sie einen Closure, der einen Parameter akzeptiert:

let add_one = |x: i32| x + 1;

Beachten Sie, dass der Parameter x zwischen den vertikalen Strichen steht, genau wie Funktionsparameter. Sie können diesen Closure dann aufrufen, indem Sie einen Wert übergeben:

let add_one = |x: i32| x + 1;
let result = add_one(5); // Ergebnis ist 6

Für Closures mit mehreren Parametern trennen Sie diese durch Kommas:

let multiply = |x: i32, y: i32| x * y;
let result = multiply(3, 4); // Ergebnis ist 12
challenge icon

Aufgabe

Einfach

Sie erhalten zwei Eingaben. Die erste Eingabe ist eine Zahl, und die zweite Eingabe ist ebenfalls eine Zahl. Erstellen Sie eine Closure, die zwei Parameter entgegennimmt und die Potenz berechnet (der erste Parameter erhoben in den zweiten Parameter). Speichern Sie die Closure in einer Variablen, rufen Sie sie mit den Eingabewerten auf und geben Sie das Ergebnis aus.

Anforderungen:

  • Lesen Sie die erste Eingabe (Basiszahl) ein und entfernen Sie Leerzeichen
  • Parsen Sie diese zu i32
  • Lesen Sie die zweite Eingabe (Exponent) ein und entfernen Sie Leerzeichen
  • Parsen Sie diese zu u32
  • Erstellen Sie eine Closure mit zwei Parametern, die die Potenz mithilfe der Methode .pow() berechnet
  • Speichern Sie die Closure in einer Variablen
  • Rufen Sie die Closure mit beiden Eingabewerten auf
  • Geben Sie das Ergebnis aus

Eingabe:

  • Erste Zeile: Eine Basiszahl (z. B. 2)
  • Zweite Zeile: Ein Exponent (z. B. 3)

Ausgabe:

  • Das Ergebnis der Potenzberechnung

Spickzettel

Closures können Parameter akzeptieren, indem man sie zwischen die vertikalen Striche || setzt:

let add_one = |x: i32| x + 1;
let result = add_one(5); // Ergebnis ist 6

Bei mehreren Parametern trennen Sie diese durch Kommas:

let multiply = |x: i32, y: i32| x * y;
let result = multiply(3, 4); // Ergebnis ist 12

Probier es selbst

use std::io;

fn main() {
    // Erste Eingabe lesen (Basiszahl)
    let mut base_input = String::new();
    io::stdin().read_line(&mut base_input).expect("Failed to read line");
    let base: i32 = base_input.trim().parse().expect("Invalid number");
    
    // Zweite Eingabe lesen (Exponent)
    let mut exp_input = String::new();
    io::stdin().read_line(&mut exp_input).expect("Failed to read line");
    let exponent: u32 = exp_input.trim().parse().expect("Invalid number");
    
    // TODO: Erstelle ein Closure, das die Potenz berechnet, und speichere es in einer Variablen
    // TODO: Rufe das Closure mit Basis und Exponent auf
    
    // Ergebnis ausgeben
    println!("{}", result);
}
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