Оценок пока нет Не обязательные параметры в классе Dart

Для изучения темы рассмотрим пример создания класса фигуры четырехугольника Rectangle

import 'dart:math';

class Rectangle {
  int width;
  int height;
  Point origin;
}

main() {} // На данном этапе у нас выведется ошибка инициализация переменных класса

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

Non-nullable instance field 'width' must be initialized

Чтобы исправить это, мы можем назначить переменным начальные значения или же можем написать конструктор, который автоматически инициализирует переменные, которые через нее будут передаваться и более того, мы можем указать значения по умолчанию

import 'dart:math';

class Rectangle {
  int width;
  int height;
  Point origin;
  /*
  //Без начальной инициализации и без тела
  Rectangle(this.origin, this.width, this.height);
  //Без начальной инициализации с телом
  Rectangle(this.origin, this.width, this.height){
    this.origin = origin;
    this.width = width;
    this.height = height;
  }
  */
  //С начальной инициализации и без тела
  //Этот конструктор использует необязательные именованные параметры.
  Rectangle({this.origin = const Point(0, 0), this.width = 0, this.height = 0});
}

main() {} // Теперь ок

Резюмируя можно подвести итоги

  • this.origin, this.width и this.height используют сокращенный прием для назначения переменных экземпляра внутри объявления конструктора.
  • this.origin, this.width и this.height — необязательные именованные параметры. Именованные параметры заключаются в фигурные скобки ({}).
  • Синтаксис this.origin = const Point(0, 0) определяет значение по умолчанию Point(0,0) для исходной переменной экземпляра. Указанное значение по умолчанию должно быть константой времени компиляции. Этот конструктор предоставляет значения по умолчанию для всех трех переменных экземпляра.

Пожалуйста, оцените материал

WebSofter

Web - технологии