Kurso de Raku / Progresinta / Subprogramoj

Nestitaj subrutinaj

Subprogramo povas esti difinita ene de alia subprogramo. Nestita subprogramo estas normala subprogramo, sed ĝi estas videbla nur ene de la subprogramo, kiu enhavas ĝin.

sub outer {
    sub inner {
        say 'I am the inner subroutine';
    }

    inner;
}

outer;

La programo presas:

I am the inner subroutine

Ĉi tie inner estas deklarita ene de outer, kaj outer vokas ĝin. Tio funkcias, ĉar inner estas en la videbla amplekso tra la tuta korpo de outer.

Ekster outer tamen, la nomo inner ne ekzistas. La sekva programo malsukcesas kompili:

sub outer {
    sub inner { 42 }
}

inner; # error: Undeclared routine: inner

Nestado estas utila, kiam helpanta subprogramo estas bezonata de nur unu subprogramo. Konservi ĝin ene klaras, ke ĝi estas privata detalo, kaj malhelpas ĝin esti vokita de aliloke erare.

Praktiko

Vin atendas 1 kvizo pri la enhavo de ĉi tiu temo.

Ekzercoj

En ĉi tiu sekcio estas 3 ekzercoj. Trarigardu ĉiujn temojn de ĉi tiu sekcio antaŭ ol komenci la ekzercojn.

  1. Privata helpanto
  2. Fermi super la ekstera
  3. Interna sumo

Kursa navigado

Kvizo — Uzado de MAIN   |   Privata helpanto