變數是「儲存器中的名稱空間」,它用於儲存值。換句話說,變數用作為程式中值的容器。變數的名稱也稱為識別符號。以下是識別符號的命名規則 -
_
)和美元($
)符號除外。在使用變數之前必須先宣告變數。Dart使用var
關鍵字來標識一個變數。宣告變數的語法如下所示 -
var name = 'smith';
Dart中的所有變數都儲存對值的參照,而不是包含該值。name
變數包含對String
物件的參照,其值為 - Smith
。
Dart通過在變數名前加上資料型別字首來支援型別檢查。型別檢查確保變數僅包含特定於資料型別的資料。下面給出了相同的語法 -
String name = 'Maxsu';
int number = 99;
考慮以下範例 -
void main() {
String name = 1;
}
上面的程式碼段將導致警告,因為分配給變數的值與變數的資料型別不匹配。
執行輸出結果如下 -
Warning: A value of type 'String' cannot be assigned to a variable of type 'int'
預設值
未初始化的變數的初始值為null
。即使是具有數位型別的變數的初始值也是null
,因為數位與Dart中的其他變數一樣,它們都是物件。以下範例說明了這個情況 -
void main() {
int num;
print(num);
}
輸出結果:
Null
dynamic 關鍵字
宣告沒有未指定靜態型別的變數則會隱式宣告為 dynamic
。也可以使用dynamic
關鍵字代替var
關鍵字宣告變數。
參考以下範例 -
void main() {
dynamic x = "tom";
print(x);
}
final
和const
關鍵字用於宣告常數。在Dart中不能修改使用final
或const
關鍵字宣告變數的值。這些關鍵字可以與變數的資料型別一起使用,也可以與var
關鍵字一起使用。
const
關鍵字用於表示編譯時常數。使用const
關鍵字宣告的變數是隱式final
。
final關鍵字語法
final variable_name
// 或者
final data_type variable_name
範例:
void main() {
final val1 = 12;
print(val1); // 輸出:12
}
const關鍵字語法
const variable_name
// 或者
const data_type variable_name
範例:
void main() {
const pi = 3.14;
const area = pi*12*12;
print("The output is ${area}"); // 輸出: 452.15999999999997
}
註 - 只有
const
變數可用於計算編譯時常數。編譯時常數是常數,其值將在編譯時確定。
範例
如果嘗試修改使用final
或const
關鍵字宣告的變數,Dart會丟擲異常。如下面給出的例子 -
void main() {
final v1 = 12;
const v2 = 13;
v2 = 12;
}
執行上面程式碼將丟擲以下錯誤 -
$dart main.dart
Unhandled exception:
cannot assign to final variable 'v2='.
NoSuchMethodError: cannot assign to final variable 'v2='
#0 NoSuchMethodError._throwNew (dart:core-patch/errors_patch.dart:176)
#1 main (file:///home/cg/root/3257025/main.dart:4:4)
#2 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:255)
#3 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:142)
`