可以在dart中使用const将最终实例变量重新分配给其他值

时间:2019-01-01 17:45:01

标签: dart

有人知道为什么下面的代码在dart中起作用吗? final关键字用于定义常量。但是下面的代码工作没什么不同。如果我们将const的值设置为其他值,则可以正常工作而不会出错。

void main() {
    ExampleFinal exampleFinal = new ExampleFinal();
}

class ExampleFinal() {
    final a = 5;
    ExampleFinal() {
        // The below statement will not create any error. 
        // But if you are remove const in below line it'll show a compile time error.
        const a = 6;
        print(a); // Prints 6
    }
}

这是飞镖中的错误还是功能?也没有文档中提到的东西。

1 个答案:

答案 0 :(得分:2)

const a = 6;

创建一个新变量,使final a = 5;

蒙上阴影

之所以可行是因为{...}在构造函数主体中创建了一个新范围。

如果在构造函数的末尾添加

print(this.a); 

它将打印5