- Sözdizim
- Veri Tipleri
- İşlemler ve İfadeler
- Operatörler
- Fonksiyonlar
- Değişkenler
- Önişlemci
- Nesne Yönelimli Programlama
- Ad Alanları
Ad Alanları
Ad alanı, içinde çeşitli kimliklerin tanımlandığı özel olarak bildirilen bir alandır: değişkenler, fonksiyonlar, sınıflar, vb. namespace anahtar sözcüğü kullanılarak ayarlanır:
namespace name of_space {
|
'namespace' uygulamak, global ad alanını alt alanlara bölmeyi sağlar. Ad alanı içindeki tüm kimlikler ek bilgi belirtilmeden birbirleri için kullanılabilir. :: operatörü (bağlam çözünürlüğü işlemi), ad alanı üyelerine dışarıdan erişmek için kullanılır.
namespace ProjectData
|
Ad alanları, mantıksal gruplar biçiminde bir kod düzenlemek ve bir programda birkaç kütüphane kullanıldığında ortaya çıkabilecek ad çakışmalarını önlemek için kullanılır. Bu gibi durumlarda, her bir kütüphanenin gerekli fonksiyonlarına ve sınıflarına açıkça erişmek için her bir kütüphane kendi ad alanında bildirilebilir.
Bir ad alanı, bir veya birkaç dosyada birkaç blok halinde bildirilebilir. Derleyici ön işleme sırasında tüm parçaları bir araya getirir ve elde edilen ad alanı tüm parçalarda bildirilen bütün üyeleri içerir. Sample.mqh include (ekle) dosyasında uygulanan bir A sınıfımız olduğunu varsayalım:
//+------------------------------------------------------------------+
|
Bu sınıfı projemizde kullanmak istiyoruz ama zaten A sınıfımız var. Her iki sınıfı da kullanabilmek ve kimlik çakışmasından kaçınmak için, eklenen dosyayı bir ad alanına kaydırın:
//--- ilk A sınıfını bildir
|
Ad alanları iç içe yerleşebilir. İçi içe yerleşmiş bir ad alanı, üst alan üyelerine sınırsız erişime sahiptir; ancak üst alan üyeleri iç içe yerleşmiş ad alanına sınırsız erişime sahip değildir.
namespace General
|
Global ad alanı
Kimlik, ad alanında açıkça belirtilmezse, global ad alanının örtülü bir parçası olarak kabul edilir. Global kimliği açıkça belirlemek için, bir ad olmadan kapsam çözünürlüğü operatörünü kullanın. Bu durum, bu kimliği farklı bir ad alanında bulunan aynı ada sahip diğer herhangi bir öğeden ayırt etmenizi sağlayacaktır. Örneğin, bir fonksiyonu içe aktarırken:
#import "lib.dll"
|
Bu durumda, DLL işlevinden içe aktarılan tüm fonksiyonlar aynı adın ad alanına eklenmiştir. Bu, derleyicinin çağrılacak fonksiyonu net bir şekilde belirlemesini sağladı.
Ayrıca bakınız
Global Değişkenler, Yerel Değişkenler, Değişkenlerin kapsamı ve ömrü, Objelerin oluşturulması ve silinmesi