C# Lambda İfadeleri Nedir? Nasıl Kullanılır?
C# Lambda İfadeleri Nedir? Nasıl Kullanılır?
Örneki => i * igibi bir kullanımı bulunmaktadır.
Örnekint kare (int i){return i * i;}
delegate(int i){return i * i;}
Burada fonksiyonun geri dönüşü en başta belli olmadığı için anonim bir fonksiyon oldu, eğer ki buradaki "delegate" kısmını silersek bir lambda fonksiyonu elde etmiş oluruz.
(int i){
return i * i;
}
Şimdi basit bir şekilde aslında anonim lambda fonksiyonumuzu oluşturduk ancak yazının ilk başında dediğimiz şey sadeleştirilmiş ve anonim olmalarıydı. Şimdi gelin bu lambda halini sadeleştirelim.
Burada süslü parantezler lambda ifadesine dönüşecektir ve fonksiyonumuz şu şekli alacaktır.
(int i ) => return i * i;
Şimdi burada yukarıda ilk başta solun parametre ve sağında ifade olduğundan bahsetmiştik. i*i zaten bir ifade olduğu için artık ";" ve "return" ifadesini kaldırabiliriz yani yeni fonksiyonumuz şu şekilde olacaktır.
(int i) => i * i
burada isteğe bağlı olarak girilen değeri girebiliriz veya girmeyebiliriz bu tamamen size kalmıştır, eğer ki girmek istemezsek şu şekilde kullanabiliriz.
i => i * i
Yukarıda sol tarafta parametre olmasından bahsetmiştik ancak her lambda fonksiyonunda / ifadesinde parametre zorunlu değildir ve aşağıdaki gibi de kullanabilirsiniz.
() => fonksiyon()
Parametre kısmında parametre olmayabildiği gibi, birden fazla parametre değeri de alabilir aşağıdaki örnekte olduğu gibi.
(a,b) => a > b
Evet arkadaşlar Lambda ifadeleri ile ilgili yeterince bilgi verdiğimi düşünüyor ve birkaç örnek vermek istiyorum.
Örnekler
Unity de DoTween ile ilgili yazıma buradan bakabilirsiniz burada basit bir şekilde Tween oluşturmak için Lambda ifadesi kullanımını göstermiştim.
protected void OzelDonmeAnimasyonu(GameObject obje, Vector3 donmeAcisi, float animasyonTamamlanmaSuresi, Ease animasyonYumusatma, RotateMode donmeSekli, System.ActionIslemSonucu) { obje.transform.DORotate(donmeAcisi, animasyonTamamlanmaSuresi, donmeSekli).SetEase(animasyonYumusatma).OnComplete(() => IslemSonucu(0)); } void IslemSonucu(int i){ if(i == 0){ Debug.Log("İşlem Tamamlandı"); } }
yukarıdaki kodda da gördüğünüz gibi bir kullanım yapabiliyorsunuz.
Yorum Gönder