Курс по Raku / Напреднали / Повече за вградените типове / Конструкции за цитиране 🆕
Наречия за цитиране
Поведението на конструкция за цитиране може да се настрои с
наречия. Всяка функция на цитирането — интерполиране на
скалари, изпълнение на вградени затваряния, обработка на обратни
наклонени черти — се контролира от собственото си наречие, което включва
или изключва тази единствена функция, така че можете да започнете от
q или Q и да добавите обратно точно функциите,
от които имате нужда.
Някои често срещани наречия:
:s/:scalar— интерполиране на скаларни променливи ($x):c/:closure— интерполиране на вграден код в{ … }:b/:backslash— обработване на екраниращи последователности с обратна наклонена черта като\n
Добавете едно към q, за да активирате единична функция.
Например, разрешете вграден код, но нищо друго:
say q/result: {3 * 4}/; # result: {3 * 4} — обикновено q оставя блока непроменен
say q:c/result: {3 * 4}/; # result: 12 — :c изпълнява блокаС обикновено q блокът { 3 * 4 } се
отпечатва буквално; само :c кара блока да се изпълни и
вмъква стойността му, докато $variable все пак би останала
непроменена. Обърнете внимание на разделителите /…/ тук:
ограждането на низа с {…} все пак би работило —
компилаторът брои вложените фигурни скоби правилно — но тогава
вътрешният { 3 * 4 } се чете като част от огранадения
текст, а не като затваряне, така че :c би го оставило
буквално. Когато текстът съдържа блок { … }, изберете
разделител, различен от {…}, за да може затварянето
наистина да се изпълни. Можете да добавите интерполиране на скалари към
иначе буквалния Q:
my $name = 'Anna';
say Q:s{Hi, $name}; # Hi, AnnaНаречията също могат да изключват функции с
!. За да използвате qq, но да запазите
$ буквален:
my $price = 5;
say qq:!s{costs $price dollars}; # costs $price dollarsqq е еквивалентно на Q с всички наречия за
интерполация включени, а q е еквивалентно на Q
с по-малък набор. Наречията ви дават фин контрол между тези две
крайности.
Практика
Направете 1 тест върху съдържанието на тази тема.
Навигация в курса
← Тест — Цитиране | Тест — Наречия за цитиране →
💪 Или преминете направо към упражненията в този
раздел.