circular-reference 相关问题

循环引用是一系列引用,其中最后一个对象引用第一个引用,从而产生闭环。

Dart/Flutter 有弱引用的概念吗?

我正处于学习 Dart 和 Flutter 的早期阶段。我正在研究如何实现一个事件总线,它工作得很好,但我注意到小部件(和/或它们的相关状态)具有很强的

回答 4 投票 0

EcmaScript 如何处理递归模块?

最近我在项目中遇到了关于循环依赖的 eslint 警告。我以前认为在 ES 模块中循环引用是不可能的。但显然它们在某些情况下起作用......

回答 1 投票 0

从属性相互引用的类中循环导入

我知道有很多问题都在谈论循环导入。我已经看过很多,但我似乎无法弄清楚如何将它们应用到这个场景中。 我有一双d...

回答 1 投票 0

循环链表定义

我正在尝试在 Rust 中创建一个循环链表定义,并提出了以下实现: pub 结构 ListNode { 酒吧值:i32, 酒吧下一个:选项 我正在尝试在 Rust 中创建一个循环链表定义,并提出了以下实现: pub struct ListNode { pub val: i32, pub next: Option<Rc<RefCell<ListNode>>>, } impl ListNode { pub fn new(val: i32) -> Self { ListNode { next: None, val } } pub fn for_each<F>(&self, f: F) -> () where F: Fn(i32), { f(self.val); while let Some(next) = &self.next { f(next.borrow_mut().val); } } } 问题是运行以下代码时出现紧急错误:already borrowed: BorrowMutError fn main() { let lst = Rc::new(RefCell::new(ListNode::new(10))); let mut ref_mt = lst.borrow_mut(); ref_mt.next = Some(lst.clone()); lst.clone().borrow_mut().for_each(|val| println!("{}", val)) } 有没有办法修复代码,使其与 RefCell 一起工作,或者 RefCell 本质上不适合这种情况? 在(安全)Rust 程序中,数据最多可以有一个可变引用,该引用由“所有权规则”控制并由“借用检查器”强制执行。用 Rc 包装类型不会改变 here 所讨论的情况,这也是使用 RefCell 的原因。它使用“内部可变性”来允许表面上看起来像多个可变引用。然而,正如here所讨论的,相同的规则适用,它们只是“动态”检查(即在运行时,而不是在编译时)。这就是你在这里遇到的问题。曾经有一个时间点违反了“别名 XOR 可变性”规则。让我们看看哪里出了问题。 首先,当尝试调用 ref_mt(可变借用 2)时,for_each 仍在范围内(可变借用 1)。让我们通过显式删除 ref_mt 来解决这个问题。let mut ref_mt = lst.borrow_mut(); ref_mt.next = Some(lst.clone()); drop(ref_mt); lst.clone().borrow_mut().for_each(|val| println!("{}", val)) 进行此更改后,至少会打印一次“10”。接下来,在尝试迭代时该节点仍保持借用状态,迭代本身将尝试借用同一节点。让我们通过避免不必要的借用来解决这个问题。 lst.clone().borrow().for_each(|val| println!("{}", val)) 接下来,我们在无限迭代中遇到同样的问题。让我们以同样的方式解决这个问题。 f(next.borrow().val); 最后,循环开始工作,只要您允许,程序就会继续循环打印“10”。 修改后的代码完整版: use std::{cell::RefCell, rc::Rc}; pub struct ListNode { pub val: i32, pub next: Option<Rc<RefCell<ListNode>>>, } impl ListNode { pub fn new(val: i32) -> Self { ListNode { next: None, val } } pub fn for_each<F>(&self, f: F) -> () where F: Fn(i32), { f(self.val); while let Some(next) = &self.next { f(next.borrow().val); } } } fn main() { let lst = Rc::new(RefCell::new(ListNode::new(10))); let mut ref_mt = lst.borrow_mut(); ref_mt.next = Some(lst.clone()); drop(ref_mt); lst.clone().borrow().for_each(|val| println!("{}", val)) }

回答 1 投票 0

计算大量数据、谷歌表格的简单回报(一个单元格除以同一列中其上方的单元格,结果为另一列)

我正在尝试找到一种方法来在一大组数据中自动执行简单的回报计算(一个单元格除以它上面的单元格),该数据集定期更新/添加单元格,而无需下拉fo...

回答 1 投票 0

使用同一列中的前一个单元格与 Google 表格中的 arrayformula 或 byrow 计算值 - 这可能吗?

我在 Google Sheets 中有一个非常简单的计算投资组合价值的公式,我想将其自动化(因此计算会在添加新行时自动填充),但我似乎找不到...

回答 1 投票 0

尝试过滤两个相互依赖的组合框的选择时,如何处理 powerapps 中的循环引用错误?

我正在使用 PowerApps 创建一个小应用程序,其中包含两个组合框,它们过滤数据表上显示的信息,这些信息来自名为 Table 的 Excel 工作表。更具体...

回答 2 投票 0

垃圾收集器和循环引用

考虑这两个类: 公共A类 { 乙b; 公共 A(B b) { this.b = b; } } 公开B级 { 一个一个; 公共 B() { this.a = new A(this); } } 如果我有像

回答 5 投票 0

javascript 错误:尝试使用 Selenium 和 Python 检索 navigator.plugins 时出现循环引用错误

我正在尝试从 Selenium 驱动的 ChromeDriver 启动的 google-chrome 浏览上下文中检索 navigator.plugins 的值。 使用 google-chrome-devtools 我可以检索 navigator.userA...

回答 4 投票 0

使用 .Include() 检索数据时,Entity Framework Core 中出现意外的循环引用

我正在 Entity Framework Core 中开发一个存储库方法来检索所有应用程序及其关联的应用程序令牌。我的方法如下所示: 公共异步任务 我正在 Entity Framework Core 中开发一个存储库方法来检索所有应用程序及其关联的应用程序令牌。我的方法如下: public async Task<IEnumerable<ApplicationDTO>> GetAllApplications(string? expand = null) { List<Application> applications = await context.Applications.Include(a => a.ApplicationTokens).ToListAsync(); return mapper.Map<IEnumerable<ApplicationDTO>>(applications); } 我希望结果是一个 Application 对象列表,每个对象都包含一个 ApplicationToken 对象列表。重要的是,我不希望 ApplicationToken 对象包含对 Application 对象的反向引用,因为我没有在查询中指定 .ThenInclude(t => t.Application)。以下是实体定义: public class Application { public int Id { get; set; } public required string Name { get; set; } public required string Description { get; set; } public DateTime CreatedAt { get; set; } public required int CreatedById { get; set; } public User? CreatedBy { get; set; } public ICollection<ApplicationToken>? ApplicationTokens { get; set; } public ICollection<FeatureGate>? FeatureGates { get; set; } } public class ApplicationToken { public int Id { get; set; } public required int ApplicationId { get; set; } public required string Token { get; set; } public required bool Enabled { get; set; } public required DateTime CreatedAt { get; set; } public required int CreatedById { get; set; } public required DateTime ExpiresAt { get; set; } public Application? Application { get; set; } public User? CreatedBy { get; set; } } 在映射到 ApplicationDTO 之前,我观察到了 Application 和 ApplicationToken 实体之间的循环引用,我的目的是避免这种情况。我的期望是应用程序令牌将填充在每个应用程序中,而无需反向引用应用程序本身,从而防止任何循环引用。我没有可以自动填充这些引用的延迟加载或虚拟集合。 我在这里缺少什么? 如果您使用 Automapper,请使用 ProjectTo<TDto>()。其他映射库具有类似的方法来使用 EF 的 IQueryable,而不是获取实体和关系,然后调用 Map<TDto>()。这将避免潜在的循环引用。 只需确保您没有尝试混合 DTO 和实体,例如创建包含 ApplicationToken 实体的 ApplicationDTO,因为这些实体将引用应用程序实体、引用令牌等。如果您尝试序列化 ApplicationDTO将序列化所包含的实体,从而导致循环引用问题。如果您希望在 ApplicationDTO 中使用令牌,请创建 ApplicationTokenDTO 并配置映射器以将这些实体也转换为 DTO。

回答 1 投票 0

循环导入Python Flask(docker-compose)

我在使用 docker-compose up 启动时在我的 Flask 容器中收到此错误: 网络_1 |回溯(最近一次调用最后一次): 网络_1 |文件“/app/app.py”,第 3 行,在...

回答 1 投票 0

迭代月份中使用的循环数组公式

目前我发现使用(起始索引+数组大小+1)%数组大小将使我能够将循环数组从0索引到N(数组大小-1)。 目前我正在用它来循环...

回答 4 投票 0

在 Javascript 中给定嵌套的变体数组,在对象数组中查找“点击次数最多”的变体

我有一个称为文章的对象数组。一篇文章有 3 个重要的属性。名称、点击次数和变体。 variants 属性也是一个包含名称的对象数组(它对应于...

回答 3 投票 0

C++ 类成员的循环引用

我有以下代码(为了简洁而简化)。我正在制作简单“程序”的解释器和执行器,它基本上由命令和循环组成。 类命令 { 国际鳕鱼...

回答 1 投票 0

修复 C# Web API 中的循环引用错误

我有一个使用 EF 用 C# 编写的相当简单的 Web API。这个想法几乎是一个待办事项应用程序,具体关系是:一个用户可以有许多待办事项列表,每个待办事项列表可以......

回答 1 投票 0

在 PostgreSQL 表中查找循环引用?

我有一张带有属性的表(ID int、SourceID int、TargetID int、TargetType int) ID 源ID 目标ID -------------------- 1 123 456 2 456 789 3 1 123 4 45...

回答 3 投票 0

在一个/多对多 C++ 类关联中处理循环对象拥有引用的最佳方法是什么?

美好的一天。我面临着一项编程设计任务,由于缺乏经验,我正在努力选择最佳的实施方法。我很高兴听到哪些实践、范式或方法...

回答 1 投票 0

Xml 循环引用

我正在尝试使用下面的类结构生成以下 XML。 ...

回答 2 投票 0

你可以使用 power query 来跟踪变化吗?

我有一个 SharePoint 库,其中包含一堆要完成的模板。 完成后,文档的元数据从待定、起草等变为已批准。 我想添加数据...

回答 0 投票 0

useNavigate 无法使用按钮单击(“将循环结构转换为 JSON”错误)

我正在尝试使用 GitHub 上的 electron-react 样板创建一个桌面应用程序,目前,我正在尝试为我打算用于该应用程序的多个页面创建路由。我查了一下...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.