List.fillRange în Dart

List: liste Dart 2.0

fillRange pune aceeași valoare pe o porțiune; replaceRange înlocuiește o porțiune cu alte elemente, de orice lungime.

Sintaxă
void fillRange(int start, int end, [E? fillValue])
void replaceRange(int start, int end, Iterable<E> replacements)

Ce face List.fillRange

fillRange(start, end, valoare) scrie valoare pe fiecare poziție din start … end - 1. Lungimea listei rămâne aceeași, deci merge și pe liste de lungime fixă.

replaceRange(start, end, elemente) șterge porțiunea și pune în locul ei elementele date, care pot fi mai multe sau mai puține. Lungimea listei se poate schimba, deci lista trebuie să fie extensibilă.

Parametri

Parametru Descriere
start, end Porțiunea afectată (end nu este inclus).
fillValue Valoarea scrisă de fillRange.
replacements Elementele puse în loc de replaceRange.

Ce returnează

Nimic (void).

Exemple

Exemplul 1: Rezervarea locurilor dintr-un rând

void main() {
  final locuri = List.filled(8, 'liber');
  locuri.fillRange(2, 5, 'ocupat');
  print(locuri);
}

Rezultat

[liber, liber, ocupat, ocupat, ocupat, liber, liber, liber]

Exemplul 2: Înlocuire cu mai multe sau mai puține elemente

void main() {
  final traseu = ['București', 'Ploiești', 'Brașov', 'Sibiu'];
  traseu.replaceRange(1, 3, ['Pitești']);
  print(traseu);
  traseu.replaceRange(1, 2, ['Pitești', 'Râmnicu Vâlcea']);
  print(traseu);
}

Rezultat

[București, Pitești, Sibiu]
[București, Pitești, Râmnicu Vâlcea, Sibiu]

Greșeli frecvente

  • Folosești fillRange cu un obiect modificabil (de exemplu, o listă): toate pozițiile primesc același obiect, iar o modificare se vede peste tot.

Comenzi înrudite

  • List.setRange: setRange suprascrie o porțiune a listei cu elemente din altă colecție; List.copyRange copiază dintr-o listă în alta.
  • List.filled: List.filled creează o listă cu aceeași valoare pe fiecare poziție; List.generate calculează fiecare element din poziția lui.
  • List.removeRange: removeRange șterge elementele dintre două poziții; clear golește toată lista.