Junior
Dart-da null təhlükəsizliyi (null safety) nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Null təhlükəsizliyi Dartda null ilə əlaqəli səhvlərin qarşısını almağa kömək edən bir sistemdir. Tərtibçi kodu analiz edir və dəyişənin null dəyər tutub tutmayacağını müəyyən edir. Əgər dəyişən null icazə verən kimi elan olunubsa, tərtibçi ona heç vaxt null təyin olunmayacağını təmin edir.
Null təhlükəsizliyinin əsas aspektləri:
- İmplicit non-null tip: Əsasən, tiplər nulla icazə vermir (non-nullable).
// int null ola bilməz int count = 0; - Null icazə verən tip: Dəyişənin null ola biləcəyini açıq şəkildə göstərmək üçün
?işarəsindən istifadə olunur:// String? null ola bilər String? name; - Operator
!(null olmayan təsdiq): Null icazə verən ifadənin null olmadığını təsdiqləmək üçün istifadə olunur. Diqqətli istifadə edilməlidir, çünki null olarsa, istisna atılır.String? nullableName = 'Flutter'; // nullableName-in null olmadığını bilirik və ! istifadə edirik print(nullableName!.length); - Operator
?(null-aware operatorlar): Null icazə verən ifadələrə təhlükəsiz giriş və ya metod çağırışları üçün istifadə olunur.?.(null-aware giriş):String? nullableString; // Əgər nullableString null deyilsə, length çağırılır, yoxsa nəticə null olur int? length = nullableString?.length;??(null olarsa):String? serverName; // Əgər serverName null deyilsə, onun dəyəri istifadə olunur, yoxsa 'Guest' String displayName = serverName ?? 'Guest';??=(null olarsa, təyin et):String? cache; // Əgər cache null olarsa, ona 'Loading...' təyin edilir cache ??= 'Loading...';
- Axın analizi: Dart tərtibçisi kodu analiz edir və müəyyən edir ki, null icazə verən dəyişən müəyyən bir kod hissəsində null deyil, ona görə də onu null olmayan kimi istifadə etmək olar.
String? greeting = getGreeting(); // Tərtibçi bu yoxlamadan sonra greeting-in null olmadığını bilir if (greeting != null) { print(greeting.toUpperCase()); // Təhlükəsiz şəkildə toUpperCase() istifadə edilə bilər }
Null təhlükəsizliyinin üstünlükləri:
- Səhvlərin azaldılması: Runtime zamanı NullReferenceException (və ya oxşar) qarşısını alır.
- Oxuma asanlığı: Dəyişənin null ola biləcəyini açıq şəkildə göstərir.
- İş performansının artırılması: Tərtibçi hansı dəyişənlərin garantiylə null olmadığını bilərək optimizasiyalar edə bilər.
Null təhlükəsizliyi Dart 2.12-də təqdim olunub.