0

我正在尝试创建一个不可变的 dat 结构,它是任务列表。我希望每个任务都有对列表的引用,并且列表将返回所有任务并具有当前任务属性。

问题是如何从任务到列表以及从列表到任务的循环引用并且仍然具有不可变的数据结构?

如果我首先创建任务,我将无法引用列表,因为它还不存在,如果我采用另一种方式 - 首先创建列表,我将不得不更改它以便将任务添加到其中。

谢谢你,伊多。

4

2 回答 2

2

我很确定您可以创建列表,并在构造函数中构造列表项,同时将列表作为参数传递给它们。

伪代码:

List constructor:
  List()
  {
    for each item to add
      add(new Item(this));
  }

Item constructor:
  Item(List list)
  {
    this.list = list;
  }

然而,这有点破坏模块化,因为列表构造函数必须处理所有逻辑来创建项目。

于 2013-02-14T14:31:04.823 回答
0

您不能同时创建列表和任务,因此您必须先创建一个。在某些时候,您会从一个空列表开始(例如,在列表的构造函数中,或其他地方)。

给定空列表,您可以创建任务:例如在列表的构造函数中,或者在列表中的方法中。您可以将对列表的引用传递给任务的构造函数。然后将任务添加到列表中,因此列表将引用该任务。

于 2013-02-14T14:31:14.677 回答