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

做者 | 弗拉德
來源 | 弗拉德(公衆號:fulade_me)html

控制語句

Dart語言的控制語句跟其餘常見語言的控制語句是同樣的,基本以下:git

  • if 和 else
  • for 循環
  • while 和 do-while 循環
  • break 和 continue
  • switch 和 case
  • assert

文章首發地址 github

If 和 Else

Dart 支持 if - else 語句,其中 else 是可選的,好比下面的例子。ide

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

若是要遍歷的對象實現了 Iterable 接口,則能夠使用 forEach() 方法,若是不須要使用到索引,則使用 forEach 方法是一個很是好的選擇:url

Iterable接口實現了不少方法,好比說 forEach()、any()、where()等,這些方法能夠大大精簡咱們的代碼,減小代碼量。 code

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

ListSet 等,咱們一樣能夠使用 for-in 形式的 迭代:htm

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 接口,則能夠簡單地使用下述寫法:
``` Dart:
[0,1, 2, 3, 4, 5, 6, 7, 8, 9].where((i) => i > 5).forEach((i) {
print("i = " + i.toString());
});

##### **Switch 和 Case**
Switch 語句在 Dart 中使用 `==` 來比較整數、字符串或編譯時常量,比較的兩個對象必須是同一個類型且不能是子類而且沒有重寫 `==` 操做符。 枚舉類型很是適合在 Switch 語句中使用。
每個 `case` 語句都必須有一個 `break` 語句,也能夠經過 `continue、throw` 或者 `return` 來結束 `case` 語句。
當沒有 `case` 語句匹配時,能夠使用 `default` 子句來匹配這種狀況:
``` Dart
  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 的參數不被判斷。

本文全部代碼都已上傳到Github


公衆號

相關文章
相關標籤/搜索