Junior
Šta je null sigurnost (null safety) u Dart-u?
sobes.tech АИ
Одговор од АИ
Nultiva sigurnost je sistem u Dart-u koji pomaže u sprečavanju grešaka tokom izvršavanja povezanim sa dereferenciranjem null. Kompajler analizira kod i određuje da li promenljiva može sadržavati null vrednost. Ako je promenljiva deklarisana kao ne dopuštajuća null, kompajler garantuje da joj nikada neće biti dodeljena null vrednost.
Glavni aspekti nulte sigurnosti:
- Nejasan tip bez null: Podrazumevano, tipovi ne dopuštaju null (non-nullable).
// int ne može biti null int count = 0; - Tip koji dopušta null: Za eksplicitno označavanje da promenljiva može biti null, koristi se znak
?:// String? može biti null String? name; - Operator
!(non-null assertion): Koristi se za potvrdu da izraz koji dopušta null nije null. Treba ga koristiti oprezno, jer u slučaju null baca izuzetak.String? nullableName = 'Flutter'; // Koristimo !, znajući da nullableName nije null u ovom kontekstu print(nullableName!.length); - Operator
?(null-aware operatori): Koristi se za siguran pristup članovima ili pozivima metoda na izrazima koji dopuštaju null.?.(null-aware pristup):String? nullableString; // Ako nullableString nije null, biće pozvan length, inače će rezultat biti null int? length = nullableString?.length;??(ako null):String? serverName; // Ako serverName nije null, koristi se njegova vrednost, inače 'Guest' String displayName = serverName ?? 'Guest';??=(ako null, dodeljivanje):String? cache; // Ako cache je null, dodeljuje se 'Loading...' cache ??= 'Loading...';
- Analiza toka (Flow Analysis): Kompajler Dart analizira kod i određuje kada promenljiva koja dopušta null garantovano nije null u određenom delu koda, omogućavajući njeno korišćenje kao ne dopuštajuće null.
String? greeting = getGreeting(); // Kompajler zna da greeting nije null nakon ove provere if (greeting != null) { print(greeting.toUpperCase()); // Može sigurno koristiti toUpperCase() }
Prednosti nulte sigurnosti:
- Smanjenje grešaka: Sprečava NullReferenceException (ili slične) tokom izvršavanja.
- Poboljšana čitljivost: Izričito ukazuje da li promenljiva može biti null.
- Povećana performansa: Kompajler može vršiti optimizacije znajući koje promenljive su garantovano ne null.
Nultiva sigurnost uvedena je u Dart 2.12.