【Flutter】Dart:流程控制语句

发布于:2024-10-17 ⋅ 阅读:(6) ⋅ 点赞:(0)

在 Dart 编程中,流程控制语句决定了程序的执行顺序和流程。掌握这些语句可以帮助开发者根据不同条件进行分支决策、执行重复任务、控制代码跳转等。本文将详细介绍 Dart 中的流程控制语句,涵盖分支语句、循环语句和跳转语句。

分支语句

分支语句允许程序根据条件的不同执行不同的代码块。Dart 中常见的分支语句包括 if-elseswitch-case

if-else 语句

if-else 是最常见的分支语句,根据条件的真假执行不同的代码。它的基本语法如下:

if (condition) {
  // 当 condition 为 true 时执行
} else {
  // 当 condition 为 false 时执行
}

示例:

int score = 85;

if (score >= 90) {
  print('Excellent');
} else if (score >= 75) {
  print('Good');
} else {
  print('Needs Improvement');
}

在这个例子中,程序根据 score 的值输出不同的评语。

三元运算符

三元运算符是 if-else 的简写形式,适用于简单的条件判断。其语法是:

condition ? expr1 : expr2;

如果 conditiontrue,返回 expr1,否则返回 expr2

示例:

int age = 18;
String eligibility = (age >= 18) ? 'Eligible to vote' : 'Not eligible to vote';
print(eligibility);  // 输出 Eligible to vote

switch-case 语句

switch-case 语句用于根据多个可能的值选择要执行的代码块。它比 if-else 更适合处理固定值的多个分支。

switch (expression) {
  case value1:
    // 当 expression == value1 时执行
    break;
  case value2:
    // 当 expression == value2 时执行
    break;
  default:
    // 其他情况
}

示例:

String grade = 'A';

switch (grade) {
  case 'A':
    print('Excellent');
    break;
  case 'B':
    print('Good');
    break;
  case 'C':
    print('Fair');
    break;
  default:
    print('Unknown grade');
}

switch-case 语句中,每个 case 分支必须以 break 结束,除非明确希望继续执行下一个 case(称为“贯穿”),否则会出现逻辑错误。

循环语句

循环语句允许程序重复执行某段代码,直到满足特定条件。Dart 支持多种循环方式,包括 forwhiledo-while

for 循环

for 循环常用于已知循环次数的场景,语法如下:

for (initialization; condition; increment/decrement) {
  // 循环体
}

示例:

for (int i = 0; i < 5; i++) {
  print('Iteration $i');
}

上面的代码将输出 5 次 “Iteration”,从 i = 0i = 4

for-in 循环

for-in 循环用于遍历集合(如 ListSetMap)中的每个元素。

示例:

List<String> fruits = ['Apple', 'Banana', 'Cherry'];

for (var fruit in fruits) {
  print(fruit);
}

该代码将遍历 fruits 列表,依次打印每个水果的名称。

while 循环

while 循环在条件为 true 时重复执行代码,直到条件为 false 时结束。语法如下:

while (condition) {
  // 循环体
}

示例:

int i = 0;

while (i < 5) {
  print('Iteration $i');
  i++;
}

这个循环与 for 循环效果相同,直到 i 不小于 5 时停止。

do-while 循环

do-whilewhile 类似,但它至少执行一次代码块,然后再检查条件。其语法为:

do {
  // 循环体
} while (condition);

示例:

int i = 0;

do {
  print('Iteration $i');
  i++;
} while (i < 5);

这个例子中,代码块至少会执行一次,即使 i 的初始值不满足条件。

跳转语句

跳转语句控制代码执行的流向。Dart 提供了 breakcontinuereturnthrow 等跳转语句。

break 语句

break 语句用于立即终止循环或 switch-case 分支的执行。

示例:

for (int i = 0; i < 5; i++) {
  if (i == 3) {
    break;  // 当 i == 3 时,跳出循环
  }
  print('Iteration $i');
}

上面的代码将输出 Iteration 0Iteration 1Iteration 2,然后在 i == 3 时跳出循环。

continue 语句

continue 语句用于跳过当前循环的剩余代码,直接进入下一次循环迭代。

示例:

for (int i = 0; i < 5; i++) {
  if (i == 3) {
    continue;  // 跳过 i == 3 的迭代
  }
  print('Iteration $i');
}

这个例子中,i == 3 时的迭代被跳过,因此输出为 Iteration 0Iteration 4,但不包含 Iteration 3

return 语句

return 语句用于从函数中返回值,并结束函数的执行。

示例:

int add(int a, int b) {
  return a + b;  // 返回 a 和 b 的和
}

void main() {
  int result = add(3, 5);
  print('Result: $result');  // 输出 Result: 8
}

在这个例子中,return 将结果返回给调用者。

throw 语句

throw 语句用于抛出一个异常。它通常与 try-catch 语句配合使用,用于处理错误情况。

示例:

void checkAge(int age) {
  if (age < 18) {
    throw Exception('Age must be at least 18');
  }
  print('Eligible to vote');
}

void main() {
  try {
    checkAge(16);
  } catch (e) {
    print('Error: $e');
  }
}

在这个例子中,如果 age 小于 18,则抛出异常,并在 catch 块中捕获该异常。

循环控制语句的进阶用法

嵌套循环

Dart 支持嵌套循环,即一个循环内可以再包含一个或多个循环。

示例:

for (int i = 1; i <= 3; i++) {
  for (int j = 1; j <= 3; j++) {
    print('i = $i, j = $j');
  }
}

输出:

i = 1, j = 1
i = 1, j = 2
i = 1, j = 3
i = 2, j = 1
...

使用 label 控制循环跳转

Dart 支持使用 label(标签)来精确控制多层嵌套循环的跳转。通过 label,可以指定跳出哪一层循环。

示例:

outerLoop: 
for (int i = 0; i < 3; i++) {
  for (int j = 0; j < 3; j++) {
    if (i == 2 && j == 2) {
      break outerLoop;  // 跳出最外层循环
    }
    print('i = $i, j = $j');
  }
}

i == 2j == 2 时,break outerLoop 将跳出整个外层循环,而不仅仅是内层

循环。

总结

Dart 中的流程控制语句为编写灵活高效的代码提供了强大的工具。通过 if-elseswitch-case 实现分支逻辑,通过 forwhiledo-while 实现循环控制,并通过 breakcontinuereturnthrow 等跳转语句控制程序的执行流程。掌握这些语句是编写 Flutter 应用程序的基础,可以帮助开发者更好地应对复杂的业务逻辑。

关键要点:
  1. 分支语句:根据条件执行不同的代码路径,if-elseswitch-case 是两种常见形式。
  2. 循环语句:用于重复执行代码块,forwhiledo-while 是常用的循环控制结构。
  3. 跳转语句:用于中断或控制代码的执行流程,包括 breakcontinuereturn 等。