Darsliklar Dart Nullability

Dart Dart Nullability

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-xavfsizliko’zgaruvchi null bo’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?.lengthism 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.