为什么Dart只允许在初始化列表上初始化Final变量?

时间:2018-11-28 18:31:23

标签: dart

我开始学习Dart,我发现与其他语言相反,final变量无法在构造函数主体内部分配值。

为什么Dart施加此限制?

1 个答案:

答案 0 :(得分:4)

最终字段的初始化需要在执行构造函数主体之前完成,因为在构造函数主体中允许对this(及其成员)的读取访问。

否则,很难保证何时可以安全访问最终字段。

在其他在构造函数主体中允许对final字段进行写访问的语言中,可以编写具有意外行为的对象初始化代码,例如,在final字段初始化之前读取该字段。 Dart可以防止您这样做。