一、變量
Dart語言中所有變量都是一個(gè)對象,每個(gè)對象都是一個(gè)類的實(shí)例。數(shù)字類型(numbers)、函數(shù)和 null 也是對象。所有對象都繼承自 Object 類。
1、變量聲明
聲明并初始化一個(gè)變量:
var blog = 'https://autoref.cn';
雖然Dart語言是強(qiáng)類型的,但類型注解也是可選的,像上面的代碼中,blog被推斷為String類型。變量blog包含了一個(gè)String對象的引用,值為”https://autoref.cn“。
如果一個(gè)對象沒有限制單一類型,可以指定為 Object 或 dynamic 類型,如:
dynamic blog = 'https://autoref.cn';
另外一種可選方式為明確地聲明類型:
String blog = 'https://autoref.cn';
2、變量默認(rèn)值
未初始化的變量初始值為 null ,即使變量是數(shù)字類型,因?yàn)镈art語言中所有變量都是對象。
int age;
assert(age == null);
PS:當(dāng)condition為false時(shí),assert(condition)會(huì)拋出一個(gè)異常。
二、常量
使用 final 或 const 聲明,表明變量的值不能改變。
1、final
final類型的變量只能設(shè)置一次,可以在第一次使用的時(shí)候再初始化。
// 正確
final pre = 'https://';
final String web = 'autoref.cn';
// 正確
var a = 1;
final b = a;
// 錯(cuò)誤,final 變量只能賦值一次
pre = 'game';
2、const
const是運(yùn)行時(shí)常量(const變量無疑就是final),需要在聲明時(shí)賦值初始化,在編譯時(shí)就確定值。
// 正確
const one = 100;
const double num = 3.14 * one;
// 正確
const a = 2;
const b = a;
// 錯(cuò)誤:const 變量必須初始化一個(gè)常量值
var c = 1;
const d = c;
// 錯(cuò)誤:const 變量必須初始化一個(gè)常量值
final e = 1;
const f = e;
// 錯(cuò)誤,需要在聲明時(shí)賦值初始化
const name;
const關(guān)鍵字不僅能聲明常量變量,也可以用來創(chuàng)建常量值,任何變量都可以有一個(gè)常量值:
var foo = const [];
final bar = const [];
const baz = []; // 相當(dāng)于 `const []`
對于foo,有一個(gè)常量值,但是可以改變它的值:
foo = [1, 2, 3];
對于baz,本身是常量變量,不能改變它的值。
PS1:實(shí)例變量只能是final,不能為const。final聲明的實(shí)例變量必須在構(gòu)造方法體開始前初始化。
PS2:flnal 或者 const 不能和 var 同時(shí)使用。