【Flutter 學習筆記】switch-case 多重條件判斷

閱讀時間約 7 分鐘
raw-image
【Flutter 學習筆記】線上課程教學影片:連結
【Flutter 學習筆記】系列文章目錄:連結

在上一節中,我們探討了 if 條件判斷式,這種結構適合處理一個或少數幾個條件。然而,當面對需要進行多個判斷的情況時,使用 switch 敘述會更加合適。在本篇文章中,我們將深入探討 Dart 語言中的 switch-case 條件控制,並透過實際範例來說明其用法。

1. 基本的 switch-case 條件控制

switch 敘述根據表達式的值來判斷執行對應的 case 區塊。如果沒有任何 case 符合,則會執行 default 區塊的程式碼。以下是 switch 的基本語法:

switch (表達式) {
case1:
// 當表達式的值等於值1時,執行這裡的程式碼
break;
case2:
// 當表達式的值等於值2時,執行這裡的程式碼
break;
default:
// 當表達式的值不等於任何 case 時,執行這裡的程式碼
}

在這段語法中,表達式 的型別可以是整數 (int)、字串 (String) 或枚舉 (enum)。需要特別注意的是,switch 陳述式中,表達式的資料型別必須與所有 case 的型別一致。如果有任何一個 case 的型別不一致,編譯器將會報錯。例如,如果表達式是整數,那麼所有的 case 也必須是整數,不能混用字串或其他型別。

1.1 實際範例:根據星期幾判斷活動

讓我們來看一個實際的範例,根據星期幾來判斷今天的活動:

String today = "星期五";

switch (today) {
case "星期一":
print("今天是星期一,新的開始了!");
break;
case "星期二":
print("今天是星期二,加油!");
break;
case "星期三":
print("今天是星期三,已經過了一半!");
break;
case "星期四":
print("今天是星期四,週末要來囉!");
break;
case "星期五":
print("今天是星期五,迎接週末到來!");
break;
default:
print("今天是不用工作的日子!");
}

在這段程式碼中,我們定義了一個變數 today,並將其設為「星期五」。接著,使用 switch 敘述來判斷今天是星期幾,並根據不同的情況輸出相對應的訊息。由於 today 的值是「星期五」,因此程式會印出「今天是星期五,迎接週末到來!」。

2. switch 的特性

使用 switch 敘述有幾個特性需要注意:

2.1 貫穿 (fall-through)

如果在某個 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 而導致的錯誤。
  • 空 case 的行為:如果一個 case 是空的,則它會自動穿透到下一個 case,這使得多個 case 可以共享同一個主體。這在某些情況下是非常有用的,但開發者仍需小心使用,以免造成不可預期的錯誤。

這些變更使得 Dart 的 switch-case 語句更加靈活和易於使用,並且提高了程式碼的可讀性和可維護性。隨著 Dart 語言的演進,這些新特性無疑將為開發者帶來更好的編程體驗。

2.2 default 區塊

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 區塊的程式碼,這樣可以確保程式不會因為未處理的情況而崩潰。

3. 小結

在 Dart 中,switch-case 是一種非常有效的多重條件判斷工具,特別適合用於處理多個可能的值。透過 switch 敘述,我們可以清晰地組織程式碼,並根據不同的條件執行相應的邏輯。以下是使用 switch-case 的幾個要點:

  • 表達式的型別一致性:確保 switch 表達式的型別與所有 case 的型別一致。
  • 貫穿特性:注意 case 區塊之間的貫穿行為,必要時使用 break 來避免意外執行後續的 case
  • 使用 default 區塊:建議在 switch 敘述中使用 default 區塊,以處理所有未被列舉的情況,增強程式的健壯性。

透過這些特性,switch-case 不僅能提高程式的可讀性,還能讓我們更有效地管理多重條件判斷。希望這篇文章能幫助你更深入地理解 Dart 中的 switch-case 使用方式,並在實際開發中靈活運用。

