Junior
Dartта нөлөлүк коопсуздук (null safety) эмне?
sobes.tech AI
AIден жооп
Нулдуу коопсуздук — Dartтеги система, ал көмөктөшөт нулду менен байланышкан ишке ашырууда ката кетирүүнү алдын алууга. Компилятор кодду анализдеп, өзгөрмө 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 эмес деп кепилдик берет, аны null болбогондой колдонууга мүмкүндүк берет.
String? greeting = getGreeting(); // Компилятор билүүдө, greeting бул текшерүүдөн кийин null эмес if (greeting != null) { print(greeting.toUpperCase()); // Коопсуз колдонуу мүмкүн }
Нулдуу коопсуздуктун артыкчылыктары:
- Ката санын азайтуу: NullReferenceException (же окшош) ката кетирүүнү алдын алат.
- Окууну жакшыртуу: Өзгөрмө null болушу мүмкүн экенин ачык көрсөтөт.
- Өндүрүмдүүлүктү жогорулатуу: Компилятор кайсы өзгөрмөлөрдүн кепилденген null эмес экенин билгендиктен, оптимизацияларды жүргүзө алат.
Нулдуу коопсуздук Dart 2.12 версиясында киргизилген.