ZetCode

Dart bool

最后修改日期:2025 年 6 月 4 日

在 Dart 中,bool 是一个内置的数据类型,用于表示布尔值。它只能包含两个可能的值:true 或 false。布尔值对于控制流和逻辑运算至关重要。

bool 类型常用于条件语句、循环和逻辑表达式中。Dart 提供了各种处理布尔值的运算符,包括逻辑运算符和比较运算符。

基本 bool 声明

声明布尔变量最简单的方法是使用 bool 关键字。布尔变量可以用 true 或 false 字面量进行初始化。

main.dart
void main() {
  bool isActive = true;
  bool isCompleted = false;
  
  print('isActive: $isActive');
  print('isCompleted: $isCompleted');
}

我们声明了两个布尔变量并打印了它们的值。请注意,如果我们使用 var,Dart 会自动推断类型,但显式类型声明更清晰。

$ dart main.dart
isActive: true
isCompleted: false

来自表达式的布尔值

布尔值通常是比较或逻辑表达式的结果。这些表达式求值为 true 或 false。

main.dart
void main() {
  int age = 25;
  bool isAdult = age >= 18;
  bool canVote = isAdult && age >= 21;
  
  print('Is adult: $isAdult');
  print('Can vote: $canVote');
}

我们通过比较 (>=) 和逻辑 (&&) 操作创建了布尔值。这些表达式评估条件并产生布尔结果。

$ dart main.dart
Is adult: true
Can vote: true

带 bool 的条件语句

布尔值主要用于 if-else 等条件语句中。在 Dart 中,条件必须计算为布尔值。

main.dart
void main() {
  bool hasPermission = true;
  bool isPremiumUser = false;
  
  if (hasPermission && !isPremiumUser) {
    print('Access granted to basic features');
  } else if (hasPermission && isPremiumUser) {
    print('Access granted to all features');
  } else {
    print('Access denied');
  }
}

我们在 if-else 链中使用布尔变量。! 运算符用于否定布尔值。在 Dart 中,条件必须是显式的布尔表达式。

$ dart main.dart
Access granted to basic features

布尔运算符

Dart 提供了三个主要的逻辑运算符来处理布尔值:&& (AND)、|| (OR) 和 ! (NOT)。这些运算符遵循标准的真值表。

main.dart
void main() {
  bool a = true;
  bool b = false;
  
  print('a && b: ${a && b}'); // AND
  print('a || b: ${a || b}'); // OR
  print('!a: ${!a}');         // NOT
  
  // Short-circuit evaluation
  bool result = a || (throw Exception('Not evaluated'));
  print('Short-circuit result: $result');
}

我们演示了所有三个布尔运算符。Dart 使用短路求值,因此如果结果已经确定,则右侧的操作数可能不会被计算。

$ dart main.dart
a && b: false
a || b: true
!a: false
Short-circuit result: true

带 bool 的类型安全

Dart 是类型安全的,因此只能在布尔上下文中使用布尔值。与某些语言不同,Dart 不会将其他值视为“真值”或“假值”。

main.dart
void main() {
  int value = 1;
  
  // This would cause a compile-time error:
  // if (value) { print('Valid'); }
  
  // Correct way:
  if (value != 0) {
    print('Value is non-zero');
  }
  
  // Explicit boolean conversion
  bool isValid = value > 0;
  print('isValid: $isValid');
}

Dart 需要显式的布尔表达式。在使用非布尔值进行条件判断之前,我们必须使用比较运算符对其进行转换。

$ dart main.dart
Value is non-zero
isValid: true

最佳实践

来源

Dart 布尔值文档

本教程通过实际示例介绍了 Dart 的 bool 类型,展示了它在各种上下文中的用法。布尔值对于程序逻辑至关重要。

作者

我的名字是 Jan Bodnar,我是一名充满激情的程序员,拥有丰富的编程经验。我自 2007 年起就开始撰写编程文章。至今,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有超过十年的经验。

列出 所有 Dart 教程