Function Erlang:从beam可执行文件调用rr(?模块)?
我不完全确定如何在Erlang模块中定义Erlang函数。我得到以下错误:Function Erlang:从beam可执行文件调用rr(?模块)?,function,erlang,initialization,record,Function,Erlang,Initialization,Record,我不完全确定如何在Erlang模块中定义Erlang函数。我得到以下错误: 11> invoke_record:invoke(). ** exception error: undefined function erlang:rr/1 从这个简单的代码中尝试调用beam可执行文件中的rr(?MODULE)。以“初始化”记录,这样就不需要每次都从shell调用它 -module(invoke_record). -export([invoke/0]). -record(process, {pi
11> invoke_record:invoke().
** exception error: undefined function erlang:rr/1
从这个简单的代码中尝试调用beam可执行文件中的rr(?MODULE)。
以“初始化”记录,这样就不需要每次都从shell调用它
-module(invoke_record).
-export([invoke/0]).
-record(process, {pid,
reference="",
lifetime=0
}).
invoke() ->
erlang:rr(?MODULE).
rr
是一个shell命令。您不能将其用于编译代码
如果您想读取shell中的许多记录定义,为了便于调试,您可以编写一个包含所有需要的include语句的文件,并在shell中调用rr一次 在rec.hrl中:
-include("include/bank.hrl").
-include("include/reply.hrl").
在壳里
1> rr("rec.hrl").
[account,reply]
2>
启动VM时,我没有找到任何方法自动执行此命令。命令rr(“file.hrl”)。
仅用于shell中的调试目的
正如其他用户在回答中强调的那样,在erlang代码中导入.hrl文件中包含的记录(或函数)的正确方法是使用命令-include(“file.hrl”)
在代码中包含
.hrl
文件后(通常在基于OTP行为的模块中,这是在-export(…)
部分之后完成的),您可以参考Erlang记录(或函数)没有任何问题。在处理项目时,您可以在纯文本文件中收集要用于该特定项目的所有必要include和其他命令行参数。创建纯文本文件后,您可以启动shell:
erl -args_file FileName
其中FileName是纯文本文件的名称。请注意,erl接受的所有命令行参数都是允许的。另请参见中的erl标志。这太糟糕了……有没有其他方法让生活更简单?我想有,让我用谷歌搜索一下……一定有办法。Erlang是一种非常成熟的语言。对不起,我没有找到sol注意:我认为您可以使用
.erlang
启动文件,但它不起作用。为什么不在编译之前在源文件中添加一个带有该记录定义的头文件?“在代码中包含hrl文件后,您可以毫无问题地引用erlang记录(或函数)“不,只有你明确地说了。如果我错了,请告诉我。我稍微更改了我的答案,以便您知道在OTP文件中放置-include()部分的位置。