Değişkenler

Değişkenler, programınızda kullandığınız değerleri saklamanıza olanak sağlar. Bir değişken bildirmek için, değişken adıyla var deyimini kullanmanız gerekir. ActionScript 3.0'da ise var deyiminin kullanılması her zaman gerekir. Örneğin, aşağıdaki ActionScript satırı, i adında bir değişken bildirir:

var i;

Bir değişkeni bildirirken var deyimini atarsanız, sıkı modda bir derleyici hatası ve standart modda bir çalışma zamanı hatası alırsınız. Örneğin, i değişkeni önceden tanımlanmadıysa, aşağıdaki kod satırı bir hataya yol açar:

i; // error if i was not previously defined

Bir değişkeni bir veri türüyle ilişkilendirmek için, değişkeni bildirdiğinizde bunu yapmanız gerekir. Değişken türü belirlenmeden bir değişkenin belirtilmesi geçerlidir ancak bu durum, sıkı modda bir derleyici uyarısına yol açar. Değişkenin adının sonuna iki nokta (:) ve ardından da değişkenin türünü ekleyerek bir değişken türü belirlersiniz. Örneğin, aşağıdaki kod, int türünde bir i değişkenini bildirir:

var i:int;

Atama operatörünü ( = ) kullanarak bir değişkene bir değer atayabilirsiniz. Örneğin, aşağıdaki kod bir i değişkenini bildirir ve bu değişkene 20 değerini atar:

var i:int; 
i = 20;

Aşağıdaki örnekte olduğu gibi, değişkeni bildirdiğiniz anda değişkene bir değer atamak daha kullanışlı olabilir:

var i:int = 20;

Bildirildiği anda bir değişkene değer atama tekniği yalnızca tam sayı ve dizeler gibi ilkel değerler atanırken değil, bir dizi oluşturulurken veya bir sınıfın örneği başlatılırken de yaygın olarak kullanılır. Aşağıdaki örnek, bir kod satırı kullanılarak bildirilen ve değer atanan bir diziyi gösterir.

var numArray:Array = ["zero", "one", "two"];

new operatörünü kullanarak bir sınıfın örneğini oluşturabilirsiniz. Aşağıdaki örnek, CustomClass adında bir sınıfın örneğini oluşturur ve yeni oluşturulan sınıf örneğinin başvurusunu customItem adındaki değişkene atar:

var customItem:CustomClass = new CustomClass();

Bildirilecek birden çok değişkeniniz varsa, değişkenleri ayırmak için virgül operatörünü ( , ) kullanarak bunların tümünü tek bir kod satırında bildirebilirsiniz. Örneğin, aşağıdaki kod, tek bir kod satırında üç değişken bildirir:

var a:int, b:int, c:int;

Ayrıca aynı kod satırındaki değişkenlerin her birine değer atayabilirsiniz. Örneğin, aşağıdaki kod üç değişken ( a , b ve c ) bildirir ve her birine bir değer atar:

var a:int = 10, b:int = 20, c:int = 30;

Değişken bildirimlerini tek bir deyimde gruplandırmak için virgül operatörünü kullanabilseniz de, bunun yapılması kodunuzun okunabilirliğini azaltabilir.

Değişken kapsamını anlama

Bir değişkenin kapsamı , sözlü bir başvuruyla değişkene erişilebilen kod alanıdır. Genel değişken, kodunuzun tüm alanlarında tanımlı değişkenken, yerel değişken ise kodunuzun yalnızca bir bölümünde tanımlı değişkendir. ActionScript 3.0'da değişkenlere her zaman bildirildikleri işlev veya sınıf kapsamı atanır. Genel bir değişken, herhangi bir işlev veya sınıf tanımı dışında tanımladığınız bir değişkendir. Örneğin, aşağıdaki kod, herhangi bir işlevin dışında genel işlevi bildirerek strGlobal genel işlevini oluşturur. Bu örnek, genel bir değişkenin, işlev tanımının içinde ve dışında kullanılabilir olduğunu gösterir.

var strGlobal:String = "Global"; 
function scopeTest() 
{ 
    trace(strGlobal); // Global 
} 
scopeTest(); 
trace(strGlobal); // Global

Bir işlev tanımı içindeki değişkeni bildirerek yerel bir değişkeni bildirmiş olursunuz. Yerel değişkeni tanımlayabileceğiniz en küçük kod alanı, işlev tanımıdır. Bir işlev içinde bildirilen yerel değişken yalnızca o işlev içinde varolur. Örneğin, localScope() adındaki bir işlevin içinde str2 adında bir değişkeni bildirirseniz, bu değişken söz konusu işlevin dışında kullanılamaz.

function localScope() 
{ 
    var strLocal:String = "local"; 
} 
localScope(); 
trace(strLocal); // error because strLocal is not defined globally

Yerel değişkeniniz için kullandığınız değişken adı önceden genel değişken olarak bildirilmişse, yerel değişken kapsamdayken, yerel tanım genel tanımı gizler (veya gölgeler). Genel değişken, işlev dışında varolmaya devam eder. Örneğin, aşağıdaki kod, str1 adında genel bir dize değişkeni oluşturur ve sonra scopeTest() işlevinin içinde aynı adda yerel bir değişken oluşturur. İşlevin içindeki trace deyimi, değişkenin yerel değerini verirken, işlevin dışındaki trace deyimi de değişkenin genel değerini verir.

