首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从其他erlang文件导入erlang文件

如何从其他erlang文件导入erlang文件
EN

Stack Overflow用户
提问于 2020-07-15 17:30:38
回答 2查看 283关注 0票数 0

如何从另一个erlang文件导入erlang文件。我想导入整个脚本,而不仅仅是特定的模块。示例:如何在另一个erlang脚本中导入以下文件??

代码语言:javascript
复制
% hello world program
-module(helloworld). 
-export([start/0]). 

start() -> 
   io:fwrite("Hello, world!\n").
EN

回答 2

Stack Overflow用户

发布于 2020-07-16 01:42:56

只需使用-import指令导入即可。下面是一个导入helloworld模块的示例:

代码语言:javascript
复制
-module(top).
-import(helloworld, [start/0]).
-export([myfun/0]).

myfun() ->
    start().

如果您将上述内容保存在top.erl中,则可以在shell中使用它,如下所示:

代码语言:javascript
复制
$ 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
票数 0
EN

Stack Overflow用户

发布于 2020-07-17 11:25:01

我可以像你上面提到的那样从

运行它,但不能使用以下命令运行:

erl -noshell -s顶级启动-s初始化停止

即使在创建了".beam“文件之后。

代码语言:javascript
复制
~/erlang_programs$ ls a.*
a.erl

~/erlang_programs$ cat a.erl
-module(a).
-compile(export_all).

go() ->
   io:fwrite("hello\n"). 

代码语言:javascript
复制
~/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文件的路径:

代码语言:javascript
复制
~/erlang_programs$ cd ..
~$ 

~$ erl -noshell -s a go -s init stop -pa ./erlang_programs
hello

请注意,您发布的模块名为helloworld,该模块中的函数名为start,但您的erl命令为:

代码语言:javascript
复制
 erl -noshell -s top start -s init stop

该erl命令要求当前目录中存在一个名为top的模块。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62911793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档