Junior
Ce este siguranța nulă (null safety) în Dart?
sobes.tech AI
Răspuns de la AI
Securitatea nul este un sistem în Dart care ajută la prevenirea erorilor în timpul execuției legate de dereferențierea null. Compilatorul analizează codul și determină dacă o variabilă poate conține o valoare null. Dacă o variabilă este declarată ca nepermisă pentru null, compilatorul garantează că nu i se va atribui niciodată null.
Aspecte principale ale securității null:
- Tip implicit non-null: În mod implicit, tipurile nu permit null (non-nullable).
// int nu poate fi null int count = 0; - Tip permisiv pentru null: Pentru a indica explicit că o variabilă poate fi null, se folosește semnul întrebării
?:// String? poate fi null String? name; - Operatorul
!(afirmarea non-null): Se folosește pentru a afirma că o expresie permisivă pentru null nu este null. Trebuie folosit cu precauție, deoarece dacă este null, aruncă o excepție.String? nullableName = 'Flutter'; // Folosim !, știind că nullableName nu este null în acest context print(nullableName!.length); - Operatorul
?(operatori null-aware): Se folosește pentru acces sigur la membri sau apeluri de metode pe expresii permisive pentru null.?.(acces sigur pentru null):String? nullableString; // Dacă nullableString nu este null, se va apela length, altfel rezultatul va fi null int? length = nullableString?.length;??(dacă null):String? serverName; // Dacă serverName nu este null, se folosește valoarea sa, altfel 'Guest' String displayName = serverName ?? 'Guest';??=(dacă null, atribuie):String? cache; // Dacă cache este null, i se atribuie 'Loading...' cache ??= 'Loading...';
- Analiza fluxului: Compilatorul Dart analizează codul și determină când o variabilă permisivă pentru null nu este null într-o anumită parte a codului, permițându-i să fie utilizată ca non-null.
String? greeting = getGreeting(); // Compilatorul știe că greeting nu este null după această verificare if (greeting != null) { print(greeting.toUpperCase()); // Poate fi utilizat în siguranță toUpperCase() }
Avantajele securității null:
- Reducerea erorilor: Previne NullReferenceException (sau altele similare) în timpul execuției.
- Citire mai bună: Indică explicit dacă o variabilă poate fi null.
- Performanță crescută: Compilatorul poate face optimizări știind care variabile nu sunt garantat null.
Securitatea null a fost introdusă în Dart 2.12.