Dart final 和 const 变量
1、final 和 const 变量的作用
如果你不想更改一个变量,可以使用关键字 final
或者 const
修饰变量,这两个关键字可以替代 var
关键字或者加在一个具体的类型前。
final name = 'Bob';
name = 'Alice'; // Error: final变量只能设置一次.
const arr = [];
arr = [100]; // Error: 常量变量不能被赋值.
2、final 和 const 变量的联系
一个 const
变量同时也是一个 final
变量。
3、final 和 const 变量的区别
虽然 final
对象不能被修改,但是它的字段可以被修改。相比之下,const
对象及其字段是不可更改的,它们是不可变的。
4、const 关键词的特殊说明
(1)如果使用 const
修饰类中的变量,则必须加上 static
关键字,即 static const
,顺序不能颠倒。
(2)const
关键字不仅仅可以用来定义常量,还可以用来创建常量值,该常量值可以赋予给任何变量。如下代码所示:
var foo = const [];
final bar = const [];
const baz = []; // 等同于 `const []`
备注:没有使用 final
或 const
修饰的变量的值是可以被更改的,即使这些变量之前引用过 const
的值:foo = [1, 2, 3];
但是,常量的值不可以被修改:baz = [100];
则会报错!