Курс языка программирования 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 | Дата и время →