如何从另一个erlang文件导入erlang文件。我想导入整个脚本,而不仅仅是特定的模块。示例:如何在另一个erlang脚本中导入以下文件??
% hello world program
-module(helloworld).
-export([start/0]).
start() ->
io:fwrite("Hello, world!\n").发布于 2020-07-16 01:42:56
只需使用-import指令导入即可。下面是一个导入helloworld模块的示例:
-module(top).
-import(helloworld, [start/0]).
-export([myfun/0]).
myfun() ->
start().如果您将上述内容保存在top.erl中,则可以在shell中使用它,如下所示:
$ erl
Erlang/OTP 22 [erts-10.7.1] [source] [64-bit] [smp:6:6] [ds:6:6:10] [async-threads:1] [hipe] [dtrace]
Eshell V10.7.1 (abort with ^G)
1> c(top).
{ok,top}
2> top:myfun().
Hello, world!
ok发布于 2020-07-17 11:25:01
我可以像你上面提到的那样从
运行它,但不能使用以下命令运行:
erl -noshell -s顶级启动-s初始化停止
即使在创建了".beam“文件之后。
~/erlang_programs$ ls a.*
a.erl
~/erlang_programs$ cat a.erl
-module(a).
-compile(export_all).
go() ->
io:fwrite("hello\n"). ~/erlang_programs$ erlc a.erl
a.erl:2: Warning: export_all flag enabled - all functions will be exported
~/erlang_programs$ ls a.*
a.beam a.erl
~/erlang_programs$ erl -noshell -s a go -s init stop
hello现在,如果您的模块实际上位于与发出erl命令的目录不同的目录中,则可以使用一个标志来指定.beam文件的路径:
~/erlang_programs$ cd ..
~$
~$ erl -noshell -s a go -s init stop -pa ./erlang_programs
hello请注意,您发布的模块名为helloworld,该模块中的函数名为start,但您的erl命令为:
erl -noshell -s top start -s init stop该erl命令要求当前目录中存在一个名为top的模块。
https://stackoverflow.com/questions/62911793
复制相似问题