Dart變數

變數是“記憶體中的命名空間”,它用於存儲值。換句話說,變數用作為程式中值的容器。變數的名稱也稱為識別字。以下是識別字的命名規則 -

  • 識別字不能是關鍵字。
  • 識別字可以包含字母和數字。
  • 識別字不能包含空格和特殊字元,但下劃線(_)和美元($)符號除外。
  • 變數名稱不能以數字開頭。

變數的語法

在使用變數之前必須先聲明變數。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

finalconst關鍵字用於聲明常量。在Dart中不能修改使用finalconst關鍵字聲明變數的值。這些關鍵字可以與變數的數據類型一起使用,也可以與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變數可用於計算編譯時常量。編譯時常量是常量,其值將在編譯時確定。

示例

如果嘗試修改使用finalconst關鍵字聲明的變數,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)
`

上一篇: Dart數據類型 下一篇: Dart運算符