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)sauif (nume). Dart cere unbool: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.