Boshqaruv oqadi va ilmoq
Shartli ifodalarni yaratish uchun Dart o'zgaruvchilari va operatorlaridan qanday foydalanishni ko'rib chiqdik. Kimga ish bilan o'zgaruvchilar va operatorlar, biz odatda kerak uchun amalga oshirish biroz boshqaruv oqim bizning Dart kodimizni mantiqimizda mos yo'nalishga ega qilish uchun.
Dart beradi biroz boshqaruv oqim sintaksis bu hisoblanadi juda o'xshash uchun boshqa dasturlash tillari; u quyidagicha:
agar-boshqa kalit / quti
Loop bilan uchun , esa , va qil - vaqt
tanaffus va davom eting ta'kidlaydi
Istisnolar bilan harakat qilib ko'ring/qo'lga oling va tashlash
Ushbu boshqaruv oqimlari uchun Dart sintaksisi zarur bo'lgan muhim xususiyatga ega emas uchun bo'l ko'rib chiqildi ichida tafsilot. Iltimos murojaat qiling uchun the rasmiy til sayohat yoqilgan boshqaruv oqadi Tafsilotlar uchun : https : // dart. dev/ gidlar/ til/ til -turi#control- flow- bayonotlari .
Funksiyalar
In Dart, Funktsiya hisoblanadi a turi, kabi String yoki son . Bu anglatadi bu ular mumkin shuningdek bo'l maydonlarga yoki mahalliy o'zgaruvchilarga tayinlangan yoki boshqa funktsiyalarga parametr sifatida uzatilgan; quyidagi misolni ko'rib chiqing:
String sayHello() {
return "Hello world!";
}
void main() {
var sayHelloFunction = sayHello; // assigning the function
// to the variable
print(sayHelloFunction()); // prints Hello world!
}
In bu misol, the sayHelloFunction o'zgaruvchan do'konlar the salom ayt funktsiyasi o'zi va uni chaqirmaydi. Keyinchalik () qo'shish orqali uni chaqirishimiz mumkin. o'zgaruvchi nomiga xuddi funksiya bo'lganidek.
Funktsiyani qaytarish turi ham o'tkazib yuborilishi mumkin, shuning uchun Dart analizatori turidan xulosa chiqaradi qaytish bayonot. Agar yo'q qaytish bayonot hisoblanadi taqdim etilgan, bu taxmin qiladi qaytish null . Agar siz unga qaytarilmasligini aytmoqchi bo'lsangiz, uni bekor deb belgilashingiz kerak :
sayHello() { // The return type stills String
return "Hello world!";
}
Boshqa yo'l uchun yozish bu funktsiyasi hisoblanadi tomonidan foydalanish the stenografiya sintaksis, () => expression; , bu ham Ok deb ataladi funktsiyasi yoki Lambda funktsiyasi:
sayHello() => "Hello world!";
Siz mumkin emas yozish bayonotlar ichida joy ning ifoda , lekin siz mumkin foydalanish the allaqachon ma'lum shartli ifodalar (ya'ni, ?: yoki ?? ).
Funktsiya parametrlari
A funktsiyasi mumkin bor ikki turlari ning parametrlar: ixtiyoriy va talab qilinadi . Bundan tashqari, kabi ko'pchilik bilan zamonaviy dasturlash tillar, bular parametrlari mumkin bo'l nomli yoqilgan qo'ng'iroq qiling uchun qilish kodni yanada o'qilishi mumkin.
The parametr turi qilmaydi kerak uchun bo'l belgilangan; ichida bu hol, the parametr dinamik turini qabul qiladi :
Kerakli parametrlar : Parametrlar bilan ushbu oddiy funktsiya ta'rifiga erishildi tomonidan shunchaki aniqlash ular ichida the bir xil yo'l kabi eng boshqa tillar. In quyidagi funksiya, ikkalasining nomi va qo'shimcha xabar zarur parametrlardir, shuning uchun qo'ng'iroq qiluvchi uni chaqirganda ularni o'tkazishi kerak :
dey Salom(String ism, String qo'shimcha xabar) => "Salom $ism.
$additionalMessage";
Ixtiyoriy pozitsion parametrlar : Ba'zan barcha parametrlar funksiya uchun majburiy bo'lishi shart emas, shuning uchun u ixtiyoriy parametrlarni ham belgilashi mumkin. Ixtiyoriy pozitsion parametrni aniqlash [ yordamida amalga oshiriladi. ] sintaksis. Majburiy emas pozitsion parametrlari kerak ket keyin hammasi ning the talab qilinadi parametrlar, quyidagicha :
dey Salom(String ism, [String qo'shimcha xabar]) => "Salom $ism.
$additionalMessage";
Agar siz yugur the Oldingi kod holda o'tish a qiymat uchun qo'shimchaMessage , siz bo'ladi qarang null da the oxiri ning the qaytdi ip. Qachon the ixtiyoriy parametr belgilanmagan, standart qiymat null ular uchun standart qiymatlarni belgilamaguningizcha :
bekor asosiy() {
chop etish(ayting Salom('mening do'stim')); // Salom mening do'st. null chop etish (ayting Salom('mening do'stim', "Qanday bor siz?"));
// chop etadi Salom mening do'st. Qanday bor siz?
}
Kimga aniqlash a sukut bo'yicha qiymat uchun a parametr, siz qo'shish bu keyin the = belgisi to'g'ri keyin parametr ta'rifi:
dey Salom(String ism, [String qo'shimcha xabar = “Xush kelibsiz uchun Dart Funktsiyalar!" ]) => "Salom $ism. $additionalMessage";
Yo'q belgilash the parametr natijalar ichida bosib chiqarish the sukut bo'yicha xabar, kabi quyidagicha:
bekor asosiy() {
var Salom = Salom ayting(mening do'st'); chop etish (salom);
}
Majburiy emas nomli parametrlari : The ixtiyoriy nomli parametr ta'rifi hisoblanadi tomonidan qilingan foydalanish the { } sintaksis. Ular kerak ham bor keyin hammasi ning talab qilinadi parametrlar:
dey Salom(String ism, {String qo'shimcha xabar}) => "Salom $ism.
$additionalMessage";
The qo'ng'iroq qiluvchi kerak belgilang the nomi ning the ixtiyoriy nomli parametr, kabi quyidagicha:
bekor asosiy() { chop etish(ayting Salom('mening do'stim'));
// bu kadrlar ixtiyoriy, nashrlar: Salom mening do'st. null
chop etish (ayting Salom('mening do'stim', qo'shimcha xabar: "Qanday bor siz?"));
// nashrlar: Salom mening do'st. Qanday bor siz?
}
Nomlangan parametrlari bor emas eksklyuziv uchun ixtiyoriy parametrlar; uchun qilish a parametr talab qilinadigan parametr bo'lsa, uni @required bilan belgilashingiz mumkin :
dey Salom(String ism, {@majburiy String qo'shimcha xabar}) => "Salom $ism. $additionalMessage";
Yana, the qo'ng'iroq qiluvchi kerak belgilang the nomi ning the talab qilinadi nomli parametr:
bekor asosiy() {
var Salom = Salom ayting(mening do'stim', qo'shimcha xabar: "Qanday qilib bor siz?");
// emas belgilash the parametr nomi bo'ladi natija ichida a ishora yoqilgan
// the muharrir, yoki tomonidan yugurish dartanalizer qo'lda yoqilgan konsol
chop etish (salom); // chop etadi "Salom mening do'st. Qanday bor sen?"
}
Anonim funktsiyalar : Dart funksiyalari ob'ektlar bo'lib, ular parametr sifatida uzatilishi mumkin uchun boshqa funktsiyalari. Biz allaqachon ko'rgan bu qachon foydalanish the har biriga() takrorlanadigan funksiya.
Anonim funksiya - nomi bo'lmagan funksiya; u lambda deb ham ataladi yoki yopilish . The har biriga() funktsiyasi hisoblanadi a yaxshi misol ning bu; biz kerak ro'yxatning har biri bilan bajariladigan funksiyani unga o'tkazish yig'ish elementlari:
bekor asosiy() {
var ro'yxati = [1, 2, 3, 4];
list.forEach((raqam) => chop etish ('salom $raqam'));
}
Bizning anonim funktsiyasi oladi a element lekin qiladi emas belgilang a turi; keyin, bu faqat parametr tomonidan olingan qiymatni chop etadi.
Leksik qamrovi : The Dart qamrovi hisoblanadi belgilangan tomonidan the tartib ning the kod foydalanish ko'plab dasturlash tillari kabi jingalak qavslar; ichki funktsiyalar o'zgaruvchilarga global darajagacha kirishi mumkin:
globalFunction() {
chop etish ("global/yuqori darajali funktsiya");
}
simpleFunction() { chop etish ("oddiy funktsiya"); globalFunction() {
chop etish ("Yo'q haqiqatan ham global");
}
globalFunction();
}
asosiy() { simpleFunction();
globalFunction();
}
Agar siz Imtihon the Oldingi kod, globalFunktsiya funktsiyasi dan oddiy funktsiya global versiya o'rniga ishlatiladi, chunki u o'z doirasi bo'yicha mahalliy sifatida belgilanadi.
Asosan _ funktsiya, aksincha, globalFunction global versiyasi funktsiyasi ishlatiladi, chunki, ichida bu qamrovi, the ichki globalFunktsiya funktsiyasi dan oddiy funktsiya hisoblanadi aniqlanmagan .
Do'stlaringiz bilan baham: |