Dart tilida switch operatori yordamida sh branch qilishni qanday amalga oshirish mumkin?
sobes.tech AI
AIdan javob
Dartda switch operatori yordamida shaxmat qilish quyidagicha amalga oshiriladi:
void main() {
var color = 'red';
switch (color) {
case 'red':
print('Tanlangan rang qizil.');
break; // switch blokidan chiqishni ta'minlaydi
case 'blue':
print('Tanlangan rang ko'k.');
break;
case 'green':
print('Tanlangan rang yashil.');
break;
default: // Hech bir case mos kelmasa ishlaydi
print('Noma’lum rang.');
}
}
switch o'zgaruvchining (bu holda color) qiymatini casedan keyin ko'rsatilgan konstantalar bilan solishtiradi. Mos kelganda, unga bog'langan kod bajariladi. break kalit so'zi switch blokidan chiqishni ta'minlaydi. Uni o'tkazib yuborsangiz, bajarilish keyingi casega o'tadi (bu "fallthrough" deb ataladi), bu odatda istalmaydi. default ishlatiladi, agar hech bir case mos kelmasa.
Dartda, switchda faqat quyidagi ifoda turlari ishlatilishi mumkin:
int- String (
String) - Kompilyatsiya vaqtida konstantalar (
const) yoki yakuniy (final) primitivi turlaridagi o'zgaruvchilar - Enum (
enum)
Shuningdek, case (Type value) yordamida turga mos kelish mumkin:
void process(dynamic value) {
switch (value) {
case String s:
print('Qiymat string: $s');
break;
case int i when i > 0: // `when` bilan guard ishlatish
print('Musbat butun son: $i');
break;
case List _: // List turiga mos kelish, o'zgaruvchiga bog'lanmasdan
print('Qiymat ro‘yxat');
break;
default:
print('Boshqa turdagi qiymat');
}
}
void main() {
process('salom');
process(10);
process([1, 2, 3]);
process(3.14);
}
Dart 3.0da, pattern matching yangi imkoniyatlar bilan kengaytirildi:
var number = 1;
var text = switch (number) {
1 => 'bir',
2 => 'ikki',
_ => 'boshqa' // defaultga teng
};
print(text); // Natija: bir
Bu yerda, switch qiymat qaytaradigan ifoda sifatida ishlatiladi. _ operatori, har qanday qiymatga mos keladigan joker sifatida ishlaydi.