【发布时间】:2019-07-03 20:18:33
【问题描述】:
所以我有一个faction 类型,它有一个pawns 的列表,但是pawn 类型包括一个记录类型,它是一个指向faction 的链接
两者都在不同的模块中,在不同的文件中。将它们放在一个文件中会破坏我组织源代码的方式,并且无论如何它都不起作用
我没有看到任何关于循环构建的方法,有解决方法吗?
我尝试过使用第三个模块,它可以作为两者之间的链接,但这似乎太不方便了
【问题讨论】:
-
解决方案可能是第三个模块,其中定义了两种类型。在 ocaml 中没有循环数据结构通常被认为是一种很好的风格,因此您可能想要更改类型(例如,
pawn可能有faction_name,因此您可以决定两个pawns 是否属于同一派系)。您可能遇到的第二个问题是,如果您想在模块之间来回调用大量函数。但在这种情况下,模块根本不是真正独立的,也不应该在单独的文件中 -
如果您包含说明问题具体性质的代码,则提供建议会容易得多。我可以说,鉴于你的描述,我觉得你需要一对相互递归的数据类型来处理这种情况。
-
我想要
pawn在faction列表中的主要原因是对它们进行迭代,而我希望pawns 拥有指向他们faction的链接的原因是他们可以根据他们的派系获得不同的奖金,但最后我想我找到了解决方法。 bascailly 我做了一个新的faction_enum。faction和pawn在他们的记录中都有这个