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
|
|
|