在更好的erlang中,处理字典或其状态

时间:2018-09-30 03:40:28

标签: erlang

作为一个新手,我了解到进程字典存储在进程自己的堆中,并且可以用来存储进程中的私有数据,但是为什么不使用进程状态呢?

2 个答案:

答案 0 :(得分:4)

除某些特定情况外,避免使用进程字典,例如,存储一些调试信息。如果使用它来存储状态信息,则会创建“副作用”。这意味着函数的返回值不仅取决于参数,而且还取决于过程字典的隐藏状态。因此,测试和维护更加复杂。

答案 1 :(得分:0)

OTB gen(像gen_server,gen_fsm,gen_event等)提供了在actor段中存储数据的设计,状态的实际实现是消息接收在gen中等待并处理并像gen一样充当变量,因此不使用拥有字典, 是安全的。 如果要使用全局变量,则可以使用应用程序环境值。