You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下Erlang简易spawn调用触发undefined错误求助

问题解答

错误原因很明确:你在spawn/3调用里指定的模块是echo,但你的loop/0函数定义在concurrent模块中,Erlang无法找到echo模块的loop/0函数,因此抛出undef(未定义)错误。

修正后的代码有两种写法:

写法1:直接指定当前模块名

-module(concurrent).
-export([go/0, loop/0]).
 
go() ->
    Pid2 = spawn(concurrent, loop, []).

loop() -> 2. 

写法2:使用?MODULE宏(更灵活,模块改名时无需修改此处)

-module(concurrent).
-export([go/0, loop/0]).
 
go() ->
    Pid2 = spawn(?MODULE, loop, []).

loop() -> 2. 

补充说明:spawn(M, F, A)的第一个参数M必须是已编译并加载的Erlang模块名,第二个参数F是该模块中导出的函数名,第三个参数A是函数的参数列表。你需要确保这三者完全匹配当前代码的实际定义。

内容的提问来源于stack exchange,提问作者Navid777

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 08:50:22