Лучшая практика при инициализации списка / массива

#flutter #dart

#flutter #dart

Вопрос:

При создании ненулевого пустого списка или массива, который рекомендуется использовать между этими двумя.

 List newList = List();
List<Obstacle> obstacles = List<Obstacle>();
 

или

 List newList = [];
List<Obstacle> obstacles = [];
 

или они оба делают одно и то же и оказывают одинаковое влияние на обработку и память.

Ответ №1:

Декларативный против Литеральные конструкторы

Насколько мне известно, нет никакой разницы между использованием литерального конструктора [] и декларативного конструктора List() .

Оба имеют одинаковый результат, но я бы посоветовал вам использовать декларативный List() конструктор. Потому что литеральный конструктор используется для предопределения нескольких значений в списке. Например: List myList = [1,2,3]; .

Поэтому, если вы хотите создать ненулевой список, используйте:

 List myList = List();
 

Но если вы хотите определить некоторые начальные значения для своего списка, используйте конструктор literal:

 List myList = [1,2,3];
 

Общие сведения

Краткая информация: списки являются общими, карты также являются общими.

Универсальный — это, в основном, когда вы хотите передать тип объекта в качестве параметра классу, функции или определению типа. Умные программисты используют это для написания повторно используемого кода.

Например, у меня есть Response класс, который я использую во всем своем приложении, у Response класса есть переменная данных. Но я хочу, чтобы он мог указывать Dart, где Response класс содержит data тип String или данные типа int .

Поэтому для достижения этой цели я бы сделал свой Response класс a Generic .

Вот пример универсального класса ответов. Переменная data может быть установлена по мере необходимости для любой ситуации в моем приложении.

 Response<String> response = Response<String>();

//Defining a Generic's type is optional.
//So both statements work.
Response response = Response();

class Response<T> {
  T data;
}
 

Почему дженерики?
Так что вы получаете удивительные функции безопасности статической компиляции Dart. Универсальные классы обеспечивают гибкость повторного использования класса в нескольких ситуациях, но при этом обеспечивают надежную безопасность компиляции.

Поэтому при объявлении a List , если вы определяете, что это a List<int> . Компилятор позаботится о том, чтобы вы случайно не попытались вставить String в него a .

Комментарии:

1. Спасибо. Тебе действительно 14?😂

2. Ха-ха, мне сейчас 16, эта биография была обновлена 2 года назад. Теперь у меня есть 3 года опыта работы с Flutter! Проверьте мой веб-сайт: musausman.com

3. Вот веб-сайт, который я создал в Flutter Web: thefoodapp.co

4. Действительно хороший человек. musausman.com/convert-website-to-mobile-app в разделе «обнаружение в Интернете» на этой странице есть крошечная опечатка. Действительно классный сайт в целом.

5. Спасибо, я ценю это!