Основы 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 - Выведите обе переменные снова с ТОЧНО таким же форматом, как раньше
Ваш вывод должен точно соответствовать формату, показанному выше.
Попробуйте сами
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Проект: Простой калькулятор
НастройкаОбъявление числаПотренируйтесь самостоятельно: Онлайн-компилятор Dart