Курс по 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 тест върху съдържанието на тази тема.
Навигация в курса
← Ламбди и затваряния | Тест — Ламбди →
💪 Или преминете направо към упражненията в този
раздел.