Ce face List.setRange
setRange(start, end, sursa) înlocuiește elementele de pe pozițiile start … end - 1 cu primele elemente din sursa (sau cu cele de după skipCount). Lungimea listei nu se schimbă, iar sursa trebuie să aibă destule elemente.
Funcția statică List.copyRange(tinta, la, sursa, [start, end]) copiază elementele sursa[start..end) în tinta, începând de la poziția la. Funcționează și pe liste de lungime fixă, pentru că nu adaugă elemente, doar le suprascrie.
Parametri
| Parametru | Descriere |
|---|---|
start, end |
Porțiunea suprascrisă din lista curentă. |
iterable / source |
De unde se iau valorile noi. |
skipCount |
Câte elemente din sursă se sar la început. |
at |
Pentru copyRange: poziția din țintă unde începe copierea. |
Ce returnează
Nimic (void).
Exemple
Exemplul 1: Suprascrierea unei porțiuni
void main() {
final saptamana = ['-', '-', '-', '-', '-', '-', '-'];
saptamana.setRange(0, 5, ['L', 'Ma', 'Mi', 'J', 'V']);
print(saptamana);
final note = [0, 0, 0, 0];
note.setRange(1, 3, [5, 9, 10, 7], 2);
print(note);
}
Rezultat
[L, Ma, Mi, J, V, -, -]
[0, 10, 7, 0]
Exemplul 2: List.copyRange într-o listă de lungime fixă
void main() {
final buffer = List.filled(6, 0);
final pachet = [7, 8, 9, 10];
List.copyRange(buffer, 2, pachet, 0, 3);
print(buffer);
List.copyRange(buffer, 0, pachet, 3);
print(buffer);
}
Rezultat
[0, 0, 7, 8, 9, 0]
[10, 0, 7, 8, 9, 0]
Greșeli frecvente
- Sursa are mai puține elemente decât porțiunea de suprascris: apare
StateError(Too few elements).
Comenzi înrudite
List.fillRange: fillRange pune aceeași valoare pe o porțiune; replaceRange înlocuiește o porțiune cu alte elemente, de orice lungime.List.sublist: sublist copiază o porțiune a listei într-o listă nouă; getRange dă aceeași porțiune ca iterable leneș.List.insert: Inserează un element (insert) sau mai multe (insertAll) la o poziție, mutând restul la dreapta.