Przejdź do treści głównej
INF.03Pytanie #1544 z 1558php-skladnia-i-struktury

Przeanalizuj funkcję anonimową implementującą domknięcie (closure). Jaka wartość zostanie wyświetlona po wywołaniu zmiennej $f()?

php
<?php
$x = 10;
$f = function() use ($x) {
    echo $x;
};
$x = 20;
$f();
?>
Opcje odpowiedzi:
A
10
Prawidłowa
B
20
C
0
D
Blad kompilacji z powodu braku argumentu
Reklama

Wyjaśnienie i uzasadnienie dydaktyczne

Poprawna odpowiedź: A (10)

Ponieważ konstrukcja use ($x) importuje zmienną do zasięgu funkcji anonimowej w momencie jej definiowania przez kopiowanie wartości (by value). Późniejsza zmiana wartości zmiennej $x w głównym skrypcie na 20 nie wpływa na wartość skopiowaną wewnątrz domknięcia.

Opcja B jest niepoprawna, ponieważ wartość 20 zostałaby wyświetlona tylko wtedy, gdyby zmienna była importowana przez referencję, przy użyciu zapisu use (&$x). Opcja C jest niepoprawna, ponieważ zmienna miała przypisaną wartość początkową. Opcja D jest niepoprawna, ponieważ domknięcia realizowane przez konstrukcję use są prawidłowym elementem składni języka PHP.

Dlaczego pozostałe opcje są nieprawidłowe?

  • B: Opcja 20 nie odpowiada prawidłowemu rozwiązaniu problemu opisanego w pytaniu.
  • C: Opcja 0 nie odpowiada prawidłowemu rozwiązaniu problemu opisanego w pytaniu.
  • D: Opcja Blad kompilacji z powodu braku argumentu nie odpowiada prawidłowemu rozwiązaniu problemu opisanego w pytaniu.

Chcesz poćwiczyć całą kwalifikację INF.03?

Egzamin próbny na czas, nauka działami, losowe pytanie albo przegląd całej bazy — wszystko w przeglądarce i bez zakładania konta.

Rozwiąż w Quizie

Pojęcia z tego pytania

Cały słownik INF03
Reklama

Podobne pytania z działu „Php skladnia i struktury”

Ten sam obszar materiału z kwalifikacji INF.03. W całej bazie znajdziesz 165 pytań z tego działu.