如下是建立變量併爲其分配值的示例:編輯器
var name = 'Bob';
複製代碼
變量是引用。名爲name
的變量包含對值爲「Bob」的String類型的對象的引用。ide
未初始化的變量的初始值爲null
。即便是數字類型的變量,初始值也爲null
,由於數字也是對象。函數
int lineCount;
assert(lineCount == null);
// 變量(即便是數字)的初始值爲 null 。
複製代碼
Note: 生產模式中將忽略assert()的調用。在檢查模式下,除非 condition 爲真,不然
assert(condition)
將拋出一個異常。有關詳細信息,請參閱Assert部分。工具
Dart 2的提示: Dart 2中移除了檢查模式。更多信息請看Dart 2升級。ui
Dart 2的提示: Dart 2中類型都是必選的,可是因爲有類型推斷,你依然能夠省略某些類型的聲明。更多信息請看Dart 2升級。spa
你能夠選擇將靜態類型添加到變量聲明中:code
String name = 'Bob';
複製代碼
添加類型是清晰表達意圖的一種方式。諸如編寫者和編輯器之類的工具能夠使用這些類型來幫助你,好比經過提供代碼自動補全和對錯誤的預警。對象
注意: 本篇文章遵循樣式指南建議來使用
var
聲明局部變量,而不採用標註類型的聲明方式。即便在強模式下,你也能夠使用var
——編譯器會盡量的推斷類型。字符串
若是你從不打算改變一個變量,使用final
或const
來代替var
,若是使用類型聲明變量,請在類型前添加final
或const
。final
聲明的變量只能設置一次,一個const
聲明的變量是一個編譯時常量。(const
聲明的變量是隱式的final
。)一個final
聲明的頂級或者類的變量在它第一次被使用時被初始化。get
注意: 實例變量能夠是
final
,但不能夠是const
。
這裏有一個建立並設置一個final
變量的例子:
final name = 'Bob'; // 不使用類型聲明變量
// name = 'Alice'; // 取消前面註釋會致使錯誤
final String nickname = 'Bobby';
複製代碼
將const用於想要成爲編譯時常量的變量。若是const變量放在類一層級裏面(譯者注:即類的常量),則將其標記爲static const
。聲明變量爲編譯時常量有多種形式,如數字或字符串、const變量或常數上的算術運算結果:
const bar = 1000000; // 壓力單位 (dynes/cm2)
const double atm = 1.01325 * bar; // 標準氣壓
複製代碼
const
關鍵字不只用於聲明常量,你也能夠使用它來建立常量值,以及聲明建立常量值的構造函數。任何變量均可以有一個常量值。
// Note: [] 建立一個空list。
// const [] 建立一個空的不可變的list(EIL)。
var foo = const []; // foo當前是一個EIL。
final bar = const []; // bar將一直是一個EIL。
const baz = const []; // baz是一個編譯時EIL。
// 您能夠更改沒有final也沒有const修飾的變量的值,即便它曾經有一個常量值。
foo = [];
// 您不能更改有final或有const修飾的變量的值。
// bar = []; // 未處理的異常。
// baz = []; // 未處理的異常。
複製代碼
有關使用const
建立常量值的更多信息,請參閱list,map和classes。
NEXT