在Erlang中获取和设置地图的方法

时间:2017-04-02 21:10:50

标签: get erlang set maps global-variables

我已经开始学习Erlang,所以我是函数式编程的小伙子。

我认为我不能拥有可以在同一模块的不同进程中使用的“全局变量”。因此,我认为我可以使用地图来存储数据(计数器,状态......)并管理/更新它。

我的问题是:有没有办法获取/设置方法(类似于我们可以在Java,C#,...中找到的方法)来访问地图数据而无需将它们写入文件?或者还有另一种方法可以全局获取这些数据。

谢谢!

2 个答案:

答案 0 :(得分:2)

忘了OOP 在这种方法中,其他功能程序员无法理解您的代码,维护也很困难 如果您想将数据保存在一个流程中,最好的方法是学习Generic Server的实施并使用您的数据而不是 gen_server 的状态。
如果您想保留一些数据并将其分享给某些流程:
在一个Erlang节点中,使用ETS (Erlang Term Storage)DETS (Disk Erlang Term Storage) 在节点集群中使用Mnesia DB

答案 1 :(得分:1)

  

我认为我不能拥有我可以使用的“全局变量”   同一模块的不同过程。因此,我想到了   我可以使用地图来存储数据(计数器,状态,...)和   管理/更新它。

然后必须将地图分配给某个全局进程间变量,并且您回到了同样的问题。

  

我的问题是:有没有办法做get / set方法(类似于   我们可以在Java中找到的方法...

你指的是哪种方法?

您可以使用数据库(如mnesia)来存储不同进程可以访问的数据。