Dart 编程 - 变量


变量是存储值的“内存中的命名空间”。换句话说,它充当程序中值的容器。变量名称为标识符。以下是标识符的命名规则 -

  • 标识符不能是关键字。

  • 标识符可以包含字母和数字。

  • 标识符不能包含空格和特殊字符,下划线 (_) 和美元 ($) 符号除外。

  • 变量名不能以数字开头。

类型语法

变量必须在使用之前声明。Dart 使用 var 关键字来实现相同的目的。声明变量的语法如下 -

var name = 'Smith';

dart 中的所有变量都存储对值的引用,而不是包含该值。名为 name 的变量包含对值为“Smith”的 String 对象的引用。

类型语法

Dart通过在变量名前添加数据类型来支持类型检查。类型检查可确保变量仅保存特定于数据类型的数据。其语法如下 -

String name = 'Smith'; 
int num = 10;

考虑以下示例 -

void main() { 
   String name = 1; 
}

上面的代码片段将导致警告,因为分配给变量的值与变量的数据类型不匹配。

输出

Warning: A value of type 'String' cannot be assigned to a variable of type 'int' 

所有未初始化的变量的初始值为 null。这是因为 Dart 将所有值视为对象。下面的例子说明了同样的情况 -

void main() { 
   int num; 
   print(num); 
}

输出

Null 

动态关键字

未声明为静态类型的变量将隐式声明为动态类型。也可以使用dynamic关键字代替var关键字来声明变量。

下面的例子说明了同样的情况。

void main() { 
   dynamic x = "tom"; 
   print(x);  
}

输出

tom

最终和常量

Final和const关键字用于声明常量Dart 防止修改使用 Final 或 const 关键字声明的变量的值。这些关键字可以与变量的数据类型结合使用,也可以代替var关键字。

const关键字用于表示编译时常量。使用const关键字声明的变量是隐式最终变量。

语法:final 关键字

final variable_name

或者

final data_type  variable_name

语法:const 关键字

const variable_name

或者

const data_type variable_name

示例 – Final 关键字

void main() { 
   final val1 = 12; 
   print(val1); 
}

输出

12

示例 – const 关键字

void main() { 
   const pi = 3.14; 
   const area = pi*12*12; 
   print("The output is ${area}"); 
}

上面的示例使用const关键字声明了两个常量piarea。区域变量值是编译时常量。

输出

The output is 452.15999999999997

注意- 只有const变量可用于计算编译时间常数。编译时常量是其值将在编译时确定的常量

例子

如果尝试修改使用Final或 const 关键字声明的变量,Dart 会引发异常。下面给出的例子说明了同样的情况 -

void main() { 
   final v1 = 12; 
   const v2 = 13; 
   v2 = 12; 
}

上面给出的代码将抛出以下错误作为输出-

Unhandled exception: 
cannot assign to final variable 'v2='.  
NoSuchMethodError: cannot assign to final variable 'v2=' 
#0  NoSuchMethodError._throwNew (dart:core-patch/errors_patch.dart:178) 
#1      main (file: Test.dart:5:3) 
#2    _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:261) 
#3    _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)