Dart執行入口
Dart要求以main函式作為執行的入口
Dart的變數和型別
- 在Dart中可以用var或者具體的型別來宣告一個變數。當使用var定義變數時,表示型別是由編譯器推斷決定。使用靜態型別去定義變數時,編輯器和編譯器可以提供程式碼補全或編譯警告的提示。
- 在預設情況下,未初始化的變數的值都是null。
- Dart是型別安全的語言,並且所有型別都是物件型別,都繼承自頂層型別Object,因此一切變數的值都是類的例項(即物件),甚至數字、布林值、函式和null也都是繼承自Object的物件。
num、bool與String
- Dart的數值型別num,有兩個子類,即int(整數型別)和double(浮點數型別),基本運算子、求絕對值和取整等功能也繼承自num型別。
- 其他高階運算方法,可以嘗試dart:math庫,該庫提供來諸如三角函式、指數、對數、平方根等高階函式。
- Dart的bool型別,只有兩個物件具有bool型別:true和false,它們都是編譯時常量
- Dart是型別安全的,因此不能使用if(nonbooleanValue)或assert(nonbooleanValue)之類的在JavaScript可以正常工作的程式碼,而應該顯示地檢查值
- Dart的String由UTF-16的字串組成。構造字串字面量時既能使用單引號也能使用雙引號,還能在字串中嵌入變數和表示式:可以使用${express}把一個表示式的值放進字串。如果是一個識別符號,可以省略{}.
- Dart呼叫物件的toString()方法獲取物件的字串。使用**“+”拼接字串**。
- 對於多行字串的構建,可以通過三個單引號或三個雙引號的方式宣告。
List與Map
其他程式語言中常見的陣列和字典型別,在Dart中的對應實現是List和Map,統稱為集合型別。
var arr1 = <String>["Tom","Andy", "Jack"];
var arr2 = new List.of([1,2,3]);
arr2.add(499);
arr2.forEach((v) => print('${v}'));
print(arr2 is List<int>); // true
var map1 = <String, String>{'name':'Tom','sex':'male'};
var map2 = new Map<String, String>();
map2['name'] = 'Tom';
map2['sex'] = 'male';
map2.forEach((k,v) => print('${k}: ${v}'));
print(map2 is Map<String, String>); // true
複製程式碼
容器中的元素需要型別一致,可以新增型別約束,讓靜態分析器幫忙檢查字面量中的錯誤
常量定義
定義不可變的變數,需要在定義變數前加上 final 或 const 關鍵字:
- const,表示變數在編譯期間即能確定的值;
- final定義的變數可以在執行時確定值,而一點確定後就不可再變。