Nullability (null-xavfsizlik) — Dart’ning eng muhim zamonaviy xususiyatlaridan biri. null — “qiymat yo’q” degani, va u dasturlashda eng ko’p xatolarga sabab bo’ladigan tushuncha. Dart null-xavfsizlik tizimi orqali bu xatolarni kompilyatsiya bosqichidayoq oldini oladi. Bu Dart’ni ishonchli qiladigan kuchli mexanizmdir.
Null-xavfsizlik — o’zgaruvchi
nullbo’lishi mumkinmi yoki yo’qmi ekanini turda aniq belgilaydigan tizim.?bilan belgilangan tur null bo’lishi mumkin, belgilanmagani esa yo’q.
Null bo’lmaydigan va null bo’ladigan turlar
Standart holatda Dart o’zgaruvchisi null bo’la olmaydi. null bo’lishiga ruxsat berish uchun tur oxiriga ? qo’yiladi:
void main() {
String ism = "Farrux"; // null bo'la olmaydi
String? familiya; // null bo'lishi mumkin
print(ism);
print(familiya);
}
Farrux
null
String ism — null bo’la olmaydi, unga null bersangiz kompilyator xato beradi. String? familiya — ? tufayli null bo’lishi mumkin, shuning uchun qiymatsiz null chiqdi.
Null bo’ladigan qiymat bilan ishlash
Null bo’lishi mumkin qiymatga to’g’ridan-to’g’ri murojaat qilib bo’lmaydi — avval tekshirish kerak. ?. operatori bunga yordam beradi:
void main() {
String? ism;
print(ism?.length); // ism null bo'lsa, null qaytaradi
ism = "UzbekDevs";
print(ism?.length);
}
null
9
ism?.length — ism null bo’lsa xato bermay null qaytaradi, aks holda uzunlikni beradi. Bu “null xatosi”ning oldini oladi.
Null operatorlari
Dart null bilan ishlash uchun bir necha operator beradi. Ularni jadvalda ko’ramiz:
| Operator | Vazifasi |
|---|---|
? |
tur null bo’lishi mumkin |
?. |
null bo’lmasa murojaat |
?? |
null bo’lsa muqobil qiymat |
??= |
null bo’lsa o’zlashtirish |
! |
“null emas” deb kafolat berish |
?? va ! operatorlari
?? null bo’lsa muqobil beradi, ! esa “bu aniq null emas” deb kompilyatorga kafolat beradi:
void main() {
String? ism;
String natija = ism ?? "mehmon"; // null bo'lsa "mehmon"
print(natija);
String? familiya = "Sherkulov";
print(familiya!.toUpperCase()); // ! — aniq null emas
}
mehmon
SHERKULOV
ism ?? "mehmon" — ism null bo’lgani uchun “mehmon” ni berdi. familiya! — biz kompilyatorga “bu aniq null emas” deb kafolat berdik, shuning uchun metodni chaqira oldik. Diqqat: ! ni faqat qiymat aniq null emasligiga ishonch bo’lganda ishlating.
Xulosa
Bu bo’limda null-xavfsizlikni, ? bilan null bo’ladigan turni, ?., ??, ! operatorlarini ko’rib chiqdik. Null-xavfsizlik Dart’da xatolarni kompilyatsiya bosqichida oldini oladi. Keyingi darsda ro’yxatlar (Lists) ga o’tamiz.