Kurso de Raku / Progresinta / Subprogramoj / Nestitaj subrutinaj / Exercises / Fermi super la ekstera
Solvo: Fermi super la ekstera
Jen ebla solvo de la tasko.
Kodo
sub greet($name) {
sub message {
"Hello, $name!";
}
say message;
}
greet('Anna');🦋 Vi povas trovi la fontkodon en la dosiero closure-over-outer.raku.
Eligo
Hello, Anna!Komentoj
messageprenas neniujn argumentojn, tamen ĝi povas uzi$name. Nestita subprogramo fermas super la leksikaj variabloj de la subprogramo, kiu enhavas ĝin, do la ekstera$nameestas en la videbla amplekso.Kiam
greet('Anna')ruliĝas,$nameestas'Anna', domessageredonasHello, Anna!. Tiu kunhavigo de la enferma amplekso estas tio, kio faras nestitajn helpantojn pli ol nur kaŝitaj funkcioj.