Dynamic scoping, fonksiyon değişkenlerinin
fonksiyonlar ile birlikte stackte tutulmasını hedefler. Buna göre
fonksiyonların içinde tanımlanmış olan değişkenler, o fonksiyon
çalışırken geçerli olur ve o fonksiyonun içinde atanmış olan değeri
korur. Bir fonksiyondan başka bir fonksiyon çağrılmış olsa ve çağrılan
fonksiyonda değişkenin değeri değişmiş olsa da çağıran fonksiyona geri
dönüldüğünde fonksiyonun değişken değerleri geri yüklenir.
Örneğin aşağıdaki kod hem static hem de dinamic scoping ile çalışabilir:
int x = 0;
int f () { return x; }
int g () { int x = 1; return f(); }
Şayet static scoping kullanılırsa g fonksiyonunun döndüreceği değer 0
olur çünkü, static scopingin o sırada fonksiyon stackinde ne olduğu ile
ilgisi yoktur ve x değerinin son hali olan 0ı alır.
tersi olarak dynamic scoping kullanarak bu kod çalıştırılacak olsaydı g
fonksiyonunun döndüreceği değer 1 olacaktır. Çünkü g fonksiyonu terk
edilmeden önce x in değeri 1 di ve bu bilgi stackten alınır.
tesekkurler “static scoping dinamik alan degiskenleri” ile uyumlu bir yazi olusmus.