Scope (Kapsama Alanı)

Scope, adından da anlayacağınız üzere kapsama alanını ifade eder. Fonksiyonları anlatırken fonksiyonların, çağırılmadığı sürece çalışmayacağından söz etmiştim. Peki, biraz derin düşünürsek; bunun anlamı ne olabilir? Aslında fonksiyonlar, kendi alanlarını yaratırlar. İçerisine tanımladığımız değişkenler, komutlar ve diğer her şey yalnızca o fonksiyona aittir.

Fonksiyon içine değil; bir değişken tanımladığımızı düşünelim. Bu değişkene her yerden ulaşabiliriz, öyle değil mi? Onu yazdırabilir; başka bir yere ekleyebilir, bir yere aktarabiliriz. Ancak bir fonksiyonun içine tanımlanan değişkenlere dışarıdan müdahale edemeyiz. Ne demek istiyorum?

Yukarıdaki görsele iyi bakın. 'names' isimli bir fonksiyon tanımladım ve içerisine name1 ve name2 şeklinde iki değişken tanımladım. Daha sonra fonksiyonun dışına çıktım ve tanımladığım bu değişkenleri yazdırmaya çalıştım. Fakat sonuca baktığımızda herhangi bir çıktı alamadığımızı görüyoruz. Bunun sebebi, biraz önce söylediğim fonksiyonun kendi alanını yaratmasından kaynaklanıyor. Bunu daha iyi kavrayabilmeniz için normal bir değişken tanımlayıp onu yazdırmayı deneyelim.

Bu sefer fonksiyonu görmezden gelin. Dışarı, normal bir şekilde job adında bir değişken atadım ve bunu yazdırdım; başarılı olduk.

Bu iki olaya programlama dünyasında "global variables - global değişkenler" ve "local variables - yerel değişkenler" adı verilir. Global değişkenler, her yerden erişilebilen (job gibi) değişkenlerdir. Local değişkenler ise fonksiyon içerisine tanımladığımız değişkenler gibidir; özeldir, dışarı açık değildir.

Peki, madem fonksiyon içindeki değişkenlere dışarıdan erişemiyoruz; dışarıdaki değişkenlere fonksiyon içinden erişebilir miyiz?

Evet, erişebiliriz. Sebebi ise biraz önce kurduğum cümledir; "Global değişkenler, her yerden erişilebilen (job gibi) değişkenlerdir." Sadece bir fonksiyon için iş yapmayacak olan değişkenleri genelde global alana taşırız. Dolayısıyla tanımladığımız bu değişkeni birden fazla yerde ve fonksiyonda kullanabilmemiz lazım. Cevabımız, bu yüzden 'evet'.

GoLang derslerinde de Scope kavramından bahsederken çok güzel bir açıklama yaptığımı düşünüyorum. Bu açıklama, aklınıza daha da yatacaktır:


Yayınlanma Tarihi: 2022-09-19 21:17:53

Son Düzenleme Tarihi: 2022-09-21 14:36:41