Middle
53
questionbank

Какие возможности появились с внедрением Null-safety в Dart?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

С внедрением Null-safety в Dart появились следующие возможности:

  • Отсутствие ошибок времени выполнения, связанных с null: Компилятор гарантирует, что переменная, объявленная как non-nullable, никогда не будет иметь значения null. Это исключает ошибки типа NoSuchMethodError во время выполнения, которые ранее могли возникать при попытке вызова метода на null-значении.
  • Явное указание на возможность null: Теперь необходимо явно указывать, может ли переменная иметь значение null, добавляя ? к типу.
    dart
  • Улучшенная читаемость и предсказуемость кода: Код становится более понятным, так как сразу видно, какие переменные гарантированно не являются null.
  • Оптимизация производительности: Компилятор может использовать информацию о nullability для более эффективной компиляции кода.
  • Операторы для безопасной работы с null: Появились новые операторы:
    • ?. (null-aware access): Вызывает метод или получает свойство, только если объект не null.
      dart
    • ?? (null-aware assignment): Присваивает значение только если переменная равна null.
      dart
    • ??= (null-aware assignment): Присваивает значение переменной только если она равна null.
      dart
    • ! (non-null assertion): Утверждает, что значение не null. Следует использовать с осторожностью, когда разработчик уверен, что значение не null, но компилятор не может это гарантировать.
      dart
  • Тип late: Позволяет отложить инициализацию non-nullable переменной до первого обращения.
    dart
  • Тип required: Используется в конструкторах и функциях для указания обязательных параметров. В контексте null-safety, required делает параметры non-nullable по умолчанию (если тип не помечен ?).
    dart