Profili Göster

ActionScript 3.0 :Fonksiyonlar III:

Muttalip TULGAR Tarih: 26/08/2008 Yorum: 0 adet

Okunma : 427 Tutanlar: Bu yazıyı 2 kişi tuttu.

Fonksiyonlar ve "Arguments" Sınıfı

Fonksiyonlara, fonksiyon dışından değer gönderilebildiği için, gönderilen bu değerlerin, fonksiyon içinde tanımlanan parametrelerle uygun olması gerekir. Gönderilen değerler, fonksiyonda belirtilen parametrelerle aynı sayıda ve aynı veri türünde olmalıdır yoksa fonksiyonların çalışmasında bazı sorunlar meydana gelebilir. Fonksiyonlara gönderilen bu değerlere argümanlar (arguments) denir.


function topla(a:Number, b:Number, c:Number)
{

    trace(a+b+c);
}
topla(7,3);

Örnekte, dışarıdan fonksiyona "7" ve "3" değerleri gönderilmektedir, ancak "topla" fonksiyonu "a","b" ve "c" parametrelerine sahip olduğu için fonksiyon hata verecektir. Gönderilen değer sayısının parametre sayısı kadar olmalıdır.

a:Number=7, b:Number=3, c:Number=?
//fonksiyon yanlış sayıda parametre hatası verir.

Bu tür sorunları ortadan kaldırmak için Arguments sınıfını kullanmak en iyi çözüm olacaktır. Arguments sınıfı, dizi (array) değişkeni gibi davranarak fonksiyonda tanımlanan parametre sayısından daha fazlasını çağırabilmektedir. Ayrıca arguments nesnesi, fonksiyon içinde tanımlansın ya da tanımlanmasın parametreleri çağırabilmektedir.

Arguments nesnesi, dizi değişkeni gibi davrandığı için Array sınıfının tüm özellik ve metotlarını kullanabilmektedir. Arguments içinde kullanacağımız bir özellikte "arguments.length" dir. "arguments.length", fonksiyona gönderilen tüm parametrelerin sayısını bildirir.


function say(a:Number):void
{

    for (var i:Number=0; i<arguments.length; i++) {

        trace(arguments[i]);
    }
}
say(7,9,8);
//7
//9
//8

Örnekte, fonksiyon içinde sadece "a" adlı sayısal bir parametre tanımlanmıştır. Fonksiyon dışından ise (7,9,8) değerleri fonksiyona gönderilmektedir. Fonksiyonda tanımlanan parametre sayısı ile fonksiyon dışından yollanan parametre sayıları farklı da olsa "arguments" nesnesi, bu farklılığı önemsemeden "for" döngüsü içinde "arguments.length" ile gönderilen tüm parametreleri almakta ve trace(arguments[i]) komut satırıyla da fonksiyonda parametreleri döndürmektedir.

Özyineleme Fonksiyonu (Recursive Function) : "arguments.callee"

"arguments.callee" fonksiyonu, fonksiyonun kendini birden çok çağırması için kullanılan bir fonksiyondur. "arguments.callee" fonksiyonunu kullanılırken, fonksiyonun adını bilmeden, o fonksiyon blokları içerisinde fonksiyonu tekrarlattırabilirsiniz. Özellikle faktöriyel alma gibi matematiksel işlemlerde arguments.callee fonksiyonu tercih sebebidir. Bu fonksiyon içinde bulunduğu fonksiyonun adını referans olarak alır.


function faktoriyel(a:Number)
{
    if (a<=1) {
        return 1;
    } else {
        return a * arguments.callee(a - 1);
    }
}
trace(faktoriyel(7));     //5040

Fonksiyonun adı değişse bile, fonksiyon doğru olarak çalışacaktır. Çünkü; "arguments.callee" fonksiyonu içindeki bulunduğu fonksiyonun adını referans alır.

Actionscript 3.0’da, daha önceki versiyonlarda kullanılan bir fonksiyon içinde başka bir fonksiyonu çağırma özelliğine sahip "arguments.caller" fonksiyonu artık kullanılmamaktadır.

…(rest) Parametresi:

Actionscript 3.0’ın sunduğu bu yeni parametre, "arguments.length" fonksiyonun işlevi ile aynı iken, "arguments.caller" fonksiyonun sağladığı özelliği sağlayamamaktadır. Bu parametre, dizi parametrelerini belirtmede kullanılırken, arguments nesnesini de etkisiz hale getirir.


function say(...arg):void
{

    for (var i:Number=0; i<arg.length; i++) {

        trace(arg[i]);
    }
}
say(7,9,8);
//7
//9
//8

(…arg) fonksiyonunda "arg" yerine isimlendirme kuralları dikkati alınarak istenilen tanımlama sözcüğü yazılabilir.


function say(...sayicak):void
{

    for (var i:Number=0; i<sayicak.length; i++) {

        trace(sayicak[i]);
    }
}
say(7,9,8);
//7
//9
//8

