Menu
Coddy logo textTech

Closures und 'use'

Teil des Abschnitts Logik & Ablauf der PHP-Journey von Coddy — Lektion 2 von 68.

Standardmäßig können anonyme Funktionen nur auf Variablen zugreifen, die ihnen als Parameter übergeben werden. Aber was ist, wenn Ihr Closure auf eine Variable aus dem umgebenden Scope zugreifen muss? Hier kommt das Schlüsselwort use ins Spiel.

Das Schlüsselwort use ermöglicht es einem Closure, Variablen aus seinem übergeordneten Gültigkeitsbereich „einzufangen“ und sie innerhalb der Funktion zu verwenden:

<?php
$message = "Welcome";

$greeting = function($name) use ($message) {
    echo $message . ", " . $name . "!";
};

$greeting("Bob");  // Ausgabe: Welcome, Bob!
?>

Beachten Sie, wie $message außerhalb der Funktion definiert ist, aber durch das Einfügen von use ($message) nach der Parameterliste kann der Closure auf diese Variable zugreifen und sie verwenden. Sie können mehrere Variablen erfassen, indem Sie diese durch Kommas trennen: use ($var1, $var2).

Diese Funktion macht Closures wesentlich leistungsfähiger, da sie mit Daten aus ihrem umgebenden Kontext arbeiten können, während sie gleichzeitig die Flexibilität von anonymen Funktionen beibehalten.

quiz iconTeste dich selbst

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

quiz iconTeste dich selbst

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

quiz iconTeste dich selbst

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

challenge icon

Aufgabe

Einfach

Erstellen Sie eine anonyme Funktion, die einen Rabattprozentsatz aus dem umgebenden Bereich unter Verwendung des Schlüsselworts use erfasst. Die Funktion sollte einen Preis als Parameter entgegennehmen und den Endpreis nach Anwendung des Rabatts zurückgeben.

Sie erhalten zwei Eingaben: den Rabattprozentsatz und den ursprünglichen Preis. Lesen Sie beide Eingaben ein, erstellen Sie einen Closure, der den Rabattprozentsatz erfasst, rufen Sie den Closure mit dem Preis auf und geben Sie den Endpreis nach Abzug des Rabatts aus.

Eingabeformat: Zwei Zeilen - die erste Zeile enthält den Rabattprozentsatz (eine Zahl), die zweite Zeile enthält den ursprünglichen Preis (eine Zahl, die Dezimalstellen enthalten kann)

Erwartete Ausgabe: Der Endpreis nach Anwendung des Rabatts

Spickzettel

Das Schlüsselwort use ermöglicht es Closures, Variablen aus ihrem übergeordneten Gültigkeitsbereich zu erfassen:

<?php
$message = "Welcome";

$greeting = function($name) use ($message) {
    echo $message . ", " . $name . "!";
};

$greeting("Bob");  // Ausgabe: Welcome, Bob!
?>

Sie können mehrere Variablen erfassen, indem Sie diese durch Kommas trennen: use ($var1, $var2).

Probier es selbst

<?php
// Eingaben lesen
$discount = floatval(fgets(STDIN));
$price = floatval(fgets(STDIN));

// TODO: Erstellen Sie eine anonyme Funktion, die den Rabattprozentsatz mit 'use' erfasst
// Die Funktion sollte einen Preisparameter entgegennehmen und den Endpreis nach dem Rabatt zurückgeben


// TODO: Rufen Sie den Closure mit dem Preis auf und speichern Sie das Ergebnis


// Den Endpreis ausgeben
echo $finalPrice;
?>
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 Logik & Ablauf