Menu
Coddy logo textTech

Domknięcia i „use”

Część sekcji Logika i przepływ programu ścieżki PHP w Coddy. Lekcja 2 z 68.

Domyślnie funkcje anonimowe mogą uzyskiwać dostęp tylko do zmiennych przekazanych im jako parametry. Co jednak zrobić, jeśli chcesz, aby domknięcie miało dostęp do zmiennej z otaczającego zakresu? Właśnie tutaj przydaje się słowo kluczowe use.

Słowo kluczowe use pozwala domknięciu „przechwytywać” zmienne z zakresu nadrzędnego i używać ich wewnątrz funkcji:

<?php
$message = "Welcome";

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

$greeting("Bob");  // Wyświetla: Welcome, Bob!
?>

Zwróć uwagę, że $message jest zdefiniowane poza funkcją, ale dzięki dodaniu use ($message) po liście parametrów domknięcie może uzyskać dostęp do tej zmiennej i jej używać. Możesz przechwycić wiele zmiennych, oddzielając je przecinkami: use ($var1, $var2).

Ta funkcja sprawia, że domknięcia są znacznie potężniejsze, umożliwiając im pracę z danymi z otaczającego kontekstu przy zachowaniu elastyczności funkcji anonimowych.

challenge icon

Wyzwanie

Łatwy

Utwórz funkcję anonimową, która przechwytuje procent rabatu z otaczającego zakresu za pomocą słowa kluczowego use. Funkcja powinna przyjmować cenę jako parametr i zwracać cenę końcową po zastosowaniu rabatu.

Otrzymasz dwa dane wejściowe: procent rabatu i cenę początkową. Odczytaj oba dane, utwórz domknięcie przechwytujące procent rabatu, wywołaj domknięcie z ceną i wypisz cenę końcową po rabacie.

Format danych wejściowych: Dwa wiersze — pierwszy wiersz zawiera procent rabatu (liczbę), a drugi wiersz zawiera cenę początkową (liczbę, która może zawierać część dziesiętną)

Oczekiwany wynik: Cena końcowa po zastosowaniu rabatu

Spróbuj swoich sił

<?php
// Odczytaj dane wejściowe
$discount = floatval(fgets(STDIN));
$price = floatval(fgets(STDIN));

// TODO: Utwórz funkcję anonimową, która przechwytuje procent rabatu za pomocą 'use'
// Funkcja powinna przyjmować parametr ceny i zwracać cenę końcową po rabacie


// TODO: Wywołaj funkcję anonimową z ceną i zapisz wynik


// Wyświetl cenę końcową
echo $finalPrice;
?>
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator PHP online