![]() |
1
4
一般规则是,如果您有疑问,您不应该使用过程字典。
哪里
|
![]() |
2
4
一个简单的答案是将全局数据嵌套在一个状态记录中,然后该状态记录将在系统中穿行,至少在停止级别。这使得在将来向状态添加新字段变得很容易,而且这种情况并不少见,并且允许您保持全局状态数据结构不变。所以最初
将它定义为一个记录可以方便地在必要时进行访问和扩展。 |
![]() |
3
1
如果你不想这样做,就把它放在状态。对于计算的这一部分(也包含用户列表),可以有一个特殊的状态。
具体做什么是很难推荐的,因为这在很大程度上取决于您的确切应用程序和偏好。 只需从提到的可能性中选择,就好像进程字典不存在一样。也许您的代码需要重新构造如果没有一个变体看起来很优雅,那么没有流程字典总有更好的方法。 很糟糕的是,它仍然存在,因为它吸引了很多最初的Erlang用户。 |
![]() |
4
1
你真的不应该使用进程字典。只有在下列情况下我才接受使用词典
广告1。不是您的情况,您正在服务器中使用。广告2。我不知道是不是你的案子。公元3年。不是您的情况,因为您需要收件人列表,这样您就不会从该过程中获得任何好处字典是非常快速的键/值存储。就你而言,我看不出你为什么不把你需要的东西包括在
|
![]() |
5
1
这是一个有趣的问题,因为它涉及到功能设计的基本原理。 我的意见: 如果这是不可能的,传递接收器作为参数,即使它有点混乱。如果广播函数使用该数据,则应显式地将其提供给它,以使其清晰和可预测。 使用ETS作为同行Stritzinger的建议实际上并不比PD好多少,两者都隐藏了这样一个事实:广播功能使用接收器列表,并使其依赖于全局数据。
这也是我的经验,你经常这样结束。它不是特别漂亮,但功能设计似乎鼓励了这一点。是否可以引入一些语言功能,使其更美丽和自然? 编辑:6年前我写道:
在学习了更多关于函数式编程的知识之后,我意识到这方面的例子是状态单子和 do-notation |
![]() |
6
0
我会考虑给
|
![]() |
mritalian · Erlang ETS内存碎片 7 年前 |
![]() |
david · Erlang:从主机名获取ip地址 7 年前 |
![]() |
Matt · 有没有办法访问GenServer的状态? 7 年前 |
![]() |
Chris W · 具有并行HTTP请求的Erlang网络问题 7 年前 |