Erlang数据结构:副本或引用
我正在玩Erlang中的二叉树实现。下面是一段代码,让您了解:Erlang数据结构:副本或引用,erlang,Erlang,我正在玩Erlang中的二叉树实现。下面是一段代码,让您了解: -记录(节点,{key,value,left,right})。 % ... 当Key==Tree#node.Key-> #节点{key=key, 值=值, 左=树#节点。左, 右=树#节点.右}; 当Key>Tree#node.Key-> 树#节点{右=插入( 树#node.right,{Key,Value}); % ... 在这里,当我向树中插入一个新的键和值时,我返回一个带有插入(或修改)节点的新树 问题:虚拟机是否真的会复制
-记录(节点,{key,value,left,right})。
% ...
当Key==Tree#node.Key->
#节点{key=key,
值=值,
左=树#节点。左,
右=树#节点.右};
当Key>Tree#node.Key->
树#节点{右=插入(
树#node.right,{Key,Value});
% ...
在这里,当我向树中插入一个新的键和值时,我返回一个带有插入(或修改)节点的新树
问题:虚拟机是否真的会复制树并将其GC到旧的树(这将是低效的),或者复制对旧分支的引用并仅更改受新键影响的节点/分支
相关: