Raku kurss / Padziļināti / Apakšprogrammas / Ligzdotas apakšprogrammas / Exercises / Noslēgt ārējo
Risinājums: Noslēgt ārējo
Šeit ir iespējams risinājums uzdevumam.
Kods
sub greet($name) {
sub message {
"Hello, $name!";
}
say message;
}
greet('Anna');🦋 Atrodiet programmu failā closure-over-outer.raku.
Izvade
Hello, Anna!Komentāri
messageneņem nevienu argumentu, tomēr tā var izmantot$name. Ligzdota apakšprogramma noslēdzas pār tās apakšprogrammas leksiskajiem mainīgajiem, kas to satur, tāpēc ārējais$nameir redzams.Kad izpildās
greet('Anna'),$nameir'Anna', tāpēcmessageatgriežHello, Anna!. Tieši šī apņemošā redzamības apgabala kopīgošana padara ligzdotus palīgus par kaut ko vairāk nekā tikai paslēptām funkcijām.
Kursa navigācija
← Noslēgt ārējo | Iekšējā summa →