Reja. Kross-platformali dasturlash tili haqida umumiy ma`lumot


Anonim va ichki o'rnatilgan funktsiyalar



Download 0,98 Mb.
bet16/39
Sana07.03.2022
Hajmi0,98 Mb.
#485533
1   ...   12   13   14   15   16   17   18   19   ...   39
Bog'liq
j7WNgrIuzYyWbItD7qqrNdYOmEd13B0L

Anonim va ichki o'rnatilgan funktsiyalar

Anonim funktsiyalar


Anonim funktsiyalar oddiy funktsiyalarga o'xshaydi, faqat ularning nomi yo'q. Masalan:


1
2
3
4
5

void main() {
Function operation = (a, b) => a + b;
print(operation(4, 5));
}

Bunda o'zgaruvchi amaliga anonim funksiyaga (a, b) => a + b havola beriladi, u ikkita parametrni oladi va ularning qiymatlari yig'indisini qaytaradi.


Bunday holda, anonim funksiya qisqartma yozuviga ega, ammo biz uni ham kengaytirishimiz mumkin:




1
2
3
4
5
6
7
8
9

void main() {
Function operation = (int a, int b)
{
print("Sum of $a and $b");
return a + b;
};
print(operation(4, 5));
}

Anonim funktsiyalardan qayerda foydalanish mantiqiy? Agar biz boshqa funktsiyani qabul qiladigan funktsiyani chaqiradigan bo'lsak, u holda parametr funktsiyasi nomini aniqlashdan ko'ra anonim funktsiyadan foydalanish osonroq bo'lishi mumkin, ayniqsa, boshqa biron bir joyda nomlangan funktsiya kerak bo'lmasa:




1
2
3
4
5
6
7
8
9
10
11

void main() {
int result = getResult(3, 5, (a,b)=>a+b);
print(result); // 8
result = getResult(3, 5, (a,b)=>a-b);
print(result); // -2
}
int getResult(int a, int b, Function operation){
return operation(a, b);
}

Ichki funksiyalar


Dartda funksiyalar boshqa funksiyalar ichiga joylashtirilishi mumkin:


1
2
3
4
5
6
7
8
9

void main() {
void hello(){
print("Hello!");
}
hello();
hello();
}

Bundan tashqari, o'rnatilgan funktsiyaning ta'rifi uni chaqirishdan oldin bo'lishi kerak. Agar biz takrorlanadigan amallarni faqat ma'lum bir funktsiya doirasida ishlatishni rejalashtirsak, ichki o'rnatilgan funktsiyalar mantiqiy bo'ladi.


Bundan tashqari, ichki o'rnatilgan funktsiyalarning o'zi boshqa ichki funktsiyalarni o'z ichiga olishi mumkin:




1
2
3
4
5
6
7
8
9
10
11
12
13

void main() {
void showMessage(){
void hello(){
print("Hello!");
}
hello();
hello();
}
showMessage();
}

Shuni ta'kidlash kerakki, ichki o'rnatilgan funktsiyalar o'zlarining kontekstlarini - tashqi funktsiyaga kira olmaydigan o'zgaruvchilar va konstantalarni tashkil qiladi. Masalan:




1
2
3
4
5
6
7
8
9

void main() {
void welcome(){
var message = "Welcome!";
print(message);
}
print(message); // ! Ошибка - внешняя функция не может обращаться к переменным вложенных функций.
}

Bunday holda, xabar o'zgaruvchisi xush kelibsiz funktsiyasi ichida aniqlanadi, shuning uchun uni faqat shu funktsiya ichida chaqirish mumkin, lekin undan tashqarida emas.




Download 0,98 Mb.

Do'stlaringiz bilan baham:
1   ...   12   13   14   15   16   17   18   19   ...   39




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