Corso di Raku / Avanzato / Altro sui tipi predefiniti / Costrutti di quoting / Exercises / Un heredoc
Soluzione: Un heredoc
Ecco una possibile soluzione.
Codice
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🦋 Puoi trovare il codice sorgente nel file a-heredoc.raku.
Output
Dear Anna,
You ordered 3 copies of "Raku Book".
That comes to 75 dollars.
Thank you!Commenti
L’heredoc inizia con
qq:toanzichéq:to, quindi interpola. Come una stringaqq, inserisce gli scalari —$name,$count,$item— e esegue il codice incorporato: il blocco{$count * $price}calcola3 * 25, così il totale75appare inline.Le virgolette doppie attorno a
"$item"sono solo caratteri letterali qui; dentro un heredoc non c’è nessun delimitatore da cui fare l’escape, quindi vengono stampate così come sono mentre$itemviene comunque interpolato.Il corpo e il terminatore di chiusura
ENDsono indentati degli stessi quattro spazi. L’indentazione del terminatore viene rimossa da ogni riga, quindi quei quattro spazi non raggiungono mai la stringa — l’output inizia dal margine sinistro.L’heredoc termina già con un carattere di nuova riga, quindi viene usato
printanzichésayper evitare di aggiungere una seconda riga vuota.
Navigazione del corso
← Un heredoc | Data e ora →