问题标签 [cyclic-reference]

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 投票
1 回答
180 浏览

java - 如何从具有循环关系的数据集中形成一棵树?

我有这样的课:

现在,我在 ArrayList 中存储了大约两千个这样的“Foo”对象,从上面的代码片段可以看出,它们彼此相关。现在,这些关系可能是循环的:A 可能有一个孩子 B,可能有孩子 C,可能有孩子 A。我想要做的是打印出这些关系的树,同时忽略循环关系,如下所示:

我怎样才能做到这一点?它不必很快或任何东西,这棵树主要是为了确保我的程序的结果。

0 投票
1 回答
2063 浏览

entity-framework - “引用关系会导致不被允许的循环引用。”

这是场景一,效果很好:

这是场景二,它失败了。

方案 2 中的错误消息如下: 引用关系将导致不允许的循环引用。[约束名称 = FK_dbo.GroupMembers_dbo.Persons_MemberId]

这两种情况都有这个映射(多对多),在 OnModelCreating 的方法中。

我究竟做错了什么?!我想要达到的目的是完全合理的

0 投票
2 回答
2465 浏览

java - Java包之间的每个循环引用都是坏的吗?

我使用 Sonar 代码质量管理平台已经有一段时间了,在大多数情况下,我发现它对于揭示代码库中隐藏的设计缺陷非常有帮助。

然而,有一条规则比帮助更让我烦恼,那就是它检查“循环包引用”违规行为。

我想我完全理解包之间的这种依赖关系在哪里是一件坏事。例如,在典型的 3 层表示/服务/持久性分层设计中,让数据库处理代码引用回 UI 相关类几乎总是一个坏主意。我称其为“违规”没有问题。

但让我们考虑其他情况,例如设计类似 IDE 的应用程序。比如说,我们有一个包含Application接口的主包,它定义List<View> Application.getViews()了引用应用程序视图的方法。

然而,当View接口有一个Application getApplication()方法来引用它的父应用程序时,我相信这是一个很常见的设计,它会引入一个循环引用,前提是每个接口分别用com.myapp.ui, 和分隔com.myapp.ui.view

当然,你也可以直接把View接口放进com.myapp.ui去打破循环。但是,当您在 中拥有各种其他与视图相关的 API 时com.myapp.ui.view,其中许多是另一个抽象 API,例如AbstractViewContentViewAbstractContentView等。我想知道是否出于管理目的将它们放在单独的包中更为可取。

并且考虑到上述应用程序还有许多其他类似的情况,例如com.myapp.ui.action,等,如果我们要将它们都放在那里com.myapp.ui.perspective,这真的会使包变得拥挤。com.myapp.ui

那么,你建议用什么方法来处理这种情况呢?真的每个循环包都引用了一件坏事吗?或者如果我必须与他们一起生活,您如何配置 Sonar 以仅检查真实的、有问题的循环?

0 投票
1 回答
430 浏览

scala - 对象中值的初始化顺序:如何正确设置循环/递归对象?

以下代码

 

 

有效,如果访问信息的顺序是:

并且输出如预期:

真正存在的列:true
Tenant.id 作为 Tenant_id,Tenant.name 作为 Tenant_name
真正存在的列:true
Node.id 作为 Node_id,Node.tenantId 作为 Node_tenantId,Node.nodeId 作为 Node_nodeId,Node.name 作为 Node_name

但如果顺序颠倒,它会失败:

在这种情况下,输出是

真正存在的列:true
Node.id 作为 Node_id,Node.tenantId 作为 Node_tenantId,Node.nodeId 作为 Node_nodeId,Node.name 作为 Node_name
真正存在的列:假
列 List(null, null)

线程“主”java.lang.NullPointerException 中的异常

使用 Scala 2.10.1

一些背景资料:

  • 对象定义描述了 RDBMS 的逻辑数据模型。
  • 表知道他们的列(子),每个列都知道他的表(父)
  • 外键列具有描述父表中主键列的可选属性
  • 这种关系可以是递归的(节点表是递归的)
  • 表和列的单独常量是必需的。
  • 如果可能的话,我想避免var

我在语言规范(5.4)中找到了一个部分

请注意,对象定义定义的值是惰性实例化的。

这实际上是能够设置它所必需的。我假设“价值”是指整个对象,与其“价值”(属性)相反。

