Junior
Dartda null xavfsizligi (null safety) nima?
sobes.tech AI
AIdan javob
Null xavfsizligi Dartda null bilan bog'liq xatolarni oldini olishga yordam beradigan tizimdir. Kompilyator kodni tahlil qiladi va o'zgaruvchi null qiymat tutishi mumkinligini aniqlaydi. Agar o'zgaruvchi nullni qabul qilmaydigan tarzda e'lon qilingan bo'lsa, kompilyator unga hech qachon null tayinlanmasligini kafolatlaydi.
Null xavfsizligining asosiy jihatlari:
- No-null tur: Standart tarzda, turlar nullni qabul qilmaydi (non-nullable).
// int null bo'lishi mumkin emas int count = 0; - Nullga ruxsat beradigan tur: Aniq ravishda o'zgaruvchining null bo'lishi mumkinligini ko'rsatish uchun
?belgisidan foydalaniladi:// String? null bo'lishi mumkin String? name; !operatori (null bo'lmagan tasdiqlash): Nullga ruxsat beradigan ifoda null emasligini tasdiqlash uchun ishlatiladi. Ehtiyot bo'lish kerak, chunki null bo'lsa, xato chiqaradi.String? nullableName = 'Flutter'; // nullableName null emasligini bilamiz va ! ishlatamiz print(nullableName!.length);?operatori (null-aware operatorlar): Nullga ruxsat beradigan ifodalarga xavfsiz kirish yoki metodlarni chaqirish uchun ishlatiladi.?.(null-aware kirish):String? nullableString; // Agar nullableString null bo'lmasa, length chaqiriladi, aks holda natija null bo'ladi int? length = nullableString?.length;??(null bo'lsa):String? serverName; // Agar serverName null bo'lmasa, uning qiymati ishlatiladi, aks holda 'Guest' String displayName = serverName ?? 'Guest';??=(null bo'lsa, tayinlash):String? cache; // Agar cache null bo'lsa, unga 'Loading...' tayinlanadi cache ??= 'Loading...';
- Flux tahlili: Dart kompilyatori kodni tahlil qiladi va qachon nullga ruxsat beradigan o'zgaruvchi aniq bir qismda null emasligini aniqlaydi, bu esa uni null bo'lmagan sifatida ishlatishga imkon beradi.
String? greeting = getGreeting(); // Kompilyator bu tekshiruvdan so'ng greeting null emasligini biladi if (greeting != null) { print(greeting.toUpperCase()); // xavfsiz tarzda toUpperCase() ishlatish mumkin }
Null xavfsizligining afzalliklari:
- Xatolarni kamaytirish: Runtimeda NullReferenceException (yoki shunga o'xshash) oldini oladi.
- O'qilishi yaxshilanadi: O'zgaruvchining null bo'lishi mumkinligini aniq ko'rsatadi.
- Ishlash samaradorligi: Kompilyator qaysi o'zgaruvchilar garantiyalab null emasligini bilib, optimallashtirishlar qilishi mumkin.
Null xavfsizligi Dart 2.12 versiyasida kiritildi.