Döngü

Döngü deyimleri, bir değerler veya değişkenler dizisi kullanarak art arda belirli bir kod bloğu gerçekleştirmenize olanak sağlar. Adobe, kod bloğunu her zaman küme parantezlerinin ( {} ) arasına almanızı önerir. Kod bloğu yalnızca bir deyim içeriyorsa küme parantezlerini çıkarabilseniz de, koşullar için geçerli olan aynı nedenden dolayı bu uygulama önerilmez: bu, daha sonra eklenen deyimlerin yanlışlıkla kod bloğundan hariç tutulması olasılığını artırır. Daha sonra, kod bloğuna dahil etmek istediğiniz bir deyimi eklerseniz ancak gerekli küme parantezlerini koymayı unutursanız, deyim döngünün bir parçası olarak çalıştırılmaz.

for

for döngüsü, belirli bir değer aralığı için bir değişkeni yinelemenize olanak sağlar. for deyiminde üç ifade sağlamanız gerekir: başlangıç değerine ayarlı bir değişken, döngünün ne zaman sona ereceğini belirleyen bir koşul deyimi ve her döngüyle değişkenin değerini değiştiren bir ifade. Örneğin, aşağıdaki kod beş defa döngü sağlar. i değişkeninin değeri 0'da başlar ve 4'te sona erer, çıktı da her biri kendi satırında olan 0 ile 4 arasındaki sayılar olur.

var i:int; 
for (i = 0; i < 5; i++) 
{ 
    trace(i); 
}

for..in

for..in döngüsü, bir nesnenin özelliklerini veya dizideki öğeleri yineler. Örneğin, genel bir nesnenin özelliklerini yinelemek için bir for..in döngüsünü kullanabilirsiniz (nesne özellikleri belirli bir sırada tutulmaz, bu nedende özellikler rastgele sırada görüntüleniyor gibi gelebilir):

var myObj:Object = {x:20, y:30}; 
for (var i:String in myObj) 
{ 
    trace(i + ": " + myObj[i]); 
} 
// output: 
// x: 20 
// y: 30

Bir dizinin öğelerini de yineleyebilirsiniz:

var myArray:Array = ["one", "two", "three"]; 
for (var i:String in myArray) 
{ 
    trace(myArray[i]); 
} 
// output: 
// one 
// two 
// three

Mühürlü bir sınıfın (yerleşik sınıflar ve kullanıcı tanımlı sınıflar da dahil) örneğiyse bir nesnenin özellikleri üzerinden yineleme yapamazsınız. Yalnızca dinamik bir sınıfın özellikleri üzerinden yineleme yapabilirsiniz. Dinamik sınıfların örnekleriyle bile, ancak dinamik olarak eklenmiş özellikler üzerinden yineleme yapabilirsiniz.

for each..in

for each..in döngüsü, bir koleksiyonun öğelerini yineler, bu öğeler bir XML veya XMLList nesnesindeki etiketler, nesne özellikleri tarafından tutulan değerler veya bir dizinin öğeleri olabilir. Örneğin, aşağıdaki alıntıda da gösterildiği gibi, genel bir nesnenin özelliklerini yinelemek için for each..in döngüsünü kullanabilirsiniz ancak for..in döngüsünden farklı olarak, for each..in döngüsündeki yineleyici değişken, özelliğin adı yerine özelliğin kendisi tarafından tutulan değeri içerir:

var myObj:Object = {x:20, y:30}; 
for each (var num in myObj) 
{ 
    trace(num); 
} 
// output: 
// 20 
// 30

Aşağıdaki örnekte gösterildiği gibi, bir XML veya XMLList nesnesini yineleyebilirsiniz:

var myXML:XML = <users> 
    <fname>Jane</fname> 
    <fname>Susan</fname> 
    <fname>John</fname> 
</users>; 
 
for each (var item in myXML.fname) 
{ 
    trace(item); 
} 
/* output 
Jane 
Susan 
John 
*/

Bu örnekte gösterildiği gibi, bir dizinin öğelerini de yineleyebilirsiniz:

var myArray:Array = ["one", "two", "three"]; 
for each (var item in myArray) 
{ 
    trace(item); 
} 
// output: 
// one 
// two 
// three

Bir nesne mühürlenmiş bir sınıf örneğiyse, o nesnenin özelliklerini yineleyemezsiniz. Dinamik sınıf örnekleri için de, sınıf tanımının bölümü olarak tanımlanan özellikler olan sabit özellikleri yineleyemezsiniz.

while

while döngüsü, koşul true olduğu sürece yinelenen if deyimine benzer. Örneğin, aşağıdaki kod, for döngüsü örneğiyle aynı çıktıyı oluşturur:

var i:int = 0; 
while (i < 5) 
{ 
    trace(i); 
    i++; 
}

for döngüsü yerine while döngüsü kullanılmasının bir dezavantajı, sonsuz döngülerin while döngüleriyle daha kolay yazılmasıdır. Sayaç değişkenini artıran ifadeyi çıkarırsanız, for döngüsü örneği derleme yapmaz, ancak bu adımı çıkarırsanız while döngüsü örneği derleme yapar. i değerini artıran ifade olmadan döngü sonsuz döngü olur.

do..while

do..while döngüsü, kod bloğu çalıştırıldıktan sonra koşul denetlendiğinden, kod bloğunun en az bir defa çalıştırılmasını garantileyen bir while döngüsüdür. Aşağıdaki kod, koşul karşılanmasa da çıktı oluşturan basit bir do..while döngüsü örneğini göstermektedir:

var i:int = 5; 
do 
{ 
    trace(i); 
    i++; 
} while (i < 5); 
// output: 5