修改 Erlang 记录 [重复]
Posted
技术标签:
【中文标题】修改 Erlang 记录 [重复]【英文标题】:Modifying an Erlang Record [duplicate] 【发布时间】:2015-08-02 08:57:40 【问题描述】:我知道 Erlang 中的记录一旦设置就无法更改。我正在尝试使用记录来增加价值。
add_new_num() ->
Number = random:uniform(6),
STR = #addervalue = 7,
New = add(STR, Number).
add(#addervalue =V = Adder, Value) ->
Adder#addervalue = V + Value.
运行add_new_num()
时,我总是会得到7 + Number
。这不是我想要的。我想让它做以下事情。
add_new_num() -> 7 + Number = Val
add_new_num() -> Val + Number = Val2
add_new_num() -> Val2 + Number = Val3
...
我怎样才能做到这一点?
【问题讨论】:
【参考方案1】:有多种方法可以做到这一点。想想你想把值存储在哪里:Erlang 没有像 C 那样的“静态变量”,所以函数本身无法记住值。
您可以将当前记录作为参数传递给add_new_num
,并从其返回值中获取更新的记录。你可以保持一个进程运行,并发送消息来查询它的当前值并要求它增加值。或者您可以将值存储在ETS table,甚至Mnesia。
【讨论】:
我将如何从返回值@legoscia 更新记录以上是关于修改 Erlang 记录 [重复]的主要内容,如果未能解决你的问题,请参考以下文章