为什么final变量允许改变它的值?

1 dart

void main() {
  final num = [];
  num.add(1);
  print(num);  
}
Run Code Online (Sandbox Code Playgroud)

输出

1
Run Code Online (Sandbox Code Playgroud)

如果final变量已初始化,则它无法更改,但为什么它允许我更改值,而不允许我像这样重新分配值num = 5;

Dom*_*ski 5

通过致电

final nums = [];

您创建了一个空的动态类型列表。

在此输入图像描述

此列表本身是最终的,您不能重新分配它

在此输入图像描述

但是,您可以轻松地将新项目添加到列表中,因为这只是列表中的一个方法。

换句话说,创建一个变量final意味着它不能被重新分配,但并不意味着它不能改变。

最终变量只能设置一次

请参阅Dart 语言之旅以了解更多信息。

一个重要的注意事项是num是 Dart 中的一个类,可以是双精度型或整数型,因此将其用作变量名并不是一个好的做法。