Курс 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 змушує блок виконатися й вставляє його
значення, тоді як $змінна все одно залишиться недоторканою.
Зверніть увагу на роздільники /…/: обмеження рядка через
{…} теж розібралося б — компілятор правильно рахує вкладені
фігурні дужки, — але тоді внутрішнє { 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 тест за змістом цієї теми.
Навігація курсом
← Тест — Квотування | Тест — Адверби квотування →
💪 Або перейдіть одразу до вправ цього розділу.