Cursus Raku / Geavanceerd / Modules / Pakketten en naamruimten
Pakketten en modules
Het sleutelwoord package introduceert een naamruimte.
Alles wat erin gedeclareerd wordt met our wordt onderdeel
van die naamruimte en is van buitenaf bereikbaar via de naam van het
pakket en het ::-scheidingsteken:
package Maths {
our $pi = 3.14;
our sub double($x) { $x * 2 }
}
say $Maths::pi; # 3.14
say Maths::double(5); # 10De variabele wordt benaderd als $Maths::pi — het sigil,
dan de pakketnaam, dan de variabelenaam. Een subroutine wordt
aangeroepen als Maths::double(...).
Zowel package als module maken een
naamruimte aan; ze verschillen in wat ze verder doen. Een
module is de gebruikelijke keuze voor een herbruikbare
code-eenheid, terwijl een gewoon package alleen de
naamruimte biedt zonder extra’s. (Een class, die je leert
kennen in het volgende deel, maakt ook een
naamruimte aan en voegt daar objectgeorienteerde functionaliteit aan
toe.)
module Greet {
our sub hello { 'hi' }
}
say Greet::hello; # hiDe naamruimte die je van module hebt gekregen is dus
hetzelfde mechanisme dat een package op zichzelf biedt. De
keuze ertussen is vooral een kwestie van intentie: module
voor bibliotheken, package voor een kale naamruimte — en
zodra je bij objecten komt, class voor typen.
Praktijk
Maak de 1 quiz over de inhoud van dit onderwerp.
Cursusnavigatie
← Pakketten en naamruimten | Quiz — Pakketten →
💪 Of ga direct naar
de oefeningen in deze sectie.