【Flutter 1-8】Flutter教程Dart语言——控制语句

控制语句

Dart语言的控制语句跟其他常见语言的控制语句是一样的,基本如下:

  • if 和 else
  • for 循环
  • while 和 do-while 循环
  • break 和 continue
  • switch 和 case
  • assert
If 和 Else

Dart 支持 if - else 语句,其中 else 是可选的,比如下面的例子。

int i = 0;
if (i == 0) {
  print("value 0");
} else if (i == 1) {
  print("value 1");
} else {
  print("other value");
}

如果要遍历的对象实现了 Iterable 接口,则可以使用 forEach() 方法,如果不需要使用到索引,则使用 forEach 方法是一个非常好的选择:

Iterable接口实现了很多方法,比如说 forEach()、any()、where()等,这些方法可以大大精简我们的代码,减少代码量。

var callbacks = [];
for (var i = 0; i < 2; i++) {
  callbacks.add(() => print(i));
}
callbacks.forEach((c) => c());

ListSet 等,我们同样可以使用 for-in 形式的 迭代:

var collection = [1, 2, 3];
for (var x in collection) {
  print(x); // 1 2 3
}
While 和 Do-While

while 循环会在执行循环体前先判断条件:

var i = 0;
while (i < 10) {
  i++;
  print("i = " + i.toString());
}

do-while 循环则会先执行一遍循环体 再 判断条件:

var i = 0;
do {
  i++;
  print("i = " + i.toString());
} while (i < 10);

Break 和 Continue

使用 break 可以中断循环:

for (int i = 0; i < 10; i++) {
  if (i > 5) {
    print("break now");
    break;
  }
  print("i = " + i.toString());
}

使用 continue 可以跳过本次循环直接进入下一次循环:

  for (int i = 0; i < 10; ++i) {
    if (i < 5) {
      continue;
    }
    print("i = " + i.toString());
  }

由于 List实现了 Iterable 接口,则可以简单地使用下述写法:

[0,1, 2, 3, 4, 5, 6, 7, 8, 9, 9].where((i) => i > 5).forEach((i) {
  print("i = " + i.toString());
});
Switch 和 Case

Switch 语句在 Dart 中使用 == 来比较整数、字符串或编译常量,比较的两个对象必须是同一个类型且不能是子类并且没有重写 == 操作符。 枚举类型非常适合在 Switch 语句中使用。
每一个 case 语句都必须有一个 break 语句,也可以通过 continue、throw 或者 return 来结束 case 语句。
当没有 case 语句匹配时,可以使用 default 子句来匹配这种情况:

  var command = 'OPEN';
  switch (command) {
    case 'CLOSED':
      print('CLOSED');
      break;
    case 'PENDING':
      print('PENDING');
      break;
    case 'APPROVED':
      print('APPROVED');
      break;
    case 'DENIED':
      print('DENIED');
      break;
    case 'OPEN':
      print('OPEN');
      break;
    default:
      print('UNKNOW');
  }

但是,Dart 支持空的 case 语句,如下:

var command = 'CLOSED';
switch (command) {
  case 'CLOSED': // case 语句为空时的 fall-through 形式。
  case 'NOW_CLOSED':
    // case 条件值为 CLOSED 和 NOW_CLOSED 时均会执行该语句。
    print(command);
    break;
}
断言

在开发过程中,可以在条件表达式为 false 时使用 assert, 来中断代码的执行,提示出错误。你可以在本文中找到大量使用 assert 的例子。下面是相关示例:

// 确保变量值不为 null (Make sure the variable has a non-null value)
assert(text != null);

// 确保变量值小于 100。
assert(number < 100);

// 确保这是一个 https 地址。
assert(urlString.startsWith('https'));
assert 的第二个参数可以为其添加一个字符串消息。

assert(urlString.startsWith('https'),'URL ($urlString) should start with "https".');

assert 的第一个参数可以是值为布尔值的任何表达式。如果表达式的值为true,则断言成功,继续执行。如果表达式的值为false,则断言失败,抛出一个 AssertionError 异常。

注意:
在生产环境代码中,断言会被忽略,与此同时传入 assert 的参数不被判断。

视频教程

【Flutter 1-8】Dart语言基础—控制语句

本文所有代码都已上传到Github


公众号

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过本课程学习您可以学习Dart语言如下知识:第1章 Dart语言概述:Dart语言简介、Dart语言支持平台开发、Flutter为什么选择Dart语言。第2章 开发环境搭建:下载Dart SDK、Windows下安装Dart SDK、macOS下安装Dart SDK、Visual Studio Code开发工具、IntelliJ IDEA开发工具。第3章 完成个Dart程序:动动手写一个HelloWorld、Dart源代码文件组织结构、Visual Studio Code调试Dart代码、IntelliJ IDEA调试Dart代码。第4章 Dart语法基础:标识符、关键字、变量、常量、注释、库。第5章 Dart数据类型:数值类型、字符串、数据类型相互转换、布尔类型和枚举类型第6章 运算符:算术运算符、算术赋值运算符、关系运算符、逻辑运算符、位运算符、条件运算符、类型检查运算符。第7章 控制语句:分支语句、循环语句、跳转语句。第8章 函数:函数声明、可选参数、头等函数(first-class function)、匿名函数。第9章 类:类声明、getter和setter访问器、构造函数、静态变量和静态方法、级联符号。第10章 继承与多态:Dart中的继承实现、调用父类构造函数、成员变量的覆盖(Override)、方法的覆盖(Override)、多态、混入(Mixins)。第11章 抽象类与接口:抽象类、接口、Dart中隐式接口、实现接口。第12章 数据容器:List容器、Set容器、Map容器、泛型。第13章 异常处理:捕获异常、try-on捕获异常、try-catch捕获异常、try-on-catch捕获异常、使用finally代码块、手动抛出异常、自定义异常类。第14章 异步编程:Dart异步处理机制、案例:同步函数实现读取文件、案例:异步函数实现读取文件、Future对象。  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值