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
fillRangecu 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.