Tuples
在Erlang中操作的某些函数会在操作后生成新元组的副本。在大多数情况下,程序不再对创建新元组的旧元组副本感兴趣。让我们看一个例子:
当 size(Tuple1) > 10,Position < 10 -> 时改变(Position,Tuple1,NewValue) NewTuple = erlang:setelement(Position, Tuple1, NewValue), %% 在这一点上我不想要Tuple1 %% 我现在想销毁Tuple1! %% 我该怎么做 二郎:发送(myprocess,NewTuple), 好的。
在上面的示例中,我从现有的元组创建了一个新元组。如果我随后这样做,我想销毁我自己的旧副本。我有一种感觉,编译器/运行时系统会自动执行此操作,但如果是这样的话,他们就不会为我们提供以下功能:erlang:garbage_collect/0
. 确信他们意识到我们可能需要隐式管理我们的内存,这可能会使程序免于崩溃并找到通过代码的内存密集部分的方式。
我知道在 中erlang shell
,有可能使用f/0, f/1
. 但是,似乎我不能在我的模块/功能中使用它。我也怀疑在该变量名前面加上下划线可能会加速运行时系统的破坏,即我的代码中的某些地方 write: _Tuple1
to destroy Tuple1
。总之,问题是,如果我随后要从现有的元组创建元组,并且在每一步我想立即(我自己)销毁旧副本,我该怎么做? * 注意 *我知道效率指南禁止这样做,但是,如果我别无选择......
各位大神帮忙看看有什么解决办法吗?谢谢