如何在 Dart 中跳出嵌套循环

How to break out of nested loops in Dart

给定以下嵌套循环:

for (int i = 0; i < 10; i++) {
  for (var j = 0; j < 10; j++) {
    print('i: $i, j: $j');
  }
}

如果我在内部循环中添加 break 语句:

for (int i = 0; i < 10; i++) {
  for (var j = 0; j < 10; j++) {
    print('i: $i, j: $j');
    break; //                      <-- break
  }
}

只是跳出了内循环。这是输出:

i: 0, j: 0
i: 1, j: 0
i: 2, j: 0
i: 3, j: 0
i: 4, j: 0
i: 5, j: 0
i: 6, j: 0
i: 7, j: 0
i: 8, j: 0
i: 9, j: 0

如何跳出外循环?

使用标签

Dart 支持标签。创建一个标签名称并在其后跟一个冒号:

outerLoop:
for (int i = 0; i < 10; i++) {
  for (var j = 0; j < 10; j++) {
    print('i: $i, j: $j');
    break outerLoop;
  }
}

在上面的示例中,标签名称是 outerLoop,但您可以将其命名为其他名称。调用 break outerLoop 会跳出 outerLoop 前面的 for 循环。

这会打印:

i: 0, j: 0

从函数返回

另一种选择是将嵌套循环放在一个函数中,然后 return 来自函数:

void myFunction() {
  for (int i = 0; i < 10; i++) {
    for (var j = 0; j < 10; j++) {
      print('i: $i, j: $j');
      return;
    }
  }
}