2

TreeLoc 是树的拉链

我在存储在树中的游戏中有一个历史动作(以便在保存中存储不同的最终状态)。所以基本上TreeLoc[Action]我的游戏中有一个(知道哪个节点是当前的最终状态)。

所以现在我希望我的用户能够进入这个历史。所以我想要向他展示他的动作树,当他点击一个节点时,我计算并用同一根树的 TreeLoc 替换我的历史记录,但重点放在正确的节点上。为每个节点创建每个 TreeLoc 关联是没有用的,所以我认为找到一种方法来转换我的Tree[Action](这是当前TreeLoc[Action].toTree)的)将是一个很好的解决方案,我Tree[(Action, () => TreeLoc[Action])].怎么能做这样的事情?

4

1 回答 1

3

我可能没有正确理解,所以如果没有,请纠正我。

您有一个呈现给用户的 Tree[Action],当用户选择该树中的一个节点时,您想要一个专注于所选节点的 TreeLoc?是对的吗?

像这样的东西?

val tree : Tree[Action] = // build your tree

def select(userSelected: Action) : Option[TreeLoc[Action]] = {
    tree.loc.find(_.getLabel == userSelected)
}

返回的 TreeLoc 将集中在匹配但植根于同一棵树的节点上。

显然 find() 可能不是您想要的,唯一的 id 可能比相等测试更好。

于 2012-07-22T21:29:21.153 回答