Junior
Dart-ში null უსაფრთხოება (null safety) რა არის?
sobes.tech AI
პასუხი AI-სგან
Null сигурност — Dart-да системա, ул null-ға бәйле эшләүҙә хата ҡылыуҙы алдан тороп тора. Компилятор кодты анализлай һәм үҙгәрмәнең null-ды һаҡлау мөмкинлеген билдәләй. Әгәр үҙгәрмә null-ға рөхсәт ителмәгән типта иғлан ителһә, ул бер ҡасан да null-ды ҡабул итмәйәсәккә гарантия бирә.
Null сигурлығының төп аспекттары:
- Яҡынса null-һыҙ тип: Төп типтар null-ды рөхсәт итмәй (non-nullable).
// int null-ға мөмкин түгел int count = 0; - Null-ға рөхсәт ителгән тип: Аңлатыу өсөн, үҙгәрмә null-ды мөмкин типта күрһәтеү өсөн
?ҡулланыла:// String? null-ды мөмкин String? name; !оператор (null-ға ышаныс): Null-ды мөмкин типтың null түгеллеген раҫлау өсөн ҡулланыла. Иғтибарлы ҡулланыу кәрәк, сөнки null булғанда исключение сыға.String? nullableName = 'Flutter'; // ! ҡулланабыҙ, nullableName null түгел тип белеп print(nullableName!.length);?оператор (null-ға һаҡлаусы оператор): Null-ды мөмкин типтағы ағзаларға йәки метод саҡырыуҙарға хәүефһеҙ рәүештә инеү өсөн ҡулланыла.?.(null-ға һаҡлаусы инеү):String? nullableString; // Әгәр nullableString null түгел икән, length саҡырыла, юҡ икән, һөҙөмтә null була int? length = nullableString?.length;??(әгәр null):String? serverName; // Әгәр serverName null түгел икән, уның ҡиммәте ҡулланыла, юҡ икән, 'Guest' String displayName = serverName ?? 'Guest';??=(әгәр null, билдәләү):String? cache; // Әгәр cache null икән, 'Loading...' тип билдәләнә cache ??= 'Loading...';
- Тәҙрә анализы (Flow Analysis): Dart-тың компиляторы кодты анализлай һәм ҡайһы бер үҙгәрмәләрҙең гарантиялы null түгеллеген билдәләй, уларҙы null-һыҙ итеп ҡулланыу мөмкинлеген бирә.
String? greeting = getGreeting(); // Компилятор белә, greeting был тикшереүҙән һуң null түгел if (greeting != null) { print(greeting.toUpperCase()); // Имин ҡулланыу мөмкин }
Нуллы сигурлыҡтың өҫтөнлөктәре:
- Хаталарҙы кәметеү: NullReferenceException (йәки шундайҙар) ваҡытында алдан тороп тора.
- Уҡыуҙы яҡшыртыу: Үҙгәрмәнең null булыуы мөмкинлеген асыҡ күрсәтә.
- Үҙгәрешлелектең арта барыуы: Компилятор ҡайһы үҙгәрмәләрҙең гарантиялы null түгеллеген белә, оптимизациялар башҡара ала.
Null сигурлығы Dart 2.12 версияһында индерелде.