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


Download 374.15 Kb.
bet12/35
Sana11.05.2023
Hajmi374.15 Kb.
#1454719
1   ...   8   9   10   11   12   13   14   15   ...   35
Bog'liq
3-mustaqil ish

Funktsiya parametrlari tomonidan

Funktsiya parametrlarni qabul qilishi mumkin. Funktsiya nomidan keyin qavs ichida keltirilgan parametrlar quyidagi ta'rifga ega:




1

тип название_параметра

Masalan, ikkita raqamni qo'shadigan funktsiyani aniqlaymiz:




1
2
3
4
5
6
7
8

void main() {
sum(2, 5); // 7
}
void sum(int a, int b){
int c = a + b;
print(c);
}

Sum funksiyasi a va b nomli va int tipidagi ikkita parametrni oladi. Asosiy funksiyada biz sum funksiyasini chaqiramiz va unga ikkita argumentni uzatamiz. Argumentlar funksiya parametrlari uchun qiymatlardir. Argumentlar pozitsiya bo'yicha parametrlarga uzatiladi. Ya'ni, birinchi argument birinchi parametrga, ikkinchi argument ikkinchi parametrga o'tkaziladi va hokazo. Bunda a parametri uning qiymati sifatida 2 raqamini, b parametri esa 5 raqamini oladi.


O'tkazilgan argumentlar soni parametrlar soniga mos kelishi kerak. Bundan tashqari, argumentlar turlari va parametrlar turlari o'rtasida muvofiqlik bo'lishi kerak. Masalan, boshqa funktsiyani aniqlaymiz:




1
2
3
4
5
6
7
8
9

void main() {
showPerson("Tom", 35);
showPerson("Alice", 29);
}
void showPerson(String name, int age){
print("Name: $name");
print("Age: $age \n");
}

