我正在浏览Erlang代码。
tes_lib:check_operational(Config)
上述代码存在于名为Sample.erl
的模块中。
我是这门语言的新手。我的问题是我在tes_lib
中看不到模块Sample.erl
的任何包含声明。那么,Sample.erl
如何使用check_operational
模块调用函数tes_lib
?
我认为它应该像Java一样,我们首先导入类然后调用函数。
答案 0 :(得分:7)
在Erlang中,您不需要"导入"模块,以便能够调用它们。像tes_lib:check_operational(Config)
这样的调用将在运行时解析。如果尚未加载tes_lib
模块,代码服务器将在加载路径中查找它,如果找不到该模块,则调用将失败并显示{{1错误。
在Erlang中 是一个undef
指令,但它通常被认为是使用它的不良风格。你可以写:
-import
然后调用-import(tes_lib, [check_operational/1]).
,就像它是本地函数一样,没有指定模块名称。这些函数调用将在编译时被完全限定的调用替换。
来自Erlang Programming Rules:
不要使用
check_operational
,使用它会使代码更难阅读,因为您无法直接查看函数定义的模块。使用-import
(交叉引用工具)查找模块依赖项。