Mavzu: Lyambda-ifodalar. Reja



Download 71,5 Kb.
bet4/4
Sana18.02.2022
Hajmi71,5 Kb.
#451607
1   2   3   4
Bog'liq
5. Lyambda-ifodalar

4. Blokli lyambda-ifodalar
Yuqorida aytib o'tilganidek, lyambda-ifodalarining ikki turi mavjud. Ulardan birinchisi, avvalgi bobda ko'rib chiqilgan birlik lyambda-ifodasi. Bunday lyambda-ifoda tanasi faqat bitta ifodadan iborat. Ikkinchi tur - blokli lyambda-ifodalar hisoblanadi. Bunday lyambda-ifodalari turli operatsiyalarni bajarishni kengaytirish imkoniyatlar beradi, chunki uning tanasida bir nechta operatorlarni ko'rsatishga ruxsat beriladi. Misol uchun, blokli lyambda-ifodalarda takrorlash va if shart operatori, o'zgaruvchilar e'lon qilish va hokazolarda foydalanish mumkin. Blokli lyambda-ifodani yaratish qiyin emas. Buning uchun ifoda tanasini figurali qavslar orqali kiritish kifoya. Bir nechta operatorlardan foydalanish imkoniyatidan tashqari, blokli lyambda-ifoda ham yuqorida ko'rib chiqilgan birlik lyambda-ifodadan deyarli farq qilmaydi.
Quyida butun sonning faktorialini hisoblash va qaytarish uchun blokli lyambda-ifodalarsini qo'llash misoli keltirilgan.
// Blokli lyambda-ifodasini qo'llashni namoyishi.
using System;
// IntOp delegati int tipida bir argumentni qabul qiladi va
//int tipida natija qaytaradi.
delegate int IntOp(int end);
class StatementLambdaDemo {
static void Main() {
// Blokli lyambda-ifodalarsi unga berilgan qiymatning faktorialini qaytaradi.
IntOp fact = n => {
int r = 1;
for (int i=1; i <= n; i++)
r = i * r;
return r;
};
Console.WriteLine("Факториал 3 равен " + fact(3));
Console.WriteLirie("Факториал 5 равен " + fact(5));
}
}
Ushbu kod bajarilganidan so`ng quyidagi natijalar olinadi.
Факториал 3 равен 6
Факториал 5 равен 120
Yuqoridagi misolda, blokli lyambda-ifodalar tanasida r o'zgaruvchini e'lon qilinishi, for takrorlash operatori va return operatori ishlatilishiga e'tibor bering. Bu elementlarning barchasini blokli lyambda-ifodalarsida qo`llashga to`liq ruxsat bor. Shu nuqtai nazardan, u anonim metodga juda o'xshaydi. Binobarin, ko'p anonim metodlar meros kodni yangilash paytida blokli lyambda-ifodalar aylanadi mumkin. Yana bir eslatma: blokli lyambda-ifodalar return operatori javob sifatida shunchaki lyambda-ifodasini qaytarishga olib keladi biroq, o'z ichiga olgan metodni qaytmasligi kerak.
Oxirida, blokli lyambda-ifodalarsini namoyish etadigan yana bir misolni ko'rib chiqaylik. Quyida ushbu bobning birinchi misolining bir ko`rinishi, satrlar bilan turli operatsiyalarni bajarish uchun avtonom metodlar o'rniga blokli lyambda-ifodalarini ishlatish uchun o'zgartirildi.
// Blokli lyambda-ifodalarini ishlatish uchun qayta ishlangan
//delegatlarni qo'llashning birinchi misoli.
using System;
// Delegat tipini e'lon qilish
delegate string StrMod(string s);
class UseStatementLambdas {
static void Main() {
// Belgili satrlar bilan turli operatsiyalarni
//bajaradigan lyambda-ifodalarga murojaat qilgan delegatlarni yaratish.
// Probellarni chiziqlar bilan almashtirish.
StrMod ReplaceSpaces = s => {
Console.WriteLine("Замена пробелов дефисами.");
return s.Replace(' ', '-');
};
// Probellarni o`chrish.
StrMod RemoveSpaces = s => {
string temp = "";
int i;
Console.WriteLine("Удаление пробелов.");
for(i=0; i < s.Length; i++)
if (s[i] != ' ') temp += s[i] ;
return temp;
};
// Satrni teskarisiga o`girish.
StrMod Reverse = s => {
string temp = "";
int i, j;
Console.WriteLine("Обращение строки.");
for(j=0, i=s.Length-l; i >= 0; i--, j++)
temp += s[i];
return temp;
};
string str;
// Delegatlar yordamida lyambda-ifodalarga murojaat qilish.
StrMod strOp = ReplaceSpaces;
str = strOp("Это простой тест.");
Console.WriteLine("Результирующая строка: " + str);
Console.WriteLine() ;
strOp = RemoveSpaces;
str = strOp("Это простой тест.");
Console.WriteLine("Результирующая строка: " + str);
Console.WriteLine() ;
strOp = Reverse;
str = strOp("Это простой тест.");
Console.WriteLine("Результирующая строка: " + str);
}
}
Ushbu misolning kodini bajarish natijasi delegatlarni qo'llashning birinchi misolida bo'lgani kabi bir xil bo'ladi.
Замена пробелов дефисами.
Результирующая строка: Это-простой-тест.
Удаление пробелов.
Результирующая строка: Этопростойтест.
Обращение строки.
Результирующая строка: .тсет йотсорп отЭ
Foydalanildi:
1. Герберт Шилдт. С# 4.0: полное руководство. Пер. с англ. — М.: ООО "И.Д. Вильяме", 2011.
Download 71,5 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish