Dart型別變數-表示資訊

宋魚000發表於2019-09-20

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定義的變數可以在執行時確定值,而一點確定後就不可再變。

相關文章