嗨我一直在使用rfc4627用于erlang现在我已经让这段代码工作了但现在我已经改变了事情的方式我得到一个错误的过程 * 在节点上'带有退出值的@ 127.0.0.1':{{badmatch,{obj,[{c,1}]}}
这是代码
-define(TO_SELF, fun(S, M, T) -> Msg = {obj, M}, ?LOG("OUTGOING: ~p~n", [Msg]), ok end).
其中M是Msg = [{c,1}],
有没有人知道是什么导致它我一整天都没有运气。 谢谢 戴夫
答案 0 :(得分:3)
这可能是Erlang中导致问题的变量范围规则。在定义乐趣之前绑定的乐趣体中的任何免费变量将其值导入到乐趣中。乐趣是一个闭包所以这对于大多数带闭包的语言来说都很常见,它实际上是使得乐趣/闭包如此强大的东西之一。
因此,如果您在定义乐趣时绑定了Msg
,
Msg = foo,
F = ?TO_SELF,
...
然后导入其值,Msg = {obj,M}
不绑定Msg
,但在示例中对其进行测试foo
。