Dart. Funksiyalar 1-qism

Dart. Funksiyalar 1-qism

Dart. Funksiyalar 1-qism

  • Dart — obyektga yo’naltirilgan til bo’lganligi tufayli, xatto funksiyalar ham obyektlardir va Function tipiga ega.
  • Bu shuni anglatadiki, funksiyalar o’zgaruvchilarga yuklanishi mumkin yoki boshqa funksiyalarga argument/parametr sifatida berilishi mumkin.
  • Funksiyalar qandaydir amallarni bajarish uchun qo’llaniladi, va uni dasturda ko’p marta chaqira olamiz.

Funksiya e’lon qilish:

     [tip] funksiya_nomi(parametrlari) {
     amallar…
     …..
     }

Dastlab funksiya qaytarishi kerak bo’lgan tip ko’rsatiladi. Agar funksiya hech qanday qiymat qaytarmasa, u holda
void tipi ishlatiladi:

    void chopetish() {
     print("salom");
    /*Bu yerda chopetish funksiyasi hech qanday natija qaytarmaydi, shunchaki ba'zi amallarni bajaradi, shuning uchun funksiya void tipiga kiradi. Buning barchasi salom satrini chop etishdir.*/
    }

Undan keyin funksiya nomi(
chopetish) keladi, uni nomlash ixtiyoriy va o’zgaruvchilarni nomlash qoidalari amal qiladi.

Funksiya nomidan keyin parametrlar qavs ichida yozish mumkin. Funksiyada parametr bo’lmasligi mumkin, u holda bo’sh qavslar yoziladi.

Undan keyin, { } qavs ichida bajariladigan amallarni o’z ichiga olgan boladi, funksiya tanasi deyiladi.

Ammo funksiya o’zi bajarilmaydi, u bajarilishi uchun uni asosiy(
main) funksiyada chakirish kerak bo’ladi.

Funksiya quyidagi shaklda chaqiriladi:

funksiya_nomi(parametilrali);

Misol:

    void main() {
     chopetish();
    }
    void chopetish() {
     print("salom");
    }

Bu yerda ekranga(consule) salom satri chiqadi.

Agar funksiya bitta ifodadan/amaldan iborat bo’lsa, unda uni quyidagicha qisqartirish mumkin:

[tipi]
funksiya_nomi(parametrlar) => bajarilishi kerak bolgan amal

Misol:

    void main() {
     chopetish();
    }

void
chopetish() => print(«salom»);

Parametrlar

  • Funksiya har qanday kerakli pozitsion parametrlarga ega bo’lishi mumkin. Ulardan keyin nomlangan parametrlar yoki ixtiyoriy pozitsion parametrlar bo’lishi mumkin (lekin ikkalasi bir vaqti emas).
  • Parametrlar bittadan kop bo’lsa vergul(,) bilan ajratib yoziladi(param1, param2,…)
  • Parametrlarni tipi bolishi kerak, agar tipi yozilmagan holatda uni tipini dartni o’zi aniqlab oladi.

Misol 2 ta sonni yig’indisini hisoblaydigan funksiya tuzamiz:

    void main() {
     sum(5, 9); //14
    }
    void sum(int x, int y){
     int c = x + y;
     print(c);
    }

sum funksiyasi 2ta parametri bor, ular x va y deb nomlanadi va int tipida e’lon qilingan.

Asosiy(main) funksiyada biz
sum() funksiyasini chaqirib unga argumentlarni beramiz.

Argumentlar — bu funksiya parametrlari uchun qiymat.

Argumentlar parametrlarga pozitsiya bo’yicha uzatiladi. Ya’ni, 1-argument 1-parametrga, 2-argument 2-parametrga va boshqalar.

Biz chaqirgan funksiyamizga,
x parametriga argument sifatida 5 raqamini berdik va y parametriga 9 raqamini berdik.

Berib yuborgan argumentlar soni parametrlar soniga mos kelishi kerak. Bundan tashqari, argument tiplari va parametr tiplari bir biriga mos kelishi kerak kerak.

