Курс языка программирования 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 тест по содержанию этой темы.

Навигация по курсу

Лямбды и замыкания   |   Тест — Лямбды


💪 Или перейдите сразу к упражнениям этого раздела.