📅  最后修改于: 2020-11-05 04:14:07             🧑  作者: Mango
变量是“内存中的命名空间”,用于存储值。换句话说,它充当程序中值的容器。变量名称称为标识符。以下是标识符的命名规则-
标识符不能是关键字。
标识符可以包含字母和数字。
标识符不能包含空格和特殊字符,下划线(_)和美元($)除外。
变量名不能以数字开头。
必须先声明变量,然后才能使用它。 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 variable_name
要么
final data_type variable_name
const variable_name
要么
const data_type variable_name
void main() {
final val1 = 12;
print(val1);
}
12
void main() {
const pi = 3.14;
const area = pi*12*12;
print("The output is ${area}");
}
上面的示例使用const关键字声明了两个常量pi和area 。区域变量的值是一个编译时常量。
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. (dart:isolate-patch/isolate_patch.dart:261)
#3 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)