Dart 基礎 - 2

Dart Basic - 2

Posted by Bobson Lin on Friday, March 15, 2019

變數(Variables)

Dart 2 可以不宣告變數型別方式有兩種 vardynamic

這兩個看似用法相同但不一樣,其中 var 會在 Compile-time 的時候就會自行判斷你賦予此變數值的型別; 所以再次賦予不同型別的值給此變數,會出現錯誤 Error: A value of type 'int' can't be assigned to a variable of type 'String'.

dynamic 則是能在 Run-time 時放進任何型別的變數。

var name = "Bobson";
// name = 123;

// Error: A value of type 'int' can't be assigned to a variable of type 'String'.

print(name);

dynamic myName = "Bobson";
print(myName);
myName = 123;
print(myName);
Bobson
Bobson
123

任何變數宣告出來沒賦予值的話,預設會給 null

int lineCount;
// default value is null

assert(lineCount == null);

流程控制(Control Flow)

在程式執行時,個別的指令(或是陳述、子程式)執行或求值的順序。

Dart 中主要,控制程式執行有以下幾種:

  • if and else
  • for loops
  • while and do-while loops
  • break and continue
  • switch and case
  • assert
  • try-catch and throw(Exception)

If Else

在 Dart 中,If Else 的條件是必須為 truefalse

int number = -5;

if (number > 0) {
  print("$number 大於 0");
} else if (number < 0) {
  print("$number 小於 0");
} else {
  print("$number 等於 0");
}

Switch Case

Switch Case 可以與 If Else 作轉換

switch (number > 0) {
  case true:
    print("$number 大於 0");
    break;
  default:
    print("$number 小於等於 0");
}

Switch Case 比較常用的方式在於,判斷多種狀態時程式碼需執行哪種對應的模式(case)。 以下載狀態舉例:

// 下載狀態的 enum

enum DownloadState {
  none,
  downloading,
  done,
  error
}

DownloadState downloadState = DownloadState.done;

switch (downloadState) {
  case DownloadState.none:
    print("尚未下載");
    break;
  case DownloadState.downloading:
    print("下載中");
    break;
  case DownloadState.done:
    print("下載完成");
    break;
  case DownloadState.error:
    print("下載失敗");
    break;
  default:
    throw Exception("異常狀態");
}

For loop

傳統的 for loop 的形式是 for(初始; 條件; 遞迴)

變形的 for loop 在 Dart 中像是 forEachmapfor(子集 in 集合)

var collection = [];

for (var i = 0; i < 3; i++) {
  collection.add(i);
}
print(collection);

collection.forEach((i) => print("${i+1}"));

print(collection.map((i) => i+1));

for (var c in collection) {
  print(c);
}
[0, 1, 2]

1
2
3

(1, 2, 3)

0
1
2

While loop

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

do {
  count += 5;
  print("count 加一次 5");
} while (count < 14);
print(count);
5
count 加一次 5
count 加一次 5
15

Break Continue

在 While loop 範例中加入 breakcontinue,可改變程式走向。

int count = 0;
while (count < 5) {
  if (count == 4) {
    count += 3;
    continue;
  }
  // continue 會忽略這行,直接進入下一個迴圈

  count += 1;
}
print(count);

do {
  count += 5;
  print("count 加一次 5");
  if (count % 2 == 0) break;
} while (count < 18);
print(count);
7
count 加一次 5
12

你也可以瞧瞧…

參考

系列文