Sobes.tech
Junior

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.