Курс по Raku / Напреднали / Подпрограми / Анонимни подпрограми / Exercises / Утройте го
Решение: Утройте го
Ето едно възможно решение на задачата.
Код
my $factor = 3;
my $scale = -> $x { $x * $factor };
say $scale(7);🦋 Можете да намерите изходния код във файла triple-it.raku.
Изход
21Коментари
Стрелковият блок използва
$factor, променлива от заобикалящия обхват, въпреки че приема само параметъра$x. Улавянето на такива променливи е това, което го прави затваряне (closure).При
$factorравно на3, извикването на$scale(7)дава21. Променете$factorи същият блок ще мащабира с новата стойност:
$factor = 5;
say $scale(7); # 35Тъй като затварянето улавя самата променлива, а не
стойността й в момента на написване, по-късното извикване вижда
обновения $factor и връща 35.
Навигация в курса
← Утройте го | Анонимен квадрат →