Function Erlang:从beam可执行文件调用rr(?模块)?

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

我不完全确定如何在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, {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()部分的位置。