變數
以下是建立變數併為其分配值的示例:
var name = 'Bob';
複製程式碼
變數是引用。名為name
的變數包含對值為“Bob”的String型別的物件的引用。
預設值
未初始化的變數的初始值為null
。即使是數字型別的變數,初始值也為null
,因為數字也是物件。
int lineCount;
assert(lineCount == null);
// 變數(即使是數字)的初始值為 null 。
複製程式碼
Note: 生產模式中將忽略assert()的呼叫。在檢查模式下,除非 condition 為真,否則
assert(condition)
將丟擲一個異常。有關詳細資訊,請參閱Assert部分。
Dart 2的提示: Dart 2中移除了檢查模式。更多資訊請看Dart 2升級。
可選的型別
Dart 2的提示: Dart 2中型別都是必選的,但是由於有型別推斷,你依然可以省略某些型別的宣告。更多資訊請看Dart 2升級。
你可以選擇將靜態型別新增到變數宣告中:
String name = 'Bob';
複製程式碼
新增型別是清晰表達意圖的一種方式。諸如編寫者和編輯器之類的工具可以使用這些型別來幫助你,比如通過提供程式碼自動補全和對錯誤的預警。
注意: 本篇文章遵循樣式指南建議來使用
var
宣告區域性變數,而不採用標註型別的宣告方式。即使在強模式下,你也可以使用var
——編譯器會盡可能的推斷型別。
final和const
如果你從不打算改變一個變數,使用final
或const
來代替var
,如果使用型別宣告變數,請在型別前新增final
或const
。final
宣告的變數只能設定一次,一個const
宣告的變數是一個編譯時常量。(const
宣告的變數是隱式的final
。)一個final
宣告的頂級或者類的變數在它第一次被使用時被初始化。
注意: 例項變數可以是
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