…(rest) fonksiyonu başka parametrelerle de fonksiyon içinde kullanılır. Ancak fonksiyonun içindeki parametrelerle beraber kullanıldığında, belirtilen parametrelerin sonuç değeri döndürülemez.


function say(a:Number,...sayicak):void
{

    for (var i:Number=0; i<sayicak.length; i++) {

        trace(sayicak[i]);
    }
}
say(7,9,8);
//9
//8

"a" parametresi, "…sayilacak" parametresi ile birlikte kullanıldığı için, trace(sayicak[i]) komut satırında "a" parametresi dikkate alınmaz ve sonuç olarak döndürülemez.

Varsayılan (Default) Parametre:

Actionscript 3.0 ile yeni kullanılan bir başka parametrede varsayılan parametredir. Bu parametre, bir fonksiyon için ilk değeri olan parametre değerleri ile ilk değerleri belirtilmemiş parametreleri birarada kullanmaya izin verir.


function degerleriDondur(a:int, b:int, c:int=8, d:int=13)
{
    trace(a,b,c,d)
}
degerleriDondur(1,4);
//  1  4  8  13

Örnekte, "a" ve "b" parametrelerinin fonksiyon içinde ilk değerleri belirtilmemiştir. degerleriDondur(1,4) komut satırındaki 1 ve 4 değerleri, "a" ve "b" için seçmeli (optional) parametrelerdir. "c" ve "d" parametreleri ise gerekli (required) parametrelerdir. "c" ve "d" parametrelerinin ilk değeri vardır.

Eğer ilk değerleri belirtilmeyen parametreler, ilk değerleri olan parametrelerle birlikte kullanılacaksa, ilk değeri olmayan parametreler, parametreler listesinin başında olmalıdır. function degerleriDondur(a:int, b:int, c:int=8, d:int=13) gibi.


function degerleriDondur(a:int=8, b:int, c:int, d:int=13)

komut satırı kullanılırsa hata verecektir. "b" ve "c" parametrelerinin ilk değerleri belirtilmediği için, parametre listesi içinde en başta olmaları gerekiyordu.

Yazan: Muttalip TULGAR

"ActionScript 3.0 :Fonksiyonlar IV: İç içe (nested) Fonksiyonlar" dersinde görüşmek üzere..

aç-kapa İçeriğin rss beslemesi kullanımda değil Yorumlar

İçeriğe kayıtlı yorum bulunmuyor. İlk yorumu siz buradan ekleyebilirsiniz.


yeni üyelik | şifremi unuttum

aç-kapa Toplantı Kahraman ve need4code.com Projesi Connect Toplantısı

Kahraman ve need4code.com Projesi Connect Toplantısı

Selam arkadaslar, Programlama ile uğraşanların hayatlarını kolaylaştıracak desktop ve web tabanlı ortak iki proje ile ilgili 3. toplantımızı 3Aralık...
Kategori: Toplantı

aç-kapa Yarışma Fikir10000 Dijital Pazarlama Fikir Yarışması

Fikir10000 Dijital Pazarlama Fikir Yarışması

ADTECH tarafından düzenlenen Fikir10000 yarışmasına; dijital pazarlama ile ilgili size ait olan fikrinizle katılabilir ve 10.000 YTL’lik birinci...
Kategori: Yarışma

aç-kapa Yarışma 7Dx Demoscene Party

7Dx Demoscene Party

2002 yılından beri amatör bilgisayar kültürü ile ilgilenen insanları bir araya getirmeyi hedefleyen 7DX parti serisinin bu seneki ayağı olan 7D8 Demo ...
Kategori: Yarışma

aç-kapa Eğitim Türkiye'de İnternet Konferansı - Internet Teknolojileri Derneği -22-23 Aralık ODTÜ

Türkiye'de İnternet Konferansı - Internet Teknolojileri Derneği -22-23 Aralık ODTÜ

Etkin Katılım Çağrısı Türkiye’de Internet ile ilgili grupları biraraya getirerek İnternet’i tum boyutlarıyla tanıtmak, gelistirmek, tartı...
Kategori: Eğitim

aç-kapa Konferans Bilgi Güvenliği ve Kriptoloji Konferansı

Bilgi Güvenliği ve Kriptoloji Konferansı

Önemli Tarihler: Etkinlik Tarihi : 24-26 Aralık 2008 Son Bildiri Gönderme Tarihi : 20 Ekim 2008 Bildiri Kabul Tarihi Bildirimi :...
Kategori: Konferans

üyeler Son Kahramanlar...

stats Kimler Burada? web stats

Son 1 dakika içinde MMIstanbul' da 411 (1 kayıtlı, 410 ziyaretçi) kullanıcı varmış. Login durumda olanlar aşağıda:

coldfusion mysql ubuntu
 
sponsor adobe istanbul