如何检查“迟到”变量在Dart中是否已初始化

在 kotlin 中,我们可以检查 'late' 类型变量是否像下面这样初始化

lateinit var file: File    
if (this::file.isInitialized) { ... }

有可能在 Dart 中做类似的事情吗?

回答

不幸的是,这是不可能的。

从文档:

如果您需要检查它们是否已初始化,请避免使用后期变量。

Dart 无法判断后期变量是否已被初始化或分配。如果您访问它,它会立即运行初始化程序(如果有)或抛出异常。有时,您有一些延迟初始化的状态,而较晚可能很适合,但您还需要能够判断初始化是否已经发生。

尽管您可以通过将状态存储在后期变量中并使用单独的布尔字段来跟踪变量是否已设置来检测初始化,但这是多余的,因为 Dart 在内部维护后期变量的初始化状态。相反,它是
通常更清晰,使变量不晚,可为空。然后您
可以通过检查 null 来查看变量是否已初始化。

当然,如果 null 是变量的有效初始化值,那么拥有一个单独的布尔字段可能确实有意义。

https://dart.dev/guides/language/effective-dart/usage#avoid-late-variables-if-you-need-to-check-whether-they-are-initialized

  • I think you should emphasize the solution shown in this quote. I would recommend adding at the end or bolding to use a non-late and nullable variable.

以上是如何检查“迟到”变量在Dart中是否已初始化的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>