Cursus Raku / Geavanceerd / Meer over ingebouwde types / Aanhalingsconstructies
Aanhalingsadverbia
Het gedrag van een quoting-constructie kan worden afgestemd met
bijwoorden. Elke quoting-functie — het interpoleren van
scalars, het uitvoeren van ingebedde closures, het verwerken van
backslashes — wordt bestuurd door een eigen bijwoord, dat die ene
functie in- of uitschakelt, zodat je kunt beginnen met q of
Q en precies de functies kunt toevoegen die je nodig
hebt.
Enkele veelgebruikte bijwoorden:
:s/:scalar— interpoleer scalaire variabelen ($x):c/:closure— interpoleer ingebedde code in{ ... }:b/:backslash— verwerk backslash-escapes zoals\n
Voeg er een toe aan q om een enkele functie in te
schakelen. Sta bijvoorbeeld ingebedde code toe maar niets anders:
say q/result: {3 * 4}/; # result: {3 * 4} — gewone q laat het blok onaangeroerd
say q:c/result: {3 * 4}/; # result: 12 — :c voert het blok uitMet gewone q wordt { 3 * 4 } letterlijk
afgedrukt; alleen :c zorgt ervoor dat het blok wordt
uitgevoerd en de waarde wordt ingevoegd, terwijl een
$variabele nog steeds onaangeroerd zou blijven. Let op de
/.../-scheidingstekens hier: als je de string begrenst met
{...} zou het nog steeds werken — de compiler telt de
geneste accolades correct — maar dan wordt de binnenste
{ 3 * 4 } gelezen als onderdeel van de begrensde tekst in
plaats van als een closure, dus :c zou het letterlijk
laten. Wanneer de tekst een { ... }-blok bevat, kies dan
een ander scheidingsteken dan {...} zodat de closure
daadwerkelijk wordt uitgevoerd. Je kunt scalaire interpolatie toevoegen
aan de anders letterlijke Q:
my $name = 'Anna';
say Q:s{Hi, $name}; # Hi, AnnaBijwoorden schakelen functies ook uit met een
!. Om qq te gebruiken maar $
letterlijk te houden:
my $price = 5;
say qq:!s{costs $price dollars}; # costs $price dollarsqq is gelijk aan Q met alle
interpolatie-bijwoorden ingeschakeld, en q is gelijk aan
Q met een kleinere set. De bijwoorden geven je fijnmazige
controle tussen die twee uitersten.
Praktijk
Maak de 1 quiz over de inhoud van dit onderwerp.
Cursusnavigatie
← Quiz — Aanhalingstekens | Quiz — Aanhalingsadverbia →
💪 Of ga direct naar
de oefeningen in deze sectie.