为啥 erlang spawn 函数调用中出现语法错误 - “之前的语法错误:')'”?
Posted
技术标签:
【中文标题】为啥 erlang spawn 函数调用中出现语法错误 - “之前的语法错误:\')\'”?【英文标题】:Why is the syntax error coming in erlang spawn function call - " syntax error before: ')' "?为什么 erlang spawn 函数调用中出现语法错误 - “之前的语法错误:')'”? 【发布时间】:2019-03-09 10:13:34 【问题描述】:这是我在在线编译器中运行的代码
-module(helloworld).
-export([start/0, call/2]).
start() ->
% error in the below line as syntax error before: ')'
Pid = spawn(?MODULE, call, ["hello","world"] ),
io:fwrite("~p",[Pid]).
call(Arg1, Arg2) ->
io:format("~p ~p~n", [Arg1, Arg2]).
【问题讨论】:
如果在线编译器给出了这个代码的错误,那么它是错误的。 请提供您使用的在线编译(web ?) 【参考方案1】:我在tutorialspoint
在线尝试了erlang 编译器,并且可以重现问题。我猜编译器出了点问题,这不是你的错,继续调查Erlang
:)
https://www.tutorialspoint.com/compile_erlang_online.php
你可以在线改成这个编译器
https://paiza.io/en/projects/new?language=erlang
//编辑:
问题可能来自tutorialspoint
的编辑。它使编译器无法理解函数spawn/3
,请为spawn/3
函数添加双引号''
,如下所示,它将编译并运行:
Pid = 'spawn'(?MODULE, call, ["hello","world"] ),
【讨论】:
这很奇怪......我试过tutorialspoint,如果你把spawn
改成apply
,那么它会编译并运行......以上是关于为啥 erlang spawn 函数调用中出现语法错误 - “之前的语法错误:')'”?的主要内容,如果未能解决你的问题,请参考以下文章
Erlang timer:sleep(1000) 导致线程死机