Cursus Raku / Geavanceerd / Meer over ingebouwde types / Aanhalingsconstructies / Exercises / Een closure in een q-string
Oplossing: Een closure in een q-string
Hier is een mogelijke oplossing voor de opgave.
Code
my $x = 10;
say q:c/$x squared is {$x ** 2}/;🦋 Je kunt de broncode vinden in het bestand closure-quote.raku.
Uitvoer
$x squared is 100Opmerkingen
Het
:c(closure) bijwoord schakelt interpolatie van ingebedde{ ... }-code in binnen de anders letterlijkeq-vorm. Binnen de accolades is$xechte code, dus{$x ** 2}evalueert tot100.De
$xbuiten de accolades blijft precies zo staan als geschreven, omdat het scalaire bijwoord:sniet is ingeschakeld. Dit is precies het nut van de bijwoorden per functie: je krijgt ingebedde code zonder ook$-interpolatie in te schakelen.Bijwoorden kunnen worden gestapeld. Voeg ook
:stoe, en de eerste$xwordt ook geinterpoleerd — beide functies zijn nu tegelijk actief:
my $x = 10;
say q:c:s/$x squared is {$x ** 2}/; # 10 squared is 100