什么时候应该使用流程范围的字典,什么时候我的流程状态应该在循环函数的参数中?处理字典或循环参数?
此:
loop() ->
receive
{From, subscribe} ->
put(listeners, [From|get(listeners)]),
?MODULE:loop()
end.
或者这样:
loop(Listeners) ->
receive
{From, subscribe} ->
?MODULE:loop([From|Listeners])
end.
?
循环函数的参数具有显式的好处,因为它外面没有任何东西可以改变参数(除非你在奇怪的魔法弹跳在另一个功能,如蹦床上),但状态往往会加起来,参数与他们。
字典如何作为参数?两全其美还是两全其美?
说到功能性......从邮箱(即接收)中拉取消息与从过程字典中提取数据有什么不同? – Zed 2009-11-03 19:41:20
好吧,如果你从代码中的邮箱中左右拖动邮件,我会认为这是一个坏主意。我猜你的评论可能与这个问题有关,这个问题主要集中在应用程序的主要消息循环(可能)上。我更通用。 – jldupont 2009-11-03 20:09:22
另一点需要注意的是函数参数可以在异常情况下正常工作,但是流程字典中的值不会被恢复 - 所以要么不要混合异常处理和流程字典,要么避免流程字典。 – archaelus 2009-11-03 20:43:10