Как добавить элемент с тем же именем с помощью цикла for в список

#dart

#dart

Вопрос:

Я хочу добавить некоторый элемент с таким же именем в список в Dart.

Например:

 List<house> home = List<house>();
  

Я хочу добавить:

 home.add(house1);
home.add(house2);
home.add(house3);
  

Есть ли способ добавить его итеративно, как это?

 for (int i = 1; i <= 3; i  ) home.add(house$i);
  

Ответ №1:

Прежде всего: почему вы хотите это сделать?

Поведение, которое вы хотите написать, не может быть запрограммировано. Имя переменной передается компилятору только для ссылки, но как только ваш код будет скомпилирован, имя house1 или любое другое выбранное вами имя не будет иметь значения. (например, house$i (который будет String типом) может быть сгенерирован только во время выполнения, а не во время компиляции).

На самом деле вы можете добиться желаемого поведения, написав следующее:

 for (int i = 0; i < 3; i  ) {
   home.add(new house());
}
  

Как упоминалось выше, следующий код не будет работать. Компилятор умен, но недостаточно умен, чтобы знать, что у вас будет 3 экземпляра house с соответствующим именем, например:

 for (int i = 1; i <= 3; i  ) home.add(house$i)
var a = house1; // Can't compile. Where can I find house1?
  

Однако вы всегда можете написать следующее:

 var house1 = house();
var house2 = house();
var house3 = house();

home.add(house1); // Compiles! Now I know where to find house1!
home.add(house2);
home.add(house3);
  

Ответ №2:

Вы можете создавать n объекты House и сохранять их в List следующим образом, вместо создания нескольких переменных.

 List<House> home = [House(), House(), House()]; // House() is an object of House.
  

или

 List<House> home = new List<House>();
for(int i = 0; i < n; i  ) home.add(House());