Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗dtOpObSC 26 of 113 menu
◀ ▶

Безопасный вызов у объектов в Dart

Оператор ?. обращается к полю или методу только если ссылка на объект не null. Иначе результат всего выражения - null:

class Post { String title; Post(this.title); }

Создадим объект и выведем его:

Post? post = Post("note"); Post? empty = null; print(post?.title); print(empty?.title);

У вложенного объекта поле тоже может быть пустым. Несколько ?. подряд образуют цепочку: при первом null дальнейшие шаги не выполняются:

class City { String name; City(this.name); } class Post { City? city; Post(this.city); }

Создадим объекты и выведем результат:

var withCity = Post(City("Paris")); var noCity = Post(null); print(withCity.city?.name); print(noCity.city?.name);

Метод nullable-объекта вызывают так же - с ?. перед именем метода:

class City { String name; City(this.name); String label() { return "city: $name"; } } class Post { City? city; Post(this.city); }

Создадим объект и вызовем метод:

var post = Post(null); print(post.city?.label());

Даны классы City и Post из урока. Переменная post типа Post? равна null. Выведите название города одним выражением.

Сделайте класс Profile с методом title(). Сделайте класс Account с полем profile типа Profile?. Выведите результат title() для аккаунта без профиля.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить