问题标签 [cyclic-dependency]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1383 浏览

c# - 如何根据依赖关系重新排列数组中的项目?并且还检测任何循环依赖

给定类型:

假设我有一系列Field项目:

很明显,我们按以下顺序获取我们的项目:

  1. 全名
  2. 年龄
  3. 出生日期

我的第一个问题: 重新排列列表/数组中的项目的最佳方法是什么,以便将依赖列(全名和年龄)放在它们依赖的列之后,例如:

  1. 全名
  2. 出生日期
  3. 年龄

所以像Age 这样的字段总是在它所依赖的DateOfBirth之后。

我的第二个问题:有没有办法检测循环依赖?即何时
Field1 取决于 Field2
Field2 取决于 Field3
Field3 取决于 Field1

所以我们不会陷入一个圈子。例如,当你大学毕业后,你需要有 2 年的工作经验才能找到工作。但是要获得工作经验,您首先需要有工作。

0 投票
2 回答
155 浏览

java - 后端模块需要来自表示层的 URL - 如何避免循环依赖?

我的网络应用程序中的 URL 生成负责表示层。现在考虑另一个模块发送包含 URL 的消息。(不一定从演示文稿中触发)。但是,表示层必须了解模块(因为它可能是触发器,并且用户可以使用前端配置模块)。

即模块相互依赖......有什么想法可以避免这种循环依赖?

在我的数据库中存储 URL 对我来说似乎不合适,合并两个模块也是如此。

0 投票
4 回答
6749 浏览

c++ - 头文件之间的循环依赖

我正在尝试用两个类实现一个树状结构:TreeNode. 问题是我想从每个类调用另一个类的函数,所以简单的前向声明是不够的。

让我们看一个例子:

树.h:

节点.h:

调用树:

这只是一个简单的例子来说明问题。所以我想要的是Tree从一个Node对象调用一个函数。

更新#1:感谢您的回答。我试图像在 Java 中那样解决这个问题,即每个类只使用一个文件。看来我将不得不开始分离 .cpp 和 .h 文件......

更新#2:下面,按照提示,我也粘贴了完整的解决方案。谢谢,问题解决了。

0 投票
2 回答
6888 浏览

c++ - 自定义库名称与系统库相同时的CMake循环依赖错误

我正在编写一个 CMakeLists.txt 文件来构建我的 C++ 项目,该项目由

  1. libhybris.so:具有一些导出功能的共享库。
  2. hybris:链接到 libhybris.so 的可执行文件
  3. 一组链接到 libhybris.so 的各种共享库

问题是,libhybris.so 依赖于 libpcre(用于正则表达式功能),所以我有以下语句:

第 3 点中的共享库之一称为 pcre.so,所以我也有以下内容:

因此,当我运行“cmake .”时,出现以下错误:

因为 CMake 认为 libhybris.so pcre 依赖项(系统 libpcre.so)与我的 pcre.so 相同,但显然不是。

如何在更改 pcre.so 名称的情况下解决此问题?

0 投票
2 回答
690 浏览

function - clojure 函数循环依赖是设计明确禁止的,还是只是读者行为?

如果我在 clojure 中执行以下操作

我收到以下错误:

但是,如果我执行以下操作:

它运行得很好。

这是设计使然,还是仅仅是 Clojure 阅读器工作方式的一个功能?

0 投票
2 回答
522 浏览

c# - C#:带有循环链接的节点的 xml 序列化

我有一个类节点是这样的:

这基本上定义了一个简单的图形。我想将我的图表序列化为人类可读的形式,所以通常我会说 xml 是要走的路。但是 XML 在制作时并没有考虑到循环依赖 :)

那么-对我的图进行序列化的最佳方法是什么?

我可以想到几个方法:

  • 抛弃 XML,创建我自己的格式。
  • 使用 XML,使用唯一 ID 标记每个节点,将连接列表与节点分开存储并在加载后解析

但我认为其他人以前一定遇到过同样的问题,所以可能有一些更好的选择。有谁知道可靠的方法?

0 投票
1 回答
648 浏览

f# - F#中不同文件的类型和函数之间的循环依赖问题

我当前的项目使用具有 40 种不同类型(可区分联合)的 AST,并且该 AST 中的几种类型具有循环依赖性。类型不是那么大,因此我将它们放在一个文件中并type ... and ...为相互依赖的类型应用构造。

现在,我正在添加函数以在 AST 中的每个元素下进行一些计算。由于有很多函数,其中包含几行代码,为了使源代码更清晰易读,我将这些函数分隔在不同的文件中。

在没有循环依赖的情况下没关系,当依赖函数在同一个文件中时也可以 - 在这种情况下我可以使用let rec function1 ... and function2 ...构造。

但在我的情况下它不起作用。

另外,我错误地认为签名文件可以帮助我解决这个问题,但它们的行为与 C++ 不同

  • 它们用于定义函数/类型访问模式(内部/公共),也可以在此处添加函数/类型注释头。

我看到的唯一可能的解决方案是将所有功能移动到一个文件并使用let rec ... and ... and ... and ... and ...构造。

可能有人有不同的想法?

0 投票
3 回答
5842 浏览

python - Python中的循环模块依赖和相对导入

假设我们有两个具有循环依赖的模块:

这两个模块都在pkg一个空的目录中__init__.py。导入pkg.apkg.b工作正常,如this answer中所述。如果我将进口更改为相对进口

ImportError在尝试导入其中一个模块时得到一个:

为什么我会收到此错误?情况不是和上面差不多吗?(这与这个问题有关吗?)

编辑:这个问题与软件设计无关。我知道避免循环依赖的方法,但无论如何我对错误的原因很感兴趣。

0 投票
2 回答
2328 浏览

maven - Maven、鸡和蛋中的循环依赖

我有一个名为“talktome”的项目,没有运行时依赖项。

我也有项目'talktome-tools',它取决于'talktome'。

没问题,直到我意识到“talktome”中的单元测试依赖于“talktome-tools”。

有哪些解决方案?

0 投票
3 回答
2829 浏览

java - 为什么Java禁止继承内部接口?

即为什么下面的“循环依赖”是不可能的?

由于接口不引用外部类,这应该是允许的;但是,编译器迫使我在类之外定义这些接口。这种行为有什么合乎逻辑的解释吗?