Основы null-безопасности
Часть раздела Основы путешествия по Dart на Coddy — урок 14 из 94.
Null safety помогает предотвратить неожиданные сбои приложения, контролируя, какие переменные могут быть пустыми (null).
По умолчанию переменные должны содержать значение:
void main() {
String name = 'Dart';
print(name); // Outputs: Dart
// This would cause problems:
// name = null; // Not allowed
}Добавьте ? после типа, чтобы разрешить null-значения:
void main() {
String? name = 'Dart';
print(name); // Выводит: Dart
// Теперь мы можем присвоить null
name = null;
print(name); // Выводит: null
}Вы можете объявлять nullable-переменные любого типа:
void main() {
int? age; // No initial value, defaults to null
double? price = 19.99;
bool? isAvailable = true;
print(age); // Outputs: null
print(price); // Outputs: 19.99
print(isAvailable); // Outputs: true
// We can change any of these to null
price = null;
isAvailable = null;
}
Null-безопасность помогает защитить ваше приложение от неожиданных сбоев, которые возникают, когда ваш код пытается использовать значения null в операциях.
Задание
НовичокСоздайте программу на Dart, которая демонстрирует базовую null-безопасность с использованием оператора ?:
- Объявите переменную типа String с именем
usernameи установите ей значениеnullс использованием оператора null-безопасности?(String?) - Объявите переменную типа int с именем
userAgeи установите ей значениеnullс использованием оператора null-безопасности - Выведите обе переменные с метками в ТОЧНО следующем формате:
Username: null
User age: nullЗатем:
- Присвойте значение
"DartLearner"переменнойusername - Присвойте значение
25переменнойuserAge - Выведите обе переменные снова с ТОЧНО таким же форматом, как раньше
Ваш вывод должен точно соответствовать формату, показанному выше.
Шпаргалка
По умолчанию переменные Dart не могут быть null. Добавьте ? после типа, чтобы разрешить значения null:
// Недопускающий null (по умолчанию)
String name = 'Dart';
// Допускающий null с ?
String? name = 'Dart';
name = null; // Теперь разрешеноВы можете объявлять переменные, допускающие null, любого типа:
int? age; // По умолчанию null
double? price = 19.99;
bool? isAvailable = true;
// Все могут быть установлены в null
price = null;
isAvailable = null;Попробуйте сами
void main() {
// Объявите здесь ваши nullable переменные
String? username = ?;
int? userAge = ?;
// Вывести начальные значения с метками
print("Username: " + username.toString());
print("User age: " + userAge.toString());
// Присвойте новые значения переменным
username = ?;
userAge = ?;
// Вывести обновленные значения с теми же метками
print("Username: " + username.toString());
print("User age: " + userAge.toString());
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы, часть 2
Операторы сравненияЛогический ANDЛогический ORЛогический NOTОператоры проверки типаПовторение - Сравнения7Работа со строками
Конкатенация строкИнтерполяция строкМногострочные строкиСвойства строкОсновные методы строк10Коллекции - Основы словарей
Что такое словари?Создание словаряДоступ к значениям по ключуПары ключ-значениеПолучение размера словаряПолучение ключейПолучение значенийПроверка существования ключа2Переменные и основные типы данных
Что такое переменные?СтрокиЦелые числа (int)Вещественные числа (double)Булевы значения (bool)Вывод типов с 'var'Финальные переменныеКонстантные переменныеСоглашения об именованииОсновы null-безопасностиПовторение - Объявление переменных8Поток управления - Циклы
Цикл 'for'Цикл 'while'Цикл 'do-while'Использование 'break' в циклахИспользование 'continue' в циклахИтог - Повторение кода3Операторы. Часть 1
Арифметические операторыЦелочисленное делениеОператор модуляИнкремент и декрементСокращённые присваиванияИтог - Простые вычисления6Управление потоком - Принятие решений
Оператор 'if'Оператор 'else'Оператор 'else if'Повторение - Простые решенияВложенные операторы 'if'Оператор 'switch'9Коллекции - Основы списков
Что такое списки?Создание спискаДоступ по индексуПолучение длины спискаДобавление элементовУдаление элементовПроверка, пуст ли списокИтерация по списку12Расширенные функции
Необязательные позиционные параметрыИменованные параметрыОбязательные именованные параметрыЗначения параметров по умолчаниюПовторение - Параметры функций15Проект: Простой калькулятор
НастройкаОбъявление числа