如何更换一些其他的树子树?(How to replace a subtree with some o

2019-08-07 20:12发布

在斯卡拉宏,我想做的事情是这样的:

我有一个Tree (可能很大)。 现在我想找到这棵树有一些具体形式的子树,如Apply(_, _) 现在我想创建一个新的树,它是原始树的副本,但发现树被一些其他的树所取代。

像这样的东西,我可以举例来说与其他方法的调用替换一些方法的调用。

是这样的可能吗?

Answer 1:

我在看到其他办法,树转型很感兴趣,不过,他们还没有到达(我们确实有在这个方向上正在进行的调查)。

为了让事情的同时完成的,可以延长Transformer ,覆盖其transform对你有兴趣的树的具体形式,方法,然后模式匹配,调用super.transform在子树递归取代。



Answer 2:

可能吗??? 明确是的

一般的概念是“持久数据结构。” 那些“坚持”尽可能原始值的新变种。

当涉及到树木,“拉链”的概念是适用的。 它可以让你浏览到一个图形结构,同时保持数据结构,允许以原模已应用创造新变种的变化最大共享一个新的价值的重建。

看看这个。 许多文献可以发现,以及实现,包括ScalaZ。



文章来源: How to replace a subtree with some other tree?