Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Функциональное программирование / Лямбды и замыкания
Лямбды
Лямбда — это функция без имени. Два способа её записи вы уже
встречали. Первый — стрелочный блок,
который перечисляет свои параметры после стрелки ->:
my &square = -> $x { $x * $x };
say square(7); # 49Второй — форма с Whatever, где *
замещает аргумент, а окружающее выражение становится функцией одного
аргумента:
my &square = * ** 2;
say square(7); # 49Оба создают одно и то же: кусочек кода, который можно сохранить, передать и вызвать. Лямбды особенно хороши в роли аргументов функций высшего порядка, где имя только мешало бы:
say (1..5).map(-> $n { $n * $n }); # (1 4 9 16 25)
say (1..5).map(* ** 2); # (1 4 9 16 25)Стрелочная форма понятнее, когда тело длиннее или параметров несколько; форма с Whatever восхитительно коротка для простых выражений. Это два написания одной идеи — функции без имени.
Практика
Пройдите 1 тест по содержанию этой темы.
Навигация по курсу
← Лямбды и замыкания | Тест — Лямбды →
💪 Или перейдите сразу к упражнениям этого
раздела.