Cursus Raku / Essentiëlen / Basis van functies / Functies maken en aanroepen

Benoemde parameters

In tegenstelling tot positionele parameters, worden benoemde parameters aangeduid met hun namen.

De volgende functie neemt twee parameters genaamd $from en $to.

sub distance(:$from, :$to) { $from - $to }

Om de functie aan te roepen, moet je de argumenten benoemen:

say distance(from => 30, to => 10); # 20

Het is een fout om de argumenten door te geven alsof ze positioneel zijn. Bijvoorbeeld, een oproep distance(30, 10) genereert een fout:

Too many positionals passed; expected 0 arguments but got 2
    in sub distance at t.raku line 1
    in block <unit> at t.raku line 2

Het goede nieuws is dat benoemde argumenten in willekeurige volgorde kunnen worden vermeld. De volgende twee oproepen zijn volledig equivalent:

say distance(from => 30, to => 10); # 20

say distance(to => 10, from => 30); # 20

Variabelen doorgeven

Wanneer de waarde die je aan een functie wilt doorgeven in een variabele wordt bewaard, waarvan de naam overeenkomt met de naam van de parameter, kun je genieten van een speciale syntaxis die het typen vermindert:

my $from = 30;
my $to = 10;
say distance(:$from, :$to); # 20

Dit is vergelijkbaar met een omslachtige oproep:

say distance(from => $from, to => $to); # 20

Ook hier is de volgorde niet strikt:

say distance(:$to, :$from); # 20

Als de naam van de variabele verschilt van de naam van de parameter, gebruik dan een van de manieren om een paar door te geven:

my $a = 20;
my $b = 10;

say distance(from => $a, to => $b);

# of:

say distance(:from($a), :to($b));

Praktijk

Maak de 2 quizzen over de inhoud van dit onderwerp.

Cursusnavigatie

Quiz — Functie aanroepen   |   Quiz 1 — Benoemde parameters


💪 Of ga direct naar de oefeningen in deze sectie.