有人知道为什么下面的代码在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
}
}
这是飞镖中的错误还是功能?也没有文档中提到的东西。
答案 0 :(得分:2)
const a = 6;
创建一个新变量,使final a = 5;
之所以可行是因为{...}
在构造函数主体中创建了一个新范围。
如果在构造函数的末尾添加
print(this.a);
它将打印5