Dart 中的 'const' 关键字放置有何不同?
What's different about 'const' keyword placement in Dart?
void main() {
var list1 = const [1, 2, 3];
const list2 = [1, 2, 3];
}
list1和list2有区别吗?
'const' Dart 中的关键字放置有何不同?
- 在列表文字之前的 'const' 和变量名称之前的 'const' 之间
const
as 关键字使您的对象 constant
之后您无法为其重新分配任何值。
Const means that the object's entire deep state can be determined entirely at compile-time and that the object will be frozen and completely immutable.
在你的例子中
list1 = []; // perfectly fine
list2 = []; // but this throw errors (Error: Can't assign to the const variable 'list2'.)
另一方面,var
允许您为变量重新赋值。
但是,值后的const
使得值unmodifiable
我们来看一个例子
list1.add(22); // ERROR! Cannot add to an unmodifiable list
// but you still can reassign the value
list1 = [];
// while the
list2 = []; // throw errors as I said above!
const
关键字变量中值的 const
被隐藏。
const list2 = const [1,2,3];
list2.add(22); // ERROR! Cannot add to an unmodifiable list
简而言之:一个使分配的内存不可变,另一个相同,还有指向它的指针。在这两种情况下,列表(对象)都是不可变的。
我希望这可以帮助您理解其中的区别。
的官方文档的更多信息
void main() {
var list1 = const [1, 2, 3];
const list2 = [1, 2, 3];
}
list1和list2有区别吗?
'const' Dart 中的关键字放置有何不同?
- 在列表文字之前的 'const' 和变量名称之前的 'const' 之间
const
as 关键字使您的对象 constant
之后您无法为其重新分配任何值。
Const means that the object's entire deep state can be determined entirely at compile-time and that the object will be frozen and completely immutable.
在你的例子中
list1 = []; // perfectly fine
list2 = []; // but this throw errors (Error: Can't assign to the const variable 'list2'.)
另一方面,var
允许您为变量重新赋值。
但是,值后的const
使得值unmodifiable
我们来看一个例子
list1.add(22); // ERROR! Cannot add to an unmodifiable list
// but you still can reassign the value
list1 = [];
// while the
list2 = []; // throw errors as I said above!
const
关键字变量中值的 const
被隐藏。
const list2 = const [1,2,3];
list2.add(22); // ERROR! Cannot add to an unmodifiable list
简而言之:一个使分配的内存不可变,另一个相同,还有指向它的指针。在这两种情况下,列表(对象)都是不可变的。
我希望这可以帮助您理解其中的区别。
的官方文档的更多信息