【发布时间】:2018-09-02 12:32:49
【问题描述】:
我有一组非常简单的.rkt 来源,比如“a.rkt”和“b.rkt”。我希望能够在“b.rkt”中写(require "a.rkt"),反之亦然。现在我面临关于“加载周期”的错误。
我可以在不添加单元的情况下使用裸模块解决这个问题吗?球拍是否有任何类似于前向声明的东西,所以我可以简单地添加缺少的签名而不是要求?如果两个答案都是“否”,是否有人知道如何使用 typed/racket 实现单元的良好且易于理解的教程(除了官方文档)?
【问题讨论】:
-
循环依赖通常是一种代码异味,表明您的程序结构不正确。您能否提供有关您的模块的更多详细信息,以帮助我们了解您的要求的必要性?
-
当然,例如,我有一些 Engine 和一些 Item,并且 Item 有 lambdas 作为字段,这些 lambdas 将 Engine 对象作为第一个参数;后来引擎正在处理项目列表。所以Engine需要Item,Item需要Engine