Misol:

    void main() {
     personInfo("Ilyos", 23);
     personInfo("@Dart_uz", 53);
    }
    void personInfo(String name, int age){
     print("Ismi: $name");
     print("Yoshi: $age n");
    }

personInfo funksiyasi 2ta parametrni oladi. Birinchi parametr String tipidagi, ikkinchisi esa int tipidagi. Shuning uchun, funksiyani chaqirganda, unga argument sifatida avval String qiymatni, so’ngra int qiymatni berish kerak.

Funksiyani e’lon qilganimizda biz parametrlarga tip bermasdan e’lon qilishimiz mumkin. Bunda Dart tilini o’zi kelgan argumentga qarab parametrni tipini aniqlab oladi:

Misol:

    void main() {
     personInfo("Ilyos", 23);
     personInfo(53, "@Dart_uz");
    }
    void personInfo(name, age){
     print("Ismi: $name");
     print("Yoshi: $age n");
    }

dart funksiyalar 1 qism 65e4b618718af

E’tibor bering, endi
name va age parametrlari qaysi tipda bo’lishi ma’lum emas. personInfo-ni 2-chaqiriqda (50, «@Dart_uz») berib yubordik va Dart name parametrini int parametri sifatida qabul qildi, chunki unga butun son beriladik, age parametriga esa satr berdik.

Ixtiyoriy parametrlar

Biz bir nechta parametrlarni ixtiyoriy qilishimiz mumkin, ya’ni ular uchun hech qanday qiymat bermasdan ketishimiz ham mumkin. Buning uchun parametr to’rtburchaklar
[ ] ichida joylashtirish kerak. Ammo buni amalga oshirishda, parametrga hech qanday qiymat berilmaydigan holatda uchun qandaydur qiymat(default qiymat) berishimiz kerak:

    void main() {
     personInfo("Brat", 35);
     personInfo("Akrabat");
    }
    void personInfo(String name, [int age = 22]) {
     print("Name: $name");
     print("Age: $age n");
    }

Bunday holda,
age parametri ixtiyoriydir. Agar biz unga hech qanday qiymat bermasak, age 22 ga teng bo’ladi:

dart funksiyalar 1 qism 65e4b618c68bd

Ammo, agar ixtiyoriy parametr
nullable-tipini anglatsa, ya’ni null qiymatini olishi mumkin bo’lsa, u holda biz u uchun default qiymat bermasdan ketishimiz mumkin — bu holda default qiymat null bo’ladi:

dart funksiyalar 1 qism 65e4b61989120

Nomlangan parametrlar

  • Ba’zi API-lar, xususan Flutter vidjet konstruktorlari — talab qilingan bo’lsa ham, faqat nomlangan parametrlardan foydalanadilar.
  • Nomlangan parametrlar ixtiyoriy pozitsion boladi, yani parametr nomini chaqirib unga arugument berishiz mumkin shuning uchun uning pozitsiyasi ahamiyatsiz.
    void main() {
     print("uch mushketyorlar");
     pesonInfo(name: "Athos", age: 35);
     pesonInfo(age: 29, name: "Porthos");
     pesonInfo(name: "Aramis");
    }
    void pesonInfo({String name = "default qiymat", int age = 0}) {
    print("Name: $name");
    print("Age: $age n");
    }

dart funksiyalar 1 qism 65e4b61a59662

Funksiyani belgilashda parametrlar ro’yxati jingalak { } qavslar ichida yoziladi, agar uning turi nullni(nullable) qo’llab-quvvatlamasa, default qiymat berish kerak!

Funksiyani chaqirilganda parametrning
nomi ko’rsatiladi va uning qiymati ikki(:) nuqta bilan ajratiladi (name: «Athos»), biz esa parametrlarni istalgan ketma-ketlikda belgilashimiz mumkin. Masalan, ikkinchi marotaba chaqirganimizda biz avval age parametri uchun qiymatni, so’ngra name parametr uchun (personInfo(age: 29, name: «Porthos»)) qiymatni berdik.

Manba:

Umumiy Dasturlash
Dart. Funksiyalar 1-qism