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)
`