Курс Raku / Розширені / Підпрограми / Анонімні підпрограми / Вправи / Потроїти

Розв’язання: Потроїти

Ось можливий розв’язок завдання.

Код

my $factor = 3;
my $scale = -> $x { $x * $factor };

say $scale(7);

🦋 Ви можете знайти вихідний код у файлі triple-it.raku.

Вивід

21

Коментарі

  1. Стрілочний блок використовує $factor — змінну із зовнішньої області видимості, хоча його власним параметром є лише $x. Захоплення таких змінних робить його замиканням.

  2. При $factor, рівному 3, виклик $scale(7) дає 21. Змініть $factor, і той самий блок буде масштабувати на нове значення:

$factor = 5;
say $scale(7); # 35

Оскільки замикання захоплює саму змінну, а не її значення на момент створення, пізніший виклик бачить оновлений $factor і повертає 35.

Навігація курсом

Потроїти   |   Анонімний квадрат