dart - Dart 中有 Goto 函数吗?

Dart 中是否有一个函数相当于 Goto 函数,我可以将程序控制转移到指定的标签。

例如:

var prefs = await SharedPreferences.getInstance();
if (prefs.getString("TimetableCache") == null || refreshing) {
    var response = await http.get(
    Uri.encodeFull("A website",);
    data = JsonDecoder().convert(response.body);
    try {
        if (response != null) {
            prefs.setString("TimetableCache", response.body);
        }
    } catch (Exception) {
        debugPrint(Exception);
    }
   } else {
data = prefs.getString("TimetableCache");
}

if (data != null) {
    try {
       //Cool stuff happens here
    } catch (Exception) {
    prefs.setString("TimetableCache", null);
    }
}

我有一个 http 请求,在我想继续我的“很酷的东西”之前,我有一个 try catch 来查看 TimetableCache 中是否有任何内容。 SharedPreferences 的位置的机器。当它捕获到异常时,我希望有一个 goto 方法将其再次发送回第一行以重试获取数据。

在c#中你可以使用goto refresh; ,例如,然后代码将在标识符 refresh: 的任何位置开始执行。是。

这个有 Dart 版本吗?

最佳答案

是的,Dart 支持标签。使用 continuebreak 您可以跳转到标签。

https://www.tutorialspoint.com/dart_programming/dart_programming_loops.htm

void main() { 
   outerloop: // This is the label name 

   for (var i = 0; i < 5; i++) { 
      print("Innerloop: ${i}"); 
      innerloop: 

      for (var j = 0; j < 5; j++) { 
         if (j > 3 ) break ; 

         // Quit the innermost loop 
         if (i == 2) break innerloop; 

         // Do the same thing 
         if (i == 4) break outerloop; 

         // Quit the outer loop 
         print("Innerloop: ${j}"); 
      } 
   } 
}

void main() { 
   outerloop: // This is the label name 

   for (var i = 0; i < 3; i++) { 
      print("Outerloop:${i}"); 

      for (var j = 0; j < 5; j++) { 
         if (j == 3){ 
            continue outerloop; 
         } 
         print("Innerloop:${j}"); 
      } 
   } 
}

https://github.com/dart-lang/sdk/issues/30011

switch (x) {
  case 0:
    ...
    continue foo; // s_c
  foo:
  case 1: // s_E (does not enclose s_c)
    ...
    break;
}

另见

  • https://stackoverflow.com/a/12641818/217408
  • Labels - break vs continue vs goto

https://stackoverflow.com/questions/54152985/

相关文章:

dart - 将 ListTile 图标左对齐

flutter - CupertinoPageScaffold 的子小部件位于 CupertinoN

dart - Flutter 突然无法将 apk 安装到真机

flutter - 如何定期设置状态?

flutter - 带有动画提示/标签的文本字段

dart - Flutter 如何将 String 转换为 List

dart - 如何使用 android_intent 通过 flutter 打开位置设置

dart - Flutter 中的 jest 快照测试相当于什么?

google-maps - 修复中心的谷歌地图标记

android - Flutter:图像溢出容器