Dart bool
最后修改日期:2025 年 6 月 4 日
在 Dart 中,bool 是一个内置的数据类型,用于表示布尔值。它只能包含两个可能的值:true 或 false。布尔值对于控制流和逻辑运算至关重要。
bool 类型常用于条件语句、循环和逻辑表达式中。Dart 提供了各种处理布尔值的运算符,包括逻辑运算符和比较运算符。
基本 bool 声明
声明布尔变量最简单的方法是使用 bool 关键字。布尔变量可以用 true 或 false 字面量进行初始化。
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。
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 中,条件必须计算为布尔值。
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)。这些运算符遵循标准的真值表。
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 不会将其他值视为“真值”或“假值”。
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
最佳实践
- 显式类型:对于布尔变量,优先使用 bool 而不是 var。
- 清晰的名称:对布尔值使用 isActive、hasPermission 等名称。
- 避免否定:正向的名称使代码更具可读性。
- 括号:使用括号来明确复杂的布尔表达式。
来源
本教程通过实际示例介绍了 Dart 的 bool 类型,展示了它在各种上下文中的用法。布尔值对于程序逻辑至关重要。
作者
列出 所有 Dart 教程。