1.2 Lambda-ifodalaridan foydalanish metodlari
Barcha lambda ifodalari uni ikki qismga ajratadigan lambda operatori (ya’ni “ => ”) dan foydalanadi. Lambda operatori (ya’ni =>) tayinlash operatori bilan bir xil ustuvorlikka ega va = ga to'g'ri assotsiativdir. Lambda operatori lambda ifodalarini e'lon qilish uchun ishlatiladi va LINQ so'rovlarida keng qo'llaniladi. Kirish parametri (yoki bir nechta parametrlar) chap tomonda, lambda ifodasi tanasi esa o'ng tomonda ko'rsatilgan bo’ladi.
string[] words = { "cherry", "apple", "blueberry" };
int shortestWordLength = words.Min((string w) =>w.Length); //5
LINQ kengaytmalarida yoki so'rovlarda foydalanilganda ob'ektlarning turini odatda kompilyator tomonidan taxmin qilinganidek o'tkazib yuborish mumkin:
int shortestWordLength = words.Min(w =>w.Length);
//xuddi shu natija bilan kompilyatsiya qiladi
Lambda operatorining umumiy shakli quyidagicha.
(kiritish parametrlari) => ifoda
Lambda ifoda parametrlari => operatoridan oldin ko'rsatilgan va amaldagi ifoda / bayonot / blok operatorning o'ng tomonida joylashgan bo’ladi:
// ifoda
(int x, string s) =>s.Length >x
// ifoda
(int x, int y) =>x + y
// bayonot
(string x) =>Console.WriteLine(x)
// blok
(string x) =>
{
x += " Salom!";
Console.WriteLine(x);
}
Ushbu operator aniq metod yozmasdan, delegatlarni osongina aniqlash uchun ishlatilishi mumkin:
delegate void TestDelegate(string s);
TestDelegate myDelegate = s =>Console.WriteLine(s + "alaykum!");
myDelegate("Assalomu ");
o‘rniga
void MyMethod(string s)
{
Console.WriteLine(s + " alaykum!");
}
delegate void TestDelegate(string s);
TestDelegate myDelegate = MyMethod;
myDelegate("Assalomu ");
Lambda operatori ba'zan "o'tib ketadi" yoki "bo'ladi" kabi so'zlar bilan tavsiflanadi. C# dasturlash tili lambda ifodasining o'ziga qarab lambda ifodalarining ikkita turini qo'llab-quvvatlaydi.
Lambda ifodalari - bu noma'lum usullarning kengaytmasi bo'lib, ular aniq kiritilmagan parametrlar va qiymatlarni qaytarishga imkon beradi. Ularning sintaksisi anonim usullarga qaraganda kamroq verbal bo'lib, funktsional dasturlash uslubiga amal qiladi.
|