Stati c конструктор в дартс - PullRequest
       23

Stati c конструктор в дартс

0 голосов
/ 19 января 2020

Как написать конструктор c в Dart?

class Generator
{
   static List<Type> typesList = [];

   //static
   //{ /*static initializations*/}

}

Ответы [ 3 ]

2 голосов
/ 19 января 2020

В Dart нет такого понятия, как stati c конструктор. Именованные конструкторы, такие как Shape.circle(), достигаются чем-то вроде

class A {
  A() {
    print('default constructor');
  }
  A.named() {
    print('named constructor');
  }
}

void main() {
  A();
  A.named();
}

. Вам также может быть интересен этот вопрос конструкторов фабрики

Обновление: Пара stati c обходных путей инициализатора

class A {
  static const List<Type> typesList = [];
  A() {
    if (typesList.isEmpty) {
      // initialization...
    }
  }
}

Или материал stati c может быть удален из класса, если он не предназначен для доступа пользователей класса.

const List<Type> _typesList = [];
void _initTypes() {}

class A {
  A() {
    if (_typesList.isEmpty) _initTypes();
  }
}
1 голос
/ 20 января 2020

Вы можете инициализировать элементы stati c, напрямую вызывая class.member внутри конструктора:

class A {
  static int a;
  static int b;

  A(int a, int b) {
    A.a ??= a; ///by using the null-equals operator, you ensure this can only be set once
    A.b ??= b;
  }
}


main(){
  A(5,10);
  A(2,4);
  assert(A.a == 5);
  assert(A.b == 10);
}
0 голосов
/ 23 января 2020

Stati c объявления переменных инициализируются лениво, чтобы избежать дорогостоящей инициализации (и сопутствующей медлительности) при запуске программы. При первом чтении переменной * stati c v устанавливается результат вычисления ее инициализатора.

https://groups.google.com/a/dartlang.org/forum/#! Topic / misc / dKurFjODRXQ

...