Dart 条件判断、循环控制

一、条件判断
  • if
  • if…else…
  • if…else if…else…
  • switch和case
  • assert
1. if…
if (逻辑表达式)
{
    执行的代码
}

当逻辑表达式结果为true时,执行方法体中的代码。当方法体中的代码只有一句时,也可以写成:

if (逻辑表达式)
    执行的代码
2. if…else…
if (逻辑表达式)
{
    执行的代码
}
else
{
    执行的代码
}

当逻辑表达式结果为true时,执行if方法体中的代码,否则执行else方法体中的代码。

3. if…else if…else…
if (逻辑表达式1)
{
    执行的代码
}
else if (逻辑表达式2)
{
    执行的代码
}
else if (逻辑表达式3)
{
    执行的代码
}
...
else if (逻辑表达式n)
{
    执行的代码
}
else
{
    执行的代码
}

执行第一个逻辑表达式为true的方法体中的代码,如果所有ifelse if分支的逻辑表达式结果都是false,则执行else方法体中的代码

void main()
{
    var intVar = 30;
    if(intVar > 30)
    {
        print("age 30 more");
    }
    else if(intVar < 20)
    {
        print("age 20 less");
    }
    else
    {
        print("age is good");
    }
}
// 打印结果为: age is good
4. switch

Dart中的switch语句使用==,比较整数、字符串或编译时常量。比较的对象必须都是同一个类的实例(而不是其任何子类型的实例),并且该类不能重写==
注: Dart中的Switch语句是针对有限的情况,例如interpreters或scanners。
通常,每个非空case子句以break语句结尾。结束非空case子句的其他方法有continuethrowreturn语句。
当没有case子句匹配时,使用default子句执行代码:

void main()
{
    var intVar = 30;
    switch (intVar)
    {
    case 10:
        print("num 10");
        break;
    case 12:
        print("num 12");
        break;
    case 15:
        print("num 15");
        break;
    default:
        print("num ${intVar}");
    }
}
// 打印结果为:  num 30

以下代码省略了case子句中的break语句,因此发生错误:

void main()
{
    var intVar = 30;
    switch (intVar)
    {
    case 10:
        print("num 10");
        // 错误: 缺失 break
    case 12:
        print("num 12");
        break;
    case 15:
        print("num 15");
        break;
    default:
        print("num ${intVar}");
    }
}

switch允许使用从一个case到另一个case的贯穿形式:

void main()
{
    var intVar = 30;
    switch (intVar)
    {
    case 10:
    case 12:
    case 15:
    case 30:
        print("num 30");
        break;
    default:
        print("num ${intVar}");
    }
}
// 打印结果为:  num 30
5. assert

assert语句在产品环境下是没有作用的,只有在开发状态下才会有效果。
flutter需要开启Debug模式; dart或者dartjs命令,需要添加参数–enable-asserts。

void main()
{
    // assert_test.dart文件中的代码
    var intVar = 30;
    assert(intVar > 10);
    print("int ${intVar}");
    assert(intVar < 20);
    print("int ${intVar}");

    // dart assert_test.dart的结果
    // int 30
    // int 30
    
    /
    // dart --enable-asserts assert_test.dart 的结果
    // int 30
    // Failed assertion: line 50 pos 10: 'intVar < 20': is not true.
}
二、循环控制
  • for
  • for…in
  • forEach
  • while 和 do-while
  • break 和 continue
1. for
for (计数初始值; 边界条件; 计数增量)
{
    执行的代码
}
void main()
{
    for (int i = 0; i < 3; i++)
    {
        print(i);
    }
}
// 输出: 0 1 2
2. for…in

相当于Java语言中的for...each句式,主要用于数组和集合的遍历

void main()
{
    List a = [0, 1, 2, 3, 4];
    for(dynamic x in a)
    {
        print(x);
    }
}
// 输出: 0 1 2 3 4
3. forEach

定义在ListSet等集合中的方法,使用方式

void main()
{
    List a = [0, 1, 2, 3, 4];
    a.forEach((x) => print(x));
}
// 输出: 0 1 2 3 4
4. while

while语句和for循环语句有点类似,都是用于循环执行某段逻辑

void main()
{
    int count = 0;
    /**
     while语句的第一种用法,格式:while(boolean值){方法体}
     当boolean值为true时,循环执行方法体,否则结束退出
     */
    while(count < 5)
    {
        print(count++);         // 输出结果为: 0 1 2 3 4
    }
    print('count = $count');    // 输出结果为:count = 5
}
5. do-while

while循环类似,无论如何do中的代码至少会被执行一次

void main()
{
    int count = 5;

    /**
     while语句的第二种用法,格式:do{方法体}while(boolean值);
     和上面不同的地方在于它会先执行do里面的方法体,后面再接着循环,而且每次也都会执行do
     */
    do
    {
        print(--count);             // 输出结果为:4 3 2 1 0
    }
    while (count > 0 && count < 5);

    print('count = $count');          // 输出结果为: count = 0
}
6.break和continue语句
  • continue表示轮空本次循环,进行下一次循环
  • break表示结束(跳出)整个循环
void main()
{
    var list = [2,3,4];
    for (var i = 0; i < list.length; i++)
    {
        if (i == 1)
        {
            // continue 本义是继续,作用为跳出本次循环,继续下面的循环,也就是说该层for循环遇到它,下面的方法体就不执行了,接着继续执行它以后的循环逻辑
            continue;
        }
        print(list[i]); // 输出结果为: 2 4
    }

    print('--------------------------------');

    var list2 = [4,5,6];
    for (var item in list)
    {
        if (item == 3)
        {
            // break本义为打断,作用上它比continue更彻底,直接是断开循环,也就是说for循环遇到它,后面的循环都不执行了,直接退出
            break;
        }
        for (var item in list2)
        {
            if(item == 5)
            {
                continue;
            }
            print(item);    // 输出结果为: 4 6
        }
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值