【发布时间】:2011-04-15 20:55:35
【问题描述】:
我已经搜索并找到了有关此主题的一些信息,但答案要么令人困惑要么不适用。
我有这样的事情:
class Thing (val name:String, val refs:IndexedSeq[Ref])
class Ref (val name:String, val thing:Thing)
现在,我想说的是,加载一个文件,解析它并从中填充这个数据结构。它是不可变的和循环的,如何做到这一点?
另外,假设我确实填充了这个数据结构,现在我想修改它,比如更改 rootThing.refs(3).name,如何做到这一点?
感谢您在此处发布的想法。在这一点上,我在想,如果一个人真的想要这样的持久数据结构,那么跳出框框思考并考虑客户端代码需要提出哪些问题。因此,与其考虑对象和字段,不如考虑查询、索引等。首先,我在考虑: Is there a bidirectional multimap persistent data structure?
【问题讨论】:
-
文件长什么样?
-
文件无关。我只列出了表明我需要基于运行时数据而不是基于编译时的数据来初始化它。
-
由于您不知道解决方案,因此您无法评估什么是相关的或不相关的。但如果你必须,我会改变这个问题。数据结构是什么样的?任意图,还是具有双向链接的树?它是如何初始化的?从根到底部,还是从任意点?
-
它可能不是一个文件——它可能是内存中的东西,或者它可能来自一些用户交互,结构可能来自任何地方。整个数据结构是上面代码中给出的事物列表。把它想象成一组类型。每种类型(给定代码中的事物)都有一个属性列表(IndexedSeq[Ref])。每个属性都是一个类型,所以 Ref 有一个对它的引用。
标签: scala immutability cyclic-reference cyclic-graph