Как заполнить список нулевыми значениями, чтобы он имел определенную длину?

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

Однако, если у меня есть только 1-3 элемента для добавления в этот список, как я могу заполнить остальные нулевыми значениями?

Например, List<int?> длины 4 с двумя заданными элементами должен привести к следующему результату:

[1,3] -> [1,3,null,null]

Вот что я делаю, но, может быть, есть лучший способ

 List.generate(4, (index) {
      try {
        final id = given.elementAt(index);
        return id;
      } catch (error) {
        return null;
      }
    });

Лично я бы использовал if (index < given.length) вместо использования исключений для потока управления, и если вам нужен фиксированный размер List, вы должны использовать List.generate(..., growable: false), но в остальном этот подход мне кажется приемлемым.

jamesdlin 20.03.2022 21:02
0
1
18
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Самый простой вариант, вероятно, будет:

[for (var i = 0; i < 4; i++) i < given.length ? given[i] : null]

Вы можете использовать List.generate, но в этом случае функция достаточно проста, чтобы литерал списка мог делать то же самое более эффективно. (Или, как говорит @jamesdlin, если вам нужен список фиксированной длины, используйте List.generate).

Более косвенным вариантом может быть:

 List<GivenType?>.filled(4, null)..setAll(0, given)

где вы сначала создаете список из четырех null, а затем записываете в него список given. Вероятно, это просто сложнее и менее эффективно.

Другие вопросы по теме