iT邦幫忙

2022 iThome 鐵人賽

DAY 6
0
自我挑戰組

30 天初探 Flutter系列 第 6

Day 6 - Dart 的條件與循環控制

  • 分享至 

  • xImage
  •  

上一篇 forEach 方法現身了,因此本篇就要來介紹一下控制流程,包含了條件控制與循環控制。

if - else 條件控制

直接看範例:

void main() {
  var age = 16;
  if (age >= 18) {
    print('You can buy beer!');
  } else {
    print('You can not buy beer!');
  };
}

這是一個判斷年齡是否滿 18 歲,決定能不能買啤酒的條件控制,if 後的小括弧中寫的是判斷式,判斷式結果必須是 boolean 值,若為 true,就執行 {} 中的程式碼,若為 false,則執行 else {} 中的程式碼。

當然也有多條件的狀況下,這時候就可以再加上 else if (condition) {} ,一樣使用判斷式來決定是否符合條件要執行其中的程式碼。

而如果有過多的條件判斷的話,則比較建議採用 switch 的多條件判斷控制~

switch 條件控制

看到 switch 於是乎我就想了一個 switch 的情境例子XD,假設現在我們選擇想玩的遊戲(宣告 game 遊戲名字 ),進入 switch 控制流程後主機就會判斷現在要執行的遊戲,請看以下程式碼:

void main() {
  var game = 'Zelda';
  switch (game) {
    case 'Mario Party':
      print('來玩馬力歐派對吧!');
      break;
    case 'Mario Kart':
      print('來玩馬力歐賽車吧!');
      break;
    case 'Zelda':
      print('來玩薩爾達傳說吧!');
      break;
    default:
      print('你的主機裡沒有這款遊戲,快去購買這款遊戲吧!');
  }
}

case 後面的資料與 game 的值符合,代表條件成立,進入執行程式區塊,而預設 default 可以在所有 case 條件都不成立時,執行預設的動作。

再提一個,每個 case 結尾加上 break,讓程式可以執行到該行後跳出流程,不會再往下一個 case 走~

來看看上面程式碼執行的結果吧!(現在還有人在玩嗎?還是應該都在玩漆彈三)

Imgur

下一位是循環控制 (Loop)

Dart 有兩個主要的循環控制,分為 for loop 與 while loop

for loop

void main() {
  for (var i = 0; i < 10; i++) {
    print(i);
  }
}

上面的程式碼執行一個簡單的 for 迴圈,會依序印出 0 - 9 的輸出結果,for 迴圈中分為三部份

  • 宣告變數起始值 - i 從 0 開始
  • 檢查變數的值是否符合條件式 - 若 i 小於 10,持續進行迴圈中執行的程式碼
  • 更新變數的值 - 每執行過一次迴圈,i 就 + 1

while loop

void main() {
  var a = 0;
  while (a < 10) {
    print(a);
    a++;
  }
}

猜猜看這個 while 迴圈會輸出什麼呢? 對!就是跟上面的 for loop 一樣,會依序印出 0 - 9 的輸出結果,while () 中為判斷式,如果結果為 true,就會執行 {} 中的程式碼並重複執行迴圈,因此 while 迴圈的條件設計要注意,否則一不小心就會陷入無窮迴圈 ∞∞∞∞

一次看看兩個 loop 的輸出吧~

Imgur

而 for loop 跟 while loop 也有分別適合的使用時機,我自己的判斷方式是如果今天我知道迴圈要跑幾次(如已知迭代的對象的長度)那我就會優先使用 for 迴圈~

OK!我們明天見~


上一篇
Day 5 - Dart 的運算子與函式
下一篇
Day 7 - Dart 的物件導向
系列文
30 天初探 Flutter14
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言