lambda функции и замыкания(closure) в php

Лямбды и замыкания - очень полезное решение в PHP, впервые добавленное в версии php 5.3. Многие языки поддерживают эту функцию, такие как Javascript, Ruby, Python и так далее. И разработчики часто получают от этого выгоду.

Что такое лямбда-функция?

 

Это анонимная функция, которая может быть назначена переменной или передана аргументом с функцией. Это простая функция без имени, но вы можете установить переменную для функции. Вы также можете передать анонимную функцию другим функциям или методам. Иногда нам нужна очень простая функция для сервера одного задания, в это время мы можем использовать лямбду, иначе нам придется сделать глобальную область действия тем, что не нужно для других целей.

 

$sum = function ($a, $b) {
 return $a + $b;
};

echo $sum(5, 5);  // 10

 

Одно важное замечание: мы не могли получить доступ к какой-либо глобальной переменной непосредственно внутри функции. Например,

 

$base = 100;
$sum = function ($a, $b) {
 return $a + $b + $base;
};

echo $sum(5, 5);  // Примечание: неопределенная переменная: base

Что такое closure функция (замыкание)?

 

Closure аналогично лямбда-или анонимной функции с некоторыми дополнительными преимуществами. Мы можем получить доступ к глобальным переменным с помощью ключевого слова use, и это позволяет нам получить доступ ко многим глобальным переменным внутри анонимной функции.

$base = 100;
$sum = function ($a, $b) use ($base) {
 return $a + $b + $base;
};
echo $sum(5, 5);  // 110

 

Подведем итоги:

Замыкание - это функция lambda в php, которая инкапсулирует переменные, чтобы их можно было использовать, как только их исходные ссылки выходят за пределы области видимости.

Замыкание - это функция lambda, но функция lambda не является замыканием, если не указать ключевое слово use .

 


Читайте также

Как начинающему (и не только) программисту поднять уровень своей ЗП?

Не все программисты знают когда просить повышение и какие аргументы приводить. В этой статье вы найдёте план действий, который позволит вам повысить уровень вашей заработной платы в кратчайшие сроки.


Оставить коментарий

your email address will not be published. required fields are marked *

Имя *
Email *
Website