无论如何,显然创建了 columns 属性的实例,但它的元素尚未“物化”,这在第二次运行的输出中可见。

我曾尝试使用早期定义来解决它,但在这种情况下,编译器会抱怨涉及 object 的非法循环引用,因此无法编译:

所以我的问题是:

  • 为什么会失败?
  • columns 属性处于哪个状态(列表存在,但元素为空)?
  • 如何正确设置?或者由于它的循环/递归性质,我应该按照定义的顺序将它实现为一种解决方法吗?

更新/解决方案

基于 0__ 的回答:解决方案包括将 columns 属性声明为惰性并将抽象 val更改为def

至于 columns 属性的状态:如果将-Xcheckinit放入 scalac 的命令行选项中,则会添加额外的运行时检查。在这种情况下,会出现以下错误:

引起:scala.UninitializedFieldError:未初始化字段:RecursiveObjects.scala:35

否则此错误会被静默忽略,因此列表仅包含空值。

0 投票
1 回答
196 浏览

python - 在 Python 中,循环引用的引用计数是多少,为什么?

这是 Python 循环引用的示例。

在这之后,

为什么引用计数为 3 ab

对不起,伙计们,我只是弄错了。

真正的问题是不同的。

为什么 'GNU' 的引用计数是 4 ?

提前致谢 :)

0 投票
1 回答
525 浏览

c++ - 编译 C++ 多对多类关系

我想知道如何实现以下设计。我没有努力遵循标准约定以将这个虚拟代码保持在最低限度(例如,包括警卫)。为了论证,我使用的是 C++03,并且只使用标准库组件。

TL;DR:我RestaurantRecipe类之间存在循环依赖关系。我有std::set<>一个指向类中对象的指针,Recipe反之亦然Restaurant。我不能#include在另一个,但由于前向声明,编译器不允许我为集合声明自定义比较器,因为此时value_types 仍然是不完整的类型。有没有办法做到这一点?

我在代码中包含了更详细地解释我的问题的注释。


0 投票
1 回答
1287 浏览

javascript - 在代码中查找圆形对象

我正在使用 jQuery 编写一个脚本来将一些内容加载到我的页面中。在运行时没有任何反应。检查 Firebug 控制台时出现此错误:

这是代码(放置在 <Head> 中):

我在这里使用了提示:Detecting and fix circular references in JavaScript但找不到任何循环关系!!!

任何关于挽救我生命的观点都将不胜感激。
- 卡姆兰

0 投票
1 回答
404 浏览

c++ - C++ cyclical inheritance dependancy

Each of the following statements have include guards around them, for their corresponding header files.

C extends B, things subclass B so they can get a pointer to A– but A has several fields that are subclasses of B.

My current solution is to store Bs in a void array, and use template methods you return the correct object based on run-time type information. But I want to know if there is a way for A to have C fields, even if C needs to link back to A, Ahead Of Time(Compile time).

I have taken a few courses on object oriented programming(they were mostly in java), but none that focused specifically on C++.

This is probably a common problem, and this question has probably already been asked and answered here– but I don't know what keywords to use to find such a solution.

A.h

B.h

C.h

Other OOP languages I've used just resolve such problems behind the scenes, where as C++ requires that the build order be correct. I saw several answers to other questions that looked vaguely similar to this one, but they were kind of unclear, please be concise about your answer.

0 投票
1 回答
101 浏览

c++ - 周期性引用是不好的做法吗?

假设我有三个类:EntityManagerEntityComponent

实体有一个组件数组(指针),每个组件都有一个字段,该字段是指向封装实体的指针。

EntityManager有一个实体数组,每个实体都有一个指向其封装的EntityManager的指针。

这种设计的原因是数据依赖。组件需要访问封装实体的字段,并且一些组件依赖于其他实体的字段(指向实体管理器的指针)。

这种“周期性”设计是一种不好的做法吗?我应该重新考虑我的设计吗?

0 投票
3 回答
3912 浏览

java - 解决 jaxb 中的循环引用

在实现我的项目的 Web 服务层时,我正在处理一些循环引用。我正在使用 jaxb(最新版本,2.2.7),甚至我也看过一些提示,因为这里这里我无法让它工作。这是关于我的问题的基本SSCCE :

我在调用时实际上正在处理的异常cyclicTest()

我想我设置了正确的注释。我实际上错过了什么?