bool în Dart

Tipul logic din Dart, cu exact două valori: true și false. Condițiile din if și while trebuie să fie bool.

Sintaxă
final class bool
// valori: true, false
// operatori: !  &&  ||  ^  &  |

Ce face bool

bool are doar două valori, true și false. Comparațiile (==, <, >=) și metode ca isEmpty sau contains returnează bool. Dart este strict: în if, while sau ?: condiția trebuie să fie chiar bool. Nu poți scrie if (lista.length) sau if (text) ca în JavaScript sau Python.

Operatorii logici: ! (negare), && (și) și || (sau) se opresc devreme: în a && b, b nu mai este calculat dacă a este false. Mai există ^ (sau exclusiv), & și |, care calculează mereu ambele părți.

O variabilă bool? poate fi și null; în condiții folosește == true sau ?? false. Pentru a transforma texte în bool vezi bool.parse.

Exemple

Exemplul 1: Valori și operatori logici

void main() {
  var varsta = 15;
  var areBilet = varsta >= 7;
  var majora = varsta >= 18;
  print(majora);
  print(!majora);
  print(areBilet && majora);
  print(areBilet || majora);
  print(areBilet ^ majora);
  print(majora.runtimeType);
  bool? confirmat;
  print(confirmat ?? false);
  print(confirmat == true);
}

Rezultat

false
true
false
true
true
bool
false
false

Exemplul 2: Evaluarea scurtcircuitată

Datorită lui &&, lista.first nu este apelat pentru lista goală, deci nu apare nicio eroare.

bool incepeCuA(List<String> lista) => lista.isNotEmpty && lista.first.startsWith('A');

void main() {
  print(incepeCuA(['Ana', 'Mihai']));
  print(incepeCuA(['Mihai']));
  print(incepeCuA([]));
  var nota = 7;
  var mesaj = nota >= 5 ? 'promovat' : 'nepromovat';
  print(mesaj);
}

Rezultat

true
false
false
promovat

Greșeli frecvente

  • Scrii if (lista.length) sau if (nume). Dart cere un bool: if (lista.isNotEmpty), if (nume.isNotEmpty).
  • Folosești & în loc de &&. Ambele părți se calculează mereu și poți primi erori pe care && le-ar fi evitat.

Comenzi înrudite

  • bool.parse: Transformă textul „true” sau „false” în valoarea bool; tryParse returnează null pentru orice alt text.
  • if și else: Execută un bloc de cod doar dacă o condiție este adevărată; else tratează cazul contrar.
  • ?. și ?..: Accesul condiționat: ?. apelează o metodă doar dacă obiectul nu este null, altfel dă null.