Курс языка программирования Raku / Продвинутый уровень / Подробнее о встроенных типах / Конструкции кавычек
q, qq и Q
Существуют три базовых оператора цитирования, различающихся тем, насколько они обрабатывают текст внутри:
q— как одинарные кавычки: почти всё воспринимается буквальноqq— как двойные кавычки: переменные и управляющие последовательности интерполируютсяQ— самая буквальная форма из всех: ничего не обрабатывается
Каждый оператор заключает текст в пару разделителей. Привычные
'…' — это сокращение для q, а "…"
— сокращение для qq:
my $name = 'Anna';
say q{Hello $name}; # Hello $name
say qq{Hello $name}; # Hello Annaq оставляет $name нетронутым;
qq интерполирует его. Обратные косые черты, такие как
\n, ведут себя аналогично: только qq (и
"…") превращает \n в настоящий перевод строки,
тогда как и q, и Q оставляют его как два
символа \ и n:
say qq{line\nbreak}; # line<newline>break
say q{line\nbreak}; # line\nbreak
say Q{line\nbreak}; # line\nbreakТак в чём же разница между q и Q?
q, как и одинарные кавычки, всё же обрабатывает
небольшой набор управляющих последовательностей — удвоенная
обратная косая черта \\ превращается в одну, и можно
экранировать закрывающий разделитель — тогда как простая форма
Q не обрабатывает вообще ничего:
say q{a\\b}; # a\b — q collapses the escaped backslash
say Q{a\\b}; # a\\b — Q keeps both charactersВы можете выбирать любые разделители — q{…},
q[…], q/…/, q!…! — что удобно,
когда сам текст содержит кавычки. Эти три оператора являются основой; в
следующей теме показано, как наречия позволяют точно
выбирать, какие возможности активны.
Практика
Пройдите 1 тест по содержанию этой темы.
Навигация по курсу
← Конструкции кавычек | Тест — Кавычки →
💪 Или перейдите сразу к упражнениям этого
раздела.