Dart tiliga kirish O'zgaruvchilar va konstantalar Primitiv ma'lumotlar turlari


Anonim va ichki o'rnatilgan funktsiyalar


Download 374.15 Kb.
bet15/35
Sana11.05.2023
Hajmi374.15 Kb.
#1454719
1   ...   11   12   13   14   15   16   17   18   ...   35
Bog'liq
3-mustaqil ish

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 374.15 Kb.

Do'stlaringiz bilan baham:
1   ...   11   12   13   14   15   16   17   18   ...   35




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