Курс языка программирования Raku / Продвинутый уровень / Подробнее о встроенных типах / Конструкции кавычек

q, qq и Q

Существуют три базовых оператора цитирования, различающихся тем, насколько они обрабатывают текст внутри:

  • q — как одинарные кавычки: почти всё воспринимается буквально
  • qq — как двойные кавычки: переменные и управляющие последовательности интерполируются
  • Q — самая буквальная форма из всех: ничего не обрабатывается

Каждый оператор заключает текст в пару разделителей. Привычные '…' — это сокращение для q, а "…" — сокращение для qq:

my $name = 'Anna';

say q{Hello $name};  # Hello $name
say qq{Hello $name}; # Hello Anna

q оставляет $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 тест по содержанию этой темы.

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

Конструкции кавычек   |   Тест — Кавычки


💪 Или перейдите сразу к упражнениям этого раздела.