Cursus Raku / Geavanceerd / Containers / Scalaire containers / Exercises / Getypt of ongetypt
Oplossing: Getypt of ongetypt
Hier is een mogelijke oplossing voor de opgave.
Code
my $untyped;
my Int $typed;
dd $untyped;
dd $typed;
$untyped = 42;
$typed = 42;
dd $untyped;
dd $typed;🦋 Je kunt de broncode vinden in het bestand reuse-the-container.raku.
Uitvoer
$untyped = Any
Int $typed = Int
$untyped = 42
Int $typed = 42Opmerkingen
ddbeschrijft de twee containers op een verschillende manier. Voor de container zonder type drukt het alleen$untypedaf, terwijl het voor de container met type het gedeclareerde type als voorvoegsel plaatst:Int $typed. Dat voorvoegsel is precies het verschil dat een gedeclareerd type maakt.De lege waarden verschillen ook. Een container zonder type begint met de ongedefinieerde basiswaarde
Any, terwijl een container met type begint met de ongedefinieerde waarde van zijn type,Int.Nadat aan beide
42is toegewezen, zien de waarden er hetzelfde uit, maar$typeddraagt nog steeds zijn type en zou een niet-gehele waarde weigeren — in tegenstelling tot$untyped, die alles accepteert.