Ce face Map.operator[]
map[cheie] returnează valoarea legată de cheie sau null dacă cheia nu există. De aceea tipul rezultatului este nullable: V?.
map[cheie] = valoare pune perechea în map. Dacă cheia exista deja, valoarea veche este înlocuită și ordinea cheii nu se schimbă; dacă nu exista, perechea se adaugă la sfârșit.
Parametri
| Parametru | Descriere |
|---|---|
key |
Cheia căutată sau cheia la care se scrie. |
value |
Pentru []=: valoarea nouă. |
Ce returnează
[] returnează valoarea sau null. []= nu returnează nimic.
Exemple
Exemplul 1: Citire, scriere și chei lipsă
void main() {
final prefixe = {'Iași': '0232', 'Cluj': '0264'};
print(prefixe['Iași']);
print(prefixe['Brașov']);
prefixe['Brașov'] = '0268';
prefixe['Iași'] = '0332';
print(prefixe);
}
Rezultat
0232
null
{Iași: 0332, Cluj: 0264, Brașov: 0268}
Exemplul 2: Valoare implicită cu ?? și operatorul !
?? dă o valoare de rezervă când cheia lipsește. ! spune compilatorului că ești sigur că cheia există; dacă greșești, programul se oprește cu eroare.
void main() {
final preturi = {'cafea': 12.5, 'ceai': 8.0};
final suc = preturi['suc'] ?? 0.0;
print('suc: $suc lei');
if (preturi.containsKey('cafea')) {
final cafea = preturi['cafea']!;
print('2 cafele: ${cafea * 2} lei');
}
preturi['ceai'] = preturi['ceai']! + 1;
print(preturi);
}
Rezultat
suc: 0.0 lei
2 cafele: 25.0 lei
{cafea: 12.5, ceai: 9.0}
Greșeli frecvente
- Scrii
map['x'] + 1fără!sau??. Analizorul dă eroare, pentru că valoarea poate finull. - Folosești
!pe o cheie care lipsește: programul se oprește cu „Null check operator used on a null value”.
Comenzi înrudite
Map: Colecție de perechi cheie–valoare: cauți rapid o valoare după cheia ei (nume, cod, oraș).Map.containsKey: containsKey verifică dacă o cheie există în map, iar containsValue dacă o valoare apare la vreo cheie.Map.putIfAbsent: Returnează valoarea unei chei; dacă cheia lipsește, o calculează cu funcția dată, o salvează și o returnează.Map.update: update schimbă valoarea unei chei pe baza valorii vechi; updateAll schimbă toate valorile din map.List.operator[]: lista[i] citește elementul de pe poziția i; lista[i] = x îl înlocuiește.