【Flutter 學習筆記】線上課程教學影片:連結
【Flutter 學習筆記】系列文章目錄:連結
在上一節中,我們探討了 if
條件判斷式,這種結構適合處理一個或少數幾個條件。然而,當面對需要進行多個判斷的情況時,使用 switch
敘述會更加合適。在本篇文章中,我們將深入探討 Dart 語言中的 switch-case
條件控制,並透過實際範例來說明其用法。
switch
敘述根據表達式的值來判斷執行對應的 case
區塊。如果沒有任何 case
符合,則會執行 default
區塊的程式碼。以下是 switch
的基本語法:
switch (表達式) {
case 值1:
// 當表達式的值等於值1時,執行這裡的程式碼
break;
case 值2:
// 當表達式的值等於值2時,執行這裡的程式碼
break;
default:
// 當表達式的值不等於任何 case 時,執行這裡的程式碼
}
在這段語法中,表達式
的型別可以是整數 (int
)、字串 (String
) 或枚舉 (enum
)。需要特別注意的是,switch
陳述式中,表達式的資料型別必須與所有 case
的型別一致。如果有任何一個 case
的型別不一致,編譯器將會報錯。例如,如果表達式是整數,那麼所有的 case
也必須是整數,不能混用字串或其他型別。
讓我們來看一個實際的範例,根據星期幾來判斷今天的活動:
String today = "星期五";
switch (today) {
case "星期一":
print("今天是星期一,新的開始了!");
break;
case "星期二":
print("今天是星期二,加油!");
break;
case "星期三":
print("今天是星期三,已經過了一半!");
break;
case "星期四":
print("今天是星期四,週末要來囉!");
break;
case "星期五":
print("今天是星期五,迎接週末到來!");
break;
default:
print("今天是不用工作的日子!");
}
在這段程式碼中,我們定義了一個變數 today
,並將其設為「星期五」。接著,使用 switch
敘述來判斷今天是星期幾,並根據不同的情況輸出相對應的訊息。由於 today
的值是「星期五」,因此程式會印出「今天是星期五,迎接週末到來!」。
使用 switch
敘述有幾個特性需要注意:
如果在某個 case
區塊中沒有使用 break
,程式會繼續執行後面的 case
區塊,這種情況稱為「貫穿」。這在某些情況下是有用的,但通常需要小心使用,以免造成不可預期的錯誤。以下是一個範例:
switch (day) {
case "星期六":
case "星期日":
print("今天是週末,可以好好放鬆!");
break;
default:
print("今天是工作日,努力工作吧!");
}
在這個範例中,無論是「星期六」還是「星期日」,都會執行相同的程式碼,輸出「今天是週末,可以好好放鬆!」。
Dart 3 新特性概述:
在 Dart 3 中,switch-case 語句的行為發生了重要變化,特別是在處理 case 的結束方式上。過去,開發者在每個 case 的結尾必須使用 break
語句,以防止程式碼意外地繼續執行下一個 case,這種情況稱為「fall-through」。然而,從 Dart 3 開始,這一要求被移除,讓程式碼變得更加簡潔。
break
的必要性:在 Dart 3 中,非空的 case 主體結束後不再需要 break
語句。這意味著如果一個 case 沒有明確的結束語句,程式將自動跳出 switch 語句,而不會繼續執行下一個 case 的內容。這一改變不僅減少了開發者的負擔,也降低了因為忘記添加 break
而導致的錯誤。這些變更使得 Dart 的 switch-case 語句更加靈活和易於使用,並且提高了程式碼的可讀性和可維護性。隨著 Dart 語言的演進,這些新特性無疑將為開發者帶來更好的編程體驗。
default
區塊是可選的,但建議在 switch
敘述中使用它,以處理所有未被列舉的情況。這樣可以避免程式在遇到不符合任何 case
的情況下,發生不可預期的錯誤。以下是使用 default
區塊的範例:
String day = "星期三";
switch (day) {
case "星期一":
print("今天是星期一,新的開始了!");
break;
case "星期二":
print("今天是星期二,加油!");
break;
case "星期三":
print("今天是星期三,已經過了一半!");
break;
case "星期四":
print("今天是星期四,週末要來囉!");
break;
case "星期五":
print("今天是星期五,迎接週末到來!");
break;
default:
print("今天是不用工作的日子!");
}
在這個範例中,若 day
的值不在任何 case
中,則會執行 default
區塊的程式碼,這樣可以確保程式不會因為未處理的情況而崩潰。
在 Dart 中,switch-case
是一種非常有效的多重條件判斷工具,特別適合用於處理多個可能的值。透過 switch
敘述,我們可以清晰地組織程式碼,並根據不同的條件執行相應的邏輯。以下是使用 switch-case
的幾個要點:
switch
表達式的型別與所有 case
的型別一致。case
區塊之間的貫穿行為,必要時使用 break
來避免意外執行後續的 case
。switch
敘述中使用 default
區塊,以處理所有未被列舉的情況,增強程式的健壯性。透過這些特性,switch-case
不僅能提高程式的可讀性,還能讓我們更有效地管理多重條件判斷。希望這篇文章能幫助你更深入地理解 Dart 中的 switch-case
使用方式,並在實際開發中靈活運用。