Symbol în Dart

Un nume de identificator (metodă, câmp, parametru) păstrat ca valoare; se scrie #nume.

Sintaxă
const Symbol(String name)
// literal: #nume

Ce face Symbol

Un Symbol reprezintă numele unui membru din program, nu valoarea lui. Literalul #salveaza este simbolul pentru numele salveaza. Același simbol se poate crea și cu constructorul Symbol('salveaza'); cele două sunt egale.

Simbolurile apar în locurile în care Dart lucrează cu nume de membri ca date: parametrii numiți din Function.apply ({#rotunjit: true}) și Invocation.memberName din noSuchMethod.

Spre deosebire de texte, numele din simbolurile literale rămân corecte și după ce un compilator scurtează (minifică) numele din cod, de exemplu la compilarea pentru web. În codul de zi cu zi le folosești rar.

Parametri

Parametru Descriere
name Numele identificatorului.

Exemple

Exemplul 1: Literal și constructor

void main() {
  var s1 = #salveaza;
  const s2 = Symbol('salveaza');
  print(s1);
  print(s1 == s2);
  print(#salveaza == #sterge);
  print(s1.runtimeType);
}

Rezultat

Symbol("salveaza")
true
false
Symbol

Exemplul 2: Parametri numiți dați ca simboluri

String salut(String nume, {String limba = 'ro', bool formal = false}) {
  var baza = limba == 'ro' ? (formal ? 'Bună ziua' : 'Salut') : 'Hello';
  return '$baza, $nume!';
}

void main() {
  print(Function.apply(salut, ['Ana']));
  print(Function.apply(salut, ['domnule Popescu'], {#formal: true}));
  print(Function.apply(salut, ['Mihai'], {#limba: 'en'}));
}

Rezultat

Salut, Ana!
Bună ziua, domnule Popescu!
Hello, Mihai!

Greșeli frecvente

  • Folosești texte în loc de simboluri: Function.apply(f, [], {'formal': true}) nu compilează; cheile trebuie să fie Symbol: {#formal: true}.

Comenzi înrudite

  • Function.apply: Apelează o funcție cu argumente date ca listă (poziționale) și Map (numite), construite în timpul rulării.
  • Object.noSuchMethod: Metoda apelată când se cere unui obiect o metodă sau proprietate pe care nu o are (prin dynamic).
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Symbol

Ai o nelămurire despre utilizarea comenzii Symbol sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.