Tanlash operatorida boshqarilish o'zgaruvchiga mos ravishda qiymatlarga uzatiladi va mos qiymatga yetib kelganda kerakli ifoda yoki kod bloki ishga tushadi. Buning uchun switch kalit so’zidan foydalaniladi.
Switch instruksiya sintaksisi quyidagi ko’rinishda bo’ladi:
switch (o'zgaruvchi) {
case qiymat1:
// kod
break;
case qiymat2:
// kod
break;
default:
// kod
}
- Switch ifodasi faqatgina bir marotaba ishlatiladi
- O’zgaruvchi qiymati caselardagi har bir qiymat bilan solishtiriladi
- Mos kelganda ifoda yoki kod bloki bajariladi
- break – yakunlash kalit so’zi esa tanlash operatori ishini to’xtadi
- default – kalit so’zi ya’ni bu qism qiymat hech qaysi case lar bilan mos tushmagan taqdirdagina ishlaydi.
case lar sonini nechta qo’llashingiz siz turgan muammo yuzasidan kelib chiqib qo’llaniladi. Hamda case larda o’zgarmas qiymatlar berib boriladi.
Quyidagi if-else instruksiyasi orqali berilgan kodni endi tanlash operatori orqali yozib ko’raylik.
void main() {
var rang = "sariq";
var natija;
if (rang == "yashil") {
natija = "Yo'ldan o'tishingiz mumkin";
} else if (rang == "sariq") {
natija = "Iltimos kuting va tayyor turing";
} else {
natija = "Kutib turing yashil yonishini";
}
print(natija);
}
Natija esa quyidagicha :
void main() {
var rang = "sariq";
var natija;
switch (rang) {
case "yashil":
natija = "Yo'ldan o'tishingiz mumkin";
break;
case "sariq":
natija = "Iltimos kuting va tayyor turing";
break;
default:
natija = "Kutib turing yashil yonishini";
}
print(natija);
}
switch va if-else instruksiyalarining ham o’ziga xos kerakli joylarda qo’llanish tartibi mavjud. Qiymatlarga tengligi tekshirib chiqilishi kerak bo’lganda asosan tanlash operatoridan foydalangan ma’qul. Case larda berib ketilayotgan break kalit so’zini yozish yodimizdan chiqib qolsa yoki yozmasdan ketsak nima bo’ladi ? Bu savolga javob quyidagicha : bu kalit so’z tanlash operatori ishini to’xtatish uchun kerak. Bo’lmasa to’xtamasdan barcha case lar bilan solishtirib chiqadi, lekin hozirda ayrim kamchiliklarga tuzatish kiritilibdi ya’ni Dart 3.0 versiyasidan boshlab break kalit so’zini qo’llash ixtiyoriy hisoblanadi. Bir xil qiymatli caselar yozib ketgan bo’lsangiz, faqatgina birinchisidagi kod blokini bajaradi.
Bir nechta caselar faqat bitta kod blokini bajarishi uchun quyidagi usul qo’llaniladi :
void main() {
var davlat = "O'zbekiston";
switch (davlat) {
case "Tojikiston":
case "O'zbekiston":
case "Qozog'iston":
case "Turkmanistan":
case "Qirg'iziston":
print("Markaziy Osiyo davlati");
case "Armaniston":
case "Baxrayn":
case "BAA":
print("G'arbiy Osiyo davlati");
default:
print("Kechirasiz, ma'lumot topa olmadik!");
}
}
case lar ketma-ket yoziladi va bitta kod blokiga bog’lanadi.
continue kalit so’zidan case ichida qayerga borishi kerakligini belgilash uchun foydalanishingiz mumkin.
void main() {
var son = 2;
switch (son) {
N1: case 1:
son++;
case 2:
son--;
continue N1;
default:
son = 0;
}
print(son);
}
Hozir kodda son o’zgaruvchisi qiymati 2 ga teng va tanlash operatorida case 2 ga yetib borganda kod bloki ishlaydi va qiymati 1 ga kamayib, N1 nomi bo’yicha yo’nalish oladi va o’sha joyga boradi. Endi son o’zgaruvchisi qiymati 1 ga teng bo’lgani uchun case 1 bajariladi.Uning qiymati postfiks inkrement orqali 1 ga ortadi va tanlash operatori yakunlanadi.
continue yorliq – tarzida beriladi, yorliq siz bergan nom. Endi qayerga borishi esa yorliq : orqali ko’rsatib ketiladi. Xuddi misolda ko’rganingiz singari.
Tanlash operatori ichida ham yana tanlash operatoridan foydalanishimiz mumkin. Bu holatda ichma-ich bo’lib qoladi. Masalan, har bir oyni yozib chiqib caselarga uning ichida ham switch qo’llagan holatda kunlarini belgilab, shu kunlardagi do’stlaringiz tug’ilgan kunini yozib chiqish imkoningiz mavjud. Bunda tug’ilgan oy va kun kiritilganda qaysi do’stingiz tug’ilgan kuni ekanligini chiqarib beradi.