Dart 控制流
最后修改日期:2024 年 1 月 28 日
在本文中,我们将讨论 Dart 中的流程控制。我们定义了几个关键字,使我们能够控制 Dart 程序的流程。
当 Dart 程序运行时,代码是从上到下执行的。程序的流程可以通过各种关键字来改变,包括 if/else、for、while 和 switch。
控制流结构可用于有条件地或多次执行代码。
Dart if & else
if 语句指定了代码块的条件执行。如果表达式求值为 true,则执行代码块。如果存在 else 语句且 if 语句求值为 false,则执行 else 之后的代码块。
可以有多个 if/else 语句。
Dart if/else 示例
以下示例演示了使用 if/else 的代码块的条件执行。
void main() {
final num = 4;
if (num > 0) {
print("The number is positive");
}
}
在示例中,我们有一个简单的条件;如果 num 变量为正数,则将消息“The number is positive”打印到控制台。否则;不打印任何内容。
$ dart main.dart The number is positive
由于值 4 是正数,因此打印了该消息。
void main() {
final num = -4;
if (num > 0) {
print("The number is positive");
} else {
print("The number is negative");
}
}
现在我们添加了第二个分支。else 语句指定了在 if 条件失败时执行的代码块。
$ dart main.dart The number is negative
对于 -4 值,将打印“The number is negative”。
import 'dart:math';
void main() {
const int MAX = 10;
final num = new Random().nextInt(MAX) - 5;
if (num > 0) {
print("The number is positive");
} else if (num == 0) {
print("The number is zero");
} else {
print("The number is negative");
}
}
在此示例中,我们使用 if else 添加了其他分支。我们生成介于 -5 和 4 之间的随机值。借助 if & else 语句,我们可以为所有三个选项打印消息。
Dart switch 语句
switch 语句是一种选择控制流语句。它以比使用 if/else 语句组合更简单的方式创建多个分支。
switch 关键字用于将变量或表达式的值与一组值进行比较。这些值由 case 关键字表示。如果值匹配,则执行 case 后面的语句。有一个可选的 default 语句。如果找不到其他匹配项,则执行它。
每个 case 都可以用 break 终止。如果不是,它会继续执行。
void main() {
final dayOfWeek = DateTime.now().weekday;
switch (dayOfWeek) {
case DateTime.sunday:
print("dies Solis");
break;
case DateTime.monday:
print("dies Lunae");
break;
case DateTime.tuesday:
print("dies Martis");
break;
case DateTime.wednesday:
print("dies Mercurii");
break;
case DateTime.thursday:
print("dies Jovis");
break;
case DateTime.friday:
print("dies Veneris");
break;
case DateTime.saturday:
print("dies Saturni");
break;
}
}
该示例确定了一周中的当前日期,并打印其拉丁名称。
switch (dayOfWeek) {
...
}
在圆括号中,switch 关键字接受一个将要被测试的表达式的值。switch 关键字的主体放在一对花括号内。在主体中,我们可以放置多个 case 选项。每个选项都以 break 关键字结尾。
case DateTime.sunday:
print("dies Solis");
break;
使用 case 语句,我们测试匹配表达式的值。如果它等于 DateTime.sunday,我们打印拉丁语 dies Solis。
$ dart main.dart dies Veneris
Dart while 循环
while 语句是一个控制流程语句,允许根据给定的布尔条件重复执行代码。
这是 while 循环的一般形式
while (expression)
{
statement;
}
while 关键字执行大括号括起来的块内的语句。只要表达式的计算结果为 true,就会执行这些语句。
void main() {
int i = 0;
int sum = 0;
while (i < 10) {
i++;
sum += i;
}
print(sum);
}
在代码示例中,我们计算某个数字范围内值的总和。
while 循环有三个部分。初始化、测试和更新。语句的每次执行都称为一个周期。
int i = 0;
我们初始化 i 变量。它用作计数器。
while (i < 10) {
...
}
while 关键字后面的圆括号内的表达式是第二阶段:测试。只要表达式的计算结果为真,循环体内的语句就会被执行。当表达式的计算结果为假时,循环终止。
i++;
这是 while 循环的最后第三个阶段:更新。我们递增计数器。请注意,不正确处理 while 循环可能导致无限循环。
$ dart main.dart 55
Dart 经典 for 循环
经典 for 循环取自 C 编程语言。for 循环也有三个阶段:初始化、条件和代码块执行以及增量。
void main() {
var sum = 0;
for (int i = 0; i < 10; i++) {
sum += i;
}
print(sum);
}
在此示例中,我们对 0..9 的值进行求和,并将结果打印到控制台。
for (int i = 0; i < 10; i++) {
sum += i;
}
在第一个阶段,我们将计数器 i 初始化为零。此阶段仅执行一次。接下来是条件 i < 10。如果满足条件,则执行 for 代码块内的语句。
在第三个阶段,计数器增加。现在我们重复第 2、3 阶段,直到条件不再满足,然后退出 for 循环。在我们的例子中,当计数器 i 等于 10 时,for 循环停止执行。
Dart for in 循环
for/in 形式使我们能够轻松地遍历可迭代对象。它类似于 forEach 函数。
void main() {
final words = ['sky', 'load', 'cup', 'tea', 'rock', 'plate'];
for (final word in words) {
print(word);
}
}
在示例中,我们定义了一个单词列表。使用 for/in,我们遍历列表并打印所有单词。
$ dart main.dart sky load cup tea rock plate
Dart break 语句
break 语句可用于终止由 while 和 for 语句创建的循环的执行。
import 'dart:math';
void main() {
const int MAX = 30;
while (true) {
var num = new Random().nextInt(MAX);
print("$num");
if (num == 22) {
break;
}
}
print("\n");
}
我们定义了一个无限 while 循环。我们使用 break 语句来跳出这个循环。我们从 1 到 30 中选择一个随机值。我们打印该值。如果该值等于 22,我们则结束无限 while 循环。
$ dart main.dart 21 4 20 20 22
来源
在本文中,我们涵盖了 Dart 中的控制流。
作者
列出 所有 Dart 教程。