📜  Dart的跌落条件

📅  最后修改于: 2021-09-02 05:21:45             🧑  作者: Mango

Fall through 是各种编程语言中发生的一种错误,如 C、C++、 Java、 Dart等。它发生在 switch-case 语句中,当我们忘记添加 break 语句时,控制流会跳转到下一行。

所以,很明显,创建fall through情况的最基本方法是跳过Dart的break语句,但是在dart,它会给出编译错误。

示例 1:跳过 break 语句

Dart
// This code will display error
void main() {
  int gfg = 1;
  switch ( gfg ){
    case 1:{
      print("GeeksforGeeks number 1");
    }
    case 2:{
      print("GeeksforGeeks number 2");
    }
    case 3:{
      print("GeeksforGeeks number 3");
    }
    default :{
      print("This is default case");
    }
  }
}


Dart
void main() {
    
  // Declaring value
  // of the variable
  int gfg = 2;
  switch ( gfg ){
    case 1:{
      print("GeeksforGeeks number 1");
    } break;
        
    // Empty case causes fall through
    case 2: 
    case 3:{
      print("GeeksforGeeks number 3");
    } break;
    default :{
      print("This is default case");
    } break;
  }
}


Dart
void main() {
  int gfg = 1;
  switch ( gfg ){
    case 1:{
      print("GeeksforGeeks number 1");
    } continue next;
    next:case 2:{
      print("GeeksforGeeks number 2");
    } break;
    case 3:{
      print("GeeksforGeeks number 3");
    } break;
    default :{
      print("This is default case");
    } break;
  }
}


错误:

Error compiling to JavaScript:
main.dart:4:5:
Error: Switch case may fall through to the next case.
    case 1:{
    ^
main.dart:7:5:
Error: Switch case may fall through to the next case.
    case 2:{
    ^
main.dart:10:5:
Error: Switch case may fall through to the next case.
    case 3:{
    ^
Error: Compilation failed.

但是,当只定义了一个 case 语句时,它允许跳过 break 语句。

注意:必须注意的是, Dart允许 空箱。

示例 2:提供一个空箱。

Dart

void main() {
    
  // Declaring value
  // of the variable
  int gfg = 2;
  switch ( gfg ){
    case 1:{
      print("GeeksforGeeks number 1");
    } break;
        
    // Empty case causes fall through
    case 2: 
    case 3:{
      print("GeeksforGeeks number 3");
    } break;
    default :{
      print("This is default case");
    } break;
  }
}

输出:

GeeksforGeeks number 3

在上面的代码中,如果我们初始化 gfg = 3 的值,那么输出将不会改变。另一种实现失败的方法是在 switch-case 中使用 continue 而不是 break 语句。

示例 3:使用 continue 而不是 break

Dart

void main() {
  int gfg = 1;
  switch ( gfg ){
    case 1:{
      print("GeeksforGeeks number 1");
    } continue next;
    next:case 2:{
      print("GeeksforGeeks number 2");
    } break;
    case 3:{
      print("GeeksforGeeks number 3");
    } break;
    default :{
      print("This is default case");
    } break;
  }
}

输出:

GeeksforGeeks number 1
GeeksforGeeks number 2

注意:必须注意,如果我们在上面的代码中不使用 continue 声明标签,那么代码将显示错误