1
我的路徑列表:迭代更新scalaz樹
val paths = List(List("foo"), List("bar", "a"), List("bar", "b"))
我想代表在scalaz樹:
def pathsToTree(root: String, paths: List[List[String]]): Tree[String] = ???
結果:
pathsToTree("paths", paths)
=> "paths".node("foo".leaf, "bar".node("a".leaf, "b".leaf))
我已經從http://eed3si9n.com/learning-scalaz/Tree.html讀了一些關於TreeLoc
的內容,但是使用左/右或子索引似乎很乏味。我想這樣做是這樣的:
paths.foldLeft(root.node()) { case (acc: Tree[String], path: List[String]) =>
acc // how to add all the items from `path` to the tree?
}
它看起來像我可以用find
和setTree
或modifyTree
但似乎非常低效的。
優秀的答案。謝謝! – devth
請注意,如果children.exists(_。rootLabel == path.head')存在addPath中缺少'''的地方,我無法編輯,因爲編輯必須更改超過6個字符:( – devth