Курс по Raku / Напреднали / Повече за вградените типове / Конструкции за цитиране 🆕
Heredocs
Heredoc е форма на цитиране за многоредов текст. Вместо
разделители около текста, задавате терминиращо слово с :to
и низът продължава от следващия ред до ред, съдържащ само това
слово:
my $text = q:to/END/;
Hello,
World!
END
print $text;Това отпечатва:
Hello,
World!Терминаторът (END тук — всяка дума е подходяща) маркира
къде свършва текстът. Обърнете внимание на print: текстът
запазва новия ред, който стои преди терминатора, така че вече завършва с
край на ред — използването на say би добавило втори и би
оставило празен ред в края. Тъй като heredoc-ът започва с
q:to, текстът не се интерполира; използвайте
qq:to за интерполиране на променливи:
my $name = 'Anna';
my $greeting = qq:to/EOF/;
Dear $name,
Welcome!
EOF
print $greeting;Полезен детайл: отстъпът на затварящия терминатор се премахва от всеки ред на текста. Това ви позволява да отместите heredoc-а, за да съвпада с обкръжаващия код, без този отстъп да попадне в низа:
sub greeting {
return q:to/END/;
Hello,
World!
END
}
print greeting;Това отпечатва същото Hello, и World! като
първия пример. Тук затварящият END е отместен с осем
интервала, така че осем интервала се премахват от всеки ред и върнатият
низ е просто Hello,\nWorld! без водещи интервали.
Затварящият терминатор определя колко се премахва, така че всеки ред от текста трябва да е отместен поне толкова. Ако даден ред има по-малко водещи интервали, Raku не може да премахне пълното количество и предупреждава — Asked to remove 8 spaces, but the shortest indent is 4 spaces. Дръжте терминатора не по-навътре от най-плиткия ред, за да избегнете това. Heredoc-ите са естественият избор за шаблони, съобщения и всякакъв блок текст, който обхваща няколко реда.
Навигация в курса
← Тест — Наречия за цитиране | Суров низ →
💪 Или преминете направо към упражненията в този
раздел.