# Setup ## Dart SDK 安裝 - Dart 是用於開發跨平台行動應用程式的語言,配合 Flutter 框架使用。 - 前往官方網站下載 Dart SDK,提供 Windows、Linux 和 macOS 版本。 - 根據作業系統選擇並安裝相應的版本。 ## 編輯器選擇 - 可以使用任何編輯器編寫 Dart 程式碼,推薦使用 Visual Studio Code (VS Code)。 - 從 Visual Studio Code 官方網站下載適用的版本。 ## 使用 DartPad - 不想安裝 Dart SDK 或 Visual Studio Code 時,可以使用 DartPad 網頁編輯器。 - 網址為 dartpad.lang.org,能直接在網頁上編寫並執行程式碼。 ## Visual Studio Code 設置 - 使用 Visual Studio Code 時,需要安裝 Dart 擴充功能來支援語法高亮顯示。 - 點擊「View」→「Extensions」,搜尋並安裝 Dart 擴充功能(版本 3.1.0)。 ## 撰寫及執行 Dart 程式碼 - 創建 `.dart` 檔案並撰寫程式碼。 - 使用 Visual Studio Code 內建終端機執行程式碼。 - 點擊「Terminal」→「New Terminal」,輸入 `dart 檔案名稱.dart` 來執行程式碼。 # Fundamentals ## Dart 語言類型與編譯 - Dart 是靜態類型語言,變數類型在定義時就被確定,無法改變。 - 靜態類型:若定義為 `String`,無法賦予其他類型(如 `int` 或 `double`)。 - 動態類型:`dynamic` 類型可儲存任何類型的值。 - Dart 支援兩種編譯方式: - **AOT (Ahead of Time)**:在部署最終產品時,進行優化後的提前編譯。 - **JIT (Just in Time)**:開發期間,程式即時編譯並執行。 ## 變數定義與類型推斷 - Dart 支援類型推斷,使用 `var` 定義變數時,編譯器會自動推斷類型。 - 若明確指定類型(如 `String`),無法賦予其他類型的值。 - 範例:使用 `var` 定義字串變數時,Dart 會自動推斷變數類型為 `String`。 ## Dart 程式基本結構 - Dart 程式以 `main` 函數開始執行。 - `void main()`:表示主函數不回傳任何值,`void` 是可選的。 ## Dart 標準庫 - Dart 的核心功能(如內建類型、集合等)定義在 `dart:core` 中,會自動匯入。 - 通常不需手動匯入 `dart:core`,它已經包含在每個 Dart 程式中。 ## 輸入與輸出操作 - 若需進行輸入輸出操作,需匯入 `dart:io` 庫。 - 使用 `stdout.write()` 提示使用者輸入,`stdin.readLineSync()` 接收輸入。 - 範例:使用字串插值(`$變數名`)將變數值嵌入字串中。 ## 註解寫法 - 單行註解:`//`。 - 多行註解:`/* ... */`。 - 文件註解:使用 `///` 來撰寫文件註解,通常用於函數或類別的說明。 # Data Types ## 程式語言的類型 - **強型別語言**(如 C++、Java、Swift):變數類型在編譯時就已確定。 - **動態型別語言**(如 Python、Ruby、JavaScript):變數類型在執行時才確定。 ## Dart 的基本資料類型 - **五種基本類型**: - `int`:整數 - `double`:浮點數 - `String`:字串 - `bool`:布林值 - `dynamic`:動態類型,允許在執行時更改變數的類型。 ## 變數定義範例 - `int amount1 = 100;`:明確定義為整數。 - `var amount2 = 200;`:使用 `var`,Dart 會推斷變數類型為 `int`。 - 若後續嘗試賦值其他類型(如 `double` 或 `String`),會出現錯誤。 ## 型別推斷與類型安全 - 使用 `var` 定義變數時,Dart 會在編譯時自動推斷變數類型。 - 範例: - `double value1 = 10.5;` - `var value2 = 20.5;`(推斷為 `double`)。 ## 字串與布林類型 - 字串範例: - `String name1 = "Mahmoud";` - `var name2 = "Asan";`(推斷為 `String`)。 - 布林值範例: - `bool isTrue1 = true;` - `var isTrue2 = false;`(推斷為 `bool`)。 ## 動態類型 (`dynamic`) - `dynamic` 允許在執行時更改變數的類型。 - 初始值可為整數,如 `dynamic weakVariable = 100;`。 - 後續可改為字串,如 `weakVariable = "Dart Programming";`。 ## 一切皆物件 - Dart 是物件導向程式語言,所有東西都是物件,包含 `null`。 - `null` 也被視為物件,表示沒有值。 - 範例:`dynamic weakVariable = null;`。 ## 函數也是物件 - Dart 中,函數也是物件,屬於 `Function` 類別的子類型。 # String, Type Conversion, Constant, null ## 字串定義與使用 - 字串可以用單引號或雙引號定義,開始與結束的引號必須一致 - 當字串內有特殊字符如撇號時: - 使用單引號定義時,需用反斜線(`\`)來轉義,如:`'It\'s a book'` - 使用雙引號則不需要轉義:`"It's a book"` - Raw 字串:如果不想讓特殊字符(如換行符)生效,可以在字串前加 `r`,例如:`r"Raw string"` ## 字串插值(String Interpolation) - 在字串中插入變數的值,使用 `$` 符號,如:`"My age is $age"` ## 多行字串 - 使用三個單引號或三個雙引號來定義多行字串 - 範例:`'''This is a multi-line string'''` 或 `"""This is also a multi-line string"""` ## 資料類型轉換 - 字串轉整數:使用 `int.parse()` 方法,例如:`int one = int.parse('1');` - 字串轉浮點數:使用 `double.parse()` 方法,例如:`double pi = double.parse('3.14');` - 若字串中包含非數字字符,則會拋出 `FormatException` - 整數轉字串:使用 `toString()` 方法,例如:`String str = 1.toString();` - 浮點數轉字串:使用 `toStringAsFixed()` 來保留固定的小數位數,例如:`pi.toStringAsFixed(2)` ## 常數定義 - 使用 `const` 關鍵字定義常數,該變數在運行時不可更改 - 範例:`const int num = 0;`、`const bool isTrue = true;`、`const String name = "Dart"` ## 變數初始值與 `null` - 若變數未被賦值,則其初始值為 `null` - 範例:`int num;`,`print(num);` 會輸出 `null` # Operators ## Dart 基本運算子 - 支援的運算子與功能 - 加法運算符:`+` - 減法運算符:`-` - 取餘運算符:`%` - 相等檢查運算符:`==` - 不相等檢查運算符:`!=` - 大於等於運算符:`>=` - 小於等於運算符:`<=` - 簡寫運算子如 `*=` - 支援一元運算子,包含增量運算 `++` ## Null 安全運算子 - Null 檢查方式:`n != null` - 安全訪問屬性:`n?.num` - 使用雙問號運算子 `??` 提供默認值 - 使用 `??=` 設定持久默認值 ## 三元運算子 - 使用條件表達式簡化 if-else - 語法:`condition ? trueValue : falseValue` ## 類型檢查運算子 - 使用 `is` 檢查變數類型 - 判斷類型並執行相應操作 ## 條件控制 ## if-else 語句 - 檢查條件並執行不同代碼塊 - 支援多個條件的檢查 ## switch 語句 - 基於變數值執行不同代碼塊 - 提供清晰的條件選擇結構 # Loop ## Dart 迴圈概述 - 迴圈用於重複執行任務 - Dart 提供五種迴圈類型 ## 標準 for 迴圈 - 語法類似於 JavaScript - 包含初始化變數、條件檢查和增量部分 - 用於印出特定範圍的數字 ## for-in 迴圈 - 專為遍歷陣列設計 - 簡潔的語法 - 依次訪問陣列中的每個元素 ## forEach 迴圈 - 高階函數形式的迴圈 - 使用 `.forEach` 方法遍歷陣列 - 支援箭頭函數或普通函數作為參數 ## while 迴圈 - 使用條件控制執行 - 在滿足條件時持續執行 ## do-while 迴圈 - 先執行一次後檢查條件 - 確保至少執行一次迴圈內容 ## break 語句 - 用於提前終止迴圈 - 可在任意類型的迴圈中使用 ## continue 語句 - 跳過當前迴圈的剩餘部分 - 繼續下一次迴圈執行 ## 使用範例 - 印出特定數字範圍的奇數或偶數 - 根據條件過濾輸出結果 # Collections [ List, Set, Map ] ## List - 有序的值集合,類似於其他語言的陣列 - 使用 `List` 類別來定義 - 項目以索引存取,第一項索引為 0 - 使用 `length` 屬性獲取項目數量 - 支援靜態類型定義,透過 `<String>` 限制類型 - 可使用 `for-in` 迴圈遍歷 - 可變類型,允許修改項目 - 若需定義常量,使用 `const` 關鍵字 - 可以使用擴展運算符(`...`)克隆列表 ## Set - 無序且唯一的項目集合 - 使用大括號定義,例如 `{}` - 若重複添加項目,僅保留唯一項 - 空集合必須指定類型,使用 `<String>` 定義 ## Map - 鍵值對的集合,類似於其他語言的字典 - 鍵和值可以是任何類型 - 使用大括號或 `Map` 類別來定義 - 可以透過鍵來存取對應的值 - 支援動態添加鍵值對,使用 `gifts[key] = value` 方式 ## 空集合及空映射的定義 - 空集合需明確指定類型,否則會被視為 `LinkedHashMap` - 空映射可以使用 `Map` 類別來定義,並隨後添加鍵值對 ## 定義及訪問範例 - 用於定義及操作各類集合的方法,包括如何存取及遍歷它們 # Function ## Dart中的函數概述 - 在Dart中,每個函數都是`Function`類別的物件。 - 定義函數時需指定返回類型,如果函數不返回任何值,可以使用`void`或省略該部分。 - 當使用`dynamic`作為返回類型時,函數可以返回任何類型的數值(整數或浮點數)。 ## 定義平方函數 - 定義一個名為`square`的函數,接收一個`num`類型的參數。 - 函數的功能是將輸入值平方並返回結果。 ## 顯示輸出函數 - 定義一個名為`showOutput`的函數,接收一個名為`message`的參數。 - 使用`print`函數將消息輸出到終端。 ## 簡化函數定義 - Dart提供了使用箭頭函數(fat arrow)來簡化函數定義的方式。 - 使用`=>`符號來定義簡短的單行函數。 ## 匿名函數 - 匿名函數是沒有名稱的函數,常用於回調。 - 可以使用`forEach`函數遍歷列表,傳入匿名函數作為參數。 ## 參數類型 - Dart中有兩種類型的參數:位置參數(positional parameters)和命名參數(named parameters)。 ## 位置參數 - 定義一個接受兩個位置參數的函數。 - 直接通過位置傳遞參數值。 ## 命名參數 - 命名參數使用大括號包圍,並在調用時需要指定參數名稱。 - 命名參數預設為可選,且可以與位置參數混合使用。 ## 可選參數的處理 - 位置參數可選性:使用方括號`[]`包圍參數。 - 使用`??`運算符為命名參數提供默認值。 ## 預設值 - 可以在命名參數後面指定預設值。 - 如果未提供值,則使用預設值。 ## 參數優先級 - 使用括號來確保運算的優先級,避免出現錯誤。 # Class ## 類別與物件導向 - 類別是自訂型別的藍圖。 - 可以將相關的值和方法封裝在一起。 - 支援繼承與多型性。 ## 類別的定義 - 使用 `class` 關鍵字定義類別。 - 類別名稱後面跟隨大括號,裡面是類別的內容。 - 定義屬性如名稱和年齡。 ## 方法的定義 - 類別中的函數稱為方法。 - 方法無需參數時可以直接定義。 - 方法可以使用 `this` 來訪問類別的屬性。 ## 建立物件 - 使用類別名稱和圓括號來實例化物件。 - 物件變數可以用來存取方法和屬性。 ## 建構子 - 建構子是特殊方法,無回傳型別。 - 使用類別名稱作為建構子的名稱。 - 可以定義預設建構子,並透過 `this` 關鍵字存取屬性。 ## 命名建構子 - 除了預設建構子,可以定義命名建構子。 - 命名建構子可用於不同的初始化方式。 ## 不可變的屬性 - 使用 `final` 關鍵字定義不可變屬性。 - `const` 關鍵字定義編譯時常數。 - `final` 可在執行時設定,但不可再變更。 ## 繼承 - 使用 `extends` 關鍵字來繼承類別。 - 子類別可以擁有新的屬性和方法。 - 使用 `super` 關鍵字來調用父類別的方法和屬性。 ## 方法覆寫 - 子類別可以重定義父類別的方法。 - 使用 `@override` 註解來標示覆寫的方法。 ## 設定器與取值器 - 設定器和取值器是提供屬性的存取控制。 - 使用 `get` 和 `set` 關鍵字來定義。 - 可透過方法名稱直接存取取值器和設定器。 # Exception Handling ## 例外處理的概念 - 例外處理是程式語言中的一個特性,用於檢測運行時問題。 - Dart 使用 `throw`、`try`、`catch` 和 `finally` 關鍵字來進行例外處理。 ## 函數範例 - 定義一個函數 `mustGreaterThan0`,如果傳入的值大於 0,則返回該值;否則,拋出例外。 - 使用 `throw` 關鍵字來拋出例外,並可附加訊息。 ## 驗證函數 - 定義另一個函數 `verifyValue`,在其中使用 `try` 區塊調用 `mustGreaterThan0` 函數。 - 如果 `mustGreaterThan0` 拋出例外,則進入 `catch` 區塊處理該例外。 ## 最終區塊 - `finally` 區塊是可選的,主要用來進行一些清理工作。 - 可以檢查 `valueVerification` 是否為 `null`,根據結果輸出相應訊息。 ## 執行結果 - 第一種情況輸入值為 10,返回 "value verified: 10"。 - 第二種情況輸入值為 0,捕捉到例外並輸出錯誤訊息 "value must be greater than 0",同時在 `finally` 區塊中輸出 "value is not accepted"。 ## 捕捉特定例外 - 使用 `on` 關鍵字可以捕捉特定類型的例外。 - 通常情況下,建議使用 `try-catch` 結構,除非有特殊需求才使用 `on`。 # Terminology - Dart SDK:Dart 語言的開發工具包,用來開發和執行 Dart 應用程式。 - Flutter Framework:使用 Dart 語言來開發跨平台行動應用程式的框架。 - Visual Studio Code:流行的跨平台程式碼編輯器,支援多種程式語言的開發。 - DartPad:線上編輯和執行 Dart 程式的工具,無需安裝 Dart SDK。 - Print 函數:在 Dart 中用來輸出訊息到控制台的內建函數。 - Main 函數:Dart 應用程式的進入點,程式從這裡開始執行。 - Extension:在編輯器中擴充功能的插件,用於增加支援特定語言或工具的功能。 - Terminal:執行指令或程式的命令列介面,可在 Visual Studio Code 中使用內建終端。 - Playground:用來測試和運行簡單程式碼的暫時性環境或檔案。 - Dart 2.3:Dart 語言的一個版本號,指出該版本的更新和功能。 - Cross-Platform:指能在多個作業系統上運行的應用程式或工具。 - SDK (Software Development Kit):軟體開發工具包,包含工具和函式庫,用來開發應用程式。 - File Extension:檔案的副檔名,用來識別檔案類型,例如 Dart 檔案的副檔名為 .dart。 - Compile:將程式碼轉換為可執行的二進制檔或其他可執行格式的過程。 - Mac:蘋果公司設計的作業系統,通常指 macOS。 - Windows:微軟開發的作業系統。 - Linux:開源作業系統,常見於伺服器與開發環境。 - Syntax Highlighting:在編輯器中用不同顏色顯示程式碼的不同部分,方便閱讀和編輯。 - Demo Directory:用於展示或測試功能的資料夾。 - Command Line:一種使用文字指令來執行操作的介面。 - 靜態型別 (Static Type):變數在宣告時明確指定其資料型別,後續無法賦予不同型別的值。 - 動態型別 (Dynamic Type):允許變數儲存任何型別的值,型別在運行時確定。 - 型別推斷 (Type Inference):Dart 編譯器自動根據賦值來推斷變數的型別。 - AOT 編譯 (Ahead Of Time Compilation):在應用程式運行前完成編譯,適用於產品發佈。 - JIT 編譯 (Just In Time Compilation):在運行時進行編譯,適用於開發過程中。 - Main 函數:Dart 程式的入口點,所有程式從此函數開始執行。 - Void 型別:表示函數沒有回傳值。 - 字串串接 (String Concatenation):使用加號(+)來將多個字串合併為一個。 - 變數宣告 (Variable Declaration):使用 `var` 或具體型別宣告變數並賦值。 - 標準輸出 (Standard Output):使用 `stdout` 將訊息輸出到終端機。 - 標準輸入 (Standard Input):使用 `stdin` 從終端機讀取使用者輸入。 - 字串內插 (String Interpolation):在字串中使用 `$` 符號插入變數的值。 - 內建函式庫 (Built-in Libraries):Dart 提供的核心函式庫,自動匯入無需手動引用。 - 匯入 (Import):引入外部函式庫或套件供程式使用。 - Dart 核心函式庫 (Dart Core Library):包含 Dart 基礎型別、集合、和其他核心功能,預設自動匯入。 - Dart IO 函式庫:用於處理輸入輸出操作的函式庫。 - 終端機輸入 (Terminal Input):從終端機取得使用者的輸入,通常使用 `stdin.readLineSync()`。 - 終端機輸出 (Terminal Output):將訊息顯示在終端機,通常使用 `stdout.writeln()`。 - 單行註解 (Single-line Comment):使用 `//` 表示的單行註解。 - 區塊註解 (Block Comment):使用 `/* */` 表示的多行註解。 - 強型別 (Strongly Typed):變數的型別在編譯時期已知,不能隨意改變,常見於 C++、Java、Swift 等語言。 - 動態型別 (Dynamic Type):變數的型別在運行時期確定,常見於 Python、Ruby、JavaScript 等語言。 - 基本型別 (Primitive Types):Dart 提供的五種基本型別,包括 `int`、`double`、`String`、`bool`、`dynamic`。 - `int`:表示整數型別。 - `double`:表示浮點數型別,用來儲存小數。 - `String`:字串型別,用來儲存文字資料。 - `bool`:布林型別,值為 `true` 或 `false`。 - `dynamic`:動態型別,允許在運行期間改變變數的型別。 - 變數宣告 (Variable Declaration):使用 `var` 或具體型別來宣告變數,並可依賦值進行型別推斷。 - 型別推斷 (Type Inference):Dart 編譯器根據變數的初始賦值,自動推斷變數的型別。 - 布林值 (Boolean Value):布林型別變數,儲存 `true` 或 `false`。 - 動態型別變數 (Dynamic Variable):使用 `dynamic` 關鍵字宣告的變數,可儲存任意型別的值。 - Null 型別:表示變數沒有值,`null` 也是 Dart 中的一種物件。 - 型別錯誤 (Type Error):當變數型別與賦值不匹配時,編譯器會產生型別錯誤。 - 物件 (Object):Dart 中所有事物都是物件,包括基本型別和 `null`。 - 函數也是物件 (Functions as Objects):Dart 中的函數也是物件,屬於 `Function` 類的子類別。 - 運行時期型別轉換 (Runtime Type Casting):當變數是 `dynamic` 型別時,其型別可以在運行時期改變。 - 編譯時期型別檢查 (Compile-time Type Checking):Dart 編譯器在編譯時期會檢查變數型別是否匹配。 - 資料型別安全 (Type Safety):Dart 確保變數在使用過程中遵守型別的規則,避免型別錯誤。 - 字串內插 (String Interpolation):使用 `$` 來在字串中插入變數的值。 - 類別 (Class):Dart 是物件導向的,所有變數和函數都繼承自類別。 - 單引號與雙引號字串:在 Dart 中,可以使用單引號或雙引號來定義字串,並且必須使用相同的引號結束字串。 - 轉義字符 (Escape Character):使用反斜線 `\` 來轉義特殊字符,例如在字串中插入單引號。 - 原始字串 (Raw String):透過在字串前加 `r`,可以定義一個不會處理特殊字符的字串。 - 字串插值 (String Interpolation):使用 `$` 符號在字串中插入變數的值。 - 多行字串 (Multiline String):可以使用三個單引號或三個雙引號來定義多行字串。 - 型別轉換 (Type Conversion):使用 `int.parse()` 將字串轉換為整數,或使用 `double.parse()` 將字串轉換為浮點數。 - 例外處理 (Exception Handling):當字串無法轉換為數字時,會拋出 `FormatException`。 - 整數轉字串 (Integer to String):使用 `.toString()` 方法將整數轉換為字串。 - 浮點數格式化 (Floating Point Formatting):使用 `toStringAsFixed(2)` 將浮點數格式化為固定小數位數的字串。 - 常數 (Constants):使用 `const` 關鍵字定義常數變數,這些變數的值在運行時無法更改。 - 類型檢查 (Type Checking):可以使用 `.runtimeType` 方法來檢查變數在運行時的類型。 - 空值 (Null Value):未賦值的變數默認為 `null`,Dart 中 `null` 也是一種物件。 - 常數類型推斷 (Constant Type Inference):Dart 編譯器會根據賦值內容自動推斷常數的類型。 - 字串格式檢查 (String Formatting Check):可以使用斷言來檢查字串格式是否符合期望。 - 變數未初始化 (Uninitialized Variable):未初始化的變數在 Dart 中會自動賦予 `null` 值。 - 動態賦值 (Dynamic Assignment):`dynamic` 型別變數可以在運行時期接受不同的資料型別賦值。 - 函數也是物件 (Function as Object):Dart 中的函數也是物件,屬於 `Function` 類別的實例。 - 編譯時期型別安全 (Compile-time Type Safety):Dart 編譯器在編譯時檢查變數型別以避免型別錯誤。 - 數值解析 (Number Parsing):使用內建的數字解析方法來將字串轉換為整數或浮點數。 - 類型斷言 (Type Assertion):使用內建的 `assert()` 方法來驗證數據類型是否正確。 - **運算符 (Operator)**:用於執行運算的符號,如加法、減法、乘法等。 - **變數 (Variable)**:儲存資料的命名儲存空間,能在程式中變更其值。 - **條件語句 (Conditional Statement)**:根據條件的真假執行不同程式碼的語句,如 `if` 和 `else`。 - **函數 (Function)**:一組可重複執行的程式碼,用於執行特定任務。 - **類別 (Class)**:定義物件的藍圖,包含屬性和方法。 - **物件 (Object)**:類別的實例,封裝了數據和行為。 - **屬性 (Property)**:物件的特徵或狀態,通常以變數形式存在。 - **方法 (Method)**:物件的函數,用於操作物件的屬性。 - **例外處理 (Exception Handling)**:捕捉並處理程式執行過程中的錯誤。 - **邏輯運算符 (Logical Operator)**:用於連接多個條件的運算符,如 AND、OR。 - **空值運算符 (Null Operator)**:用於處理空值情況的運算符,如 `?.` 和 `??`。 - **三元運算符 (Ternary Operator)**:基於條件表達式的簡化寫法,通常為 `condition ? trueExpression : falseExpression`。 - **類型檢查運算符 (Type Test Operator)**:檢查變數的數據類型,通常為 `is`。 - **切換語句 (Switch Statement)**:基於變數的值執行不同程式碼塊的語句。 - **迴圈 (Loop)**:重複執行一段程式碼的結構,如 `for` 或 `while`。 - **自增運算符 (Increment Operator)**:增加變數值的運算符,如 `++`。 - **自減運算符 (Decrement Operator)**:減少變數值的運算符,如 `--`。 - **靜態類型 (Static Typing)**:在編譯時檢查變數類型的特性,與動態類型相對。 - **JSON (JavaScript Object Notation)**:用於存儲和傳輸資料的輕量級資料格式。 - **API (Application Programming Interface)**:一組定義了不同軟體元件之間互動的協定。 - **記憶體管理 (Memory Management)**:分配和回收記憶體的過程,以避免記憶體泄漏。 - **循環 (Loop)**:重複執行一段程式碼的結構,根據特定條件決定執行的次數。 - **標準 for 循環 (Standard For Loop)**:一種循環結構,通常包含初始化、條件和增量部分,用於執行固定次數的操作。 - **for in 循環 (For In Loop)**:遍歷集合或陣列的簡化語法,直接取出每個元素的值。 - **for each 循環 (For Each Loop)**:一種高階函數,針對集合中的每個元素執行指定的函數。 - **箭頭函數 (Arrow Function)**:簡化的函數語法,用於表達單行函數,常用於回呼函數。 - **while 循環 (While Loop)**:基於條件持續執行的循環,直到條件不再成立。 - **do-while 循環 (Do-While Loop)**:先執行循環體,再檢查條件的循環,至少執行一次。 - **中斷語句 (Break Statement)**:用於立即終止循環的語句,無論條件是否滿足。 - **繼續語句 (Continue Statement)**:用於跳過當前迴圈的剩餘語句,直接進入下一次迴圈的條件檢查。 - **條件 (Condition)**:在循環中決定是否繼續執行的表達式,通常為布林值。 - **初始值 (Initialization)**:在循環開始時設置的變數值,通常在標準 for 循環中使用。 - **增量 (Increment)**:在每次循環後增加變數值的步驟,通常用於控制循環次數。 - **陣列 (Array)**:一種資料結構,用於儲存多個相同類型的值,按索引存取。 - **長度 (Length)**:陣列或集合中元素的數量,通常用於判斷循環次數。 - **回呼函數 (Callback Function)**:作為參數傳遞給其他函數的函數,通常用於異步操作或事件處理。 - **條件運算符 (Conditional Operator)**:簡化的條件表達式,用於根據布林值返回不同的結果。 - **數據類型 (Data Type)**:定義變數可以儲存的資料類型,如整數、浮點數或字串等。 - **範圍 (Scope)**:變數的可見性和生命週期,通常分為全域和區域範圍。 - **參數 (Parameter)**:傳遞給函數的輸入值,作為函數執行的依據。 - **輸出 (Output)**:程式執行後顯示的結果,通常使用 `print` 函數來顯示。 - **集合 (Collection)**:在 Dart 中的數據結構,用來儲存多個值,包括 List、Set 和 Map。 - **列表 (List)**:有序的集合,可以儲存多個值,通過索引訪問,類似於陣列。 - **索引 (Index)**:列表中元素的位置,從 0 開始計數。 - **長度 (Length)**:列表中元素的數量,可以使用 `length` 屬性獲取。 - **靜態類型 (Static Typing)**:變數在編譯時已被指定類型,編譯器會檢查類型匹配。 - **可變性 (Mutability)**:指集合是否可以在運行時修改其內容,列表在 Dart 中是可變的。 - **常量 (Constant)**:在運行時不能更改的值,通過 `const` 關鍵字來定義。 - **複製 (Cloning)**:創建一個集合的獨立副本,避免兩個變數指向同一個集合。 - **展開運算符 (Spread Operator)**:用於將一個集合的所有元素插入到另一個集合中,表示為 `...`。 - **集合 (Set)**:無序的唯一項集合,每個元素只能出現一次。 - **哈希集合 (Hash Set)**:使用哈希表實現的集合,提供高效的查找和插入操作。 - **映射 (Map)**:鍵值對集合,每個鍵唯一,可以通過鍵訪問相應的值。 - **字典 (Dictionary)**:在某些編程語言中對映射的稱呼,Dart 中的 Map 類似於字典。 - **鍵 (Key)**:映射中用於唯一標識值的項,類似於索引。 - **值 (Value)**:映射中與鍵相關聯的數據,通過鍵訪問。 - **空集合 (Empty Set)**:未包含任何元素的集合,必須使用類型定義來創建。 - **空映射 (Empty Map)**:未包含任何鍵值對的映射,可以通過 Map 類創建。 - **高階函數 (Higher-Order Function)**:接受函數作為參數或返回函數的函數,用於簡化代碼。 - **箭頭函數 (Arrow Function)**:簡化的函數語法,通常用於一行的回呼函數。 - **函數引用 (Function Reference)**:將函數本身作為參數傳遞,而不是函數的返回值。 - **類型推斷 (Type Inference)**:編譯器自動識別變數的類型,減少顯式聲明的需要。 - **函數 (Function)**:可重用的代碼塊,可以接受參數並返回值,是 Dart 中的基本建構塊。 - **返回類型 (Return Type)**:函數返回的數據類型,如 `void`、`int` 或 `dynamic`,決定函數的返回值格式。 - **參數 (Parameter)**:函數接受的輸入值,定義在函數聲明中,可以是位置參數或命名參數。 - **動態類型 (Dynamic Type)**:表示可以在運行時改變類型的值,使用 `dynamic` 關鍵字定義。 - **匿名函數 (Anonymous Function)**:不具名的函數,通常用於一次性執行或作為參數傳遞的函數。 - **高階函數 (Higher-Order Function)**:接受函數作為參數或返回函數的函數,常用於操作集合或回呼。 - **箭頭函數 (Arrow Function)**:簡化函數語法,用 `=>` 定義,通常用於簡單的表達式。 - **位置參數 (Positional Parameter)**:根據位置傳遞的參數,函數調用時必須按照定義的順序提供。 - **命名參數 (Named Parameter)**:在函數調用時通過名稱指定的參數,可以選擇性提供。 - **默認值 (Default Value)**:如果未提供參數值時,使用的預設值,定義在參數聲明中。 - **空安全 (Null Safety)**:防止因使用空值而導致錯誤的機制,使用 `?` 和 `??` 來處理可能的空值。 - **條件運算符 (Conditional Operator)**:簡化的條件判斷表達式,使用 `?` 和 `:` 來選擇性返回值。 - **函數引用 (Function Reference)**:將函數本身作為變數或參數傳遞,不執行函數,而是傳遞其引用。 - **函數體 (Function Body)**:函數內部的執行代碼,包含函數執行的具體操作。 - **回呼函數 (Callback Function)**:作為參數傳遞並在特定情況下被調用的函數,常用於事件處理。 - **可選參數 (Optional Parameter)**:在函數中不必提供的參數,通過命名參數或位置參數的括號來定義。 - **類型推斷 (Type Inference)**:編譯器自動推斷變數類型,減少開發者的明確聲明。 - **邏輯運算符 (Logical Operator)**:用於在條件語句中進行邏輯運算,如 `&&`(與)和 `||`(或)。 - **遍歷 (Iteration)**:通過循環結構訪問集合中的每個元素,常用於 List 和 Set。 - **列表 (List)**:在 Dart 中用於儲存有序的元素集合,支持重複元素。 - **類別(Class)**:一種用來定義自訂型別的結構,包含屬性和方法的藍圖。 - **物件(Object)**:根據類別所創建的實例,擁有類別定義的屬性和方法。 - **封裝(Encapsulation)**:將相關的數據和方法封裝在一個類別中,以保護內部狀態不被外部隨意訪問。 - **繼承(Inheritance)**:一種機制,使得子類可以繼承父類的屬性和方法,促進代碼重用。 - **多態(Polymorphism)**:同一方法可以用於不同類型的對象,根據對象的實際類型執行相應的方法。 - **構造函數(Constructor)**:在創建物件時自動調用的方法,用於初始化物件的屬性。 - **默認構造函數(Default Constructor)**:不帶參數的構造函數,當未提供任何參數時調用。 - **命名構造函數(Named Constructor)**:具名的構造函數,允許以不同的方式初始化物件。 - **靜態變量(Static Variable)**:屬於類別而不是實例的變量,所有實例共享同一靜態變量。 - **最終變量(Final Variable)**:在初始化後不能更改的變量,只能賦值一次。 - **常量變量(Const Variable)**:編譯時常量,在運行時無法更改,必須在編譯時已知其值。 - **方法覆寫(Method Overriding)**:在子類中重新定義從父類繼承的方法,以實現特定的行為。 - **獲取器(Getter)**:用於訪問物件屬性的特殊方法,通常以`get`關鍵字定義。 - **設置器(Setter)**:用於修改物件屬性的特殊方法,通常以`set`關鍵字定義。 - **靜態方法(Static Method)**:屬於類別的方法,可以在不創建類別實例的情況下直接調用。 - **超類(Super Class)**:被繼承的類別,也稱為父類。 - **子類(Sub Class)**:繼承自其他類別的類別,也稱為派生類。 - **錯誤處理(Error Handling)**:處理運行時可能發生的錯誤的過程,以增強代碼的穩定性。 - **對象屬性(Object Property)**:物件中定義的屬性,每個物件可以擁有不同的屬性值。 - **類屬性(Class Property)**:靜態屬性,屬於整個類別,所有實例共享。 - **訪問修飾符(Access Modifier)**:控制對類別成員(屬性和方法)訪問權限的關鍵字,如`public`、`private`、`protected`。 - **例外處理 (Exception Handling)**:程式語言中的功能,用於處理在執行時期發生的錯誤或異常情況,以避免程序崩潰。 - **拋出 (Throw)**:用於主動引發一個例外,通常用在函數中當遇到不正確的輸入或狀態時。 - **捕獲 (Catch)**:用來接收並處理由拋出語句引發的例外,防止程序中斷。 - **最終 (Finally)**:一個可選的區塊,無論是否發生例外,該區塊中的程式碼都會執行,通常用於資源釋放。 - **嘗試 (Try)**:包含可能會引發例外的程式碼區塊,必須與捕獲區塊配合使用。 - **例外類別 (Exception Class)**:定義例外的類型,提供詳細的錯誤信息,通常包含錯誤消息。 - **值驗證 (Value Verification)**:在函數中檢查輸入值是否合法的過程,通常涉及邏輯判斷。 - **插值 (Interpolation)**:將變數的值嵌入到字符串中,常用於錯誤消息的格式化。 - **空值 (Null)**:在程式中表示一個無效或不存在的值,通常用於指示未賦值或操作失敗。 - **運算符 (Operator)**:執行特定操作的符號,例如加法、減法或比較等。 - **條件判斷 (Conditional Statement)**:根據條件執行不同代碼塊的語句,如`if`語句。 - **錯誤類型 (Error Type)**:描述例外的具體類型,用於區分不同的錯誤情況。 - **局部變數 (Local Variable)**:在函數內部定義的變數,僅在該函數的作用域內可用。 - **全局變數 (Global Variable)**:在全局作用域內定義的變數,可以在程序的任何部分訪問。 - **執行 (Execution)**:程式碼的運行過程,涉及函數調用和控制流的管理。 - **錯誤處理 (Error Handling)**:對程式中出現的錯誤進行檢測、捕獲和響應的過程。 - **堆疊跟蹤 (Stack Trace)**:顯示程序執行路徑的報告,有助於調試和定位錯誤源。 - **自定義例外 (Custom Exception)**:使用者自定義的例外類型,用於提供更具體的錯誤信息。 - **異常傳遞 (Exception Propagation)**:例外發生後,程序向上傳遞例外的過程,直到找到相應的捕獲處理。 - **控制流 (Control Flow)**:決定程式碼執行順序的結構,包括條件判斷和循環。 - **錯誤檢測 (Error Detection)**:識別和報告程式中出現的錯誤或異常狀況的過程。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up