目錄
-
- 一, 變量聲明
-
- 1. var
-
- 1.1 與swift的var相同, 類型一旦确定, 不能再修改
- 1.2 當var聲明一個變量後, Dart在編譯時會根據第一次指派資料的類型來推斷其類型,編譯結束後其類型就已經被确定
- 2. final和const
-
-
- 2.1. final和const修飾的變量, 隻能被指派一次
- 2.2. 差別: const變量是一個編譯時常量,final變量在第一次使用時被初始化
-
- 3. dynamic和Object
-
-
- 3.1. 與 var功能相似,都會在指派時自動進行類型推斷
- 3.2. final和const修飾的變量, 指派後可以改變其類型
- 3.3. Object 是dart所有對象的根基類,任何類型的資料都可以指派給Object聲明的對象
-
一, 變量聲明
note: 變量的聲明必須使用 ‘const’, ‘final’, ‘var’ 或者 其他type name
a = 123 //error
1. var
1.1 與swift的var相同, 類型一旦确定, 不能再修改
1.2 當var聲明一個變量後, Dart在編譯時會根據第一次指派資料的類型來推斷其類型,編譯結束後其類型就已經被确定
var a = 1000;
a = 'aaaaa'; /**Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
*/
print("${a}");
2. final和const
2.1. final和const修飾的變量, 隻能被指派一次
2.2. 差別: const變量是一個編譯時常量,final變量在第一次使用時被初始化
final one;
one = 123;
one = 333;
3. dynamic和Object
3.1. 與 var功能相似,都會在指派時自動進行類型推斷
3.2. final和const修飾的變量, 指派後可以改變其類型
3.3. Object 是dart所有對象的根基類,任何類型的資料都可以指派給Object聲明的對象
dynamic ab = 1000;
ab = 'aaaaa';
參考:
- https://www.dartlang.org/guides/language/language-tour#final-and-const
- https://www.dartlang.org/guides/language/effective-dart/design#do-annotate-with-object-instead-of-dynamic-to-indicate-any-object-is-allowed
- https://www.dartlang.org/guides/language/language-tour#important-concepts
- Dartpad代碼運作工具: https://dartpad.dartlang.org