Dart Funksiya

Funksiya – yozgan kod faylimizda bir necha bor chaqirish imkoni bo’lgan va ma’lum jarayonni bajarib beruvchi kod qismidir. Hamda ifodalar to’plamini o’zida saqlaydi.

Inson organizmida tana a’zolarini olib qarasak, har bir tana a’zosi ma’lum bir vazifani bajaradi va inson hayoti davomida juda ko’p qayta-qayta ishlaydi, yashashi uchun xizmat qiladi. Yurak qon aylanish tizimini boshqaruvchi organ bo’lib, shu vazifani bajaruvchi funksiya deb tushunishimiz va insonni esa dastur deb tasavvur qila olamiz.

Funksiyalar Dart dasturlash tilida quyidagi sintaksis asosida yaratiladi :

tur funksiya_nomi(parametrlar) {
// kod bloki
}
  • tur – funksiyaning qaytaruvchi qiymat turini, agarda funksiya hech qanday qiymat qaytarmasa void turida beriladi;
  • funksiya_nomi – biz ishlatmoqchi bo’lgan funksiya (o’zgaruvchi) nomi. Nom berish o’zgaruvchilarni nomlash bilan bir xil qoidalarga rioya etadi;
  • parametrlar – qavs ichida keltirib o’tilgan. Hech qanday parametrlarga ega bo’lmasligi mumkin. Funksiya ayrim qiymatlarni yuborish vaqtida kerak bo’ladi;
  • {} – jingalak qavslar va uning ichida bajariladigan ifodalar o’zi ichiga olgan sikl tanasi ifodlanadi;

Masalan, biz “Salom, UzbekDevs” so’zini ekranga chiqaruvchi salom funksiyasi yozamiz :

void salom() {
print("Salom, UzbekDevs");
}

void main() {
salom();
}
>> Salom, Uzbekdevs

Yodda tuting!

Funksiyani ishlatish uchun funksiya_nomi(parametrlar); tarzida murojaat etishimiz kerak asosan main funksiyasi ichida. Yuqorida berilgan koddagi kabi. Hamda bir xil nomda 2 ta funksiya yarata olmaymiz. Agarda ular global va lokal holatda bo’lmasa.

void salom() {
print("Salom, Dart");
void salom() {
print("Salom, Dunyo");
}
salom();

void main() {
salom();
}
>> Salom, Dart >> Salom, Dunyo

Mana shu tarzda. Bir misol orqali keltirib o’tdik. salom funksiyasini bir necha bor ishlata olamiz funksiya ta’rifida aytib o’tib ketganimiz singari :

void salom() {
print("Salom, UzbekDevs");
}

void main() {
salom();
salom();
}
>> Salom, Uzbekdevs >> Salom, Uzbekdevs

Demak, funksiya parametrlarni qabul qilishi mumkin. Parametrlar quyidagi ko’rinishda beriladi : tur parametr_nomi. Parametr nomini ham o’zgaruvchi nomlashdagi qoidalarga binoan yozamiz. Parametrlar soni 1 dan ortiq bo’lsa, ular vergul bilan ajratib yoziladi.

Masalan, 2 ta son ayrimasini hisoblovchi funksiya yozib ishlatib ko’raylik :

void ayir(int a, int b) {
var c = a - b;
print(c);
}

void main() {
ayir(5, 3);
}
>> 2

hisobla nomli funksiya 2 ta parametrga ega a va b degan. Funksiya ichida 2 ta ifoda bor : 2 son ayrimasi natijasini o’zlashtiruvchi c o’zgaruvchisi va natijani ekranga chop etuvchi qator. Funksiyani ishlatishda unga main funksiyasidan turib murojaat etmoqdamiz va 2 ta parametrga mos bo’lgan butun qiymatlarni yuboryabmiz. 5 3 dan ayiriladi natija ekranga chop etiladi.

Yodda tuting!

Doimo funksiyaga murojaat etib, uni ishlatayotgan vaqtimizda uning parametrlar soniga teng bo’lgan qiymatlarni berib ketishimiz kerak. Hamda parametrlar turlariga mos qiymatlar berilgan bo’lishi kerak. (Ikki sonni ayirish uchun ishlatgan dasturimizga qarang)

Funksiyani berishda uning parametr turlarini ko’rsatmay ketishimiz ham mumkin. Bunda Dart kompilyatori funksiya yuborilgan qiymatlar orqali turini aniqlab oladi.

void main() {
info("uzbekdevs.uz", 2022);
}

void info(site, year) {
print("$site sayti $year-yilda ishlashni boshlagan");
}
>> uzbekdevs.uz sayti 2022-yilda ishlashni boshlagan

Lekin bu tarzda foydalanishda funksiya parametrlari turi dynamic holatda ko’rib chiqiladi. Bu esa bizning ishlashimizda xatolik keltirib chiqaradi. Quyidagi kabi :

void main() {
info(2022, "uzbekdevs.uz");
}

void info(site, year) {
print("$site sayti $year-yilda ishlashni boshlagan");
}
>> 2022 sayti uzbekdevs.uz-yilda ishlashni boshlagan

Funksiyada ayrim parametrlarni ixtiyoriy qilishimiz mumkin, ya’ni ulardan foydalanish majburiy hisoblanmaydi va xatolik yuzaga kelmaydi. Buning uchun parametrni [] – kvadrat qavs ichiga olishimiz kerak.

void main() {
info("uzbekdevs.uz");
}

void info(site, [year]) {
print("$site");
}
>> uzbekdevs.uz

Agarda ixtiyoriy parametrdan foydalanilsa funksiya ichida unga boshlang’ich qiymat berib ketish o’rinli hisoblanadi :

void main() {
info("uzbekdevs.uz");
}

void info(String site, [int year = 2022]) {
print("$site");
}
>> uzbekdevs.uz : 2022

Bir nechta ixtiyoriy parametrlar ham bo’lishi mumkin. Bu kabi vaziyatlarda ularning barchasi kvadrat qavs ichida yoziladi. Hamda biz funksiya parametrlariga boshlang’ich qiymat berib keta olamiz oldindan.

Kerakli parametrlar ichidan biz eng keraklilarini belgilab keta olamiz ya’ni bular funksiya chaqirilgan vaqtda ishlatilinishi majburiy bo’ladi. Buning uchun required kalit so’zidan foydalanamiz. Hamda barcha parametrlar {} – jingalak qavslar ichiga olib yozilishi kerak. Kalit so’z ishlatilmagan parametrlarga boshlang’ich qiymat berib ketishimiz yetarli.

void main() {
play(game: "Draughts");
}

void play({required String game, int score = 1576, String player = "my_life_coding"}) {
print("O'yin : $game \nO'yinchi : $player \nReyting : $score");
}
>> O’yin : Draughts >> O’yinchi : my_life_coding >> Reyting : 1576

Parametrlarga qiymat berishimizda parametr_nomi : qiymat tarzida murojaat etgan holatda ishlatamiz.