gpt4 book ai didi

Dart 。后期初始化最终变量

转载 作者:行者123 更新时间:2023-12-03 03:01:14 25 4
gpt4 key购买 nike

有没有办法延迟初始化最终变量。问题是许多值初始化为类的入口点,而不是构造函数。因此 它们不能是最终的 马上。但在特定类的范围内,它们不会改变。例如。

  Controller controller;
double width;

void setup(final itemWidth) {
controller = MyController();
width = itemWidth;
}

可能吗?现在我只将解决方案视为注释。你可能认为这是为了视觉效果。但实际上,它有助于避免测试过程中出现不可预测的流量。

最佳答案

现在可以延迟初始化变量。如需更多信息,请参阅 Dart's documentation .以下文字复制自 Dart 的文档 :
后期最终变量
您还可以将 late 与 final 结合使用:

// Using null safety:
class Coffee {
late final String _temperature;

void heat() { _temperature = 'hot'; }
void chill() { _temperature = 'iced'; }

String serve() => _temperature + ' coffee';
}
与普通的 final 字段不同,您不必在其声明或构造函数初始化列表中初始化该字段。您可以稍后在运行时分配给它。但是你只能 分配给它一次 ,并在运行时检查该事实。如果你尝试多次分配给它——比如同时调用 heat()chill()这里——第二个任务 抛出异常 .这是对最终初始化并且之后不可变的状态进行建模的好方法。

关于 Dart 。后期初始化最终变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59229843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com