在Erlang中打开一个模块

cof*_*Mug 1 erlang module

有没有办法在Erlang中打开一个模块,然后在不使用模块名前缀的情况下调用它的函数?就像打开ML结构一样!

joh*_*hlo 5

您可以使用

-import(my_module, [foo/1,bar/2]).
Run Code Online (Sandbox Code Playgroud)

导入单个功能(在我的例子foo/1bar/2从另一个模块)( my_module),见模块文档.无法从模块导入所有函数,必须明确列出它们.

另请参阅In Erlang如何从模块导入所有函数?解释为什么你不应该导入功能!


rvi*_*ing 5

不,你不能!@johlo和@stemm给出的方法只是解决方法,它允许您不显式写入模块名称,但这就是全部.该-import(...)声明是用词不当,并没有做你所期望的.

鉴于Erlang对代码的动态处理,它实际上也毫无意义.无法保证在运行时您拥有与编译时相同的"其他"模块,或者它是否存在.所有代码处理,编译/加载/清除/重新加载/等.,是基于模块完成的,没有模块间依赖关系或优化.