【Flutter】入门Dart语言:控制流语句的基本用法

一、前言

在Dart中,控制流语句用于控制程序的执行流程。以下是Dart中主要的控制流语句类型:

if-else:根据布尔表达式有条件地执行代码。

for循环:重复执行一段代码特定次数。

while循环:在给定条件为真时重复执行一段代码。

do-while循环:与while循环类似,但是在评估条件之前至少执行一次代码块。

switch-case:根据值选择要执行的多个代码块之一。

break:提前退出循环。 continue:跳过当前循环迭代并继续下一次迭代。

这些控制流语句可以用于在Dart程序中创建复杂的逻辑和控制执行流程。

“你所拥有的也许只是一份平凡的人生,但你可以用不平凡的态度去面对它。”——李嘉诚

"You may only have an ordinary life, but you can face it with an extraordinary attitude." - Li Ka-shing

img

二、控制流语句

1.if-else

if-else 语句是一种控制流语句,用于根据一个布尔表达式的值来决定执行哪一段代码。如果布尔表达式的值为 true,则执行 if 语句中的代码块;否则,执行 else 语句中的代码块(如果有的话)。

if-else 语句的基本语法如下:

if (condition) {
    
    
  // true 就走这边
} else {
    
    
  // false 就走这边
}

//else也可以不写
if (condition) {
    
    
  // true 就走这边
}

实际业务中的代码可能是这样的:

  int x = 10;

  if (x > 5) {
    
    
    print('x比5大,吧啦吧啦');
  } else {
    
    
    print('x不如5大,吧啦吧啦');
  }

image-20230308142336179

在使用 if-else 语句时,需要注意以下几点:

  1. 如果 if-else 语句中的代码块只有一行,那么可以不使用花括号,例如:if (condition) statement; else statement;
  2. 如果不需要 else 语句,可以省略它,例如:if (condition) statement;
  3. 在编写复合条件时,需要使用逻辑运算符(&&、||、!)来连接多个布尔表达式。
  4. 如果条件表达式的值不是一个布尔类型,那么需要使用强制类型转换来将其转换为布尔类型。

上面的示例可以写成:

  if (x > 5) print('x比5大,吧啦吧啦');
  else print('x不如5大,吧啦吧啦');

2.for

for 循环是一种控制流语句,用于重复执行一个代码块特定次数。

for (initialization; condition; increment/decrement) {
    
    
  // code to be executed repeatedly
}

其中:

  • initialization:在循环开始之前执行一次的语句,通常用于初始化计数器等变量。
  • condition:在每次循环迭代开始时计算的布尔表达式,如果值为 true,则继续执行循环;否则,退出循环。
  • increment/decrement:在每次循环迭代结束时执行的语句,通常用于增加或减少计数器等变量的值。

一个简单的循环如下:

  for (int i = 1; i <= 5; i++) {
    
    
    print(i);
  }

在上面的示例中,循环从变量 i 的初始值 1 开始,每次增加 1,直到 i 的值大于 5 为止。在每次循环迭代中,打印出变量 i 的值。

image-20230308143511810

在使用 for 循环时,需要注意以下几点:

  1. for 循环中的初始化、条件和增量/减量语句都是可选的,但分号必须存在。
  2. 可以在循环体内使用 break 和 continue 语句来提前结束循环或跳过当前迭代。
  3. 可以使用任何类型的表达式作为初始化、条件和增量/减量语句的一部分,包括赋值语句、函数调用和逻辑表达式等。
  4. 可以嵌套多个 for 循环来构建更复杂的控制流程。

3.while、do-while

Dart中的while循环和do-while循环都是基本的循环结构,它们都可以重复执行一段代码块,但是它们有一些区别。

while循环会先判断循环条件,只有当条件为true时才会执行循环体。而do-while循环会先执行一次循环体,然后再判断循环条件,只有当条件为true时才会继续执行循环体。

while循环的语法如下:

while (condition) {
    
    
  // 循环体
}

do-while循环的语法如下:

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

其中,condition是一个布尔表达式,它用于判断循环是否应该继续执行。在while循环中,condition会在循环体之前进行判断,而在do-while循环中,condition会在循环体之后进行判断。

while循环示例:

int i = 0;
while (i < 5) {
    
    
  print(i);
  i++;
}

image-20230308231138185

do-while循环示例:

int i = 0;
do {
    
    
  print(i);
  i++;
} while (i < 5);

上述代码也会输出0到4这五个数字,但是它会先执行一次循环体,然后再判断循环条件。

