flutter【5】dart语言--流程控制语句

if-else

条件必须是布尔型的值。

if (isRaining()) {
  you.bringRainCoat();
} else if (isSnowing()) {
  you.wearJacket();
} else {
  car.putTopDown();
}

for循环

var message = StringBuffer('Dart is fun');
for (var i = 0; i < 5; i++) {
  message.write('!');
}

dart for循环中的闭包可以捕获循环的 index 索引值, 来避免 JavaScript 中常见的问题。

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

输出的结果为所期望的 0 和 1。但是 上面同样的代码在 JavaScript 中会打印两个 2。

for 循环遍历

//对象实现了 Iterable 接口
candidates.forEach((candidate) => candidate.interview());

//for in 遍历
var collection = [0, 1, 2];
for (var x in collection) {
  print(x);
}

while 和 do-while

while 循环在执行循环之前先判断条件是否满足:

while (!isDone()) {
  doSomething();
}

而 do-while 循环是先执行循环代码再判断条件:

do {
  printLine();
} while (!atEndOfPage());

break 和 continue

使用 break 来终止循环:

while (true) {
  if (shutDownRequested()) break;
  processIncomingRequests();
}

使用 continue 来开始下一次循环:

for (int i = 0; i < candidates.length; i++) {
  var candidate = candidates[i];
  if (candidate.yearsExperience < 5) {
    continue;
  }
  candidate.interview();
}

上面的代码在实现 Iterable 接口对象上可以使用下面的写法:

candidates.where((c) => c.yearsExperience >= 5)
          .forEach((c) => c.interview());

Switch and case

  • Dart 中的 Switch 语句使用 == 比较 integer、string、或者编译时常量。
  • 比较的对象必须都是同一个类的实例(并且不是其子类),class 不能覆写 == 操作符。
  • Enumerated types 非常适合 在 switch 语句中使用。
  • 每个非空的 case 语句都必须有一个 break 语句。
  • 空 case 语句中可以不要 break 语句。
  • 可以通过 continue、 throw 或 者 return 来结束非空 case 语句。
  • 如果需要实现继续到下一个 case 语句中继续执行,则可以使用 continue 语句跳转到对应的标签(label)处继续执行:
  • 当没有 case 语句匹配的时候,可以使用 default 语句来匹配这种默认情况。
  • 每个 case 语句可以有局部变量,局部变量 只有在这个语句内可见。
var command = 'CLOSED';
switch (command) {
  case 'CLOSED':
    executeClosed();
    continue nowClosed;
    // Continues executing at the nowClosed label.

nowClosed:
  case 'NOW_CLOSED':
    // Runs for both CLOSED and NOW_CLOSED.
    executeNowClosed();
    break;
}

Assert(断言)

  • 如果条件表达式结果不满足需要,则可以使用 assert 语句俩打断代码的执行
  • 断言只在检查模式下运行有效,如果在生产模式 运行,则断言不会执行。
  • 断言执行失败,会抛出一个异常 AssertionError
// Make sure the variable has a non-null value.
assert(text != null);

// Make sure the value is less than 100.
assert(number < 100);

// Make sure this is an https URL.
assert(urlString.startsWith('https'));

//为 Assert 绑定一个消息
assert(urlString.startsWith('https'),
    'URL ($urlString) should start with "https".');
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • [The Swift Programming Language 中文版]本页包含内容: Swift提供了多种流程控...
    风林山火阅读 672评论 0 0
  • Swift 提供了类似 C 语言的流程控制结构,包括可以多次执行任务的for和while循环,基于特定条件选择执行...
    穷人家的孩纸阅读 777评论 1 1
  • Swift提供了多种控制流声明。包括while循环来多次执行一个任务;if,guard和switch声明来根据确定...
    BoomLee阅读 2,068评论 0 3
  • 敦煌游学归来已经10天了,曾对敦煌故事拥有饱满热情的战友,也冷却的差不多了。曾大喊:人在工作,心在敦煌的战友,也平...
    黑页饮马槽阅读 1,094评论 0 0
  • 停更了一周多的时间,实在太难过了,我不得不说人真的很容易想尽办法让自己变得慵懒,想起来我总觉得自己用了个逃避的方式...
    七十二三一阅读 369评论 0 1

友情链接更多精彩内容