Cursus Raku / Geavanceerd / Containers / Subscript-adverbia
Exists en delete
Het :exists adverb verandert een subscript in een vraag:
is er een waarde bij deze sleutel of index? Het retourneert een Boolean
zonder iets op te halen:
my %h = apple => 1, pear => 2;
say %h<apple>:exists; # True
say %h<plum>:exists; # FalseDit is de juiste manier om te testen op een sleutel, want het
simpelweg lezen van %h<plum> zou een ongedefinieerde
waarde retourneren of, afhankelijk van de data, het verschil verbergen
tussen “afwezig” en “aanwezig maar ongedefinieerd”.
Het :delete adverb verwijdert het item en retourneert de
waarde die het bevatte:
my %h = apple => 1, pear => 2;
say %h<apple>:delete; # 1
say %h.keys; # (pear)
say %h; # {pear => 2}Het apple item is verdwenen, en de verwijderde waarde
1 wordt teruggegeven zodat je hem kunt gebruiken.
Beide adverbs werken ook op arrays, via de index:
my @a = 10, 20, 30;
say @a[1]:exists; # True
say @a[5]:exists; # False
say @a[1]:delete; # 20
say @a[1]:exists; # FalseAls je benieuwd bent hoe het array eruitziet nadat een middelste element is verwijderd, hier is het antwoord:
say @a; # [10 (Any) 30]Zo kun je met een enkele, consistente notatie containers ter plekke bevragen en wijzigen, in plaats van aparte methoden te gebruiken.
Praktijk
Maak de 1 quiz over de inhoud van dit onderwerp.
Cursusnavigatie
← Subscript-adverbia | Quiz — Subscript-adverbia →
💪 Of ga direct naar de oefeningen in
deze sectie.