我已经开始学习Erlang,所以我是函数式编程的小伙子。
我认为我不能拥有可以在同一模块的不同进程中使用的“全局变量”。因此,我认为我可以使用地图来存储数据(计数器,状态......)并管理/更新它。
我的问题是:有没有办法获取/设置方法(类似于我们可以在Java,C#,...中找到的方法)来访问地图数据而无需将它们写入文件?或者还有另一种方法可以全局获取这些数据。
谢谢!
答案 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)来存储不同进程可以访问的数据。