Курс по Raku / Напреднали / Повече за вградените типове / Конструкции за цитиране 🆕 / Exercises / Heredoc
Решение: Heredoc
Ето едно възможно решение на задачата.
Код
my $name = 'Anna';
my $item = 'Raku Book';
my $price = 25;
my $count = 3;
print qq:to/END/;
Dear $name,
You ordered $count copies of "$item".
That comes to {$count * $price} dollars.
Thank you!
END🦋 Можете да намерите изходния код във файла a-heredoc.raku.
Изход
Dear Anna,
You ordered 3 copies of "Raku Book".
That comes to 75 dollars.
Thank you!Коментари
Heredoc-ът започва с
qq:toвместоq:to, така че интерполира. Подобно на низ сqq, той попълва скаларите —$name,$count,$item— и изпълнява вграден код: блокът{$count * $price}изчислява3 * 25, така че общата сума75се появява директно.Двойните кавички около
"$item"тук са просто буквални символи; вътре в heredoc няма разделител, който да се екранира, така че те се отпечатват както са написани, докато$itemвсе пак се интерполира.Тялото и затварящият
ENDса отместени с еднакви четири интервала. Отстъпът на терминатора се премахва от всеки ред, така че тези четири интервала никога не достигат до низа — изходът започва от левия край.Heredoc-ът вече завършва с нов ред, така че се използва
printвместоsay, за да се избегне добавянето на втори празен ред.
Навигация в курса
← Heredoc | Дата и време →