var str1:String = "Global"; 
function scopeTest () 
{ 
    var str1:String = "Local"; 
    trace(str1); // Local 
} 
scopeTest(); 
trace(str1); // Global

ActionScript değişkenleri, C++ ve Java uygulamalarındaki değişkenlerden farklı olarak, blok düzeyi kapsamına sahip değildir. Kod bloğu, açma küme parantezi ( { ) ile kapatma küme parantezi ( } ) arasındaki herhangi bir deyim grubudur. C++ ve Java gibi bazı programlama dillerinde, kod bloğu içinde bildirilen değişkenler o kod bloğunun dışında kullanılamaz. Bu kapsam sınırlamasına blok düzeyi kapsamı denir ve bu kapsam sınırlaması ActionScript'te bulunmaz. Bir kod bloğu içinde bir değişken bildirirseniz, bu değişken yalnızca o kod bloğunda değil, kod bloğunun ait olduğu diğer işlev parçalarında da kullanılabilir. Örneğin, aşağıdaki işlev, çeşitli blok kapsamlarında tanımlanmış değişkenleri içerir. Tüm değişkenler, işlev boyunca kullanılabilir.

function blockTest (testArray:Array) 
{ 
    var numElements:int = testArray.length; 
    if (numElements > 0) 
    { 
        var elemStr:String = "Element #"; 
        for (var i:int = 0; i < numElements; i++) 
        { 
            var valueStr:String = i + ": " + testArray[i]; 
            trace(elemStr + valueStr); 
        } 
        trace(elemStr, valueStr, i); // all still defined 
    } 
    trace(elemStr, valueStr, i); // all defined if numElements > 0 
} 
 
blockTest(["Earth", "Moon", "Sun"]);

Blok düzeyi kapsamı olmamasının işaret ettiği ilginç bir nokta, işlev sona ermeden değişken bildirildiği sürece, bir değişken bildirilmeden o değişkene okuma ve yazma işlemi yapabilmenizdir. Bunun nedeni, derleyicinin tüm değişken bildirimlerini işlevin en üstüne taşıdığını belirten, kaldırma adındaki bir tekniktir. Örneğin, num değişkeninin ilk trace() işlevi, num değişkeni bildirilmeden önce olsa da, aşağıdaki kod derleme yapar:

trace(num); // NaN 
var num:Number = 10; 
trace(num); // 10

Ancak derleyici, atama deyimlerini kaldırmaz. Bu da, num değişkeninin ilk trace() işlevinin neden Number veri türü için varsayılan değişken değeri olan NaN (sayı değil) sonucunu verdiğini açıklar. Başka bir deyişle, aşağıdaki örnekte gösterildiği gibi, değişkenler bildirilmeden değişkenlere değer atayabilirsiniz:

num = 5; 
trace(num); // 5 
var num:Number = 10; 
trace(num); // 10

Varsayılan değerler

Varsayılan değer , siz değerini ayarlamadan önce bir değişkenin içerdiği değerdir. Bir değişkenin ilk defa değerini ayarladığınızda o değişkeni başlatırsınız . Bir değişkeni bildirir ancak değişkenin değerini ayarlamazsanız, o değişken başlatılmamış olur. Başlatılmamış değişkenin değeri, veri türüne bağlıdır. Aşağıdaki tabloda, veri türüne göre organize edilmiş şekilde değişkenlerin varsayılan değerleri açıklanmaktadır:

Veri türü

Varsayılan değer

Boolean

false

int

0

Number

NaN

Nesne

null

Dize

null

uint

0

Bildirilmemiş (tür ek açıklamasına eşit * )

undefined

Kullanıcı tanımlı sınıflar da dahil olmak üzere diğer tüm sınıflar.

null

Number türündeki değişkenler için varsayılan değer NaN (sayı değil) olup bu değer, bir değerin sayıyı temsil etmediğini belirtmek için IEEE-754 standardı tarafından tanımlanmış özel bir değerdir.

Bir değişkeni bildirir ancak değişkenin veri türünü bildirmezseniz, gerçekten değişkenin türe sahip olmadığını belirten varsayılan veri türü * uygulanır. Türlenmemiş bir değişkeni bir değerle de başlatmazsanız, değişkenin varsayılan değeri undefined olur.

Boolean, Number, int ve uint dışındaki veri türleri için, başlatılmamış bir değişkenin varsayılan değeri null olur. Bu, ActionScript 3.0 tarafından tanımlanmış tüm sınıfların yanı sıra sizin oluşturduğunuz özel sınıflar için de geçerlidir.

null değeri, Boolean, Number, int veya uint türündeki değişkenler için geçerli bir değer değildir. Bu tür bir değişkene null değeri atamayı denerseniz, değer o veri türünün varsayılan değerine dönüştürülür. Object türündeki değişkenler için bir null değeri atayabilirsiniz. Object türündeki bir değişkene undefined değerini atamayı denerseniz, değer null değerine dönüştürülür.

Number türündeki değişkenler için, değişken bir sayı olmadığında true , aksi takdirde false Boolean değerini döndüren isNaN() adında özel bir üst düzey işlevi vardır.