如文档中所述:
\n\n\n\n\nconst 关键字\xe2\x80\x99t 仅用于声明常量变量。您还可以使用它来创建常量值,以及声明创建常量值的构造函数。任何变量都可以有一个常量值。
\n
有人可以解释一下常量值的使用吗?
\n小智 10
这是一个简单的例子,我希望能够清楚地解释:
从两个变量和一个常量开始。
var foo = [10,11];
var bar = const [20,21];
const baz = [30,31];
Run Code Online (Sandbox Code Playgroud)
尝试修改一下foo,就成功了。
foo.add(12); // [10,11,12]
Run Code Online (Sandbox Code Playgroud)
尝试类似地修改bar,会出现错误,因为即使bar是变量,它的值也被声明为常量,因此是不可变的。
bar.add(22); // ERROR!
Run Code Online (Sandbox Code Playgroud)
尝试重新分配不同的值bar。这是有效的,因为bar它本身没有被声明为常量。
bar = [40,41];
Run Code Online (Sandbox Code Playgroud)
现在,尝试bar再次修改 的值,这次它起作用了,因为它的新值不是常量。
bar.add(42) // [40,41,42]
Run Code Online (Sandbox Code Playgroud)
尝试修改baz,会出现错误,因为baz本身被声明为常量,其值本质上是不可变的。
baz.add(32); // ERROR!
Run Code Online (Sandbox Code Playgroud)
尝试重新分配baz给新值,但失败,因为baz是常量,无法重新分配给新值。
baz = [50,51]; // ERROR!
Run Code Online (Sandbox Code Playgroud)
void main() {
simpleUse();
finalUse();
constUse();
}
simpleUse() {
print("\nsimple declaration");
var x = [10];
print('before: $x');
x = [5];//changing reference allowed
x.add(10);//changing content allowed
print('after: $x');
}
finalUse() {
print("\nfinal declaration");
final x = [10];
print('before: $x');
// x = [10,20]; //nope changing reference is not allowed for final declaration
x.add(20); //changing content is allowed
print('after: $x');
}
constUse() {
print("\nconst declaration");
const x = [10];
print('before: $x');
// x = [10,20]; //nope -> changing reference is not allowed for final declaration
// x.add(20);//nope -> changing content is not allowed
print('after: $x');
}
Run Code Online (Sandbox Code Playgroud)
此外,变量是简单的值,例如x = 10;
值是枚举、列表、映射、类等的实例。
| 归档时间: |
|
| 查看次数: |
1437 次 |
| 最近记录: |