Dart - 循环导入

Posted

技术标签:

【中文标题】Dart - 循环导入【英文标题】:Dart - Circular imports 【发布时间】:2021-03-27 04:28:37 【问题描述】:

在其他语言(如 Python、Go、C# 等)中,循环导入是一个问题,程序无法运行。然而,Dart 似乎解决了这个问题,不同的 Dart 文件可以相互导入。我很好奇 Dart 是如何处理这个问题的,并且想知道是否有任何问题。

我尝试在线搜索,但找不到任何有意义的内容。

【问题讨论】:

我认为 Dart 的编译器只是将所有代码复制到一个文件中,然后只编译一个文件,因此它不必处理多个文件。 【参考方案1】:

通常,使用multi-pass compiler 的语言允许循环依赖。

其背后的逻辑是编译器对代码进行多次解析分析,每个阶段后生成中间代码。

关于 Dart,VM 提供了即时 (JIT) 和提前 (AOT) 编译器,如 explained here,它们也适用于中间代码。 我没有玩过 Dart 的编译器,但我猜实现的逻辑是多通道编译器之一

【讨论】:

以上是关于Dart - 循环导入的主要内容,如果未能解决你的问题,请参考以下文章

Dart 有导入别名吗?

dart:io 或 dart:html 的条件导入

Dart 包的条件导入/代码

Dart 错误:错误:当前 Dart 运行时不支持导入 dart:mirrors

颤振无法导入`flutter_webrtc.dart`

VSCode Dart 导入快捷方式