有没有办法延迟初始化最终变量。问题是许多值初始化为类的入口点,而不是构造函数。因此,它们现在不能是最终的。但在特定类的范围内,它们不会改变。例如。
Controller controller;
double width;
void setup(final itemWidth) {
controller = MyController();
width = itemWidth;
}
Run Code Online (Sandbox Code Playgroud)
可能吗?现在我只将解决方案视为注释。你可能认为这是为了视觉效果。但实际上,它有助于避免测试过程中出现不可预测的流量。
Ell*_*ogo 33
现在可以延迟初始化变量。有关更多信息,请参阅Dart 的文档。下面的文字是从Dart 的文档中复制的:
您还可以将 late 与 final 结合使用:
// Using null safety:
class Coffee {
late final String _temperature;
void heat() { _temperature = 'hot'; }
void chill() { _temperature = 'iced'; }
String serve() => _temperature + ' coffee';
}
Run Code Online (Sandbox Code Playgroud)
与普通的 final 字段不同,您不必在其声明或构造函数初始化列表中初始化该字段。您可以稍后在运行时分配给它。但是您只能分配给它一次,并且在运行时检查该事实。如果您尝试多次为其赋值——比如同时调用heat()和chill()此处——第二个赋值会抛出异常。这是对最终初始化并且之后不可变的状态进行建模的好方法。
| 归档时间: |
|
| 查看次数: |
8841 次 |
| 最近记录: |