Closure vs. Lambda

They are both almost one and a same – anonymous function, but with some differences.

A closure is essentially the same as a lambda apart from it can access variables outside the scope that it was created.

С use в closure вземаш дадените променливи ДО МОМЕНТА на дефинирането им.

$user = 'Philip';

$greeting = function() use ($user) {
    echo "Hello $user";
};

$user = 'John';

$greeting();  // Returns "Hello Philip" 

Защо Philip?
Защото когато по-горе сме дефинирали closure, $user е имал стойност Philip, нищо, че после, преди да го извикаме, се е променил на John.

Затова, още казано, closure „правят снимка“ на променливите до момента на дефинирането си, явно и затова се казва closure – затваряне.

Пък иначе дадените променливи, нека после, след дефинирането на closure, да се променят колкото си искат.

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *