我不能导入,因此不能在我的“主”模块中调用另一个模块的函数。我是一个Erlang新手。下面是我的“主”模块。
-module('Sysmod').
-author("pato").
%% API
-export([ hello_world/0,sayGoodNight/0]).
-import('Goodnight',[sayGoodNight/0]).
hello_world()->
io:fwrite("Hello World\n").
下面是正在导入的另一个模块。
-module('Goodnight').
-author("pato").
%% API
-export([sayGoodNight/0]).
sayGoodNight() ->
io:format("Good night world\n").
我甚至无法编译我的'main'模块(Sysmod),一旦我导出导入的函数,因为它抛出了一个 *undefined shell命令 * 错误。当我导入模块和函数时,它会编译,但无法执行函数,并抛出了一个 undefined function 错误。我已经 checkout 了[this answer] 1,也查看了[erlang man pages on code server] 2。此外,我设法成功地 add_path Erlang Decimal库,如下所示,尝试我的应用程序与外部库对话。
12> code:add_path("/home/pato/IdeaProjects/AdminConsole/erlang-decimal-master/ebin"). true
但无法成功运行任何Decimal函数,如下所示。
decimal:add("1.3", "1.07").** exception error: undefined function decimal:add/2
简而言之,第一种方法,(我知道由于可读性不好,不推荐使用)使用import进行模块间通信是行不通的。当我寻找解决方案时,我意识到add-path只适用于有ebin目录的模块。
我被卡住了。我如何让我的模块互相对话,包括通过 add_path 成功添加的外部库?我听说过exref,我不能理解Erlang手册页。我需要有人像五岁孩子一样给我解释一下。谢谢。
1条答案
按热度按时间bbmckpt71#
我是一个Erlang新手
不要使用
import
。其他人都不这么做。这是不好的编程习惯。相反,用函数的完全限定名来调用函数,例如moduleName:functionName抛出未定义函数错误
您没有编译要导入的模块。此外,您不能导出未在模块中定义的函数。
下面是一个例子: