Курс по 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 тест върху съдържанието на тази тема.

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

Ламбди и затваряния   |   Тест — Ламбди


💪 Или преминете направо към упражненията в този раздел.