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 - 循环导入的主要内容,如果未能解决你的问题,请参考以下文章