Dart Academy · Урок

Каскады с сокращением при null (?..)

Безопасная цепочка вызовов для объектов, допускающих null

Урок 2 из 413 шагов

«Каскады с сокращением при null (?..)» — бесплатный урок Dart Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Dart Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Dart Academy содержит 4 уроков всего.

Ловушка допускающего отсутствие значения

Обычный каскад для значения, которое может отсутствовать, приведёт к сбою. Вызов метода у отсутствующего значения вызывает ошибку ещё до выполнения любой строки.

Знакомство с каскадом с пропуском

Dart предоставляет безопасный вариант: каскад с пропуском при отсутствии значения, записываемый как знак вопроса, а затем две точки. Он выполняется только тогда, когда объект существует.

button?..text = 'Save'
      ..onTap = save;

Как работает пропуск

Если целевое значение отсутствует, весь каскад пропускается, а выражение просто становится отсутствующим значением. Ни сбоя, ни частично выполненной работы.

Знак нужен только у первой точки

Знак вопроса записывается только один раз — в начале каскада. В последующих строках остаются обычные две точки: Dart уже знает, что объект существует.

obj?..a()
   ..b()
   ..c();

Всё или ничего

Пропуск при отсутствии значения работает по принципу «всё или ничего»: либо выполняется каждая строка, потому что объект существует, либо не выполняется ни одна. Цепочка никогда не выполняется наполовину.

Сравнение с обычным каскадом

Обычный каскад предполагает, что объект существует. Вариант с пропуском при отсутствии значения служит защитой, когда тип допускает отсутствие объекта.

Возвращает допускающий отсутствие значения тип

Поскольку результатом может быть объект или отсутствие значения, всё выражение имеет тип, допускающий отсутствие значения. Считайте полученный результат потенциально отсутствующим.

Практический пример

Представьте конфигурацию, которой пока может не быть. Каскад с пропуском позволяет настроить её только при наличии — одной аккуратной строкой. 🛡️

settings?..theme = dark
        ..save();

Не повторяйте знак

Записывать знак вопроса в каждой строке неправильно, и Dart сообщит об ошибке. Решение о пропуске принимается один раз, в самом начале цепочки.

Хорошо сочетается с безопасностью отсутствующих значений

Каскад с пропуском соответствует подходу Dart к безопасности отсутствующих значений. Компилятор предполагает, что строки после первой точки выполняются только для существующего объекта.

Когда это использовать

Используйте каскад с пропуском, когда переменная допускает отсутствие значения и Вы хотите настроить её без дополнительной проверки вокруг каскада.

Быстрая проверка

Как правильно записать каскад с пропуском при отсутствии значения?

Итоги

Каскад с пропуском (?..) выполняет всю цепочку только при существовании объекта, пропускает всё при отсутствии значения и требует знак лишь один раз. 🎯

Можно начать бесплатно

Изучай Dart с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
30
Уроки
120

Часто задаваемые вопросы

Урок «Каскады с сокращением при null (?..)» бесплатный?

Да — полный текст урока «Каскады с сокращением при null (?..)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Dart Academy, подпишись на CoddyKit PRO. Курс Dart Academy содержит 4 уроков всего.

Чему я научусь в уроке «Каскады с сокращением при null (?..)»?

Безопасная цепочка вызовов для объектов, допускающих null Ты практикуешь Dart Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Dart Academy?

Предыдущий опыт не требуется. Dart Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Каскады с сокращением при null (?..)»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Dart Academy?

Да. Каждый урок Dart Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Оператор каскада (..)
  2. Каскады с сокращением при null (?..)
  3. Spread и spread с учётом null
  4. if и for в коллекциях
← Назад к Dart Academy