Regiono (programlingva)En programlingvoj, regiono[1] estas tiu parto de la teksto de komputila programo, kie validas deklaro de nomo (precipe de nomo de loka objekto) kaj kie oni rajtas uzi la nomon laŭ tiu deklaro. VideblejoLa deklaroj konigas nomojn al sia regiono kaj al ties subregionoj (la regionoj povas ingiĝi); oni diras, ke per la nomo oni povas vidi ĝian deklaron. La parto de la teksto de programo, kie deklaro videblas per nomo per ĝi deklarita estas ĝia videblejo. Tamen povas okazi, ke nomo n deklarita per deklaro D0 en iu regiono R0 ricevas alian signifon per nova deklaro D1 en ĝia subregiono R1. Tiam la nova deklaro eklipsas la deklaron D0 (por la nomo n), kaj en la regiono R1 por la nomo n validos la deklaro D1. Tio signifas, ke la regionon R1 necesas «subtrahi» el la videblejo de D0, ke tiu videblejo havas truo(j)n. VivdaŭroDum plenumo de programo (dum rultempo) kreiĝas kaj detruiĝas kopioj, aŭ ekzempleroj de la regionoj; iuj objektoj (la «aŭtomataj» lokaj variabloj) kreiĝas kaj detruiĝas kune kun sia ekzemplero de regiono; tial oni ne ĉiam klare distingas la konceptojn de deklara regiono (koncepto traduktempa) disde vivdaŭro de deklaritaj variabloj. Kuntekstoj statika kaj dinamikaLa ĉi-supra difino de videblejo (aŭ videblo) uzas la nocion subregiono; nu, ekzistas du malsamaj manieroj aranĝi la hierarkion de la regionoj, kaj sekve, du malsamaj aranĝoj de la videblejoj, aŭ kuntekstoj por determini, kiu deklaro validas por apero de nomo:
Por la «puraj» funkcioj, kiuj manipulas nur siajn parametrojn kaj lokajn variablojn, ne estas diferenco inter la kuntekstoj statika kaj dinamika. La problemo aperas kiam oni uzas nelokajn variablojn Ekz‑e ni ekzamenu la sekvan programon: x=1
function g () { echo $x ; x=2 ; }
function f () { local x=3 ; g ; }
f # ĉu eĥiĝos 1 aŭ 3?
echo $x # ĉu eĥiĝos 1 aŭ 2?
La funkcio
Noto |