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.

Yorumlar

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir