当我尝试订阅我的可观察对象时,出现以下错误。我不太确定为什么,因为我没有在代码中使用任何类型的 Stringify (据我所知)。它只是从 api 获取 JSON 数组。
\n ERROR TypeError: Converting circular structure to JSON\n --> starting at object with constructor 'Subscriber'\n | property '_subscriptions' -> object with constructor 'Array'\n | index 0 -> object with constructor 'MapSubscriber'\n --- property '_parentOrParents' closes the circle\n at JSON.stringify (<anonymous>)\n at JsonPipe.transform (common.js:4752)\n at Module.\xc9\xb5\xc9\xb5pipeBind1 (core.js:25782)\n at TicketlistComponent_Template (ticketlist.component.html:4)\n at executeTemplate (core.js:9600)\n at refreshView (core.js:9466)\n at refreshComponent (core.js:10637)\n at refreshChildComponents (core.js:9263)\n at refreshView (core.js:9516)\n at refreshEmbeddedViews (core.js:10591)\nRun Code Online (Sandbox Code Playgroud)\n它似乎是在可观察值从服务返回后立即发生的
\n应用程序模块
\nimport …Run Code Online (Sandbox Code Playgroud) 我的设计如下:
__main__ 引用 aa 引用 bb 引用 aa 创建然后处理 __main__因此,a并b有循环参考.然而在del a我宁愿都a和b处置.
我在很多地方看到使用Context Manager的建议,特别是with语句而不是__del__().但是我with在局部范围内看到的开始和结束的所有例子(例如某种方法)
这可以优雅地执行with吗?
有什么选择?
这是约.我正在使用的代码.
public class Note {
public virtual Customer Customer { get; set; }
public virtual User User { get; set; }
public ICollection<NoteComment> Comments { get; set; }
}
public class NoteComment {
public virtual User User { get; set; }
}
public class User {
public ICollection<Note> Notes { get; set; }
}
public class Customer {}
// --------------------------------------
public class OurDataContext {
private void ConfigureNotes(DbModelBuilder modelBuilder) {
modelBuilder.Entity<Note>()
.HasRequired<User>(n => n.User)
.WithMany(u => u.Notes)
.Map(a => a.MapKey("UserId"));
modelBuilder.Entity<Note>() …Run Code Online (Sandbox Code Playgroud) entity-framework circular-reference code-first sql-server-ce ef-code-first
我只知道一个,cycle.js来自Crockford的JSON-JS,但它是递归的并且看起来很慢,需要2-5秒才能JSON.stringify(JSON.decycle(random_graph_with_30_vertices))达到较大图形的递归深度限制.是否有更好的非递归替代方案?
如何使用循环引用创建多个表.我有这个数据,我想一次性创建:
DROP TABLE employee CASCADE CONSTRAINTS;
CREATE TABLE employee (
fname varchar2(15) not null,
minit varchar2(1),
lname varchar2(15) not null,
ssn char(9),
bdate date,
address varchar2(30),
sex char,
salary number(10,2),
superssn char(9),
dno number(4),
primary key (ssn),
foreign key (superssn) references employee(ssn),
foreign key (dno) references department(dnumber)
);
DROP TABLE department CASCADE CONSTRAINTS;
CREATE TABLE department (
dname varchar2(15) not null,
dnumber number(4),
mgrssn char(9) not null,
mgrstartdate date,
primary key (dnumber),
unique (dname),
foreign key (mgrssn) references employee(ssn)
); …Run Code Online (Sandbox Code Playgroud) 我有这个代码,另存为so.py:
import gc
gc.set_debug(gc.DEBUG_STATS|gc.DEBUG_LEAK)
class GUI():
#########################################
def set_func(self):
self.functions = {}
self.functions[100] = self.userInput
#########################################
def userInput(self):
a = 1
g = GUI()
g.set_func()
print gc.collect()
print gc.garbage
Run Code Online (Sandbox Code Playgroud)
这是输出:

我有两个问题:
为什么gc.collect()在第一次导入时不报告无法访问?相反,它仅在reload()时报告无法访问.
有没有快速的方法来修复这个函数映射循环引用,即self.functions [100] = self.userInput?因为我的旧项目有很多这个函数映射循环引用,我正在寻找一个快速的方法/一行来改变这些代码.目前我所做的是最后所有这些功能的"del g.functions".
我有两个类,A和B,它们有一个指向彼此的shared_ptr(A有一个shared_ptr到B,B有一个shared_ptr到A).
我试图在退出范围时调用两个类的析构函数,但它不起作用.没有析构函数被调用.
这是一个示例代码:
class B;
class A
{
public:
A() { std::cout << "Constructor A" << std::endl; }
~A() { std::cout << "Destructor A" << std::endl; }
std::shared_ptr<B> b;
};
class B
{
public:
B() { std::cout << "Constructor B" << std::endl; }
~B() { std::cout << "Destructor B" << std::endl; }
std::shared_ptr<A> a;
};
int main()
{
std::shared_ptr<A> a = std::make_shared<A>();
a->b = std::make_shared<B>();
a->b->a = a;
}
Run Code Online (Sandbox Code Playgroud)
我怎么能解决这个问题?
我正在尝试使用Doctrine 2在Symfony 3中运行4个实体,但是当我想序列化一个Account实体时,我仍然坚持循环引用异常:
检测到循环引用(配置限制:1).
我在我的实体中选择了双向关系,架构是这样的:
- Account [1] ---- [0..*] AccountSheet
- AccountSheet [1] ---- [0..*] Operation
- Operation [0..*] ---- [1] Category
Run Code Online (Sandbox Code Playgroud)
这是实体(为清晰起见,有一些清洁):
SRC \的appbundle \实体\ Account.php
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use AppBundle\Entity\AbstractGenericEntity;
/**
* @ORM\Entity()
* @ORM\Table(name="accounts",
* uniqueConstraints={@ORM\UniqueConstraint(name="accounts_name_unique",columns={"name"})})
*/
class Account extends AbstractGenericEntity{
/**
* @ORM\OneToMany(targetEntity="AccountSheet", mappedBy="account")
* @var AccountSheet[]
*/
protected $accountSheets;
public function __construct($name = null, $description = null){
$this->accountSheets = new ArrayCollection();
$this->name = $name;
$this->description = $description;
} …Run Code Online (Sandbox Code Playgroud) 我的关系可以这样描述;
一个
Parent有很多Child(孩子)
struct Parent {
var name: String
var cost: Int
var productionCost: Int
var income: Int
var children: [Child] = [Child]()
init(name: String) {
self.name = name
}
}
struct Child {
var name: String
var parent: Parent?
var owner: Player?
}
// not used but the intention is to so a player can own a child
class Player {
var name:
var cards: [Child] = [Child]()
}
Run Code Online (Sandbox Code Playgroud)
父级需要知道它下面有哪些子级,同样子级也需要知道它属于哪个父级。
但在 Swift 游乐场中,我注意到存在潜在的循环引用。
如果我做;
var parent …Run Code Online (Sandbox Code Playgroud) 我有3个项目的解决方案
Project1 - main application
Project2 - graphing application
Project3 - graphing library
Run Code Online (Sandbox Code Playgroud)
从Project1中的对象访问数据.项目1引用项目2来创建数据(表单)的显示,而项目2引用项目3来实现渲染图形的实际繁重工作.
现在,项目3需要访问项目1的对象/方法,因为这是数据所在的位置.但是当我从项目3添加引用到项目1时,我收到有关循环引用的错误.
我该如何解决这个问题?
谢谢,Reza
python ×2
angular ×1
c# ×1
c++ ×1
code-first ×1
doctrine ×1
javascript ×1
json ×1
oracle ×1
php ×1
python-2.7 ×1
rxjs ×1
shared-ptr ×1
sql ×1
struct ×1
swift ×1
symfony ×1
typescript ×1