Cursus Raku / Provectus / Subprogrammata

Signaturae

In parte Elementorum subprogrammata cum parametris positionalibus et nominatis definivisti eisque valores praedefinitos dedisti. Index parametrorum signatura appellatur. Haec sectio duo alia addit quae signatura facere potest: parametrum ut optionalem notare, et quotlibet argumenta superflua colligere.

Parametri optionales

Parametrus quem signum interrogationis sequitur optionalis est: vocans eum omittere potest. Cum omittitur, parametrus indefinitus est, itaque subsidium per operatorem defined-or // praebere potes:

sub greet($name, $greeting?) {
    my $g = $greeting // 'Hello';
    say "$g, $name!";
}

greet('Anna');           # Hello, Anna!
greet('Anna', 'Hi');     # Hi, Anna!

Cum greet uno argumento vocatur, $greeting indefinitus est, itaque // ad 'Hello' recurrit.

Parametri sorbentes

Parametrus stella * notatus sorbens est: omnia argumenta reliqua colligit. Ordo sorbens, *@ scriptus, quotlibet argumenta positionalia in ordinem colligit:

sub count-them(*@items) {
    say @items.elems;
}

count-them(1, 2, 3, 4); # 4
count-them('a', 'b');   # 2

Parametros ordinarios cum sorbente coniungere potes. Parametri fixi primi implentur, et quidquid superest in ordinem sorbentem it:

sub titles($name, *@titles) {
    say "$name has {@titles.elems} title(s)";
}

titles('Anna', 'Dr', 'Prof'); # Anna has 2 title(s)

Eodem modo mappa sorbens, *% scripta, omnia argumenta nominata superflua in mappam colligit:

sub register($name, *%options) {
    say "$name: {%options.elems} option(s)";
    say "role is %options<role>";
}

register('Anna', role => 'admin', active => True);

Duo argumenta nominata claves mappae %options fiunt, itaque programma imprimit:

Anna: 2 option(s)
role is admin

Exercitatio

Sequuntur 1 quiz de contentis huius argumenti.

Exercitationes

In hac sectione sunt 3 exercitationes. Omnia huius sectionis argumenta inspice antequam exercitationes incipias.

  1. Omnia argumenta summam
  2. Optionalis exponentis
  3. Absorptiva nominata argumenta

Subprogrammata   |   Omnia argumenta summam