Set.from în Dart

Set: mulțimi Dart 2.0

Creează un set nou din elementele unei colecții; Set.of verifică tipul la compilare, Set.from la rulare.

Sintaxă
factory Set<E>.from(Iterable elements)
factory Set<E>.of(Iterable<E> elements)

Ce face Set.from

Set.of(colectie) copiază elementele într-un set nou (care păstrează ordinea), eliminând duplicatele. Colecția trebuie să aibă deja elemente de tipul potrivit, iar analizorul verifică asta.

Set.from(colectie) acceptă orice Iterable, chiar și List<dynamic>; tipul fiecărui element se verifică abia la rulare. Folosește-l când vrei să schimbi tipul, de exemplu din List<num> în Set<int>.

Parametri

Parametru Descriere
elements Elementele copiate în set-ul nou.

Ce returnează

Un Set nou (un LinkedHashSet).

Exemple

Exemplul 1: Copie modificabilă

void main() {
  const initiale = ['Ana', 'Mihai', 'Ana'];
  final echipa = Set.of(initiale);
  echipa.add('Ioana');
  print(echipa);
  print(initiale);
}

Rezultat

{Ana, Mihai, Ioana}
[Ana, Mihai, Ana]

Exemplul 2: Schimbarea tipului cu Set.from

void main() {
  final List<num> valori = [3, 1, 3, 2];
  final Set<int> intregi = Set<int>.from(valori);
  print(intregi);

  final List<dynamic> dinJson = ['IS', 'CJ', 'IS'];
  final judete = Set<String>.from(dinJson);
  print(judete);
}

Rezultat

{3, 1, 2}
{IS, CJ}

Greșeli frecvente

  • Folosești Set<int>.from pe o listă cu un element double. Analizorul nu te oprește, dar la rulare apare o eroare de tip.

Comenzi înrudite

  • Set: Colecție fără elemente duplicate: fiecare valoare apare o singură dată, iar căutarea este rapidă.
  • List.from: Creează o listă nouă cu elementele unei colecții; of verifică tipul la compilare, from la rulare.
  • Map.of: Map.of face o copie modificabilă a unui map; Map.unmodifiable face o copie care nu mai poate fi schimbată.
  • Iterable.toList: toList copiază elementele într-o listă nouă; toSet le copiază într-un set nou, fără duplicate.