Курс по Raku / Напреднали / Повече за вградените типове / Конструкции за цитиране 🆕 / Exercises / Closure в q низ

Решение: Closure в q низ

Ето едно възможно решение на задачата.

Код

my $x = 10;
say q:c/$x squared is {$x ** 2}/;

🦋 Можете да намерите изходния код във файла closure-quote.raku.

Изход

$x squared is 100

Коментари

  1. Наречието :c (closure — затваряне) включва интерполирането на вграден код { … } в иначе буквалната форма q. Вътре във фигурните скоби $x е истински код, така че {$x ** 2} се изчислява на 100.

  2. $x извън фигурните скоби остава точно както е написано, защото скаларното наречие :s не е активирано. В това е цялата идея на наречията за отделни функции: получавате вграден код, без да включвате и $-интерполиране.

  3. Наречията могат да се комбинират. Добавете и :s и водещото $x също ще бъде интерполирано — и двете функции вече са включени едновременно:

my $x = 10;
say q:c:s/$x squared is {$x ** 2}/; # 10 squared is 100

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

Closure в q низ   |   Heredoc