showPerson funksiyasi ikkita parametrni oladi. Birinchi parametr String turiga, ikkinchisi esa int tipiga ega. Shuning uchun funktsiyani chaqirishda avval String tipidagi qiymatni (ya'ni satr), so'ngra int tipidagi qiymatni (ya'ni butun son) o'tkazish kerak.


Funktsiyani belgilashda biz parametrlar turini ko'rsatishimiz shart emas. Keyin Dartning o'zi o'tgan qiymatlar asosida ularning turini aniqlaydi:




1
2
3
4
5
6
7
8
9

void main() {
showPerson("Tom", 35);
showPerson(29, "Alice");
}
void showPerson(name, age){
print("Name: $name");
print("Age: $age \n");
}

E'tibor bering, endi funktsiyani belgilashda parametr nomi va yoshi qaysi turni ifodalashi noma'lum. Shuning uchun, showPerson ga ikkinchi qo'ng'iroqda (29, "Alice") Dart name parametrini int parametri sifatida ko'rib chiqadi, chunki unga butun son uzatiladi. Va yosh parametri qator sifatida ko'rib chiqiladi.

Ixtiyoriy parametrlar
Biz bir qator parametrlarni ixtiyoriy qilishimiz mumkin, ya'ni ular uchun hech qanday qiymatni o'tkaza olmaymiz. Buning uchun parametr kvadrat qavs ichiga olinadi. Lekin bunda u parametrga hech qanday qiymat o'tkazilmasa ishlatiladigan standart qiymatni taqdim etishi kerak:


1
2
3
4
5
6
7
8
9

void main() {
showPerson("Tom", 35);
showPerson("Alice");
}
void showPerson(String name, [int age = 22]){
print("Name: $name");
print("Age: $age \n");
}

Bunday holda, yosh parametri ixtiyoriydir. Agar biz unga hech qanday qiymat bermasak, u sukut bo'yicha 22 ga o'tadi. Konsol chiqishi:

Name: Tom


Age: 35

Name: Alice


Age: 22

Biroq, agar ixtiyoriy parametr null bo'ladigan turni ifodalasa, ya'ni u null qiymatini qabul qilishi mumkin bo'lsa, siz uning uchun standart qiymatni o'tkazib yuborishingiz mumkin - bu holda standart qiymat null bo'ladi:




1
2
3
4
5
6
7
8
9
10
11

void main() {
showPerson("Tom", 35);
showPerson("Alice");
}
void showPerson(String name, [int? age]){
print("Name: $name");
if(age!=null){
print("Age: $age \n");
}
}

Konsol chiqishi:

Name: Tom
Age: 35

Name: Alice

Nomlangan parametrlar
Dart parametrlarni nom bilan o'tkazishni qo'llab-quvvatlaydi. Masalan:


1
2
3
4
5
6
7
8
9
10

void main() {
showPerson(name: "Tom", age: 35);
showPerson(age: 29, name: "Alice");
showPerson(name: "Kate");
}
void showPerson({String name = "undefined", int age=0}){
print("Name: $name");
print("Age: $age \n");
}

Funktsiyani belgilashda parametrlar ro'yxati jingalak qavslar ichiga olinadi va agar uning turi nullni qo'llab-quvvatlamasa, har bir parametr uchun standart qiymat belgilanadi.


Funktsiya chaqirilganda parametr nomi ko'rsatiladi va uning qiymati ikki nuqta bilan ajratiladi (nom: "Tom"), biz parametrlarni istalgan tartibda belgilashimiz mumkin. Misol uchun, ikkinchi qo'ng'iroq birinchi navbatda yosh parametri uchun, keyin esa nom parametri uchun qiymatni belgilaydi (showPerson (yosh: 29, ism: "Alice")). Bundan tashqari, biz parametrlarga umuman qiymat o'tkaza olmaymiz, keyin bunday parametr uchinchi qo'ng'iroqdagi yosh parametrida bo'lgani kabi standart qiymatga ega bo'ladi (showPerson (ism: "Kate")).


Konsol chiqishi:

Name: Tom
Age: 35

Name: Alice


Age:29

Name: Kate


Age: 0

Agar parametr null bo'ladigan turni ifodalasa, ya'ni null qiymatni qo'llab-quvvatlasa, biz standart qiymatni o'tkazib yuborishimiz mumkin, keyin standart qiymat null bo'ladi:




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

void main() {
showPerson(age: 35);
showPerson(age: 29, name: "Alice");
showPerson(name: "Kate");
}
void showPerson({String? name = "undefined", int? age}){
print("Name: $name");
if(age != null){
print("Age: $age \n");
}
}

Dasturning konsol chiqishi:

Name: undefined
Age: 35

Name: Alice


Age: 29

Name: Kate

Funksiyalardagi konstantalar
Parametrlar qiymatlarni funktsiyalarda aniqlangan mahalliy o'zgaruvchilarga o'tkazish imkonini beradi. Ammo siz qiymatlarni parametrlar orqali mahalliy yakuniy konstantalarga o'tkazishingiz mumkin, chunki ular ish vaqtida aniqlanadi. Ammo shu bilan birga, biz qiymatlarni doimiy konstantalarga o'tkaza olmaymiz, chunki ularning qiymatlari kompilyatsiya vaqtida ma'lum bo'lishi kerak. Shu munosabat bilan, funktsiyaga turli xil qo'ng'iroqlar uchun biz oxirgi konstantalarga turli qiymatlarni o'tkazishimiz mumkin:


1
2
3
4
5
6
7
8
9
10
11

void main() {
showPerson("Tom", 35);
showPerson("Alice", 22);
}
void showPerson(String userName, int userAge){
// const int initialAge = userAge; - так нельзя, константа должна определяться на этапе компиляции
final String name = userName;
final int age = userAge;
print("Name: $name Age: $age \n");
}

Dasturning konsol chiqishi:

Name: Tom Age: 35

Name: Alice Age: 22




Download 374.15 Kb.

Do'stlaringiz bilan baham:
1   ...   8   9   10   11   12   13   14   15   ...   35




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