Enumlar (enumerations) — cheklangan, nomlangan doimiylar to’plamini yaratadigan maxsus tur. Hafta kunlari, foydalanuvchi holati, buyurtma bosqichi — aniq, sanab o’tiladigan variantlar uchun enum ideal. U kodni o’qiladigan qiladi va noto’g’ri qiymatlarning oldini oladi.
Enum — aniq, cheklangan qiymatlar to’plamini ifodalaydigan tur. Dart’da u
enumkalit so’zi bilan e’lon qilinadi.
Enum e’lon qilish
Enum enum bilan e’lon qilinadi va uning qiymatlari sanab o’tiladi:
enum Holat { faol, passiv, bloklangan }
void main() {
var foydalanuvchi = Holat.faol;
print(foydalanuvchi);
print(foydalanuvchi.name);
}
Holat.faol
faol
enum Holat { ... } — uch qiymatli enum. Holat.faol — aniq qiymat. .name esa uning matn nomini (faol) beradi. Endi holatni son o’rniga mazmunli nom bilan ifodalaymiz.
Enum va switch
Enum switch bilan juda yaxshi ishlaydi — har bir holat uchun aniq javob beriladi:
enum Holat { faol, passiv, bloklangan }
void main() {
var h = Holat.bloklangan;
switch (h) {
case Holat.faol:
print("Foydalanuvchi faol");
break;
case Holat.passiv:
print("Foydalanuvchi passiv");
break;
case Holat.bloklangan:
print("Foydalanuvchi bloklangan");
break;
}
}
Foydalanuvchi bloklangan
switch har bir enum qiymati uchun aniq javob berdi. Enum va switch birga ishlatilganda kod juda tushunarli bo’ladi.
Enum ning afzalligi
Enum va oddiy sonlarni solishtiramiz:
| Yondashuv | Kod | O’qilishi |
|---|---|---|
| Oddiy son | if (holat == 2) |
tushunarsiz |
| Enum | if (holat == Holat.bloklangan) |
ravshan |
Enum kodni o’z-o’zini hujjatlaydigan qiladi va faqat ruxsat etilgan qiymatlarni beradi — noto’g’ri son kiritib bo’lmaydi.
Barcha qiymatlarni olish
Enum ning barcha qiymatlarini .values orqali olish mumkin:
enum Kun { dushanba, seshanba, chorshanba }
void main() {
for (var kun in Kun.values) {
print(kun.name);
}
}
dushanba
seshanba
chorshanba
Kun.values barcha enum qiymatlarini ro’yxat sifatida berdi, biz uni sikl bilan aylanib chiqdik. Bu barcha variantlarni ko’rsatishda foydali.
Xulosa
Bu bo’limda enum e’lon qilish, switch bilan ishlatish, uning afzalligi va .values bilan barcha qiymatlarni olishni ko’rib chiqdik. Enum aniq, cheklangan variantlar uchun ideal. Keyingi darsda asinxronizatsiya va Future ga o’tamiz.