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: innerNestado 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.