Ce face Map.update
update(cheie, (v) => nou) cheamă funcția cu valoarea actuală și pune în loc rezultatul. Dacă cheia lipsește, se folosește ifAbsent; fără ifAbsent, apelul aruncă ArgumentError.
updateAll((cheie, valoare) => nou) înlocuiește fiecare valoare din map cu rezultatul funcției. Cheile și ordinea rămân aceleași.
Parametri
| Parametru | Descriere |
|---|---|
key |
Cheia a cărei valoare se schimbă. |
update |
Funcția care primește valoarea veche (la updateAll: cheia și valoarea) și returnează valoarea nouă. |
ifAbsent |
Opțional, la update: valoarea pusă când cheia lipsește. |
Ce returnează
update returnează valoarea nouă. updateAll nu returnează nimic.
Exemple
Exemplul 1: Coșul de cumpărături
void main() {
final cos = {'lapte': 1, 'pâine': 2};
cos.update('lapte', (n) => n + 1);
cos.update('ouă', (n) => n + 10, ifAbsent: () => 10);
print(cos);
try {
cos.update('cafea', (n) => n + 1);
} on ArgumentError catch (e) {
print('Eroare: ${e.message}');
}
}
Rezultat
{lapte: 2, pâine: 2, ouă: 10}
Eroare: Key not in map.
Exemplul 2: Scumpire cu 10% pentru toate produsele
void main() {
final preturi = {'cafea': 20.0, 'ceai': 10.0, 'zahăr': 5.5};
preturi.updateAll((produs, pret) => pret * 1.1);
preturi.forEach((produs, pret) => print('$produs: ${pret.toStringAsFixed(2)} lei'));
}
Rezultat
cafea: 22.00 lei
ceai: 11.00 lei
zahăr: 6.05 lei
Exemplul 3: Numărare cu update și ifAbsent
void main() {
final voturi = ['Ana', 'Radu', 'Ana', 'Ioana', 'Ana', 'Radu'];
final rezultat = <String, int>{};
for (final v in voturi) {
rezultat.update(v, (n) => n + 1, ifAbsent: () => 1);
}
print(rezultat);
}
Rezultat
{Ana: 3, Radu: 2, Ioana: 1}
Greșeli frecvente
- Chemi
updatepe o cheie care poate lipsi, fărăifAbsent. ApareArgumentError. - Aștepți ca
updateAllsă poată adăuga sau șterge chei. Schimbă doar valorile; pentru ștergere foloseșteremoveWhere.
Comenzi înrudite
Map.putIfAbsent: Returnează valoarea unei chei; dacă cheia lipsește, o calculează cu funcția dată, o salvează și o returnează.Map.operator[]: map[cheie] citește valoarea unei chei (sau null), iar map[cheie] = valoare adaugă sau înlocuiește o pereche.Map.map: Creează un map nou transformând fiecare pereche într-o pereche nouă, cu alte chei sau alte valori.Map.removeWhere: Șterge din map toate perechile pentru care funcția de test returnează true.