List.operator+ în Dart

List: liste Dart 2.0

a + b creează o listă nouă cu elementele lui a urmate de cele ale lui b.

Sintaxă
List<E> operator +(List<E> other)

Ce face List.operator+

Operatorul + pe liste returnează o listă nouă, extensibilă, cu toate elementele primei liste urmate de toate elementele celei de-a doua. Listele inițiale nu se schimbă.

Echivalentul cu spread este [...a, ...b], care permite și mai multe liste sau elemente separate. Pentru a adăuga într-o listă existentă, fără copie, folosește addAll.

Parametri

Parametru Descriere
other Lista adăugată la final.

Ce returnează

O List<E> nouă.

Exemple

Exemplul 1: Lipirea a două liste

void main() {
  final dimineata = ['Ana', 'Mihai'];
  final dupaAmiaza = ['Ioana', 'Vlad'];
  final toti = dimineata + dupaAmiaza;
  print(toti);
  print('neschimbate: $dimineata, $dupaAmiaza');
  print([...dimineata, 'Elena', ...dupaAmiaza]);
}

Rezultat

[Ana, Mihai, Ioana, Vlad]
neschimbate: [Ana, Mihai], [Ioana, Vlad]
[Ana, Mihai, Elena, Ioana, Vlad]

Exemplul 2: += creează o listă nouă

a += b înseamnă a = a + b: variabila primește o listă nouă, iar cine avea lista veche nu vede schimbarea.

void main() {
  var cos = ['mere'];
  final referinta = cos;
  cos += ['pere'];
  print('cos: $cos, referinta: $referinta');
  referinta.addAll(['prune']);
  print('referinta după addAll: $referinta');
}

Rezultat

cos: [mere, pere], referinta: [mere]
referinta după addAll: [mere, prune]

Greșeli frecvente

  • Folosești + într-o buclă mare (rezultat = rezultat + [x]): fiecare pas copiază toată lista. Folosește add.

Comenzi înrudite

  • List.add: add adaugă un element la sfârșitul listei; addAll adaugă toate elementele unei alte colecții.
  • Iterable.expand: expand transformă fiecare element în zero sau mai multe elemente și le pune cap la cap; followedBy lipește două iterabile.
  • List: Lista din Dart: elemente în ordine, accesate după poziție, care poate crește sau scădea.