Dart dilində switch operatoru ilə şaxələnməni necə həyata keçirmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
Dart-da switch operatoru ilə çoxşaxəlilik aşağıdakı kimi həyata keçirilir:
void main() {
var color = 'red';
switch (color) {
case 'red':
print('Seçilən rəng qırmızıdir.');
break; // switch blokundan çıxır
case 'blue':
print('Seçilən rəng mavi.');
break;
case 'green':
print('Seçilən rəng yaşıl.');
break;
default: // Heç bir case uyğun gəlməzsə işləyir
print('Naməlum rəng.');
}
}
switch dəyişənin (bu halda color) dəyərini case-dən sonra göstərilən sabitlərlə müqayisə edir. Uyğun gələndə, ona bağlı kod icra olunur. break açar sözü switch blokundan çıxmaq üçün lazımdır. Əks halda, icra növbəti case-ə keçir (bu "fallthrough" adlanır), bu isə ümumiyyətlə arzu olunmazdır. default istifadə olunur, heç bir case uyğun gəlmədikdə.
Dart-da, switch-da yalnız aşağıdakı ifadə tipləri istifadə edilə bilər:
int- String (
String) - Kompilyasiya vaxtı sabitlər (
const) və ya son (final) primitivi tiplər - Enum (
enum)
Həmçinin, case (Type value) ilə tip uyğunluğu istifadə edilə bilər:
void process(dynamic value) {
switch (value) {
case String s:
print('Dəyər stringdir: $s');
break;
case int i when i > 0: // `when` ilə guard istifadə
print('Müsbət tam ədəd: $i');
break;
case List _: // List tipinə uyğunluq, dəyişənə bağlanmadan
print('Dəyər listdir');
break;
default:
print('Başqa tipdə dəyər');
}
}
void main() {
process('salam');
process(10);
process([1, 2, 3]);
process(3.14);
}
Dart 3.0-da, pattern matching yeni imkanlar ilə genişləndirildi:
var number = 1;
var text = switch (number) {
1 => 'bir',
2 => 'iki',
_ => 'başqa' // default ilə eynidir
};
print(text); // Nəticə: bir
Burada, switch ifadə kimi istifadə olunur və dəyər qaytarır. _ operatoru hər hansı bir dəyərə uyğun gələn jokerdir.