Вопрос №4478 от пользователя Александр О. в уроке «Функции первого класса. Возврат как значения», курс «PHP: Построение абстракций»
Здравствуйте!
Объясните логику, почему вместо кода:
function sumGenerator ($func) { return function($a, $b) use ($func) { return sum($a, $b, $func); }; }
нельзя использовать следующий код (без обёртывания, а сразу вызвать нужную функцию sum):
function sumGenerator2 ($func) { return sum($a, $b, $func); }
Обёртывание здесь для возможности вызова лямбда-функции $sumIntegers именно с двумя параметрами, а не тремя (без $func)?
Можно ли вместо замыкания $func передавать его через параметры вызываемых функций? Почему в этом случае его не видят вложенные вызываемые функции?
1
0
- Ваша функция не может работать, вы возвращаете не функцию, а результат вызова функции, причем передаете в функцию
$sum
два параметра, которые не определены. - Вы можете передавать функцию как параметр, но тогда придется это делать при каждом вызове, и делать это будут те кто используют ваш код, в таком случае пропадает все преимущество генерации.
1
Используйте Хекслет по максимуму!
- Задавайте вопросы по уроку
- Проверяйте знания в квизах
- Проходите практику прямо в браузере
- Отслеживайте свой прогресс
Зарегистрируйтесь или войдите в свой аккаунт
Рекомендуемые программы
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.





Профессия
Новый
Разработка фронтенд и бэкенд компонентов веб-приложений
7 июля
16 месяцев


