循环
本页面介绍如何使用循环和辅助语句来控制 Dart 代码的流程:
for
循环while
和do while
循环break
和continue
您还可以使用以下方法来操作 Dart 中的控制流:
For 循环
#您可以使用标准的 for
循环进行迭代。例如:
dart
var message = StringBuffer('Dart is fun');
for (var i = 0; i < 5; i++) {
message.write('!');
}
Dart 的 for
循环内部的闭包捕获索引的 值 。这避免了 JavaScript 中常见的陷阱。例如,考虑:
dart
var callbacks = [];
for (var i = 0; i < 2; i++) {
callbacks.add(() => print(i));
}
for (final c in callbacks) {
c();
}
输出结果是 0
,然后是 1
,正如预期的那样。相比之下,在 JavaScript 中,该示例将打印 2
,然后是 2
。
有时,当迭代 Iterable
类型(如 List
或 Set
)时,您可能不需要知道当前的迭代计数器。在这种情况下,使用 for-in
循环可以使代码更简洁:
dart
for (final candidate in candidates) {
candidate.interview();
}
要处理从可迭代对象中获得的值,您也可以在 for-in
循环中使用 模式 :
dart
for (final Candidate(:name, :yearsExperience) in candidates) {
print('$name has $yearsExperience of experience.');
}
Iterable 类还有一个 forEach() 方法作为另一个选项:
dart
var collection = [1, 2, 3];
collection.forEach(print); // 1 2 3
While 和 do-while
#while
循环在循环之前评估条件:
dart
while (!isDone()) {
doSomething();
}
do
- while
循环在循环 之后 评估条件:
dart
do {
printLine();
} while (!atEndOfPage());
Break 和 continue
#使用 break
停止循环:
dart
while (true) {
if (shutDownRequested()) break;
processIncomingRequests();
}
使用 continue
跳到下一个循环迭代:
dart
for (int i = 0; i < candidates.length; i++) {
var candidate = candidates[i];
if (candidate.yearsExperience < 5) {
continue;
}
candidate.interview();
}
如果您使用的是 Iterable
(例如列表或集合),那么您编写前面示例的方式可能会有所不同:
dart
candidates
.where((c) => c.yearsExperience >= 5)
.forEach((c) => c.interview());
除非另有说明,否则本网站上的文档反映的是 Dart 3.6.0。页面最后更新于 2025-02-05。 查看源代码 或 报告问题.