Курс языка программирования Raku / Продвинутый уровень / Подробнее о встроенных типах / Конструкции кавычек / Exercises / Замыкание в q-строке
Решение: Замыкание в q-строке
Вот одно из возможных решений задачи.
Код
my $x = 10;
say q:c/$x squared is {$x ** 2}/;🦋 Исходный код можно найти в файле closure-quote.raku.
Вывод
$x squared is 100Комментарии
Наречие
:c(closure) включает интерполяцию встроенного кода{ … }в иначе буквальной формеq. Внутри фигурных скобок$x— это настоящий код, поэтому{$x ** 2}вычисляется как100.$xза пределами фигурных скобок остаётся ровно в том виде, в каком записан, потому что наречие скаляра:sне включено. В этом и состоит суть пофункциональных наречий: вы получаете встроенный код без одновременного включения$-интерполяции.Наречия можно комбинировать. Добавьте также
:s, и ведущий$xтоже будет интерполирован — обе функции теперь включены одновременно:
my $x = 10;
say q:c:s/$x squared is {$x ** 2}/; # 10 squared is 100Навигация по курсу
← Замыкание в q-строке | Heredoc →