Dart 程式設計 - 語法



語法定義了一套編寫程式的規則。每種語言規範都定義了自己的語法。Dart 程式由以下組成:

  • 變數和運算子
  • 函式
  • 表示式和程式設計結構
  • 決策和迴圈結構
  • 註釋
  • 庫和包
  • 型別定義
  • 表示為集合/泛型的數

你的第一個 Dart 程式碼

讓我們從傳統的“Hello World”示例開始:

main() { 
   print("Hello World!"); 
}

main() 函式是 Dart 中一個預定義的方法。此方法充當應用程式的入口點。Dart 指令碼需要main() 方法才能執行。print() 是一個預定義函式,它將指定的字串或值列印到標準輸出,即終端。

上述程式碼的輸出將是:

Hello World!

執行 Dart 程式

您可以透過兩種方式執行 Dart 程式:

  • 透過終端
  • 透過 WebStorm IDE

透過終端

要透過終端執行 Dart 程式:

  • 導航到當前專案的路徑
  • 在終端視窗中鍵入以下命令
dart file_name.dart

透過 WebStorm IDE

要透過 WebStorm IDE 執行 Dart 程式:

  • 右鍵單擊 IDE 上的 Dart 指令碼檔案。(檔案應包含main() 函式以啟用執行)

  • 單擊“執行 <file_name>” 選項。下面給出了相同的螢幕截圖:

Run Test1 Dart

或者,可以單擊Run Button按鈕或使用快捷鍵Ctrl+Shift+F10 執行 Dart 指令碼。

Dart 命令列選項

Dart 命令列選項用於修改 Dart 指令碼執行。Dart 的常用命令列選項包括以下內容:

序號 命令列選項和描述
1 -c 或 --c

啟用斷言和型別檢查(檢查模式)。

2 --version

顯示 VM 版本資訊。

3 --packages <path>

指定包解析配置檔案的路徑。

4 -p <path>

指定匯入庫的查詢位置。此選項不能與 --packages 一起使用。

5 -h 或 --help

顯示幫助。

啟用檢查模式

Dart 程式以兩種模式執行,即:

  • 檢查模式
  • 生產模式(預設)

建議在開發和測試期間在檢查模式下執行 Dart VM,因為它會新增警告和錯誤以幫助開發和除錯過程。檢查模式強制執行各種檢查,例如型別檢查等。要開啟檢查模式,在執行指令碼時,在指令碼檔名之前新增 -c 或 –-checked 選項。

但是,為了確保在執行指令碼時獲得性能優勢,建議在生產模式下執行指令碼。

考慮以下Test.dart 指令碼檔案:

void main() { 
   int n = "hello"; 
   print(n); 
} 

透過輸入以下內容執行指令碼:

dart Test.dart

儘管存在型別不匹配,但指令碼仍會成功執行,因為檢查模式已關閉。指令碼將產生以下輸出:

hello

現在嘗試使用“- - checked”或“-c”選項執行指令碼:

dart -c Test.dart 

或者,

dart - - checked Test.dart

Dart VM 將丟擲一個錯誤,指出存在型別不匹配。

Unhandled exception: 
type 'String' is not a subtype of type 'int' of 'n' where 
   String is from dart:core 
   int is from dart:core 
#0  main (file:///C:/Users/Administrator/Desktop/test.dart:3:9) 
#1  _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart :261) 
#2  _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)

Dart 中的識別符號

識別符號是賦予程式中元素(如變數、函式等)的名稱。識別符號的規則如下:

識別符號可以包含字元和數字。但是,識別符號不能以數字開頭。

  • 識別符號不能包含特殊符號,除了下劃線 (_) 或美元符號 ($) 之外。

  • 識別符號不能是關鍵字。

  • 它們必須是唯一的。

  • 識別符號區分大小寫。

  • 識別符號不能包含空格。

下表列出了一些有效和無效識別符號的示例:

有效識別符號 無效識別符號
firstName Var
first_name first name
num1 first-name
$result 1number

Dart 中的關鍵字

關鍵字在語言環境中具有特殊含義。下表列出了 Dart 中的一些關鍵字。

abstract 1 continue false new this
as 1 default final null throw
assert deferred 1 finally operator 1 true
async 2 do for part 1 try
async* 2 dynamic 1 get 1 rethrow typedef 1
await 2 else if return var
break enum implements 1 set 1 void
case export 1 import 1 static 1 while
catch external 1 in super with
class extends is switch yield 2
const factory 1 library 1 sync* 2 yield* 2

空格和換行符

Dart 忽略程式中出現的空格、製表符和換行符。您可以在程式中隨意使用空格、製表符和換行符,並且可以自由地以整潔一致的方式格式化和縮排程式,使程式碼易於閱讀和理解。

Dart 區分大小寫

Dart 區分大小寫。這意味著 Dart 區分大寫和小寫字元。

語句以分號結尾

每行指令稱為語句。每個 Dart 語句都必須以分號 (;) 結尾。一行可以包含多個語句。但是,這些語句必須用分號隔開。

Dart 中的註釋

註釋是提高程式可讀性的一種方法。註釋可用於包含有關程式的其他資訊,例如程式碼作者、有關函式/結構的提示等。註釋被編譯器忽略。

Dart 支援以下型別的註釋:

  • 單行註釋 ( // ) - “//” 和行尾之間的任何文字都被視為註釋

  • 多行註釋 (/* */) - 這些註釋可能跨越多行。

示例

// this is single line comment  
  
/* This is a   
   Multi-line comment  
*/ 

Dart 中的面向物件程式設計

Dart 是一種面向物件的語言。面向物件是一種軟體開發正規化,遵循現實世界的建模。面向物件將程式視為物件的集合,這些物件透過稱為方法的機制相互通訊。

  • 物件 - 物件是任何實體的即時表示。根據 Grady Brooch 的說法,每個物件都必須具有三個特徵:

    • 狀態 - 由物件的屬性描述。

    • 行為 - 描述物件將如何行動。

    • 標識 - 一個唯一的值,將一個物件與一組類似的物件區分開來。

  • - 從 OOP 的角度來看,類是建立物件的藍圖。類封裝了物件的資料。

  • 方法 - 方法促進物件之間的通訊。

示例:Dart 和麵向物件

class TestClass {   
   void disp() {     
      print("Hello World"); 
   } 
}  
void main() {   
   TestClass c = new TestClass();   
   c.disp();  
}

上面的示例定義了一個類TestClass。該類有一個方法disp()。該方法在終端上列印字串“Hello World”。new 關鍵字建立類的物件。該物件呼叫方法disp()

程式碼應產生以下輸出

Hello World
廣告