Dart 循环
最后修改日期:2024 年 1 月 28 日
在本文中,我们将介绍如何在 Dart 语言中创建循环。我们使用 for 和 while 语句来创建循环。此外,我们还将介绍 break 和 continue 语句。
循环
for 和 while 语句用于创建循环。break 和 continue 语句用于改变循环的执行。
循环用于多次执行语句或遍历容器。
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 循环 List
for 循环可用于遍历列表或映射等容器。从列表的 length 属性获取其大小。
void main() {
final planets = [
"Mercury",
"Venus",
"Earth",
"Mars",
"Jupiter",
"Saturn",
"Uranus",
"Pluto"
];
for (int i = 0; i < planets.length; i++) {
print(planets[i]);
}
print("In reverse:");
for (int i = planets.length - 1; i >= 0; i--) {
print(planets[i]);
}
}
我们有一个包含太阳系行星名称的列表。使用两个 for 循环,我们按升序和降序打印值。
for (int i = 0; i < planets.length; i++) {
print(planets[i]);
}
列表通过零基索引访问。第一个项目索引为 0。因此,i 变量初始化为零。条件检查 i 变量是否小于列表的长度。在最后阶段,i 变量递增。
for (int i = planets.length - 1; i >= 0; i--) {
print(planets[i]);
}
此 for 循环以相反的顺序打印列表的元素。i 计数器初始化为列表大小。由于索引是零基的,最后一个元素的索引是列表大小-1。条件确保计数器大于或等于零。(列表索引不能为负数)。在第三步中,i 计数器减一。
$ dart main.dart Mercury Venus Earth Mars Jupiter Saturn Uranus Pluto In reverse: Pluto Uranus Saturn Jupiter Mars Earth Venus Mercury
Dart for 循环 Map
for 循环可用于遍历 Map。
void main() {
final fruit = {1: 'Apple', 2: 'Banana', 3: 'Cherry', 4: 'Orange'};
for (final key in fruit.keys) print(key);
for (final value in fruit.values) print(value);
for (final me in fruit.entries) {
print("${me.key}: ${me.value}");
}
}
在此示例中,我们使用 for 循环打印所有键、值和映射条目(键/值对)。
for (var key in fruit.keys) print(key);
在此 for 循环中,我们遍历所有映射键。如果 for 循环仅包含一条语句,我们可以将整个循环放在单行上。
$ dart main.dart 1 2 3 4 Apple Banana Cherry Orange 1: Apple 2: Banana 3: Cherry 4: Orange
Dart for/in 循环
for/in 简化了遍历数据集合的过程。它没有显式计数器。它逐个遍历数组或集合,并将当前值复制到构造中定义的变量。
void main() {
final vals = [1, 2, 3, 4, 5];
for (final e in vals) {
print(e * e);
}
}
在此示例中,我们使用 for 范围遍历数字列表。
for (final e in vals) {
print(e * e);
}
我们迭代数字列表。e 是一个临时变量,其中包含列表的当前值。for 语句遍历所有数字,并将它们的平方打印到控制台。
$ dart main.dart 1 4 9 16 25
Dart 嵌套 for 循环
For 语句可以嵌套;即,一个 for 语句可以放在另一个 for 语句内部。嵌套 for 循环的所有周期都针对外部 for 循环的每个周期执行。
void main() {
final a1 = ["A", "B", "C"];
final a2 = ["A", "B", "C"];
for (int i = 0; i < a1.length; i++) {
for (int j = 0; j < a2.length; j++) {
print(a1[i] + a2[j]);
}
}
}
在此示例中,我们创建了两个列表的笛卡尔积。
for (int i = 0; i < a1.length; i++) {
for (int j = 0; j < a2.length; j++) {
print(a1[i] + a2[j]);
}
}
嵌套的 for 循环位于另一个父 for 循环内部。嵌套的 for 循环在父 for 循环的每个周期中完全执行。
$ dart main.dart AA AB AC BA BB BC CA CB CC
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 continue 语句
continue 语句用于跳过循环的一部分,并继续执行循环的下一次迭代。在下面的示例中,我们打印一个不能被 2 整除的数字列表。
void main() {
int num = 0;
while (num < 1000) {
num++;
if ((num % 2) == 0) {
continue;
}
print("$num");
}
print("\n");
}
我们使用 while 循环遍历数字 1..999。
if ((num % 2) == 0) {
continue;
}
如果表达式 num % 2 返回 0,则该数字可以被 2 整除。执行 continue 语句,跳过循环的其余部分。在我们的例子中,跳过了循环的最后一条语句,并且数字没有被打印到控制台。然后开始下一次迭代。
来源
在本文中,我们介绍了 Dart 中的循环。
作者
列出 所有 Dart 教程。