如何打破 Dart 中的嵌套循环

Posted

技术标签:

【中文标题】如何打破 Dart 中的嵌套循环【英文标题】:How to break out of nested loops in Dart 【发布时间】:2022-01-14 21:15:38 【问题描述】:

给定以下嵌套循环:

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

如何跳出外循环?

【问题讨论】:

【参考方案1】:

使用标签

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

从函数返回

另一种选择是将嵌套循环放在函数中,然后从函数中返回:

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

【讨论】:

我想链接到文档中的标签,但找不到好地方。如果你知道它在哪里,请告诉我。

以上是关于如何打破 Dart 中的嵌套循环的主要内容,如果未能解决你的问题,请参考以下文章

如何打破 Objective-C 中的两个嵌套 for 循环?

打破R中的嵌套循环

如何打破嵌套的foreach循环然后转到c#上的父foreach循环

Python打破嵌套的for循环并重新启动while循环

打破嵌套循环[重复]

打破 JavaScript 中嵌套循环的最佳方法是啥?