注意事项:

  1. 在使用while循环和do-while循环时,一定要注意循环条件的变化,否则可能会导致死循环。
  2. 在循环体内,应该有一些可以改变循环条件的语句,例如i++,否则循环会一直重复执行下去,直到程序崩溃或者手动停止。
  3. .在使用while循环和do-while循环时,应该谨慎处理循环变量的初始值和循环条件,确保循环能够正确执行。
  4. 在循环体内,应该尽量避免使用breakcontinue语句,因为它们可能会导致程序逻辑混乱,不易维护。
  5. 如果循环体内只有一条语句,可以不加大括号,但是为了代码的清晰可读性,建议加上大括号。

3.switch-case

switch-case语句用于根据不同的值执行不同的操作,它可以代替一些复杂的if-else语句,使代码更加简洁易懂。

switch-case的语法如下:

switch (expression) {
  case value1:
    // 如果expression的值等于value1,执行这里的语句
    break;
  case value2:
    // 如果expression的值等于value2,执行这里的语句
    break;
  default:
    // 如果expression的值不等于任何一个case中的值,执行这里的语句
}

其中,expression是要比较的表达式,value1value2等是要比较的值。如果expression的值等于某个value,就会执行相应的case中的语句。如果expression的值不等于任何一个value,就会执行default中的语句。在每个case中,必须包含一个break语句,否则程序会继续执行下去,直到遇到break语句或者switch-case语句结束。

下面是一个使用switch-case语句的简单示例,根据输入的字符串输出相应的瑞克和莫蒂的名言:

String character = 'Rick';
switch (character) {
    
    
  case 'Rick':
    print('Wubba lubba dub dub!');
    break;
  case 'Morty':
    print('Oh geez, Rick!');
    break;
  case 'Summer':
    print('I hate this planet!');
    break;
  default:
    print('I have no idea who you are!');
}

image-20230308233658562

注意事项:

  1. 在switch-case语句中,必须包含一个default分支,否则会在某些情况下导致程序错误。
  2. 每个case中必须包含一个break语句,否则程序会继续执行下去,直到遇到break语句或者switch-case语句结束。
  3. 在case中可以执行任何语句,包括声明变量和调用函数等。
  4. 在case中可以使用continue语句跳过某个case,但是不建议这样做,因为它可能会导致程序逻辑混乱,不易维护。

4.break、continue

在Dart中,break和continue是用来控制循环的两个关键字。它们的用法如下:

  1. break:当循环遇到break语句时,循环会立即停止并退出循环。

  2. continue:当循环遇到continue语句时,循环会跳过当前这次循环中continue之后的代码,然后继续下一次循环。

注意:

  1. break和continue只能用在循环体内部。

  2. 在多层嵌套的循环中,break和continue只会影响当前的循环,如果想要退出外层循环,需要使用标签。

下面是一些示例:

  1. 使用break来退出循环
for (int i = 1; i <= 10; i++) {
    
    
  if (i == 5) {
    
    
    break;
  }
  print(i);
}
  1. 使用continue来跳过本次循环
for (int i = 1; i <= 10; i++) {
    
    
  if (i == 5) {
    
    
    continue;
  }
  print(i);
}
  1. 使用标签来退出外层循环
outerloop:
for (int i = 1; i <= 3; i++) {
    
    
  innerloop:
  for (int j = 1; j <= 3; j++) {
    
    
    if (i == 2 && j == 2) {
    
    
      break outerloop;
    }
    print('$i $j');
  }
}
  1. 在switch语句中使用break

在Dart中,switch语句也可以使用break来控制程序流程。当匹配到某个case时,可以使用break来终止switch语句的执行。如果没有使用break,则会继续执行下一个case。

var fruit = 'apple';
switch (fruit) {
    
    
  case 'apple':
    print('Selected fruit is apple');
    break;
  case 'banana':
    print('Selected fruit is banana');
    break;
  case 'orange':
    print('Selected fruit is orange');
    break;
  default:
    print('No fruit is selected');
}

  1. 在循环语句中使用continue

在循环语句中,可以使用continue来跳过一些不必要的循环。例如,在一个循环中,我们想要跳过某些特定的值,可以使用continue语句来实现。示例代码如下:

for (int i = 1; i <= 10; i++) {
    
    
  if (i % 2 == 0) {
    
    
    continue;
  }
  print(i);
}

三、总结

我们这次学习了在dart中使用常见的控制流语句,如果学习过其他语言,可以发现这部分的规则属于常规操作,如果你是萌新,建议你再线上的DartPad上自己运行一下。

猜你喜欢

转载自blog.csdn.net/diandianxiyu/article/details/129414316