avatar-img
11會員
243內容數
哈囉!歡迎光臨我的沙龍!我是 KT,一位對應用程式開發充滿熱情的開發者。在這個專屬空間,我將與您分享我在應用開發領域的深入學習心得和豐富的實戰經驗。如果您對應用程式開發技術同樣充滿好奇,渴望不斷探索新知,歡迎成為我們的會員,一起在應用程式開發的旅途上,探索更深層次的技術世界,享受學習的樂趣。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
HKT實驗室 的其他內容
本文將深入探討巢狀 if 條件式,並透過範例詳細說明其實作原理。這種結構能夠提供靈活且豐富的條件判斷,但在使用時需注意避免過度嵌套,以確保程式碼的可讀性和可維護性。
在 Dart 程式語言中,if 多條件判斷結構允許處理複雜邏輯,根據第一個成立的條件執行相應程式碼。語法包括多個條件的檢查,並可用於實際範例,如根據考試分數判斷成績等級。此結構在成績評定、折扣計算等應用中非常常見。
這篇文章介紹了 Dart 程式語言中的 if-else 條件控制結構。透過 if 語句,我們可以根據條件的真假來執行不同的程式碼。文章提供了一個年齡判斷的範例,當年齡大於或等於 18 時,輸出允許進入酒吧的訊息;否則,則輸出禁止進入的訊息。
文章介紹了 Dart 程式語言中的 if 條件敘述,解釋其基本語法及運作方式,並透過範例展示如何根據條件執行程式碼。
本文介紹了常用的比較運算符,包括等於(==)、不等於(!=)、大於(>)、小於(<)、大於等於(>=)和小於等於(<=)。透過範例程式碼,讀者可以理解這些運算符的功能,例如檢查變數 a 和 b 的大小關係,並學習如何利用這些運算符進行邏輯判斷。
本文介紹了 Dart 程式語言中的邏輯運算符,包括邏輯 AND(&&)、邏輯 OR(||)和邏輯 NOT(!)。這些運算符用於控制程式流程和判斷條件,幫助開發者根據布林變數的真偽執行相應的程式碼。透過範例,讀者可以了解如何使用這些運算符來判斷天氣和週末狀況,並掌握基本的條件判斷語法。
本文將深入探討巢狀 if 條件式,並透過範例詳細說明其實作原理。這種結構能夠提供靈活且豐富的條件判斷,但在使用時需注意避免過度嵌套,以確保程式碼的可讀性和可維護性。
在 Dart 程式語言中,if 多條件判斷結構允許處理複雜邏輯,根據第一個成立的條件執行相應程式碼。語法包括多個條件的檢查,並可用於實際範例,如根據考試分數判斷成績等級。此結構在成績評定、折扣計算等應用中非常常見。
這篇文章介紹了 Dart 程式語言中的 if-else 條件控制結構。透過 if 語句,我們可以根據條件的真假來執行不同的程式碼。文章提供了一個年齡判斷的範例,當年齡大於或等於 18 時,輸出允許進入酒吧的訊息;否則,則輸出禁止進入的訊息。
文章介紹了 Dart 程式語言中的 if 條件敘述,解釋其基本語法及運作方式,並透過範例展示如何根據條件執行程式碼。
本文介紹了常用的比較運算符,包括等於(==)、不等於(!=)、大於(>)、小於(<)、大於等於(>=)和小於等於(<=)。透過範例程式碼,讀者可以理解這些運算符的功能,例如檢查變數 a 和 b 的大小關係,並學習如何利用這些運算符進行邏輯判斷。
本文介紹了 Dart 程式語言中的邏輯運算符,包括邏輯 AND(&&)、邏輯 OR(||)和邏輯 NOT(!)。這些運算符用於控制程式流程和判斷條件,幫助開發者根據布林變數的真偽執行相應的程式碼。透過範例,讀者可以了解如何使用這些運算符來判斷天氣和週末狀況,並掌握基本的條件判斷語法。
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
這篇內容,將會講解什麼是「switch」,以及與「switch」相關的知識。包括switch的簡介、switch、break。
Thumbnail
這篇內容,將會講解什麼是「if else」,以及與「if else」相關的知識。包括if else的簡介、if、if else、else if、套娃式的if。
Thumbnail
本文介紹了在網站開發中如何運用狀態機的原則和設計方法。通過具體案例分析,以及狀態和數據的區分,詳細介紹了狀態機的設計原則和應用。讀者可以通過本文瞭解如何將狀態機應用於實際的網站開發中。
Thumbnail
此章節的目的是介紹Java程式語言中的流程控制結構,包括條件語句(if, else if, else)、三元運算子、switch語句,以及各種迴圈(for, foreach, while)。同時,也解釋了如何在迴圈中使用控制語句來改變程式的執行流程。每種主題都配有示例程式碼以幫助理解。
Thumbnail
本章節帶領讀者了解 Kotlin 的流程控制語法,包括條件判斷、當做三元運算子使用的 if 表達式、用來替代 switch 語句的 when 語句、用於迴圈運作的 for 和 while 語句,以及控制迴圈執行流程的語句和標籤概念。該章節目的在於讓讀者深入掌握流程控制功能,進一步提升編程技巧。
Thumbnail
本篇介紹了Swift程式語言中的各種流程控制元素,包括條件語句(如if, else if, else),三元運算子,多條件分支判斷的switch語句,以及各種迴圈(如for迴圈,while迴圈,以及repeat-while迴圈)。同時也詳細解釋了如何進行迴圈嵌套,以及如何使用控制迴圈語句。
Thumbnail
本章節提供了關於Typescript中流程控制元素的詳細介紹,包括if, else if, else語句,三元運算子,switch語句,各種for迴圈,while迴圈,循環嵌套和控制迴圈語句(break,continue和標籤)的使用。
※ TypeScript範例說明: interface ITest { test1: string test2: number print: (arg: string[]) => boolean } class Test implements ITest { public te
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
這篇內容,將會講解什麼是「switch」,以及與「switch」相關的知識。包括switch的簡介、switch、break。
Thumbnail
這篇內容,將會講解什麼是「if else」,以及與「if else」相關的知識。包括if else的簡介、if、if else、else if、套娃式的if。
Thumbnail
本文介紹了在網站開發中如何運用狀態機的原則和設計方法。通過具體案例分析,以及狀態和數據的區分,詳細介紹了狀態機的設計原則和應用。讀者可以通過本文瞭解如何將狀態機應用於實際的網站開發中。
Thumbnail
此章節的目的是介紹Java程式語言中的流程控制結構,包括條件語句(if, else if, else)、三元運算子、switch語句,以及各種迴圈(for, foreach, while)。同時,也解釋了如何在迴圈中使用控制語句來改變程式的執行流程。每種主題都配有示例程式碼以幫助理解。
Thumbnail
本章節帶領讀者了解 Kotlin 的流程控制語法,包括條件判斷、當做三元運算子使用的 if 表達式、用來替代 switch 語句的 when 語句、用於迴圈運作的 for 和 while 語句,以及控制迴圈執行流程的語句和標籤概念。該章節目的在於讓讀者深入掌握流程控制功能,進一步提升編程技巧。
Thumbnail
本篇介紹了Swift程式語言中的各種流程控制元素,包括條件語句(如if, else if, else),三元運算子,多條件分支判斷的switch語句,以及各種迴圈(如for迴圈,while迴圈,以及repeat-while迴圈)。同時也詳細解釋了如何進行迴圈嵌套,以及如何使用控制迴圈語句。
Thumbnail
本章節提供了關於Typescript中流程控制元素的詳細介紹,包括if, else if, else語句,三元運算子,switch語句,各種for迴圈,while迴圈,循環嵌套和控制迴圈語句(break,continue和標籤)的使用。
※ TypeScript範例說明: interface ITest { test1: string test2: number print: (arg: string[]) => boolean } class Test implements ITest { public te