Corso di Raku / Avanzato / Altro sui tipi predefiniti / Costrutti di quoting / Exercises / Una closure in una stringa q
Soluzione: Una closure in una stringa q
Ecco una possibile soluzione.
Codice
my $x = 10;
say q:c/$x squared is {$x ** 2}/;🦋 Puoi trovare il codice sorgente nel file closure-quote.raku.
Output
$x squared is 100Commenti
L’avverbio
:c(closure) attiva l’interpolazione del codice incorporato{ … }nella forma altrimenti letteraleq. Dentro le parentesi graffe,$xè codice vero, quindi{$x ** 2}viene valutato a100.Il
$xfuori dalle parentesi graffe viene lasciato esattamente come scritto, perché l’avverbio scalare:snon è abilitato. Questo è il punto centrale degli avverbi per singola funzionalità: ottieni il codice incorporato senza attivare anche l’interpolazione di$.Gli avverbi possono essere combinati. Aggiungendo anche
:s, il$xiniziale viene interpolato — entrambe le funzionalità sono ora attive contemporaneamente:
my $x = 10;
say q:c:s/$x squared is {$x ** 2}/; # 10 squared is 100