如何解决Dart中的常量变量和常量值有什么区别?
Dart具有我在其他语言中从未见过的东西:
var foo = const [];
final bar = const [];
const baz = [];
在第一种情况下,虽然变量本身不是常量,但其值为。
为什么这有必要?
解决方法
花了一些时间后,我想我明白了:
让我们说你有
var foo = const [];
final bar = const [];
const baz = [];
您可以更改非最终非常量变量的值,即使该变量曾经具有const值也是如此:
foo = [1,2,3]; // Was const []
这在不应该更新值的操作中很有用。例如,假设您需要一个变量来表示一个月的日子:
month = const [1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28]; //For February
由于2月的日子是固定的,因此我们不希望任何人更改该月的日子。因此,在这种情况下,使值保持恒定是合理的。
在某些时候,可能需要重用同一变量来表示不同的月份。在这种情况下,我们可以这样做:
month = const [1,28,29,30,31]; //For March
在这种情况下,变量的值被更改,但是值本身是恒定的。这在您不想修改值的情况下非常重要。例如,执行month.add(32)
会导致脚本错误。
以下是我们习惯的两种情况:
final bar = [1,3];
const baz = [];
const
变量旨在作为编译时间常数。
final
变量是一个只能设置一次的变量,此后不能更改。因此,可以在运行时在构造函数中设置最终变量,此后不能更改。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。