【问题标题】:Get and Set methods for Maps in ErlangErlang 中 Map 的 Get 和 Set 方法
【发布时间】:2017-04-02 21:10:50
【问题描述】:

我已经开始学习 Erlang,所以我是函数式编程的菜鸟。

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

我的问题是:有什么方法可以让 get/set 方法(类似于我们在 Java、C# 中找到的方法)来访问地图数据而不将它们写入文件?或者是否有其他方法可以在全球范围内获取这些数据。

谢谢!

【问题讨论】:

    标签: get erlang set maps global-variables


    【解决方案1】:

    忘记 OOP。
    在这种方法中,其他函数式程序员无法理解您的代码并且维护非常困难。
    如果您想将数据保存在一个进程中,最好的方法是学习 Generic Server 的实现并使用您的数据而不是 gen_server 的状态。
    如果您想保留一些数据并将它们共享给某些进程:
    在一个 Erlang 节点中使用 ETS (Erlang Term Storage)DETS (Disk Erlang Term Storage)
    在节点集群中使用Mnesia DB

    【讨论】:

      【解决方案2】:

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

      然后必须将映射分配给某个全局进程间变量,而您又回到了同样的问题。

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

      你指的是什么方法?

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

      【讨论】:

        猜你喜欢
        • 2013-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-15
        • 1970-01-01
        相关资源
        最近更新 更多