Cursus Raku / Geavanceerd / Modules / Basisbeginselen van modules

Importeren

Er is meer dan één manier om een module in een programma te laden. De drie statements use, need en require verschillen in wanneer de module wordt geladen en in wat deze beschikbaar maakt.

use

Je hebt use al ontmoet. Het laadt de module tijdens het compileren en importeert de geëxporteerde namen, zodat ze direct aangeroepen kunnen worden:

use Greeting;
say hello('Anna'); # Hello, Anna!

need

need laadt de module ook tijdens het compileren, maar het importeert de geëxporteerde namen niet. Je bereikt de our-variabelen van de module nog steeds via de naam van de module:

need Greeting;
say $Greeting::version; # 1.0

Na need Greeting zou een kale hello(...) niet herkend worden, omdat er niets is geïmporteerd — alleen de gekwalificeerde namen, zoals $Greeting::version, zijn beschikbaar.

require

require laadt de module tijdens de uitvoering in plaats van tijdens het compileren. Dit is handig wanneer je pas tijdens het draaien van het programma weet of een module nodig is, bijvoorbeeld wanneer de naam wordt bepaald door gebruikersinvoer.

Omdat het laden plaatsvindt tijdens de uitvoering, wordt er niets automatisch geïmporteerd. Door de gewenste symbolen tussen punthaken na de naam op te sommen, worden ze binnengehaald, zodat ze direct aangeroepen kunnen worden:

require Greeting <&hello>;
say hello('Anna'); # Hello, Anna!

Voor dagelijks gebruik is use wat je wilt; need en require zijn er voor de minder gangbare gevallen.

Praktijk

Maak de 1 quiz over de inhoud van dit onderwerp.

Cursusnavigatie

Quiz — use   |   Quiz — use vs need


💪 Of ga direct naar de oefeningen in deze sectie.