[Dart]Dart語言之旅<二>:變量

變量

如下是建立變量併爲其分配值的示例:編輯器

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

若是你從不打算改變一個變量,使用finalconst來代替var,若是使用類型聲明變量,請在類型前添加finalconstfinal聲明的變量只能設置一次,一個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建立常量值的更多信息,請參閱listmapclasses


NEXT

[Dart]Dart語言之旅<三>:內置類型

相關文章
相關標籤/搜索