2

TreeLoc は Tree のジッパーです

ツリーに保存されているゲームにアクションの履歴があります(保存で異なる最終状態を保存するため)。したがって、基本的TreeLoc[Action]に、ゲームに があります (どのノードが現在の最終状態であるかを知るため)。

だから今、私はユーザーがこの歴史的なものに移動できるようにしたいと考えています. だから私が望むのは、彼のアクションのツリーを彼に提示することです。彼がノードをクリックすると、履歴を計算して、同じルート ツリーの TreeLoc に置き換えますが、正しいノードにフォーカスします。各ノードに関連付けられたすべての TreeLoc を作成するのは無意味なので、(Tree[Action]これは currentTreeLoc[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 に答える