【发布时间】:2020-09-01 21:53:33
【问题描述】:
我偶然发现了一段我不太明白的代码。它看起来像这样:
% spawn process which waits for a message and prints it
Pid = spawn(fun() ->
receive
X -> io:fwrite("I received: ~p~n", [X])
end
end),
% send a message to the new process
Pid ! {message, "Hello"}.
在最后一行,“消息”是在模块中定义的原子吗?我真的无法理解那部分。
我试图理解它是这样的:我们将内容保存在第一个元素描述内容的元组中。例如:{celsius, 55}。不太清楚的是原子消息没有在模块中定义。你必须定义它吗?不需要声明,所以我想您不必在使用之前定义原子。我对么?
感谢您的帮助!
代码来自here。
【问题讨论】:
-
是的。一般来说,原子是文字。遇到时它们会被添加到原子表中。像使用另一种支持 GC 的语言中的字符串文字一样使用它们。在erl中运行代码看看!它比在这里发帖有趣得多。