elixir - 如何在结构中实现递归包含关系?
问题描述
定义一个包含其自己的类型结构数据的简单结构:
defmodule MyNode do
defstruct [:parent, :child]
end
创建父节点和子节点:
iex> p = %MyNode{}
%MyNode{child: nil, parent: nil}
iex> c = %MyNode{parent: p}
%MyNode{child: nil, parent: %MyNode{child: nil, parent: nil}}
在父节点中分配子节点:
iex> p = %{ p | child: c }
%MyNode{
child: %MyNode{child: nil, parent: %MyNode{child: nil, parent: nil}},
parent: nil
}
是的,我们陷入了无限循环。我们永远无法得到一个包含彼此的合理结构数据。
我明白这一切的原因。但是我还是有这个需求,应该怎么设计代码呢?
解决方案
推荐阅读
- javascript - 如何阻止调用堆栈过载?
- tensorflow - Keras:关于 CPU 再现性的 MLP
- r - 这段代码在 R 中使用 ggplot2 添加方程和 r-squared 有什么问题
- javascript - 将 Lloyd 松弛应用于 Three.js 中的顶点
- java - 在 JavaFX 网格中粘贴数据后如何触发单元格事件?
- python - 为什么 f-strings 比 str() 更快地解析值?
- excel - 如何获取月份并将其格式化为书面形式
- javascript - 如何避免创建同名的重复频道?
- c# - 如何从站点母版页获取菜单项值到另一个页面
- ios - 重新创建 Instagram/Pinterest 个人资料 - 如何快速重新创建 instagram/pinterest 个人资料?